summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes113
-rw-r--r--.github/workflows/format.yaml8
-rw-r--r--.github/workflows/format_push.yaml8
-rw-r--r--.gitignore1
-rw-r--r--Doxyfile6
-rw-r--r--book.json46
-rw-r--r--build_keyboard.mk3
-rw-r--r--data/mappings/keyboard_aliases.json3
-rw-r--r--data/templates/avr/rules.mk5
-rw-r--r--data/templates/ps2avrgb/rules.mk2
-rw-r--r--docs/_langs.md7
-rw-r--r--docs/api_docs.md4
-rw-r--r--docs/breaking_changes.md2
-rw-r--r--docs/cli_commands.md19
-rw-r--r--docs/compatible_microcontrollers.md6
-rw-r--r--docs/config_options.md2
-rw-r--r--docs/configurator_step_by_step.md2
-rw-r--r--docs/contributing.md4
-rw-r--r--docs/custom_quantum_functions.md2
-rw-r--r--docs/data_driven_config.md2
-rw-r--r--docs/de/README.md32
-rw-r--r--docs/de/_summary.md122
-rw-r--r--docs/de/cli.md150
-rw-r--r--docs/de/driver_installation_zadig.md47
-rw-r--r--docs/de/newbs.md22
-rw-r--r--docs/de/newbs_building_firmware.md78
-rw-r--r--docs/de/newbs_flashing.md369
-rw-r--r--docs/de/newbs_getting_started.md101
-rw-r--r--docs/de/newbs_learn_more_resources.md14
-rw-r--r--docs/de/newbs_testing_debugging.md102
-rw-r--r--docs/easy_maker.md2
-rw-r--r--docs/es/README.md31
-rw-r--r--docs/es/_summary.md122
-rw-r--r--docs/es/hardware.md8
-rw-r--r--docs/es/hardware_avr.md182
-rw-r--r--docs/es/hardware_drivers.md31
-rw-r--r--docs/es/hardware_keyboard_guidelines.md147
-rw-r--r--docs/es/newbs.md23
-rw-r--r--docs/es/newbs_best_practices.md159
-rw-r--r--docs/es/newbs_building_firmware.md81
-rw-r--r--docs/es/newbs_building_firmware_configurator.md105
-rw-r--r--docs/es/newbs_flashing.md351
-rw-r--r--docs/es/newbs_getting_started.md103
-rw-r--r--docs/es/newbs_learn_more_resources.md15
-rw-r--r--docs/es/newbs_testing_debugging.md101
-rw-r--r--docs/faq_debug.md8
-rw-r--r--docs/feature_bluetooth.md2
-rw-r--r--docs/feature_combo.md2
-rw-r--r--docs/feature_encoders.md54
-rw-r--r--docs/feature_leader_key.md10
-rw-r--r--docs/feature_led_indicators.md2
-rw-r--r--docs/feature_led_matrix.md2
-rw-r--r--docs/feature_macros.md10
-rw-r--r--docs/feature_mouse_keys.md2
-rw-r--r--docs/feature_oled_driver.md4
-rw-r--r--docs/feature_pointing_device.md39
-rw-r--r--docs/feature_rgb_matrix.md36
-rw-r--r--docs/feature_rgblight.md10
-rw-r--r--docs/feature_split_keyboard.md25
-rw-r--r--docs/feature_swap_hands.md4
-rw-r--r--docs/feature_tap_dance.md4
-rw-r--r--docs/flashing.md2
-rw-r--r--docs/fr-fr/ChangeLog/20190830.md52
-rw-r--r--docs/fr-fr/README.md31
-rw-r--r--docs/fr-fr/_summary.md126
-rw-r--r--docs/fr-fr/breaking_changes.md106
-rw-r--r--docs/fr-fr/cli.md127
-rw-r--r--docs/fr-fr/cli_configuration.md121
-rw-r--r--docs/fr-fr/contributing.md154
-rw-r--r--docs/fr-fr/driver_installation_zadig.md46
-rw-r--r--docs/fr-fr/faq.md6
-rw-r--r--docs/fr-fr/faq_build.md154
-rw-r--r--docs/fr-fr/faq_debug.md153
-rw-r--r--docs/fr-fr/faq_general.md16
-rw-r--r--docs/fr-fr/faq_keymap.md161
-rw-r--r--docs/fr-fr/flashing.md238
-rw-r--r--docs/fr-fr/getting_started_getting_help.md15
-rw-r--r--docs/fr-fr/getting_started_github.md66
-rw-r--r--docs/fr-fr/getting_started_introduction.md62
-rw-r--r--docs/fr-fr/newbs.md23
-rw-r--r--docs/fr-fr/newbs_best_practices.md161
-rw-r--r--docs/fr-fr/newbs_building_firmware.md81
-rw-r--r--docs/fr-fr/newbs_building_firmware_configurator.md105
-rw-r--r--docs/fr-fr/newbs_flashing.md367
-rw-r--r--docs/fr-fr/newbs_getting_started.md101
-rw-r--r--docs/fr-fr/newbs_learn_more_resources.md14
-rw-r--r--docs/fr-fr/newbs_testing_debugging.md104
-rw-r--r--docs/hardware_avr.md2
-rw-r--r--docs/hardware_keyboard_guidelines.md1
-rw-r--r--docs/he-il/README.md33
-rw-r--r--docs/he-il/_summary.md140
-rw-r--r--docs/he-il/documentation_best_practices.md67
-rw-r--r--docs/he-il/faq.md8
-rw-r--r--docs/he-il/faq_general.md17
-rw-r--r--docs/he-il/getting_started_getting_help.md17
-rw-r--r--docs/he-il/getting_started_github.md74
-rw-r--r--docs/he-il/getting_started_introduction.md72
-rw-r--r--docs/he-il/hardware.md10
-rw-r--r--docs/he-il/newbs_learn_more_resources.md16
-rw-r--r--docs/he-il/proton_c_conversion.md36
-rw-r--r--docs/he-il/quantum_keycodes.md25
-rw-r--r--docs/index.html23
-rw-r--r--docs/isp_flashing_guide.md24
-rw-r--r--docs/ja/cli_commands.md2
-rw-r--r--docs/keycodes.md2
-rw-r--r--docs/keycodes_us_ansi_shifted.md2
-rw-r--r--docs/ko-kr/README.md32
-rw-r--r--docs/ko-kr/getting_started_build_tools.md156
-rw-r--r--docs/ko-kr/getting_started_getting_help.md17
-rw-r--r--docs/ko-kr/getting_started_github.md67
-rw-r--r--docs/mod_tap.md2
-rw-r--r--docs/newbs_building_firmware.md18
-rw-r--r--docs/newbs_flashing.md2
-rw-r--r--docs/newbs_getting_started.md16
-rw-r--r--docs/newbs_learn_more_resources.md1
-rw-r--r--docs/other_eclipse.md4
-rw-r--r--docs/other_vscode.md2
-rw-r--r--docs/pr_checklist.md16
-rw-r--r--docs/pt-br/README.md30
-rw-r--r--docs/pt-br/_summary.md122
-rw-r--r--docs/ref_functions.md2
-rw-r--r--docs/ru-ru/README.md31
-rw-r--r--docs/ru-ru/_summary.md124
-rw-r--r--docs/ru-ru/getting_started_build_tools.md153
-rw-r--r--docs/ru-ru/getting_started_getting_help.md15
-rw-r--r--docs/ru-ru/getting_started_github.md63
-rw-r--r--docs/ru-ru/getting_started_introduction.md58
-rw-r--r--docs/ru-ru/newbs.md23
-rw-r--r--docs/ru-ru/newbs_getting_started.md102
-rw-r--r--docs/squeezing_avr.md36
-rw-r--r--docs/understanding_qmk.md58
-rw-r--r--docs/zh-cn/README.md45
-rw-r--r--docs/zh-cn/_summary.md322
-rw-r--r--docs/zh-cn/api_docs.md73
-rw-r--r--docs/zh-cn/api_overview.md20
-rw-r--r--docs/zh-cn/cli.md43
-rw-r--r--docs/zh-cn/cli_commands.md503
-rw-r--r--docs/zh-cn/cli_configuration.md126
-rw-r--r--docs/zh-cn/cli_tab_complete.md32
-rw-r--r--docs/zh-cn/configurator_architecture.md66
-rw-r--r--docs/zh-cn/configurator_default_keymaps.md198
-rw-r--r--docs/zh-cn/configurator_step_by_step.md63
-rw-r--r--docs/zh-cn/configurator_troubleshooting.md31
-rw-r--r--docs/zh-cn/contributing.md188
-rw-r--r--docs/zh-cn/custom_quantum_functions.md367
-rw-r--r--docs/zh-cn/driver_installation_zadig.md102
-rw-r--r--docs/zh-cn/easy_maker.md37
-rw-r--r--docs/zh-cn/faq.md6
-rw-r--r--docs/zh-cn/faq_build.md127
-rw-r--r--docs/zh-cn/faq_debug.md188
-rw-r--r--docs/zh-cn/faq_general.md59
-rw-r--r--docs/zh-cn/faq_keymap.md172
-rw-r--r--docs/zh-cn/faq_misc.md108
-rw-r--r--docs/zh-cn/feature_grave_esc.md39
-rw-r--r--docs/zh-cn/feature_space_cadet.md70
-rw-r--r--docs/zh-cn/flashing.md329
-rw-r--r--docs/zh-cn/flashing_bootloadhid.md75
-rw-r--r--docs/zh-cn/getting_started_docker.md59
-rw-r--r--docs/zh-cn/getting_started_getting_help.md15
-rw-r--r--docs/zh-cn/getting_started_github.md7
-rw-r--r--docs/zh-cn/getting_started_introduction.md9
-rw-r--r--docs/zh-cn/getting_started_vagrant.md61
-rw-r--r--docs/zh-cn/hand_wire.md255
-rw-r--r--docs/zh-cn/keymap.md209
-rw-r--r--docs/zh-cn/mod_tap.md143
-rw-r--r--docs/zh-cn/newbs.md36
-rw-r--r--docs/zh-cn/newbs_best_practices.md163
-rw-r--r--docs/zh-cn/newbs_building_firmware.md87
-rw-r--r--docs/zh-cn/newbs_building_firmware_configurator.md18
-rw-r--r--docs/zh-cn/newbs_flashing.md317
-rw-r--r--docs/zh-cn/newbs_getting_started.md210
-rw-r--r--docs/zh-cn/newbs_learn_more_resources.md36
-rw-r--r--docs/zh-cn/newbs_testing_debugging.md46
-rw-r--r--docs/zh-cn/other_eclipse.md90
-rw-r--r--docs/zh-cn/other_vscode.md122
-rw-r--r--docs/zh-cn/reference_configurator_support.md200
-rw-r--r--docs/zh-cn/reference_glossary.md81
-rw-r--r--docs/zh-cn/support.md22
-rw-r--r--docs/zh-cn/syllabus.md77
-rw-r--r--docs/zh-cn/translating.md60
-rw-r--r--docs/zh-cn/zh_cn_doc_status.sh35
-rw-r--r--drivers/ps2/ps2_busywait.c5
-rw-r--r--drivers/sensors/analog_joystick.c4
-rw-r--r--drivers/sensors/cirque_pinnacle_spi.c5
-rw-r--r--drivers/sensors/pmw3360.c4
-rw-r--r--drivers/sensors/pmw3360.h4
-rw-r--r--keyboards/0_sixty/rules.mk5
-rw-r--r--keyboards/0xc7/61key/rules.mk5
-rw-r--r--keyboards/0xcb/1337/config.h5
-rw-r--r--keyboards/0xcb/1337/rules.mk5
-rw-r--r--keyboards/0xcb/static/config.h1
-rw-r--r--keyboards/0xcb/static/keymaps/bongocat/keymap.c2
-rw-r--r--keyboards/0xcb/static/readme.md2
-rw-r--r--keyboards/0xcb/static/rules.mk5
-rw-r--r--keyboards/10bleoledhub/rules.mk5
-rw-r--r--keyboards/1upkeyboards/1up60hse/keymaps/default/config.h20
-rw-r--r--keyboards/1upkeyboards/1up60hse/rules.mk7
-rw-r--r--keyboards/1upkeyboards/1up60hte/rules.mk5
-rw-r--r--keyboards/1upkeyboards/1up60rgb/rules.mk5
-rw-r--r--keyboards/1upkeyboards/super16/keymaps/default/config.h19
-rw-r--r--keyboards/1upkeyboards/super16/rules.mk5
-rw-r--r--keyboards/1upkeyboards/super16v2/config.h151
-rw-r--r--keyboards/1upkeyboards/super16v2/info.json10
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/default/keymap.c34
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/default/readme.md1
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/via/keymap.c48
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/via/readme.md1
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/via/rules.mk (renamed from keyboards/frooastboard/keymaps/via/rules.mk)0
-rw-r--r--keyboards/1upkeyboards/super16v2/readme.md25
-rw-r--r--keyboards/1upkeyboards/super16v2/rules.mk18
-rw-r--r--keyboards/1upkeyboards/super16v2/super16v2.c17
-rw-r--r--keyboards/1upkeyboards/super16v2/super16v2.h39
-rw-r--r--keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk5
-rw-r--r--keyboards/1upkeyboards/sweet16/rules.mk3
-rw-r--r--keyboards/2key2crawl/rules.mk5
-rw-r--r--keyboards/30wer/keymaps/default/keymap.c16
-rw-r--r--keyboards/30wer/rules.mk5
-rw-r--r--keyboards/3keyecosystem/2key2/config.h2
-rw-r--r--keyboards/3keyecosystem/2key2/rules.mk5
-rw-r--r--keyboards/3w6/keymaps/helltm/combos.def18
-rw-r--r--keyboards/3w6/keymaps/helltm/combos.h35
-rw-r--r--keyboards/3w6/keymaps/helltm/config.h20
-rw-r--r--keyboards/3w6/keymaps/helltm/keymap.c52
-rw-r--r--keyboards/3w6/keymaps/helltm/rules.mk2
-rw-r--r--keyboards/3w6/rev1/rules.mk5
-rw-r--r--keyboards/3w6/rev2/rev2.c17
-rw-r--r--keyboards/3w6/rev2/rules.mk5
-rw-r--r--keyboards/40percentclub/25/config.h2
-rw-r--r--keyboards/40percentclub/25/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/25/keymaps/default/keymap.c22
-rw-r--r--keyboards/40percentclub/25/keymaps/macro/config.h19
-rw-r--r--keyboards/40percentclub/25/keymaps/macro/keymap.c10
-rw-r--r--keyboards/40percentclub/25/rules.mk5
-rw-r--r--keyboards/40percentclub/4pack/config.h2
-rw-r--r--keyboards/40percentclub/4pack/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/4pack/rules.mk5
-rw-r--r--keyboards/40percentclub/4x4/config.h2
-rw-r--r--keyboards/40percentclub/4x4/keymaps/default/config.h5
-rw-r--r--keyboards/40percentclub/4x4/keymaps/via/keymap.c105
-rw-r--r--keyboards/40percentclub/4x4/keymaps/via/rules.mk (renamed from keyboards/acheron/elongate/keymaps/via/rules.mk)0
-rw-r--r--keyboards/40percentclub/4x4/rules.mk5
-rw-r--r--keyboards/40percentclub/5x5/config.h2
-rw-r--r--keyboards/40percentclub/5x5/keymaps/default/config.h5
-rw-r--r--keyboards/40percentclub/5x5/keymaps/via/keymap.c117
-rw-r--r--keyboards/40percentclub/5x5/keymaps/via/rules.mk (renamed from keyboards/mode/eighty/m80h/keymaps/via/rules.mk)0
-rw-r--r--keyboards/40percentclub/5x5/rules.mk5
-rw-r--r--keyboards/40percentclub/6lit/config.h2
-rw-r--r--keyboards/40percentclub/6lit/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/6lit/keymaps/default/keymap.c4
-rw-r--r--keyboards/40percentclub/6lit/keymaps/macro/config.h19
-rw-r--r--keyboards/40percentclub/6lit/keymaps/macro/keymap.c4
-rw-r--r--keyboards/40percentclub/6lit/rules.mk5
-rw-r--r--keyboards/40percentclub/foobar/config.h2
-rw-r--r--keyboards/40percentclub/foobar/keymaps/macro/config.h19
-rw-r--r--keyboards/40percentclub/foobar/keymaps/macro/keymap.c6
-rw-r--r--keyboards/40percentclub/foobar/rules.mk5
-rw-r--r--keyboards/40percentclub/gherkin/config.h2
-rw-r--r--keyboards/40percentclub/gherkin/rules.mk5
-rw-r--r--keyboards/40percentclub/half_n_half/config.h2
-rw-r--r--keyboards/40percentclub/half_n_half/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/half_n_half/keymaps/default/keymap.c6
-rw-r--r--keyboards/40percentclub/half_n_half/rules.mk5
-rw-r--r--keyboards/40percentclub/i75/config.h2
-rw-r--r--keyboards/40percentclub/i75/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/i75/keymaps/default/keymap.c12
-rw-r--r--keyboards/40percentclub/i75/rules.mk5
-rw-r--r--keyboards/40percentclub/luddite/config.h2
-rw-r--r--keyboards/40percentclub/luddite/rules.mk5
-rw-r--r--keyboards/40percentclub/mf68/config.h2
-rw-r--r--keyboards/40percentclub/mf68/rules.mk5
-rw-r--r--keyboards/40percentclub/nano/config.h2
-rw-r--r--keyboards/40percentclub/nano/rules.mk8
-rw-r--r--keyboards/40percentclub/nein/config.h2
-rw-r--r--keyboards/40percentclub/nein/keymaps/default/keymap.c12
-rw-r--r--keyboards/40percentclub/nein/rules.mk5
-rw-r--r--keyboards/40percentclub/nori/config.h2
-rw-r--r--keyboards/40percentclub/nori/keymaps/default/keymap.c58
-rw-r--r--keyboards/40percentclub/nori/keymaps/macro/keymap.c8
-rw-r--r--keyboards/40percentclub/nori/keymaps/wings_36key/config.h27
-rw-r--r--keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c118
-rw-r--r--keyboards/40percentclub/nori/keymaps/wings_36key/readme.md3
-rw-r--r--keyboards/40percentclub/nori/keymaps/wings_36key/rules.mk1
-rw-r--r--keyboards/40percentclub/nori/rules.mk5
-rw-r--r--keyboards/40percentclub/polyandry/config.h90
-rw-r--r--keyboards/40percentclub/polyandry/info.json27
-rw-r--r--keyboards/40percentclub/polyandry/keymaps/default/keymap.c30
-rw-r--r--keyboards/40percentclub/polyandry/polyandry.c16
-rw-r--r--keyboards/40percentclub/polyandry/polyandry.h24
-rw-r--r--keyboards/40percentclub/polyandry/promicro/config.h34
-rw-r--r--keyboards/40percentclub/polyandry/promicro/promicro.c16
-rw-r--r--keyboards/40percentclub/polyandry/promicro/promicro.h27
-rw-r--r--keyboards/40percentclub/polyandry/promicro/rules.mk5
-rw-r--r--keyboards/40percentclub/polyandry/readme.md53
-rw-r--r--keyboards/40percentclub/polyandry/rules.mk14
-rw-r--r--keyboards/40percentclub/polyandry/teensy2/config.h36
-rw-r--r--keyboards/40percentclub/polyandry/teensy2/rules.mk5
-rw-r--r--keyboards/40percentclub/polyandry/teensy2/teensy2.c16
-rw-r--r--keyboards/40percentclub/polyandry/teensy2/teensy2.h32
-rw-r--r--keyboards/40percentclub/sixpack/config.h2
-rw-r--r--keyboards/40percentclub/sixpack/rules.mk5
-rw-r--r--keyboards/40percentclub/tomato/config.h4
-rw-r--r--keyboards/40percentclub/tomato/rules.mk5
-rw-r--r--keyboards/40percentclub/ut47/config.h4
-rw-r--r--keyboards/40percentclub/ut47/keymaps/default/config.h19
-rw-r--r--keyboards/40percentclub/ut47/keymaps/non-us/config.h21
-rw-r--r--keyboards/40percentclub/ut47/keymaps/nordic/config.h17
-rw-r--r--keyboards/40percentclub/ut47/rules.mk5
-rw-r--r--keyboards/45_ats/rules.mk5
-rw-r--r--keyboards/4by3/rules.mk2
-rw-r--r--keyboards/4pplet/aekiso60/rev_a/rules.mk5
-rw-r--r--keyboards/4pplet/bootleg/rev_a/rules.mk5
-rw-r--r--keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk8
-rw-r--r--keyboards/4pplet/steezy60/rev_a/rules.mk5
-rw-r--r--keyboards/4pplet/waffling60/rev_a/rules.mk5
-rw-r--r--keyboards/4pplet/waffling60/rev_b/rules.mk5
-rw-r--r--keyboards/4pplet/waffling60/rev_c/config.h64
-rw-r--r--keyboards/4pplet/waffling60/rev_c/readme.md20
-rw-r--r--keyboards/4pplet/waffling60/rev_c/rev_c.c31
-rw-r--r--keyboards/4pplet/waffling60/rev_c/rev_c.h38
-rw-r--r--keyboards/4pplet/waffling60/rev_c/rules.mk18
-rw-r--r--keyboards/6ball/rules.mk8
-rw-r--r--keyboards/7c8/framework/rules.mk6
-rw-r--r--keyboards/7skb/rules.mk7
-rw-r--r--keyboards/7splus/rules.mk5
-rw-r--r--keyboards/8pack/rules.mk5
-rw-r--r--keyboards/9key/keymaps/bcat/keymap.c19
-rw-r--r--keyboards/9key/keymaps/bcat/readme.md6
-rw-r--r--keyboards/9key/keymaps/default/keymap.c16
-rw-r--r--keyboards/9key/keymaps/tap_dance/keymap.c16
-rw-r--r--keyboards/9key/rules.mk8
-rw-r--r--keyboards/a_dux/a_dux.c23
-rw-r--r--keyboards/a_dux/a_dux.h4
-rw-r--r--keyboards/a_dux/info.json2
-rw-r--r--keyboards/a_dux/keymaps/default/config.h39
-rw-r--r--keyboards/a_dux/keymaps/default/keymap.c40
-rw-r--r--keyboards/a_dux/keymaps/default/keymap.json106
-rw-r--r--keyboards/a_dux/keymaps/default/readme.md122
-rw-r--r--keyboards/a_dux/readme.md2
-rw-r--r--keyboards/a_dux/rules.mk10
-rw-r--r--keyboards/abacus/rules.mk5
-rw-r--r--keyboards/absinthe/config.h6
-rw-r--r--keyboards/absinthe/keymaps/ansi/config.h19
-rw-r--r--keyboards/absinthe/keymaps/default/config.h19
-rw-r--r--keyboards/absinthe/rules.mk5
-rw-r--r--keyboards/abstract/ellipse/keymaps/default/config.h19
-rw-r--r--keyboards/abstract/ellipse/rev1/rules.mk5
-rw-r--r--keyboards/acekeyboard/titan60/rules.mk5
-rw-r--r--keyboards/acheron/arctic/rules.mk5
-rw-r--r--keyboards/acheron/austin/rules.mk5
-rw-r--r--keyboards/acheron/elongate/beta/beta.c17
-rw-r--r--keyboards/acheron/elongate/beta/beta.h44
-rw-r--r--keyboards/acheron/elongate/beta/config.h150
-rw-r--r--keyboards/acheron/elongate/beta/info.json (renamed from keyboards/acheron/elongate/info.json)0
-rw-r--r--keyboards/acheron/elongate/beta/keymaps/default/keymap.c (renamed from keyboards/acheron/elongate/keymaps/default/keymap.c)0
-rw-r--r--keyboards/acheron/elongate/beta/keymaps/default/readme.md (renamed from keyboards/acheron/elongate/keymaps/default/readme.md)0
-rw-r--r--keyboards/acheron/elongate/beta/keymaps/via/config.h (renamed from keyboards/acheron/elongate/keymaps/via/config.h)0
-rw-r--r--keyboards/acheron/elongate/beta/keymaps/via/keymap.c (renamed from keyboards/acheron/elongate/keymaps/via/keymap.c)0
-rw-r--r--keyboards/acheron/elongate/beta/keymaps/via/rules.mk (renamed from keyboards/mode/eighty/m80s/keymaps/via/rules.mk)0
-rwxr-xr-xkeyboards/acheron/elongate/beta/readme.md43
-rw-r--r--keyboards/acheron/elongate/beta/rules.mk19
-rw-r--r--keyboards/acheron/elongate/config.h146
-rwxr-xr-xkeyboards/acheron/elongate/delta/chconf.h25
-rwxr-xr-xkeyboards/acheron/elongate/delta/config.h81
-rwxr-xr-xkeyboards/acheron/elongate/delta/delta.c78
-rwxr-xr-xkeyboards/acheron/elongate/delta/delta.h34
-rwxr-xr-xkeyboards/acheron/elongate/delta/halconf.h23
-rwxr-xr-xkeyboards/acheron/elongate/delta/keymaps/default/keymap.c44
-rwxr-xr-xkeyboards/acheron/elongate/delta/keymaps/via/keymap.c44
-rwxr-xr-xkeyboards/acheron/elongate/delta/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/acheron/elongate/delta/mcuconf.h25
-rwxr-xr-xkeyboards/acheron/elongate/delta/readme.md43
-rwxr-xr-xkeyboards/acheron/elongate/delta/rules.mk20
-rw-r--r--keyboards/acheron/elongate/elongate.c14
-rw-r--r--keyboards/acheron/elongate/elongate.h31
-rw-r--r--keyboards/acheron/elongate/readme.md25
-rw-r--r--keyboards/acheron/elongate/rules.mk22
-rw-r--r--keyboards/acheron/keebspcb/rules.mk5
-rw-r--r--keyboards/acheron/lasgweloth/rules.mk5
-rw-r--r--keyboards/acheron/shark/keymaps/ajp10304/readme.md21
-rw-r--r--keyboards/acheron/shark/keymaps/default/keymap.c40
-rw-r--r--keyboards/acheron/shark/keymaps/via/keymap.c40
-rw-r--r--keyboards/acheron/shark/rules.mk5
-rw-r--r--keyboards/acr60/rules.mk5
-rw-r--r--keyboards/ada/infinity81/config.h126
-rw-r--r--keyboards/ada/infinity81/infinity81.c4
-rw-r--r--keyboards/ada/infinity81/infinity81.h30
-rw-r--r--keyboards/ada/infinity81/info.json92
-rw-r--r--keyboards/ada/infinity81/keymaps/default/keymap.c23
-rw-r--r--keyboards/ada/infinity81/keymaps/default/readme.md1
-rw-r--r--keyboards/ada/infinity81/readme.md27
-rw-r--r--keyboards/ada/infinity81/rules.mk18
-rw-r--r--keyboards/adalyn/adalyn.c16
-rw-r--r--keyboards/adalyn/adalyn.h33
-rw-r--r--keyboards/adalyn/config.h54
-rw-r--r--keyboards/adalyn/info.json10
-rw-r--r--keyboards/adalyn/keymaps/default/config.h21
-rw-r--r--keyboards/adalyn/keymaps/default/keymap.c72
-rw-r--r--keyboards/adalyn/keymaps/default/readme.md1
-rw-r--r--keyboards/adalyn/keymaps/default/rules.mk1
-rw-r--r--keyboards/adalyn/readme.md19
-rw-r--r--keyboards/adalyn/rules.mk22
-rw-r--r--keyboards/adelheid/rules.mk5
-rw-r--r--keyboards/adkb96/rules.mk7
-rw-r--r--keyboards/adpenrose/kintsugi/config.h146
-rw-r--r--keyboards/adpenrose/kintsugi/info.json80
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/default/keymap.c48
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/default/readme.md1
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c164
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/franky/readme.md1
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/franky/rules.mk3
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/via/keymap.c62
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/via/readme.md1
-rw-r--r--keyboards/adpenrose/kintsugi/keymaps/via/rules.mk (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/via/rules.mk)0
-rw-r--r--keyboards/adpenrose/kintsugi/kintsugi.c74
-rw-r--r--keyboards/adpenrose/kintsugi/kintsugi.h46
-rw-r--r--keyboards/adpenrose/kintsugi/lib/kintsugifont.c244
-rw-r--r--keyboards/adpenrose/kintsugi/post_config.h21
-rw-r--r--keyboards/adpenrose/kintsugi/readme.md37
-rw-r--r--keyboards/adpenrose/kintsugi/rules.mk21
-rw-r--r--keyboards/aeboards/aegis/rules.mk5
-rwxr-xr-xkeyboards/aeboards/constellation/rev1/rules.mk5
-rwxr-xr-xkeyboards/aeboards/constellation/rev2/rules.mk5
-rw-r--r--keyboards/aeboards/ext65/rev1/rules.mk5
-rw-r--r--keyboards/aeboards/ext65/rev2/rules.mk8
-rw-r--r--keyboards/afternoonlabs/breeze/keymaps/via/rules.mk2
-rw-r--r--keyboards/afternoonlabs/breeze/rev0/rules.mk5
-rw-r--r--keyboards/afternoonlabs/breeze/rev1/rules.mk5
-rw-r--r--keyboards/afternoonlabs/gust/rev1/rules.mk5
-rw-r--r--keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk5
-rw-r--r--keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk2
-rw-r--r--keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk2
-rw-r--r--keyboards/afternoonlabs/southern_breeze/rev1/rules.mk5
-rw-r--r--keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk2
-rw-r--r--keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk2
-rw-r--r--keyboards/afternoonlabs/summer_breeze/rev1/rules.mk5
-rw-r--r--keyboards/ai03/andromeda/config.h4
-rw-r--r--keyboards/ai03/andromeda/rules.mk5
-rw-r--r--keyboards/ai03/equinox/keymaps/default/keymap.c6
-rw-r--r--keyboards/ai03/equinox/keymaps/via/keymap.c6
-rw-r--r--keyboards/ai03/equinox/rev0/rules.mk5
-rw-r--r--keyboards/ai03/equinox/rev1/rules.mk5
-rw-r--r--keyboards/ai03/jp60/rules.mk5
-rw-r--r--keyboards/ai03/lunar/rules.mk5
-rw-r--r--keyboards/ai03/orbit/keymaps/default/keymap.c24
-rw-r--r--keyboards/ai03/orbit/rules.mk5
-rw-r--r--keyboards/ai03/orbit_x/keymaps/default/keymap.c7
-rw-r--r--keyboards/ai03/orbit_x/keymaps/via/keymap.c7
-rw-r--r--keyboards/ai03/orbit_x/rules.mk5
-rw-r--r--keyboards/ai03/polaris/rules.mk5
-rw-r--r--keyboards/ai03/quasar/keymaps/default/keymap.c10
-rw-r--r--keyboards/ai03/quasar/rules.mk5
-rw-r--r--keyboards/ai03/soyuz/keymaps/default/keymap.c10
-rw-r--r--keyboards/ai03/soyuz/rules.mk5
-rw-r--r--keyboards/ai03/vega/rules.mk5
-rw-r--r--keyboards/ai03/voyager60_alps/rules.mk5
-rw-r--r--keyboards/ajisai74/rules.mk5
-rw-r--r--keyboards/akb/eb46/rules.mk5
-rw-r--r--keyboards/akb/raine/rules.mk5
-rw-r--r--keyboards/akegata_denki/device_one/rules.mk4
-rw-r--r--keyboards/al1/rules.mk5
-rw-r--r--keyboards/aleblazer/zodiark/rules.mk5
-rw-r--r--keyboards/aleth42/rev0/rules.mk5
-rw-r--r--keyboards/aleth42/rev1/rules.mk5
-rw-r--r--keyboards/alf/dc60/keymaps/default/config.h19
-rw-r--r--keyboards/alf/dc60/rules.mk5
-rw-r--r--keyboards/alf/x11/keymaps/default/config.h19
-rw-r--r--keyboards/alf/x11/rules.mk7
-rw-r--r--keyboards/alf/x2/rules.mk5
-rw-r--r--keyboards/alfredslab/swift65/solder/rules.mk5
-rw-r--r--keyboards/alicia_cook/alicia_cook.c17
-rw-r--r--keyboards/alicia_cook/alicia_cook.h41
-rw-r--r--keyboards/alicia_cook/config.h48
-rw-r--r--keyboards/alicia_cook/info.json62
-rw-r--r--keyboards/alicia_cook/keymaps/default/keymap.c55
-rw-r--r--keyboards/alicia_cook/keymaps/default/readme.md1
-rw-r--r--keyboards/alicia_cook/keymaps/rick/config.h23
-rw-r--r--keyboards/alicia_cook/keymaps/rick/keymap.c246
-rw-r--r--keyboards/alicia_cook/keymaps/rick/readme.md1
-rw-r--r--keyboards/alicia_cook/keymaps/rick/rules.mk2
-rw-r--r--keyboards/alicia_cook/readme.md26
-rw-r--r--keyboards/alicia_cook/rules.mk18
-rw-r--r--keyboards/allison/rules.mk5
-rw-r--r--keyboards/allison_numpad/rules.mk5
-rwxr-xr-xkeyboards/alpha/rules.mk5
-rw-r--r--keyboards/alpine65/rules.mk5
-rw-r--r--keyboards/alps64/keymaps/default/keymap.c10
-rw-r--r--keyboards/alps64/rules.mk5
-rwxr-xr-xkeyboards/alu84/rules.mk6
-rw-r--r--keyboards/amag23/keymaps/via/keymap.c53
-rw-r--r--keyboards/amag23/keymaps/via/rules.mk (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk)0
-rw-r--r--keyboards/amag23/rules.mk2
-rwxr-xr-xkeyboards/amj40/rules.mk5
-rw-r--r--keyboards/amj60/rules.mk5
-rw-r--r--keyboards/amj96/rules.mk5
-rw-r--r--keyboards/amjkeyboard/amj66/keymaps/default/config.h19
-rw-r--r--keyboards/amjkeyboard/amj66/rules.mk5
-rw-r--r--keyboards/amjkeyboard/amj84/amj84.c4
-rw-r--r--keyboards/amjkeyboard/amj84/amj84.h30
-rw-r--r--keyboards/amjkeyboard/amj84/config.h112
-rw-r--r--keyboards/amjkeyboard/amj84/info.json97
-rw-r--r--keyboards/amjkeyboard/amj84/keymaps/default/keymap.c53
-rw-r--r--keyboards/amjkeyboard/amj84/keymaps/default/readme.md1
-rw-r--r--keyboards/amjkeyboard/amj84/readme.md27
-rw-r--r--keyboards/amjkeyboard/amj84/rules.mk18
-rw-r--r--keyboards/amjpad/keymaps/default/keymap.c24
-rw-r--r--keyboards/amjpad/rules.mk4
-rw-r--r--keyboards/anavi/macropad8/rules.mk5
-rw-r--r--keyboards/angel17/alpha/rules.mk5
-rw-r--r--keyboards/angel17/keymaps/default/config.h19
-rw-r--r--keyboards/angel17/rev1/rules.mk5
-rw-r--r--keyboards/angel17/rules.mk5
-rw-r--r--keyboards/angel64/alpha/keymaps/default/config.h19
-rw-r--r--keyboards/angel64/rev1/keymaps/default/config.h19
-rw-r--r--keyboards/angel64/rules.mk5
-rw-r--r--keyboards/anomalykb/a65i/rules.mk5
-rw-r--r--keyboards/aos/tkl/rules.mk5
-rw-r--r--keyboards/aozora/rules.mk5
-rw-r--r--keyboards/aplyard/aplx6/rev1/rules.mk5
-rw-r--r--keyboards/aplyard/aplx6/rev2/config.h5
-rw-r--r--keyboards/aplyard/aplx6/rev2/rules.mk5
-rw-r--r--keyboards/arabica37/keymaps/default/keymap.c40
-rw-r--r--keyboards/arabica37/rev1/rules.mk6
-rw-r--r--keyboards/arch_36/rules.mk5
-rw-r--r--keyboards/ares/rules.mk2
-rw-r--r--keyboards/arisu/rules.mk5
-rw-r--r--keyboards/arrayperipherals/1x4p1/rules.mk5
-rw-r--r--keyboards/ash1800/rules.mk5
-rw-r--r--keyboards/ash_xiix/rules.mk5
-rw-r--r--keyboards/ashpil/modelm_usbc/rules.mk5
-rw-r--r--keyboards/at101_bh/rules.mk5
-rw-r--r--keyboards/at_at/660m/rules.mk7
-rw-r--r--keyboards/atlantis/ak81_ve/ak81_ve.c61
-rw-r--r--keyboards/atlantis/ak81_ve/ak81_ve.h35
-rw-r--r--keyboards/atlantis/ak81_ve/config.h117
-rw-r--r--keyboards/atlantis/ak81_ve/info.json91
-rw-r--r--keyboards/atlantis/ak81_ve/keymaps/default/keymap.c37
-rw-r--r--keyboards/atlantis/ak81_ve/keymaps/via/keymap.c69
-rw-r--r--keyboards/atlantis/ak81_ve/keymaps/via/rules.mk3
-rw-r--r--keyboards/atlantis/ak81_ve/readme.md23
-rw-r--r--keyboards/atlantis/ak81_ve/rules.mk23
-rw-r--r--keyboards/atlantis/encoder_actions.c68
-rw-r--r--keyboards/atlantis/encoder_actions.h21
-rw-r--r--keyboards/atlantis/readme.md7
-rw-r--r--keyboards/atlas_65/atlas_65.c16
-rw-r--r--keyboards/atlas_65/atlas_65.h42
-rw-r--r--keyboards/atlas_65/config.h130
-rw-r--r--keyboards/atlas_65/info.json82
-rw-r--r--keyboards/atlas_65/keymaps/default/keymap.c49
-rw-r--r--keyboards/atlas_65/keymaps/default/readme.md1
-rw-r--r--keyboards/atlas_65/keymaps/via/keymap.c49
-rw-r--r--keyboards/atlas_65/keymaps/via/rules.mk2
-rw-r--r--keyboards/atlas_65/readme.md26
-rw-r--r--keyboards/atlas_65/rules.mk18
-rw-r--r--keyboards/atomic/rules.mk5
-rw-r--r--keyboards/atreus/keymaps/dvorak_42_key/keymap.c6
-rw-r--r--keyboards/atreus/rules.mk5
-rw-r--r--keyboards/atreus62/keymaps/scheiklp/config.h6
-rw-r--r--keyboards/atreus62/keymaps/scheiklp/keymap.c2
-rw-r--r--keyboards/atreus62/rules.mk8
-rw-r--r--keyboards/atxkb/1894/rules.mk5
-rw-r--r--keyboards/aves60/aves60.c4
-rw-r--r--keyboards/aves60/aves60.h122
-rw-r--r--keyboards/aves60/config.h139
-rw-r--r--keyboards/aves60/info.json512
-rw-r--r--keyboards/aves60/keymaps/default/keymap.c27
-rw-r--r--keyboards/aves60/keymaps/default/readme.md1
-rw-r--r--keyboards/aves60/keymaps/via/keymap.c43
-rw-r--r--keyboards/aves60/keymaps/via/rules.mk2
-rw-r--r--keyboards/aves60/readme.md27
-rw-r--r--keyboards/aves60/rules.mk18
-rw-r--r--keyboards/aves65/rules.mk5
-rw-r--r--keyboards/axolstudio/helpo/rules.mk5
-rw-r--r--keyboards/axolstudio/yeti/rules.mk5
-rw-r--r--keyboards/aya/config.h4
-rw-r--r--keyboards/aya/rules.mk5
-rw-r--r--keyboards/baguette/keymaps/default/keymap.c16
-rw-r--r--keyboards/baguette/keymaps/iso/keymap.c16
-rw-r--r--keyboards/baguette/rules.mk5
-rw-r--r--keyboards/bakeneko60/rules.mk5
-rw-r--r--keyboards/bakeneko65/rev2/rules.mk5
-rw-r--r--keyboards/bakeneko65/rev3/rules.mk5
-rw-r--r--keyboards/bakeneko80/rules.mk5
-rw-r--r--keyboards/bandominedoni/bandominedoni.c72
-rw-r--r--keyboards/bandominedoni/bandominedoni.h4
-rw-r--r--keyboards/bandominedoni/config.h159
-rw-r--r--keyboards/bandominedoni/keymaps/led/keymap.c32
-rw-r--r--keyboards/bandominedoni/keymaps/led/rules.mk4
-rw-r--r--keyboards/bandominedoni/keymaps/via/config.h2
-rw-r--r--keyboards/bandominedoni/keymaps/via/keymap.c32
-rw-r--r--keyboards/bandominedoni/keymaps/via/rules.mk4
-rw-r--r--keyboards/bandominedoni/rgb_matrix_kb.inc (renamed from keyboards/bandominedoni/rgb_matrix_user.inc)0
-rw-r--r--keyboards/bandominedoni/rules.mk5
-rw-r--r--keyboards/bantam44/keymaps/default/keymap.c30
-rw-r--r--keyboards/bantam44/rules.mk6
-rw-r--r--keyboards/barleycorn/rules.mk5
-rw-r--r--keyboards/barleycorn_smd/rules.mk5
-rw-r--r--keyboards/barracuda/rules.mk5
-rw-r--r--keyboards/basekeys/slice/rev1/rules.mk5
-rw-r--r--keyboards/basekeys/slice/rev1_rgb/rules.mk5
-rw-r--r--keyboards/basekeys/trifecta/rules.mk5
-rw-r--r--keyboards/basketweave/config.h5
-rw-r--r--keyboards/basketweave/rules.mk5
-rw-r--r--keyboards/bastardkb/charybdis/3x5/3x5.c83
-rw-r--r--keyboards/bastardkb/charybdis/3x5/3x5.h67
-rw-r--r--keyboards/bastardkb/charybdis/3x5/config.h87
-rw-r--r--keyboards/bastardkb/charybdis/3x5/info.json86
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/default/config.h54
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c70
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md7
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/chconf.h38
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h109
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h26
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c100
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h55
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk22
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h118
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c263
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/readme.md63
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/rules.mk1
-rw-r--r--keyboards/bastardkb/charybdis/3x5/readme.md15
-rw-r--r--keyboards/bastardkb/charybdis/3x5/rules.mk38
-rw-r--r--keyboards/bastardkb/charybdis/4x6/4x6.c94
-rw-r--r--keyboards/bastardkb/charybdis/4x6/4x6.h44
-rw-r--r--keyboards/bastardkb/charybdis/4x6/config.h84
-rw-r--r--keyboards/bastardkb/charybdis/4x6/info.json67
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/default/config.h39
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c75
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md7
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h72
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c166
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/readme.md61
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk1
-rw-r--r--keyboards/bastardkb/charybdis/4x6/readme.md15
-rw-r--r--keyboards/bastardkb/charybdis/4x6/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/charybdis.c343
-rw-r--r--keyboards/bastardkb/charybdis/charybdis.h126
-rw-r--r--keyboards/bastardkb/charybdis/config.h35
-rw-r--r--keyboards/bastardkb/charybdis/post_config.h109
-rw-r--r--keyboards/bastardkb/charybdis/readme.md178
-rw-r--r--keyboards/bastardkb/scylla/rules.mk5
-rw-r--r--keyboards/bastardkb/skeletyl/rules.mk5
-rw-r--r--keyboards/bastardkb/tbk/rules.mk5
-rw-r--r--keyboards/bastardkb/tbkmini/rules.mk5
-rw-r--r--keyboards/bat43/rules.mk5
-rw-r--r--keyboards/bear_face/rules.mk6
-rw-r--r--keyboards/beatervan/rules.mk5
-rwxr-xr-xkeyboards/bemeier/bmek/rev1/rules.mk2
-rwxr-xr-xkeyboards/bemeier/bmek/rev2/rules.mk2
-rwxr-xr-xkeyboards/bemeier/bmek/rev3/rules.mk2
-rw-r--r--keyboards/bfake/rules.mk4
-rwxr-xr-xkeyboards/bigseries/1key/rules.mk5
-rwxr-xr-xkeyboards/bigseries/2key/rules.mk5
-rwxr-xr-xkeyboards/bigseries/3key/rules.mk5
-rwxr-xr-xkeyboards/bigseries/4key/rules.mk5
-rw-r--r--keyboards/binepad/bn003/rules.mk5
-rw-r--r--keyboards/binepad/bn009/rules.mk5
-rw-r--r--keyboards/bioi/f60/rules.mk5
-rw-r--r--keyboards/bioi/g60/rules.mk5
-rw-r--r--keyboards/bioi/g60ble/rules.mk5
-rw-r--r--keyboards/bioi/morgan65/rules.mk5
-rw-r--r--keyboards/bioi/s65/rules.mk5
-rw-r--r--keyboards/bkf/info.json2
-rw-r--r--keyboards/bkf/rules.mk5
-rw-r--r--keyboards/blackplum/keymaps/default/keymap.c16
-rw-r--r--keyboards/blackplum/keymaps/via/keymap.c32
-rw-r--r--keyboards/blackplum/rules.mk5
-rw-r--r--keyboards/blank/blank01/rules.mk5
-rw-r--r--keyboards/blank_tehnologii/manibus/rules.mk6
-rw-r--r--keyboards/blockey/keymaps/default/keymap.c20
-rw-r--r--keyboards/blockey/rules.mk5
-rw-r--r--keyboards/boardrun/bizarre/rules.mk5
-rw-r--r--keyboards/boardrun/classic/rules.mk5
-rw-r--r--keyboards/boardsource/3x4/rules.mk5
-rw-r--r--keyboards/boardsource/4x12/rules.mk5
-rw-r--r--keyboards/boardsource/5x12/rules.mk5
-rw-r--r--keyboards/boardsource/beiwagon/config.h4
-rw-r--r--keyboards/boardsource/beiwagon/rules.mk5
-rw-r--r--keyboards/boardsource/holiday/spooky/rules.mk5
-rw-r--r--keyboards/boardsource/lulu/config.h47
-rw-r--r--keyboards/boardsource/lulu/info.json16
-rw-r--r--keyboards/boardsource/lulu/keymaps/default/keymap.c129
-rw-r--r--keyboards/boardsource/lulu/keymaps/via/keymap.c105
-rw-r--r--keyboards/boardsource/lulu/keymaps/via/rules.mk (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk)0
-rw-r--r--keyboards/boardsource/lulu/lulu.c280
-rw-r--r--keyboards/boardsource/lulu/lulu.h29
-rw-r--r--keyboards/boardsource/lulu/readme.md24
-rw-r--r--keyboards/boardsource/lulu/rules.mk26
-rw-r--r--keyboards/boardsource/microdox/rules.mk5
-rw-r--r--keyboards/boardsource/technik_o/config.h4
-rw-r--r--keyboards/boardsource/technik_o/rules.mk7
-rw-r--r--keyboards/boardsource/technik_o/technik_o.c12
-rw-r--r--keyboards/boardsource/technik_s/config.h4
-rw-r--r--keyboards/boardsource/technik_s/rules.mk7
-rw-r--r--keyboards/boardsource/the_mark/info.json588
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default/keymap.c30
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c30
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c41
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c30
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c41
-rw-r--r--keyboards/boardsource/the_mark/keymaps/via/keymap.c58
-rw-r--r--keyboards/boardsource/the_mark/rules.mk5
-rw-r--r--keyboards/boardsource/the_mark/the_mark.h112
-rw-r--r--keyboards/boardwalk/rules.mk8
-rw-r--r--keyboards/bobpad/rules.mk5
-rw-r--r--keyboards/bop/rules.mk5
-rw-r--r--keyboards/boston/rules.mk5
-rw-r--r--keyboards/boston_meetup/2019/rules.mk7
-rw-r--r--keyboards/botanicalkeyboards/fm2u/rules.mk5
-rw-r--r--keyboards/box75/rules.mk5
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/20130602.c24
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/matrix.c86
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/rules.mk22
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/20140521.c (renamed from keyboards/bpiphany/frosty_flake/frosty_flake.c)0
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/matrix.c86
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/rules.mk22
-rw-r--r--keyboards/bpiphany/frosty_flake/config.h1
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/default/config.h3
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c14
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk7
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h3
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c12
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk5
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/via/keymap.c44
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/via/rules.mk (renamed from keyboards/lazydesigners/dimple/keymaps/via/rules.mk)0
-rw-r--r--keyboards/bpiphany/frosty_flake/matrix.c85
-rw-r--r--keyboards/bpiphany/frosty_flake/readme.md8
-rw-r--r--keyboards/bpiphany/frosty_flake/rules.mk26
-rw-r--r--keyboards/bpiphany/ghost_squid/config.h42
-rw-r--r--keyboards/bpiphany/ghost_squid/ghost_squid.c26
-rw-r--r--keyboards/bpiphany/ghost_squid/ghost_squid.h44
-rw-r--r--keyboards/bpiphany/ghost_squid/info.json121
-rw-r--r--keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c77
-rw-r--r--keyboards/bpiphany/ghost_squid/keymaps/default/readme.md1
-rw-r--r--keyboards/bpiphany/ghost_squid/matrix.c97
-rw-r--r--keyboards/bpiphany/ghost_squid/readme.md27
-rw-r--r--keyboards/bpiphany/ghost_squid/rules.mk20
-rw-r--r--keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c12
-rw-r--r--keyboards/bpiphany/kitten_paw/rules.mk5
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c28
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk6
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c20
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk6
-rw-r--r--keyboards/bpiphany/pegasushoof/rules.mk2
-rw-r--r--keyboards/bpiphany/sixshooter/keymaps/default/keymap.c6
-rw-r--r--keyboards/bpiphany/sixshooter/rules.mk5
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default/config.h3
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c12
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk8
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h8
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c12
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk8
-rw-r--r--keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk1
-rw-r--r--keyboards/bpiphany/tiger_lily/rules.mk5
-rw-r--r--keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h24
-rw-r--r--keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c12
-rw-r--r--keyboards/bpiphany/unloved_bastard/keymaps/default_iso/config.h24
-rw-r--r--keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c12
-rw-r--r--keyboards/bpiphany/unloved_bastard/rules.mk6
-rw-r--r--keyboards/bt66tech/bt66tech60/rules.mk6
-rw-r--r--keyboards/bthlabs/geekpad/keymaps/default/config.h19
-rw-r--r--keyboards/bthlabs/geekpad/rules.mk5
-rw-r--r--keyboards/buildakb/potato65/rules.mk5
-rw-r--r--keyboards/buildakb/potato65hs/rules.mk5
-rw-r--r--keyboards/buildakb/potato65s/rules.mk5
-rw-r--r--keyboards/business_card/alpha/rules.mk5
-rw-r--r--keyboards/business_card/beta/rules.mk5
-rw-r--r--keyboards/business_card/rules.mk5
-rw-r--r--keyboards/butterstick/rules.mk7
-rw-r--r--keyboards/buzzard/buzzard.c3
-rw-r--r--keyboards/buzzard/buzzard.h9
-rw-r--r--keyboards/buzzard/config.h6
-rw-r--r--keyboards/buzzard/info.json10
-rw-r--r--keyboards/buzzard/keymaps/crehmann/config.h38
-rw-r--r--keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c42
-rw-r--r--keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h10
-rw-r--r--keyboards/buzzard/keymaps/crehmann/keymap.c256
-rw-r--r--keyboards/buzzard/keymaps/crehmann/rules.mk9
-rw-r--r--keyboards/buzzard/keymaps/default/config.h39
-rw-r--r--keyboards/buzzard/keymaps/default/keymap.c274
-rw-r--r--keyboards/buzzard/keymaps/default/rules.mk7
-rw-r--r--keyboards/buzzard/readme.md29
-rw-r--r--keyboards/buzzard/rev1/config.h62
-rw-r--r--keyboards/buzzard/rev1/rev1.c128
-rw-r--r--keyboards/buzzard/rev1/rev1.h52
-rw-r--r--keyboards/buzzard/rev1/rules.mk3
-rw-r--r--keyboards/buzzard/rules.mk22
-rwxr-xr-xkeyboards/c39/keymaps/default/config.h3
-rwxr-xr-xkeyboards/c39/rules.mk5
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/config.h56
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/info.json108
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default/config.h7
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default/keymap.c60
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default/readme.md1
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/config.h7
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/keymap.c60
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/readme.md1
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/via/config.h7
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/via/keymap.c71
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/keymaps/via/rules.mk2
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/readme.md25
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/rev6.c3
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/rev6.h27
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/rules.mk18
-rw-r--r--keyboards/caffeinated/serpent65/info.json1
-rw-r--r--keyboards/caffeinated/serpent65/rules.mk5
-rw-r--r--keyboards/canary/canary60rgb/v1/rules.mk5
-rw-r--r--keyboards/cannonkeys/adelie/adelie.c17
-rw-r--r--keyboards/cannonkeys/adelie/adelie.h42
-rw-r--r--keyboards/cannonkeys/adelie/config.h117
-rw-r--r--keyboards/cannonkeys/adelie/info.json68
-rw-r--r--keyboards/cannonkeys/adelie/keymaps/default/keymap.c96
-rw-r--r--keyboards/cannonkeys/adelie/keymaps/via/keymap.c96
-rw-r--r--keyboards/cannonkeys/adelie/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/adelie/readme.md15
-rw-r--r--keyboards/cannonkeys/adelie/rules.mk18
-rw-r--r--keyboards/cannonkeys/aella/rules.mk5
-rw-r--r--keyboards/cannonkeys/an_c/rules.mk8
-rw-r--r--keyboards/cannonkeys/atlas/keymaps/default/keymap.c36
-rw-r--r--keyboards/cannonkeys/atlas/keymaps/via/keymap.c48
-rw-r--r--keyboards/cannonkeys/atlas/rules.mk7
-rw-r--r--keyboards/cannonkeys/atlas_alps/rules.mk5
-rw-r--r--keyboards/cannonkeys/balance/rules.mk5
-rw-r--r--keyboards/cannonkeys/chimera65/rules.mk8
-rw-r--r--keyboards/cannonkeys/db60/rules.mk5
-rw-r--r--keyboards/cannonkeys/devastatingtkl/rules.mk6
-rw-r--r--keyboards/cannonkeys/hoodrowg/config.h79
-rw-r--r--keyboards/cannonkeys/hoodrowg/hoodrowg.c17
-rw-r--r--keyboards/cannonkeys/hoodrowg/hoodrowg.h41
-rw-r--r--keyboards/cannonkeys/hoodrowg/info.json110
-rw-r--r--keyboards/cannonkeys/hoodrowg/keymaps/default/keymap.c41
-rw-r--r--keyboards/cannonkeys/hoodrowg/keymaps/via/keymap.c49
-rw-r--r--keyboards/cannonkeys/hoodrowg/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/hoodrowg/readme.md22
-rw-r--r--keyboards/cannonkeys/hoodrowg/rules.mk18
-rw-r--r--keyboards/cannonkeys/instant60/keymaps/default/keymap.c16
-rw-r--r--keyboards/cannonkeys/instant60/rules.mk7
-rw-r--r--keyboards/cannonkeys/instant65/rules.mk5
-rw-r--r--keyboards/cannonkeys/iron165/rules.mk6
-rw-r--r--keyboards/cannonkeys/obliterated75/rules.mk3
-rw-r--r--keyboards/cannonkeys/onyx/rules.mk5
-rw-r--r--keyboards/cannonkeys/ortho48/rules.mk7
-rw-r--r--keyboards/cannonkeys/ortho60/keymaps/default/keymap.c36
-rw-r--r--keyboards/cannonkeys/ortho60/rules.mk7
-rw-r--r--keyboards/cannonkeys/ortho75/rules.mk7
-rw-r--r--keyboards/cannonkeys/practice60/keymaps/default/keymap.c16
-rw-r--r--keyboards/cannonkeys/practice60/rules.mk7
-rw-r--r--keyboards/cannonkeys/practice65/keymaps/default/keymap.c20
-rw-r--r--keyboards/cannonkeys/practice65/rules.mk7
-rw-r--r--keyboards/cannonkeys/rekt1800/rules.mk6
-rw-r--r--keyboards/cannonkeys/sagittarius/rules.mk5
-rw-r--r--keyboards/cannonkeys/satisfaction75/rules.mk10
-rw-r--r--keyboards/cannonkeys/savage65/rules.mk8
-rw-r--r--keyboards/cannonkeys/tmov2/rules.mk8
-rw-r--r--keyboards/cannonkeys/tsukuyomi/rules.mk5
-rw-r--r--keyboards/cannonkeys/vicious40/rules.mk5
-rw-r--r--keyboards/capsunlocked/cu65/keymaps/via/keymap.c4
-rw-r--r--keyboards/capsunlocked/cu65/rules.mk5
-rw-r--r--keyboards/capsunlocked/cu7/rules.mk5
-rw-r--r--keyboards/carbo65/rules.mk5
-rw-r--r--keyboards/cassette42/rules.mk5
-rw-r--r--keyboards/catch22/keymaps/default/keymap.c20
-rw-r--r--keyboards/catch22/rules.mk5
-rw-r--r--keyboards/centromere/keymaps/default/keymap.c30
-rw-r--r--keyboards/centromere/keymaps/default_u2/keymap.c30
-rw-r--r--keyboards/centromere/rules.mk6
-rw-r--r--keyboards/cest73/tkm/rules.mk5
-rw-r--r--keyboards/chalice/rules.mk5
-rw-r--r--keyboards/charue/charon/charon.c17
-rw-r--r--keyboards/charue/charon/charon.h41
-rw-r--r--keyboards/charue/charon/config.h43
-rw-r--r--keyboards/charue/charon/info.json85
-rw-r--r--keyboards/charue/charon/keymaps/debug/keymap.c76
-rw-r--r--keyboards/charue/charon/keymaps/debug/readme.md1
-rw-r--r--keyboards/charue/charon/keymaps/default/keymap.c40
-rw-r--r--keyboards/charue/charon/keymaps/default/readme.md1
-rw-r--r--keyboards/charue/charon/keymaps/via/keymap.c48
-rw-r--r--keyboards/charue/charon/keymaps/via/readme.md1
-rw-r--r--keyboards/charue/charon/keymaps/via/rules.mk1
-rw-r--r--keyboards/charue/charon/readme.md27
-rw-r--r--keyboards/charue/charon/rules.mk18
-rw-r--r--keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c48
-rw-r--r--keyboards/charue/sunsetter/rules.mk5
-rw-r--r--keyboards/chavdai40/rev1/rules.mk6
-rw-r--r--keyboards/chavdai40/rev2/rules.mk6
-rw-r--r--keyboards/checkerboards/axon40/keymaps/default/keymap.c24
-rw-r--r--keyboards/checkerboards/axon40/keymaps/via/keymap.c40
-rw-r--r--keyboards/checkerboards/axon40/rules.mk5
-rw-r--r--keyboards/checkerboards/candybar_ortho/rules.mk5
-rw-r--r--keyboards/checkerboards/g_idb60/rules.mk5
-rw-r--r--keyboards/checkerboards/nop60/rules.mk5
-rw-r--r--keyboards/checkerboards/phoenix45_ortho/rules.mk5
-rw-r--r--keyboards/checkerboards/plexus75_he/config.h64
-rw-r--r--keyboards/checkerboards/plexus75_he/info.json16
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/2x2u/config.h18
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c88
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/7u/config.h18
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c65
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/default/config.h18
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/default/keymap.c88
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/default/readme.md1
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c109
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/via/rules.mk1
-rw-r--r--keyboards/checkerboards/plexus75_he/plexus75_he.c17
-rw-r--r--keyboards/checkerboards/plexus75_he/plexus75_he.h76
-rw-r--r--keyboards/checkerboards/plexus75_he/readme.md17
-rw-r--r--keyboards/checkerboards/plexus75_he/rules.mk18
-rw-r--r--keyboards/checkerboards/quark_lp/rules.mk5
-rw-r--r--keyboards/checkerboards/quark_squared/config.h4
-rw-r--r--keyboards/checkerboards/quark_squared/info.json12
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c6
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2u/config.h19
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c86
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2x225u/config.h19
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c86
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/default/keymap.c6
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/via/keymap.c8
-rw-r--r--keyboards/checkerboards/quark_squared/quark_squared.h42
-rw-r--r--keyboards/checkerboards/quark_squared/readme.md4
-rw-r--r--keyboards/checkerboards/quark_squared/rules.mk5
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/rules.mk5
-rw-r--r--keyboards/cherrybstudio/cb1800/config.h2
-rw-r--r--keyboards/cherrybstudio/cb1800/rules.mk5
-rw-r--r--keyboards/cherrybstudio/cb87/config.h2
-rw-r--r--keyboards/cherrybstudio/cb87/rules.mk5
-rw-r--r--keyboards/cherrybstudio/cb87rgb/cb87rgb.c60
-rw-r--r--keyboards/cherrybstudio/cb87rgb/cb87rgb.h37
-rw-r--r--keyboards/cherrybstudio/cb87rgb/config.h106
-rw-r--r--keyboards/cherrybstudio/cb87rgb/info.json102
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c34
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md1
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c51
-rw-r--r--keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk2
-rw-r--r--keyboards/cherrybstudio/cb87rgb/readme.md26
-rw-r--r--keyboards/cherrybstudio/cb87rgb/rules.mk21
-rw-r--r--keyboards/cherrybstudio/cb87v2/cb87v2.c14
-rw-r--r--keyboards/cherrybstudio/cb87v2/cb87v2.h36
-rw-r--r--keyboards/cherrybstudio/cb87v2/config.h74
-rw-r--r--keyboards/cherrybstudio/cb87v2/info.json103
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c34
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md1
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c51
-rw-r--r--keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk2
-rw-r--r--keyboards/cherrybstudio/cb87v2/readme.md26
-rw-r--r--keyboards/cherrybstudio/cb87v2/rules.mk18
-rw-r--r--keyboards/cheshire/curiosity/rules.mk5
-rw-r--r--keyboards/chidori/rules.mk5
-rw-r--r--keyboards/chili/rules.mk5
-rw-r--r--keyboards/chimera_ergo/rules.mk6
-rw-r--r--keyboards/chimera_ls/rules.mk6
-rw-r--r--keyboards/chimera_ortho/rules.mk6
-rw-r--r--keyboards/chimera_ortho_plus/rules.mk5
-rw-r--r--keyboards/chlx/merro60/rules.mk5
-rw-r--r--keyboards/choc_taro/rules.mk5
-rw-r--r--keyboards/choco60/keymaps/default/config.h19
-rw-r--r--keyboards/choco60/rev1/rules.mk5
-rw-r--r--keyboards/choco60/rev2/rules.mk5
-rw-r--r--keyboards/christmas_tree/keymaps/default/config.h3
-rw-r--r--keyboards/christmas_tree/rules.mk8
-rw-r--r--keyboards/ck60i/rules.mk5
-rwxr-xr-xkeyboards/ckeys/handwire_101/rules.mk5
-rw-r--r--keyboards/ckeys/nakey/keymaps/default/keymap.c10
-rw-r--r--keyboards/ckeys/nakey/rules.mk5
-rw-r--r--keyboards/ckeys/obelus/keymaps/default/config.h3
-rw-r--r--keyboards/ckeys/obelus/keymaps/default/keymap.c48
-rw-r--r--keyboards/ckeys/obelus/rules.mk5
-rwxr-xr-xkeyboards/ckeys/thedora/rules.mk5
-rw-r--r--keyboards/ckeys/washington/rules.mk5
-rw-r--r--keyboards/claw44/keymaps/default/keymap.c6
-rw-r--r--keyboards/claw44/rev1/rules.mk5
-rw-r--r--keyboards/claw44/rules.mk7
-rw-r--r--keyboards/clawsome/bookerboard/rules.mk5
-rw-r--r--keyboards/clawsome/coupe/rules.mk5
-rw-r--r--keyboards/clawsome/doodle/rules.mk5
-rw-r--r--keyboards/clawsome/fightpad/rules.mk5
-rw-r--r--keyboards/clawsome/gamebuddy/v1_0/rules.mk5
-rw-r--r--keyboards/clawsome/gamebuddy/v1_m/rules.mk5
-rw-r--r--keyboards/clawsome/hatchback/rules.mk5
-rw-r--r--keyboards/clawsome/luggage_rack/rules.mk5
-rw-r--r--keyboards/clawsome/numeros/rules.mk5
-rw-r--r--keyboards/clawsome/roadster/rules.mk5
-rw-r--r--keyboards/clawsome/sedan/rules.mk5
-rw-r--r--keyboards/clawsome/sidekick/rules.mk5
-rw-r--r--keyboards/clawsome/suv/rules.mk5
-rw-r--r--keyboards/clueboard/17/keymaps/default/keymap.c20
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/default/config.h19
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/config.h19
-rw-r--r--keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/config.h19
-rw-r--r--keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/config.h19
-rw-r--r--keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/config.h19
-rw-r--r--keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c14
-rw-r--r--keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c14
-rw-r--r--keyboards/clueboard/60/keymaps/default/keymap.c24
-rw-r--r--keyboards/clueboard/60/keymaps/default_aek/keymap.c24
-rw-r--r--keyboards/clueboard/66/rev3/rules.mk3
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c24
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c24
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c24
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c24
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/rules.mk5
-rw-r--r--keyboards/clueboard/card/info.json2
-rw-r--r--keyboards/clueboard/card/keymaps/default/config.h3
-rw-r--r--keyboards/clueboard/card/keymaps/default/keymap.c10
-rw-r--r--keyboards/clueboard/card/keymaps/default/rules.mk18
-rw-r--r--keyboards/clueboard/card/keymaps/rgb_effects/keymap.c10
-rw-r--r--keyboards/clueboard/card/keymaps/rgb_effects/rules.mk18
-rw-r--r--keyboards/cmm_studio/fuji65/config.h67
-rw-r--r--keyboards/cmm_studio/fuji65/fuji65.c20
-rw-r--r--keyboards/cmm_studio/fuji65/fuji65.h38
-rw-r--r--keyboards/cmm_studio/fuji65/info.json79
-rw-r--r--keyboards/cmm_studio/fuji65/keymaps/default/keymap.c36
-rw-r--r--keyboards/cmm_studio/fuji65/keymaps/via/keymap.c51
-rw-r--r--keyboards/cmm_studio/fuji65/keymaps/via/rules.mk1
-rw-r--r--keyboards/cmm_studio/fuji65/readme.md18
-rw-r--r--keyboards/cmm_studio/fuji65/rules.mk21
-rw-r--r--keyboards/cmm_studio/saka68/hotswap/rules.mk5
-rw-r--r--keyboards/cmm_studio/saka68/solder/rules.mk5
-rw-r--r--keyboards/coarse/cordillera/rules.mk5
-rw-r--r--keyboards/coarse/ixora/rules.mk4
-rw-r--r--keyboards/coarse/vinta/keymaps/default/keymap.c8
-rw-r--r--keyboards/coarse/vinta/rules.mk4
-rw-r--r--keyboards/cocoa40/keymaps/default/config.h20
-rw-r--r--keyboards/cocoa40/rules.mk5
-rw-r--r--keyboards/comet46/rules.mk6
-rw-r--r--keyboards/compound/rules.mk5
-rw-r--r--keyboards/contender/config.h148
-rw-r--r--keyboards/contender/contender.c17
-rw-r--r--keyboards/contender/contender.h43
-rw-r--r--keyboards/contender/info.json37
-rw-r--r--keyboards/contender/keymaps/default/config.h19
-rw-r--r--keyboards/contender/keymaps/default/keymap.c111
-rw-r--r--keyboards/contender/keymaps/default/readme.md1
-rw-r--r--keyboards/contender/readme.md26
-rw-r--r--keyboards/contender/rules.mk19
-rwxr-xr-xkeyboards/contra/rules.mk3
-rw-r--r--keyboards/converter/a1200/miss1200/rules.mk5
-rw-r--r--keyboards/converter/a1200/teensy2pp/rules.mk5
-rw-r--r--keyboards/converter/adb_usb/rules.mk5
-rw-r--r--keyboards/converter/hp_46010a/keymaps/default/keymap.c12
-rw-r--r--keyboards/converter/hp_46010a/rules.mk7
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/default/config.h3
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/default/rules.mk9
-rw-r--r--keyboards/converter/ibm_terminal/rules.mk7
-rw-r--r--keyboards/converter/m0110_usb/keymaps/default/keymap.c16
-rw-r--r--keyboards/converter/m0110_usb/rules.mk5
-rw-r--r--keyboards/converter/modelm101/keymaps/default/config.h19
-rw-r--r--keyboards/converter/modelm101/rules.mk5
-rw-r--r--keyboards/converter/modelm_ssk/rules.mk6
-rw-r--r--keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h19
-rw-r--r--keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c8
-rw-r--r--keyboards/converter/numeric_keypad_IIe/rules.mk5
-rw-r--r--keyboards/converter/palm_usb/rules.mk7
-rw-r--r--keyboards/converter/periboard_512/rules.mk5
-rw-r--r--keyboards/converter/siemens_tastatur/keymaps/default/config.h19
-rw-r--r--keyboards/converter/siemens_tastatur/rules.mk7
-rw-r--r--keyboards/converter/sun_usb/rules.mk7
-rw-r--r--keyboards/converter/usb_usb/ble/rules.mk7
-rw-r--r--keyboards/converter/usb_usb/keymaps/ble/config.h6
-rw-r--r--keyboards/converter/usb_usb/keymaps/default/config.h3
-rw-r--r--keyboards/converter/usb_usb/rules.mk5
-rw-r--r--keyboards/converter/xt_usb/rules.mk5
-rw-r--r--keyboards/cool836a/rules.mk5
-rwxr-xr-xkeyboards/copenhagen_click/click_pad_v1/keymaps/default/config.h19
-rwxr-xr-xkeyboards/copenhagen_click/click_pad_v1/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/discipad/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c2
-rw-r--r--keyboards/coseyfannitutti/discipline/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/mullet/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/mulletpad/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/mysterium/rules.mk5
-rw-r--r--keyboards/coseyfannitutti/romeo/rules.mk5
-rw-r--r--keyboards/cozykeys/bloomer/v2/rules.mk5
-rw-r--r--keyboards/cozykeys/bloomer/v3/rules.mk5
-rw-r--r--keyboards/cozykeys/speedo/v2/keymaps/default/keymap.c30
-rw-r--r--keyboards/cozykeys/speedo/v2/rules.mk5
-rw-r--r--keyboards/cozykeys/speedo/v3/rules.mk5
-rw-r--r--keyboards/cradio/config.h13
-rw-r--r--keyboards/cradio/cradio.c18
-rw-r--r--keyboards/cradio/cradio.h4
-rw-r--r--keyboards/cradio/info.json2
-rw-r--r--keyboards/cradio/keymaps/default/keymap.c9
-rw-r--r--keyboards/cradio/readme.md28
-rw-r--r--keyboards/cradio/rules.mk6
-rw-r--r--keyboards/craftwalk/rules.mk5
-rwxr-xr-xkeyboards/crawlpad/rules.mk5
-rw-r--r--keyboards/crazy_keyboard_68/config.h2
-rw-r--r--keyboards/crazy_keyboard_68/rules.mk5
-rw-r--r--keyboards/crbn/rules.mk5
-rw-r--r--keyboards/creatkeebs/glacier/config.h70
-rw-r--r--keyboards/creatkeebs/glacier/glacier.c17
-rw-r--r--keyboards/creatkeebs/glacier/glacier.h35
-rw-r--r--keyboards/creatkeebs/glacier/info.json98
-rw-r--r--keyboards/creatkeebs/glacier/keymaps/default/keymap.c28
-rw-r--r--keyboards/creatkeebs/glacier/readme.md27
-rw-r--r--keyboards/creatkeebs/glacier/rules.mk18
-rw-r--r--keyboards/creatkeebs/readme.md3
-rw-r--r--keyboards/creatkeebs/thera/config.h64
-rw-r--r--keyboards/creatkeebs/thera/info.json107
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/readme.md29
-rw-r--r--keyboards/creatkeebs/thera/rules.mk18
-rw-r--r--keyboards/creatkeebs/thera/thera.c17
-rw-r--r--keyboards/creatkeebs/thera/thera.h37
-rw-r--r--keyboards/crin/rules.mk5
-rw-r--r--keyboards/crkbd/crkbd.h4
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/README.md7
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/config.h60
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/keymap.c489
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/rules.mk15
-rw-r--r--keyboards/crkbd/keymaps/default/config.h21
-rw-r--r--keyboards/crkbd/keymaps/default/rules.mk7
-rwxr-xr-xkeyboards/crkbd/keymaps/ericgebhart/config.h24
-rwxr-xr-xkeyboards/crkbd/keymaps/ericgebhart/keymap.c60
-rw-r--r--keyboards/crkbd/keymaps/mb_via/config.h26
-rw-r--r--keyboards/crkbd/keymaps/mb_via/keymap.c71
-rw-r--r--keyboards/crkbd/keymaps/mb_via/readme.md12
-rw-r--r--keyboards/crkbd/keymaps/mb_via/rules.mk3
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/config.h30
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/keymap.c45
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/rules.mk5
-rw-r--r--keyboards/crkbd/keymaps/via/config.h24
-rw-r--r--keyboards/crkbd/keymaps/via/rules.mk12
-rw-r--r--keyboards/crkbd/post_config.h6
-rw-r--r--keyboards/crkbd/r2g/config.h78
-rw-r--r--keyboards/crkbd/r2g/r2g.c240
-rw-r--r--keyboards/crkbd/r2g/r2g.h60
-rw-r--r--keyboards/crkbd/r2g/readme.md28
-rw-r--r--keyboards/crkbd/r2g/rules.mk9
-rw-r--r--keyboards/crkbd/readme.md6
-rw-r--r--keyboards/crkbd/rev1/config.h4
-rw-r--r--keyboards/crkbd/rules.mk5
-rw-r--r--keyboards/cu24/keymaps/default/keymap.c20
-rw-r--r--keyboards/cu24/rules.mk5
-rw-r--r--keyboards/cu75/keymaps/default/config.h3
-rw-r--r--keyboards/cu75/keymaps/default/keymap.c24
-rw-r--r--keyboards/cu75/keymaps/default/rules.mk10
-rw-r--r--keyboards/cu75/keymaps/iso/config.h8
-rw-r--r--keyboards/cu75/keymaps/iso/keymap.c24
-rw-r--r--keyboards/cu75/keymaps/iso/rules.mk10
-rw-r--r--keyboards/cu80/rules.mk5
-rw-r--r--keyboards/custommk/genesis/rev2/rules.mk5
-rw-r--r--keyboards/custommk/genesis/rules.mk5
-rw-r--r--keyboards/cutie_club/borsdorf/rules.mk5
-rwxr-xr-xkeyboards/cutie_club/giant_macro_pad/giant_macro_pad.h2
-rw-r--r--keyboards/cutie_club/giant_macro_pad/info.json5
-rwxr-xr-xkeyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c2
-rwxr-xr-xkeyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c2
-rwxr-xr-xkeyboards/cutie_club/giant_macro_pad/rules.mk5
-rw-r--r--keyboards/cutie_club/keebcats/denis/denis.h182
-rw-r--r--keyboards/cutie_club/keebcats/denis/info.json810
-rw-r--r--keyboards/cutie_club/keebcats/denis/rules.mk5
-rw-r--r--keyboards/cutie_club/keebcats/dougal/dougal.h75
-rw-r--r--keyboards/cutie_club/keebcats/dougal/info.json153
-rw-r--r--keyboards/cutie_club/keebcats/dougal/keymaps/default_65_ansi/keymap.c36
-rw-r--r--keyboards/cutie_club/keebcats/dougal/keymaps/default_65_iso/keymap.c36
-rw-r--r--keyboards/cutie_club/keebcats/dougal/rules.mk5
-rw-r--r--keyboards/cutie_club/wraith/keymaps/default/config.h19
-rw-r--r--keyboards/cutie_club/wraith/rules.mk2
-rw-r--r--keyboards/cx60/rules.mk5
-rw-r--r--keyboards/cybergear/macro25/rules.mk5
-rw-r--r--keyboards/dailycraft/stickey4/config.h156
-rw-r--r--keyboards/dailycraft/stickey4/keymaps/default/keymap.c43
-rw-r--r--keyboards/dailycraft/stickey4/keymaps/default/readme.md1
-rw-r--r--keyboards/dailycraft/stickey4/keymaps/via/keymap.c115
-rw-r--r--keyboards/dailycraft/stickey4/keymaps/via/readme.md1
-rw-r--r--keyboards/dailycraft/stickey4/keymaps/via/rules.mk1
-rw-r--r--keyboards/dailycraft/stickey4/readme.md26
-rw-r--r--keyboards/dailycraft/stickey4/rules.mk20
-rw-r--r--keyboards/dailycraft/stickey4/stickey4.c17
-rw-r--r--keyboards/dailycraft/stickey4/stickey4.h36
-rw-r--r--keyboards/daji/seis_cinco/rules.mk7
-rw-r--r--keyboards/db/db63/rules.mk4
-rw-r--r--keyboards/dc01/arrow/rules.mk5
-rw-r--r--keyboards/dc01/left/config.h2
-rw-r--r--keyboards/dc01/left/matrix.c2
-rw-r--r--keyboards/dc01/left/rules.mk5
-rw-r--r--keyboards/dc01/numpad/rules.mk5
-rw-r--r--keyboards/dc01/right/rules.mk5
-rw-r--r--keyboards/dekunukem/duckypad/rules.mk5
-rw-r--r--keyboards/delikeeb/flatbread60/rules.mk5
-rw-r--r--keyboards/delikeeb/vaguettelite/rules.mk5
-rw-r--r--keyboards/delikeeb/vanana/rules.mk7
-rw-r--r--keyboards/delikeeb/vaneela/rules.mk5
-rw-r--r--keyboards/delikeeb/vaneelaex/rules.mk5
-rw-r--r--keyboards/delikeeb/waaffle/rev3/rules.mk5
-rw-r--r--keyboards/delilah/rules.mk5
-rw-r--r--keyboards/deltapad/config.h152
-rw-r--r--keyboards/deltapad/deltapad.c17
-rw-r--r--keyboards/deltapad/deltapad.h51
-rw-r--r--keyboards/deltapad/info.json13
-rw-r--r--keyboards/deltapad/keymaps/default/keymap.c91
-rw-r--r--keyboards/deltapad/readme.md28
-rw-r--r--keyboards/deltapad/rules.mk21
-rw-r--r--keyboards/deltasplit75/rules.mk5
-rwxr-xr-xkeyboards/demiurge/config.h79
-rwxr-xr-xkeyboards/demiurge/demiurge.c18
-rwxr-xr-xkeyboards/demiurge/demiurge.h36
-rw-r--r--keyboards/demiurge/info.json87
-rwxr-xr-xkeyboards/demiurge/keymaps/default/keymap.c39
-rwxr-xr-xkeyboards/demiurge/keymaps/via/keymap.c54
-rwxr-xr-xkeyboards/demiurge/keymaps/via/rules.mk1
-rw-r--r--keyboards/demiurge/readme.md24
-rwxr-xr-xkeyboards/demiurge/rules.mk18
-rwxr-xr-xkeyboards/dichotomy/rules.mk6
-rw-r--r--keyboards/dinofizz/fnrow/v1/rules.mk5
-rw-r--r--keyboards/diverge3/keymaps/iso_uk/keymap.c2
-rw-r--r--keyboards/diverge3/rules.mk4
-rw-r--r--keyboards/divergetm2/keymaps/default/keymap.c60
-rw-r--r--keyboards/divergetm2/rules.mk5
-rw-r--r--keyboards/dk60/rules.mk6
-rw-r--r--keyboards/dm9records/ergoinu/keymaps/default/keymap.c36
-rw-r--r--keyboards/dm9records/ergoinu/keymaps/default/rules.mk10
-rw-r--r--keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c36
-rw-r--r--keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk10
-rw-r--r--keyboards/dm9records/ergoinu/rules.mk7
-rw-r--r--keyboards/dm9records/plaid/keymaps/default/config.h19
-rw-r--r--keyboards/dm9records/plaid/rules.mk5
-rw-r--r--keyboards/dm9records/tartan/rules.mk5
-rw-r--r--keyboards/dmqdesign/spin/rules.mk5
-rw-r--r--keyboards/do60/keymaps/default/keymap.c16
-rw-r--r--keyboards/do60/keymaps/test/keymap.c16
-rw-r--r--keyboards/do60/keymaps/via/keymap.c32
-rw-r--r--keyboards/do60/rules.mk5
-rw-r--r--keyboards/donutcables/budget96/keymaps/default/config.h19
-rw-r--r--keyboards/donutcables/budget96/keymaps/default/keymap.c40
-rw-r--r--keyboards/donutcables/budget96/keymaps/via/keymap.c44
-rw-r--r--keyboards/donutcables/budget96/rules.mk4
-rw-r--r--keyboards/donutcables/scrabblepad/keymaps/default/config.h19
-rw-r--r--keyboards/donutcables/scrabblepad/keymaps/random/keymap.c28
-rw-r--r--keyboards/donutcables/scrabblepad/rules.mk7
-rw-r--r--keyboards/doodboard/duckboard/rules.mk5
-rw-r--r--keyboards/doodboard/duckboard_r2/rules.mk5
-rw-r--r--keyboards/doppelganger/rules.mk5
-rw-r--r--keyboards/doro67/multi/rules.mk5
-rw-r--r--keyboards/doro67/regular/keymaps/default/config.h19
-rw-r--r--keyboards/doro67/regular/rules.mk5
-rw-r--r--keyboards/doro67/rgb/keymaps/default/config.h19
-rw-r--r--keyboards/doro67/rgb/rules.mk5
-rw-r--r--keyboards/dozen0/keymaps/default/config.h19
-rw-r--r--keyboards/dozen0/keymaps/f12/config.h19
-rw-r--r--keyboards/dozen0/rules.mk5
-rw-r--r--keyboards/dp60/rules.mk5
-rw-r--r--keyboards/draculad/keymaps/pimoroni/config.h8
-rw-r--r--keyboards/draculad/keymaps/pimoroni/keymap.c43
-rw-r--r--keyboards/draculad/keymaps/pimoroni/rules.mk5
-rw-r--r--keyboards/draculad/rules.mk5
-rw-r--r--keyboards/draytronics/daisy/rules.mk5
-rw-r--r--keyboards/draytronics/elise/rules.mk5
-rw-r--r--keyboards/draytronics/elise_v2/rules.mk5
-rw-r--r--keyboards/draytronics/scarlet/rules.mk5
-rw-r--r--keyboards/dtisaac/cg108/rules.mk5
-rw-r--r--keyboards/dtisaac/dosa40rgb/config.h2
-rw-r--r--keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c5
-rw-r--r--keyboards/dtisaac/dosa40rgb/rules.mk5
-rw-r--r--keyboards/dtisaac/dtisaac01/info.json4
-rw-r--r--keyboards/dtisaac/dtisaac01/rules.mk5
-rw-r--r--keyboards/dubba175/rules.mk5
-rw-r--r--keyboards/duck/eagle_viper/v2/keymaps/default/keymap.c24
-rw-r--r--keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c48
-rw-r--r--keyboards/duck/eagle_viper/v2/rules.mk5
-rw-r--r--keyboards/duck/jetfire/keymaps/default/config.h19
-rw-r--r--keyboards/duck/jetfire/keymaps/default/keymap.c2
-rw-r--r--keyboards/duck/jetfire/rules.mk5
-rw-r--r--keyboards/duck/lightsaver/keymaps/default/keymap.c28
-rw-r--r--keyboards/duck/lightsaver/rules.mk5
-rw-r--r--keyboards/duck/octagon/keymaps/default/keymap.c4
-rw-r--r--keyboards/duck/octagon/v1/rules.mk5
-rw-r--r--keyboards/duck/octagon/v2/rules.mk5
-rw-r--r--keyboards/duck/orion/v3/rules.mk5
-rw-r--r--keyboards/duck/tcv3/keymaps/default/keymap.c4
-rw-r--r--keyboards/duck/tcv3/keymaps/via/keymap.c28
-rw-r--r--keyboards/duck/tcv3/rules.mk5
-rw-r--r--keyboards/ducky/one2mini/1861st/rules.mk5
-rw-r--r--keyboards/dumbo/rules.mk5
-rw-r--r--keyboards/dumbpad/v0x/info.json1
-rw-r--r--keyboards/dumbpad/v0x/rules.mk5
-rw-r--r--keyboards/dumbpad/v0x_dualencoder/info.json1
-rw-r--r--keyboards/dumbpad/v0x_dualencoder/rules.mk5
-rw-r--r--keyboards/dumbpad/v0x_right/info.json1
-rw-r--r--keyboards/dumbpad/v0x_right/rules.mk5
-rw-r--r--keyboards/dumbpad/v1x/info.json1
-rw-r--r--keyboards/dumbpad/v1x/rules.mk5
-rw-r--r--keyboards/dumbpad/v1x_dualencoder/info.json1
-rw-r--r--keyboards/dumbpad/v1x_dualencoder/rules.mk5
-rw-r--r--keyboards/dumbpad/v1x_right/info.json1
-rw-r--r--keyboards/dumbpad/v1x_right/rules.mk5
-rw-r--r--keyboards/durgod/dgk6x/rules.mk5
-rw-r--r--keyboards/durgod/k3x0/rules.mk5
-rw-r--r--keyboards/dyz/dyz40/rules.mk5
-rw-r--r--keyboards/dyz/dyz60/rules.mk5
-rw-r--r--keyboards/dyz/dyz_tkl/dyz_tkl.h4
-rw-r--r--keyboards/dyz/dyz_tkl/info.json4
-rw-r--r--keyboards/dyz/dyz_tkl/rules.mk7
-rw-r--r--keyboards/dyz/selka40/rules.mk5
-rw-r--r--keyboards/dyz/synthesis60/config.h37
-rw-r--r--keyboards/dyz/synthesis60/info.json113
-rw-r--r--keyboards/dyz/synthesis60/keymaps/default/keymap.c56
-rw-r--r--keyboards/dyz/synthesis60/keymaps/via/keymap.c56
-rw-r--r--keyboards/dyz/synthesis60/keymaps/via/rules.mk1
-rw-r--r--keyboards/dyz/synthesis60/rules.mk20
-rw-r--r--keyboards/dyz/synthesis60/synthesis60.c31
-rw-r--r--keyboards/dyz/synthesis60/synthesis60.h41
-rw-r--r--keyboards/dz60/dz60.h27
-rw-r--r--keyboards/dz60/info.json72
-rw-r--r--keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c96
-rw-r--r--keyboards/dz60/keymaps/iso_de_arrow_0x544d/readme.md10
-rw-r--r--keyboards/dz60/rules.mk5
-rw-r--r--keyboards/dztech/bocc/rules.mk5
-rw-r--r--keyboards/dztech/duo_s/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb/v1/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb/v2/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/rules.mk5
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk5
-rw-r--r--keyboards/dztech/dz64rgb/config.h72
-rw-r--r--keyboards/dztech/dz64rgb/dz64rgb.c121
-rw-r--r--keyboards/dztech/dz64rgb/dz64rgb.h35
-rw-r--r--keyboards/dztech/dz64rgb/keymaps/default/keymap.c48
-rw-r--r--keyboards/dztech/dz64rgb/keymaps/via/keymap.c48
-rw-r--r--keyboards/dztech/dz64rgb/keymaps/via/rules.mk1
-rw-r--r--keyboards/dztech/dz64rgb/readme.md21
-rw-r--r--keyboards/dztech/dz64rgb/rules.mk22
-rw-r--r--keyboards/dztech/dz65rgb/v1/rules.mk5
-rw-r--r--keyboards/dztech/dz65rgb/v2/rules.mk5
-rwxr-xr-xkeyboards/dztech/dz65rgb/v3/rules.mk5
-rw-r--r--keyboards/dztech/dz96/rules.mk5
-rw-r--r--keyboards/dztech/endless80/config.h53
-rw-r--r--keyboards/dztech/endless80/endless80.c16
-rw-r--r--keyboards/dztech/endless80/endless80.h33
-rw-r--r--keyboards/dztech/endless80/info.json13
-rw-r--r--keyboards/dztech/endless80/keymaps/default/keymap.c59
-rw-r--r--keyboards/dztech/endless80/keymaps/via/keymap.c59
-rw-r--r--keyboards/dztech/endless80/keymaps/via/rules.mk2
-rw-r--r--keyboards/dztech/endless80/readme.md18
-rw-r--r--keyboards/dztech/endless80/rules.mk18
-rw-r--r--keyboards/e88/rules.mk5
-rw-r--r--keyboards/ealdin/quadrant/rules.mk5
-rw-r--r--keyboards/earth_rover/rules.mk5
-rw-r--r--keyboards/ebastler/isometria_75/rev1/rules.mk5
-rw-r--r--keyboards/eco/keymaps/bcat/config.h2
-rw-r--r--keyboards/eco/keymaps/bcat/keymap.c19
-rw-r--r--keyboards/eco/keymaps/bcat/readme.md2
-rw-r--r--keyboards/eco/keymaps/default/rules.mk12
-rw-r--r--keyboards/eco/rules.mk8
-rw-r--r--keyboards/edc40/rules.mk5
-rw-r--r--keyboards/edda/rules.mk5
-rw-r--r--keyboards/edi/hardlight/mk1/keymaps/default/config.h20
-rw-r--r--keyboards/edi/hardlight/mk1/rules.mk5
-rw-r--r--keyboards/edi/hardlight/mk2/config.h81
-rw-r--r--keyboards/edi/hardlight/mk2/halconf.h32
-rw-r--r--keyboards/edi/hardlight/mk2/keymaps/.gitignore1
-rw-r--r--keyboards/edi/hardlight/mk2/keymaps/default/config.h24
-rw-r--r--keyboards/edi/hardlight/mk2/keymaps/default/keymap.c115
-rw-r--r--keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c115
-rw-r--r--keyboards/edi/hardlight/mk2/mcuconf.h32
-rw-r--r--keyboards/edi/hardlight/mk2/mk2.c18
-rw-r--r--keyboards/edi/hardlight/mk2/mk2.h37
-rw-r--r--keyboards/edi/hardlight/mk2/readme.md22
-rw-r--r--keyboards/edi/hardlight/mk2/rules.mk33
-rw-r--r--keyboards/eek/rules.mk5
-rw-r--r--keyboards/efreet/rules.mk5
-rw-r--r--keyboards/eggman/rules.mk5
-rw-r--r--keyboards/ein_60/rules.mk5
-rw-r--r--keyboards/emajesty/eiri/rules.mk5
-rw-r--r--keyboards/emery65/rules.mk5
-rw-r--r--keyboards/emi20/rules.mk5
-rw-r--r--keyboards/emptystring/NQG/keymaps/default/keymap.c18
-rw-r--r--keyboards/emptystring/NQG/rules.mk5
-rw-r--r--keyboards/eniigmakeyboards/ek60/rules.mk5
-rw-r--r--keyboards/eniigmakeyboards/ek65/rules.mk5
-rw-r--r--keyboards/eniigmakeyboards/ek87/rules.mk5
-rw-r--r--keyboards/ep/40/keymaps/default/keymap.c24
-rw-r--r--keyboards/ep/40/rules.mk5
-rw-r--r--keyboards/ep/96/keymaps/default/keymap.c12
-rw-r--r--keyboards/ep/96/rules.mk5
-rw-r--r--keyboards/ep/comsn/hs68/rules.mk5
-rw-r--r--keyboards/ep/comsn/mollydooker/rules.mk5
-rw-r--r--keyboards/ep/comsn/tf_longeboye/rules.mk5
-rw-r--r--keyboards/epoch80/rules.mk5
-rw-r--r--keyboards/ergo42/keymaps/default/keymap.c30
-rw-r--r--keyboards/ergo42/rules.mk5
-rw-r--r--keyboards/ergoarrows/rules.mk5
-rw-r--r--keyboards/ergodash/mini/keymaps/default/keymap.c34
-rw-r--r--keyboards/ergodash/rev1/keymaps/default/keymap.c42
-rw-r--r--keyboards/ergodash/rules.mk7
-rw-r--r--keyboards/ergodox_ez/config.h14
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.c51
-rw-r--r--keyboards/ergodox_ez/ergodox_ez.h22
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c21
-rw-r--r--keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c378
-rw-r--r--keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h139
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/config.h2
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c100
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/readme.md19
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk3
-rw-r--r--keyboards/ergodox_ez/matrix.c2
-rw-r--r--keyboards/ergodox_ez/rules.mk15
-rw-r--r--keyboards/ergodox_infinity/rules.mk6
-rw-r--r--keyboards/ergodox_stm32/rules.mk4
-rw-r--r--keyboards/ergosaurus/rules.mk5
-rw-r--r--keyboards/ergoslab/rules.mk7
-rw-r--r--keyboards/ergotravel/keymaps/default/keymap.c16
-rw-r--r--keyboards/ergotravel/rules.mk7
-rw-r--r--keyboards/ericrlau/numdiscipline/rev1/rules.mk5
-rw-r--r--keyboards/esca/getawayvan/rules.mk5
-rw-r--r--keyboards/esca/getawayvan_f042/rules.mk5
-rwxr-xr-xkeyboards/espectro/keymaps/default/keymap.c24
-rwxr-xr-xkeyboards/espectro/keymaps/iso/keymap.c24
-rwxr-xr-xkeyboards/espectro/rules.mk6
-rw-r--r--keyboards/eternal_keypad/config.h152
-rw-r--r--keyboards/eternal_keypad/eternal_keypad.c17
-rw-r--r--keyboards/eternal_keypad/eternal_keypad.h41
-rw-r--r--keyboards/eternal_keypad/info.json47
-rw-r--r--keyboards/eternal_keypad/keymaps/default/config.h19
-rw-r--r--keyboards/eternal_keypad/keymaps/default/keymap.c86
-rw-r--r--keyboards/eternal_keypad/keymaps/default/readme.md1
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/config.h21
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/keymap.c86
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/readme.md1
-rw-r--r--keyboards/eternal_keypad/keymaps/lefty/config.h19
-rw-r--r--keyboards/eternal_keypad/keymaps/lefty/keymap.c86
-rw-r--r--keyboards/eternal_keypad/keymaps/via/keymap.c107
-rw-r--r--keyboards/eternal_keypad/keymaps/via/rules.mk2
-rw-r--r--keyboards/eternal_keypad/readme.md27
-rw-r--r--keyboards/eternal_keypad/rules.mk18
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/config.h44
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/info.json44
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/keymaps/default/keymap.c40
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/readme.md17
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/rules.mk18
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.c17
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.h41
-rw-r--r--keyboards/evancookaudio/tenpad/config.h44
-rw-r--r--keyboards/evancookaudio/tenpad/info.json24
-rw-r--r--keyboards/evancookaudio/tenpad/keymaps/default/keymap.c33
-rw-r--r--keyboards/evancookaudio/tenpad/readme.md17
-rw-r--r--keyboards/evancookaudio/tenpad/rules.mk18
-rw-r--r--keyboards/evancookaudio/tenpad/tenpad.c17
-rw-r--r--keyboards/evancookaudio/tenpad/tenpad.h26
-rw-r--r--keyboards/eve/meteor/rules.mk4
-rw-r--r--keyboards/evil80/keymaps/default/keymap.c36
-rw-r--r--keyboards/evil80/rules.mk8
-rwxr-xr-xkeyboards/evolv/keymaps/gondolindrim/keymap.c410
-rw-r--r--keyboards/evolv/rules.mk11
-rw-r--r--keyboards/evyd13/atom47/rev2/config.h1
-rw-r--r--keyboards/evyd13/atom47/rev2/rules.mk1
-rw-r--r--keyboards/evyd13/atom47/rev3/config.h1
-rw-r--r--keyboards/evyd13/atom47/rev3/rules.mk1
-rw-r--r--keyboards/evyd13/atom47/rev4/config.h1
-rw-r--r--keyboards/evyd13/atom47/rules.mk5
-rw-r--r--keyboards/evyd13/eon40/rules.mk5
-rw-r--r--keyboards/evyd13/eon65/rules.mk5
-rw-r--r--keyboards/evyd13/eon75/rules.mk5
-rw-r--r--keyboards/evyd13/eon87/rules.mk5
-rw-r--r--keyboards/evyd13/eon95/rules.mk5
-rw-r--r--keyboards/evyd13/gh80_1800/rules.mk5
-rw-r--r--keyboards/evyd13/gh80_3700/rules.mk5
-rw-r--r--keyboards/evyd13/gud70/rules.mk5
-rw-r--r--keyboards/evyd13/minitomic/keymaps/default/keymap.c24
-rw-r--r--keyboards/evyd13/minitomic/rules.mk5
-rw-r--r--keyboards/evyd13/mx5160/keymaps/default/keymap.c20
-rw-r--r--keyboards/evyd13/mx5160/rules.mk5
-rw-r--r--keyboards/evyd13/nt660/rules.mk5
-rw-r--r--keyboards/evyd13/nt750/rules.mk5
-rw-r--r--keyboards/evyd13/nt980/rules.mk5
-rw-r--r--keyboards/evyd13/omrontkl/rules.mk5
-rw-r--r--keyboards/evyd13/plain60/keymaps/default/keymap.c16
-rw-r--r--keyboards/evyd13/plain60/rules.mk4
-rw-r--r--keyboards/evyd13/pockettype/rules.mk5
-rw-r--r--keyboards/evyd13/quackfire/rules.mk5
-rw-r--r--keyboards/evyd13/solheim68/rules.mk5
-rw-r--r--keyboards/evyd13/ta65/rules.mk5
-rw-r--r--keyboards/evyd13/wasdat/rules.mk5
-rw-r--r--keyboards/evyd13/wasdat_code/rules.mk5
-rw-r--r--keyboards/evyd13/wonderland/keymaps/default/keymap.c20
-rw-r--r--keyboards/evyd13/wonderland/rules.mk4
-rw-r--r--keyboards/exclusive/e65/rules.mk5
-rw-r--r--keyboards/exclusive/e6_rgb/rules.mk5
-rw-r--r--keyboards/exclusive/e6v2/le/rules.mk5
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/keymaps/default/config.h19
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/keymaps/default/keymap.c8
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c24
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/rules.mk5
-rw-r--r--keyboards/exclusive/e6v2/oe/rules.mk5
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/keymaps/default/config.h19
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/keymaps/default/keymap.c8
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c24
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/rules.mk5
-rw-r--r--keyboards/exclusive/e7v1/rules.mk5
-rw-r--r--keyboards/exclusive/e7v1se/rules.mk5
-rw-r--r--keyboards/exclusive/e85/rules.mk5
-rw-r--r--keyboards/exent/rules.mk2
-rw-r--r--keyboards/eyeohdesigns/babyv/rules.mk5
-rw-r--r--keyboards/eyeohdesigns/sprh/info.json725
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c38
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c23
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c49
-rw-r--r--keyboards/eyeohdesigns/sprh/rules.mk5
-rw-r--r--keyboards/eyeohdesigns/sprh/sprh.c16
-rw-r--r--keyboards/eyeohdesigns/sprh/sprh.h100
-rw-r--r--keyboards/eyeohdesigns/theboulevard/config.h52
-rw-r--r--keyboards/eyeohdesigns/theboulevard/info.json38
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/default/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c48
-rw-r--r--keyboards/eyeohdesigns/theboulevard/readme.md21
-rw-r--r--keyboards/eyeohdesigns/theboulevard/rules.mk19
-rw-r--r--keyboards/eyeohdesigns/theboulevard/theboulevard.c31
-rw-r--r--keyboards/eyeohdesigns/theboulevard/theboulevard.h169
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/info.json2
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/info.json2
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/info.json2
-rw-r--r--keyboards/facew/rules.mk4
-rwxr-xr-xkeyboards/fallacy/rules.mk5
-rw-r--r--keyboards/fc660c/keymaps/default/config.h19
-rw-r--r--keyboards/fc660c/keymaps/default_rgb/config.h51
-rw-r--r--keyboards/fc660c/keymaps/default_rgb/keymap.c46
-rw-r--r--keyboards/fc660c/keymaps/default_rgb/readme.md6
-rw-r--r--keyboards/fc660c/keymaps/default_rgb/rules.mk1
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/config.h51
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/keymap.c46
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/readme.md6
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/rules.mk4
-rw-r--r--keyboards/fc660c/rules.mk4
-rw-r--r--keyboards/fc980c/keymaps/default/config.h20
-rw-r--r--keyboards/fc980c/rules.mk4
-rw-r--r--keyboards/feels/feels65/rules.mk5
-rw-r--r--keyboards/felix/rules.mk4
-rw-r--r--keyboards/ferris/0_1/0_1.h3
-rw-r--r--keyboards/ferris/0_1/rules.mk8
-rw-r--r--keyboards/ferris/0_2/0_2.h3
-rw-r--r--keyboards/ferris/0_2/rules.mk8
-rw-r--r--keyboards/ferris/info.json2
-rw-r--r--keyboards/ferris/keymaps/default/keymap.json2
-rw-r--r--keyboards/ferris/keymaps/via/keymap.c43
-rw-r--r--keyboards/ferris/keymaps/via/rules.mk2
-rw-r--r--keyboards/ferris/sweep/config.h14
-rw-r--r--keyboards/ferris/sweep/readme.md34
-rw-r--r--keyboards/ferris/sweep/rules.mk6
-rw-r--r--keyboards/ferris/sweep/sweep.c17
-rw-r--r--keyboards/ferris/sweep/sweep.h3
-rw-r--r--keyboards/ffkeebs/puca/rules.mk5
-rw-r--r--keyboards/ffkeebs/siris/rules.mk5
-rw-r--r--keyboards/fjlabs/7vhotswap/7vhotswap.c14
-rw-r--r--keyboards/fjlabs/7vhotswap/7vhotswap.h34
-rw-r--r--keyboards/fjlabs/7vhotswap/config.h118
-rw-r--r--keyboards/fjlabs/7vhotswap/info.json97
-rw-r--r--keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c41
-rw-r--r--keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c61
-rw-r--r--keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/7vhotswap/readme.md16
-rw-r--r--keyboards/fjlabs/7vhotswap/rules.mk21
-rw-r--r--keyboards/fjlabs/ad65/rules.mk5
-rw-r--r--keyboards/fjlabs/bks65/rules.mk5
-rw-r--r--keyboards/fjlabs/bks65solder/rules.mk5
-rw-r--r--keyboards/fjlabs/bolsa65/rules.mk5
-rw-r--r--keyboards/fjlabs/kf87/rules.mk5
-rw-r--r--keyboards/fjlabs/ldk65/rules.mk5
-rw-r--r--keyboards/fjlabs/midway60/rules.mk5
-rw-r--r--keyboards/fjlabs/mk61rgbansi/rules.mk5
-rw-r--r--keyboards/fjlabs/polaris/rules.mk5
-rw-r--r--keyboards/fjlabs/ready100/rules.mk5
-rw-r--r--keyboards/fjlabs/tf60ansi/rules.mk5
-rw-r--r--keyboards/fjlabs/tf60v2/rules.mk5
-rw-r--r--keyboards/fjlabs/tf65rgbv2/rules.mk5
-rw-r--r--keyboards/flehrad/bigswitch/rules.mk5
-rw-r--r--keyboards/flehrad/downbubble/keymaps/default/config.h19
-rw-r--r--keyboards/flehrad/downbubble/keymaps/default/keymap.c10
-rw-r--r--keyboards/flehrad/downbubble/rules.mk5
-rw-r--r--keyboards/flehrad/numbrero/rules.mk5
-rw-r--r--keyboards/flehrad/snagpad/rules.mk5
-rw-r--r--keyboards/flehrad/tradestation/rules.mk3
-rw-r--r--keyboards/fleuron/keymaps/default/config.h18
-rw-r--r--keyboards/fleuron/keymaps/default/keymap.c36
-rw-r--r--keyboards/fleuron/rules.mk5
-rw-r--r--keyboards/fluorite/keymaps/default/keymap.c96
-rw-r--r--keyboards/fluorite/rules.mk5
-rw-r--r--keyboards/flx/lodestone/rules.mk5
-rw-r--r--keyboards/flx/virgo/keymaps/default/config.h19
-rw-r--r--keyboards/flx/virgo/rules.mk5
-rw-r--r--keyboards/flxlb/zplit/rules.mk5
-rw-r--r--keyboards/flygone60/rev3/rules.mk5
-rw-r--r--keyboards/foostan/cornelius/rules.mk5
-rw-r--r--keyboards/for_science/rules.mk6
-rw-r--r--keyboards/fortitude60/keymaps/default/keymap.c72
-rw-r--r--keyboards/fortitude60/keymaps/default/rules.mk2
-rw-r--r--keyboards/fortitude60/keymaps/via/config.h20
-rw-r--r--keyboards/fortitude60/keymaps/via/keymap.c127
-rw-r--r--keyboards/fortitude60/keymaps/via/rules.mk1
-rw-r--r--keyboards/fortitude60/rev1/config.h6
-rw-r--r--keyboards/fortitude60/rules.mk7
-rw-r--r--keyboards/four_banger/rules.mk5
-rw-r--r--keyboards/foxlab/key65/hotswap/rules.mk8
-rw-r--r--keyboards/foxlab/key65/universal/rules.mk8
-rw-r--r--keyboards/foxlab/leaf60/hotswap/keymaps/default/config.h19
-rw-r--r--keyboards/foxlab/leaf60/hotswap/rules.mk5
-rw-r--r--keyboards/foxlab/leaf60/universal/keymaps/default/config.h19
-rw-r--r--keyboards/foxlab/leaf60/universal/rules.mk5
-rw-r--r--keyboards/foxlab/time80/rules.mk2
-rw-r--r--keyboards/foxlab/time_re/hotswap/rules.mk7
-rw-r--r--keyboards/foxlab/time_re/universal/rules.mk7
-rw-r--r--keyboards/fr4/southpaw75/rules.mk5
-rw-r--r--keyboards/fr4/unix60/rules.mk5
-rw-r--r--keyboards/fractal/keymaps/default/keymap.c72
-rwxr-xr-xkeyboards/fractal/rules.mk3
-rw-r--r--keyboards/free_willy/rules.mk5
-rw-r--r--keyboards/freyr/rules.mk5
-rw-r--r--keyboards/friedrich/rules.mk5
-rw-r--r--keyboards/frooastboard/config.h52
-rw-r--r--keyboards/frooastboard/frooastboard.c17
-rw-r--r--keyboards/frooastboard/frooastboard.h27
-rw-r--r--keyboards/frooastboard/info.json42
-rw-r--r--keyboards/frooastboard/keymaps/default/keymap.c47
-rw-r--r--keyboards/frooastboard/keymaps/safe_mode/keymap.c43
-rw-r--r--keyboards/frooastboard/keymaps/via/config.h30
-rw-r--r--keyboards/frooastboard/keymaps/via/keymap.c27
-rw-r--r--keyboards/frooastboard/nano/config.h52
-rw-r--r--keyboards/frooastboard/nano/info.json42
-rw-r--r--keyboards/frooastboard/nano/keymaps/default/keymap.c47
-rw-r--r--keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c43
-rw-r--r--keyboards/frooastboard/nano/keymaps/via/config.h30
-rw-r--r--keyboards/frooastboard/nano/keymaps/via/keymap.c27
-rw-r--r--keyboards/frooastboard/nano/keymaps/via/rules.mk2
-rw-r--r--keyboards/frooastboard/nano/nano.c17
-rw-r--r--keyboards/frooastboard/nano/nano.h27
-rw-r--r--keyboards/frooastboard/nano/readme.md19
-rw-r--r--keyboards/frooastboard/nano/rules.mk18
-rw-r--r--keyboards/frooastboard/readme.md19
-rw-r--r--keyboards/frooastboard/rules.mk21
-rw-r--r--keyboards/ft/mars80/keymaps/default/config.h19
-rw-r--r--keyboards/ft/mars80/keymaps/default/keymap.c24
-rw-r--r--keyboards/ft/mars80/rules.mk4
-rw-r--r--keyboards/function96/v1/rules.mk5
-rw-r--r--keyboards/function96/v2/rules.mk5
-rw-r--r--keyboards/funky40/rules.mk5
-rw-r--r--keyboards/gami_studio/lex60/keymaps/default/keymap.c32
-rw-r--r--keyboards/gami_studio/lex60/rules.mk5
-rw-r--r--keyboards/gboards/gergoplex/info.json50
-rw-r--r--keyboards/gboards/gergoplex/rules.mk2
-rw-r--r--keyboards/geekboards/macropad_v2/rules.mk5
-rw-r--r--keyboards/geekboards/tester/rules.mk5
-rw-r--r--keyboards/geminate60/rules.mk5
-rw-r--r--keyboards/generic_panda/panda65_01/rules.mk5
-rw-r--r--keyboards/genone/eclipse_65/rules.mk5
-rw-r--r--keyboards/genone/g1_65/rules.mk5
-rw-r--r--keyboards/gentleman65/rules.mk5
-rw-r--r--keyboards/georgi/rules.mk7
-rw-r--r--keyboards/gergo/rules.mk3
-rw-r--r--keyboards/getta25/rules.mk4
-rw-r--r--keyboards/ggkeyboards/genesis/hotswap/rules.mk5
-rw-r--r--keyboards/ggkeyboards/genesis/solder/rules.mk5
-rw-r--r--keyboards/gh60/revc/rules.mk6
-rw-r--r--keyboards/gh60/satan/keymaps/default/keymap.c16
-rw-r--r--keyboards/gh60/satan/keymaps/default/rules.mk7
-rw-r--r--keyboards/gh60/satan/rules.mk4
-rw-r--r--keyboards/gh60/v1p3/rules.mk5
-rw-r--r--keyboards/gh80_3000/keymaps/ansi_std/keymap.c14
-rw-r--r--keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c14
-rw-r--r--keyboards/gh80_3000/keymaps/default/keymap.c12
-rw-r--r--keyboards/gh80_3000/keymaps/iso_default/keymap.c12
-rw-r--r--keyboards/gh80_3000/keymaps/iso_std/keymap.c12
-rw-r--r--keyboards/gh80_3000/keymaps/iso_wkl/keymap.c12
-rw-r--r--keyboards/gh80_3000/rules.mk5
-rw-r--r--keyboards/ghs/rar/rules.mk5
-rw-r--r--keyboards/gingham/rules.mk5
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/config.h83
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/gk6.c183
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/gk6.h64
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/info.json209
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/keymaps/12x5/keymap.c118
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/keymaps/1x2u/keymap.c119
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/keymaps/default/keymap.c104
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/keymaps/via/keymap.c93
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/readme.md13
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/rules.mk21
-rw-r--r--keyboards/gkeyboard/gkb_m16/rules.mk5
-rw-r--r--keyboards/gl516/a52gl/a52gl.c18
-rw-r--r--keyboards/gl516/a52gl/a52gl.h37
-rw-r--r--keyboards/gl516/a52gl/config.h44
-rw-r--r--keyboards/gl516/a52gl/info.json63
-rw-r--r--keyboards/gl516/a52gl/keymaps/default/keymap.c52
-rw-r--r--keyboards/gl516/a52gl/keymaps/salicylic/config.h22
-rw-r--r--keyboards/gl516/a52gl/keymaps/salicylic/keymap.c65
-rw-r--r--keyboards/gl516/a52gl/keymaps/via/keymap.c65
-rw-r--r--keyboards/gl516/a52gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/a52gl/matrix.c158
-rw-r--r--keyboards/gl516/a52gl/readme.md26
-rw-r--r--keyboards/gl516/a52gl/rules.mk22
-rw-r--r--keyboards/gl516/j73gl/config.h63
-rw-r--r--keyboards/gl516/j73gl/info.json84
-rw-r--r--keyboards/gl516/j73gl/j73gl.c55
-rw-r--r--keyboards/gl516/j73gl/j73gl.h40
-rw-r--r--keyboards/gl516/j73gl/keymaps/default/keymap.c57
-rw-r--r--keyboards/gl516/j73gl/keymaps/via/keymap.c74
-rw-r--r--keyboards/gl516/j73gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h43
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c74
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk7
-rw-r--r--keyboards/gl516/j73gl/matrix.c158
-rw-r--r--keyboards/gl516/j73gl/readme.md27
-rw-r--r--keyboards/gl516/j73gl/rules.mk22
-rw-r--r--keyboards/gl516/n51gl/config.h67
-rw-r--r--keyboards/gl516/n51gl/info.json66
-rw-r--r--keyboards/gl516/n51gl/keymaps/default/keymap.c60
-rw-r--r--keyboards/gl516/n51gl/keymaps/salicylic/config.h22
-rw-r--r--keyboards/gl516/n51gl/keymaps/salicylic/keymap.c117
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/config.h22
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/keymap.c102
-rw-r--r--keyboards/gl516/n51gl/keymaps/via/rules.mk1
-rw-r--r--keyboards/gl516/n51gl/matrix.c158
-rw-r--r--keyboards/gl516/n51gl/n51gl.c18
-rw-r--r--keyboards/gl516/n51gl/n51gl.h54
-rw-r--r--keyboards/gl516/n51gl/readme.md27
-rw-r--r--keyboards/gl516/n51gl/rules.mk22
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c175
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md3
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk3
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/batin/keymap.c50
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/byungyoonc/config.h72
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/byungyoonc/keymap.c129
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/byungyoonc/readme.md41
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rgb_matrix_user.inc1
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rules.mk2
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/gigahawk/config.h6
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/gigahawk/keymap.c74
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/hachetman/config.h22
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/hachetman/keymap.c307
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/hachetman/readme.md26
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/hachetman/rules.mk5
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/config.h19
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/keymap.c91
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/rules.mk1
-rw-r--r--keyboards/gmmk/pro/ansi/rules.mk5
-rw-r--r--keyboards/gmmk/pro/iso/keymaps/jonavin/config.h39
-rw-r--r--keyboards/gmmk/pro/iso/keymaps/jonavin/keymap.c191
-rw-r--r--keyboards/gmmk/pro/iso/keymaps/jonavin/readme.md53
-rw-r--r--keyboards/gmmk/pro/iso/keymaps/jonavin/rgb_matrix_map.h146
-rw-r--r--keyboards/gmmk/pro/iso/keymaps/jonavin/rules.mk12
-rw-r--r--keyboards/gmmk/pro/iso/rules.mk5
-rw-r--r--keyboards/gon/nerd60/rules.mk5
-rw-r--r--keyboards/gon/nerdtkl/keymaps/default/keymap.c4
-rw-r--r--keyboards/gon/nerdtkl/rules.mk5
-rw-r--r--keyboards/gorthage_truck/rules.mk5
-rw-r--r--keyboards/gowla/rules.mk5
-rw-r--r--keyboards/gray_studio/cod67/rules.mk5
-rw-r--r--keyboards/gray_studio/hb85/keymaps/default/keymap.c24
-rw-r--r--keyboards/gray_studio/hb85/rules.mk4
-rw-r--r--keyboards/gray_studio/space65/keymaps/conor/config.h25
-rw-r--r--keyboards/gray_studio/space65/keymaps/conor/keymap.c93
-rw-r--r--keyboards/gray_studio/space65/keymaps/conor/rules.mk1
-rw-r--r--keyboards/gray_studio/space65/keymaps/default/config.h19
-rw-r--r--keyboards/gray_studio/space65/keymaps/default/keymap.c24
-rw-r--r--keyboards/gray_studio/space65/rules.mk5
-rw-r--r--keyboards/gray_studio/think65/hotswap/keymaps/default/config.h19
-rw-r--r--keyboards/gray_studio/think65/hotswap/rules.mk5
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/default/config.h19
-rw-r--r--keyboards/gray_studio/think65/solder/rules.mk5
-rw-r--r--keyboards/grid600/press/keymaps/default/config.h19
-rw-r--r--keyboards/grid600/press/rules.mk5
-rw-r--r--keyboards/gurindam/config.h117
-rw-r--r--keyboards/gurindam/gurindam.c16
-rw-r--r--keyboards/gurindam/gurindam.h46
-rw-r--r--keyboards/gurindam/info.json82
-rw-r--r--keyboards/gurindam/keymaps/default/keymap.c34
-rw-r--r--keyboards/gurindam/keymaps/default/readme.md1
-rw-r--r--keyboards/gurindam/keymaps/via/keymap.c49
-rw-r--r--keyboards/gurindam/keymaps/via/rules.mk1
-rw-r--r--keyboards/gurindam/readme.md23
-rw-r--r--keyboards/gurindam/rules.mk18
-rw-r--r--keyboards/gvalchca/ga150/rules.mk5
-rw-r--r--keyboards/gvalchca/spaccboard/rules.mk5
-rw-r--r--keyboards/h0oni/hotduck/rules.mk5
-rw-r--r--keyboards/hadron/ver2/keymaps/default/keymap.c70
-rw-r--r--keyboards/hadron/ver2/rules.mk7
-rw-r--r--keyboards/hadron/ver3/keymaps/default/keymap.c70
-rw-r--r--keyboards/hadron/ver3/rules.mk6
-rw-r--r--keyboards/halberd/keymaps/default/config.h19
-rw-r--r--keyboards/halberd/keymaps/right_modifiers/config.h19
-rw-r--r--keyboards/halberd/rules.mk5
-rw-r--r--keyboards/halfcliff/rules.mk5
-rw-r--r--keyboards/han60/config.h152
-rw-r--r--keyboards/han60/han60.c17
-rw-r--r--keyboards/han60/han60.h103
-rw-r--r--keyboards/han60/info.json341
-rw-r--r--keyboards/han60/keymaps/default/keymap.c38
-rw-r--r--keyboards/han60/keymaps/default/readme.md1
-rw-r--r--keyboards/han60/keymaps/via/keymap.c54
-rw-r--r--keyboards/han60/keymaps/via/rules.mk1
-rw-r--r--keyboards/han60/readme.md27
-rw-r--r--keyboards/han60/rules.mk18
-rwxr-xr-xkeyboards/hand88/rules.mk5
-rw-r--r--keyboards/handwired/108key_trackpoint/rules.mk5
-rw-r--r--keyboards/handwired/2x5keypad/rules.mk7
-rw-r--r--keyboards/handwired/3dfoxc/3dfoxc.c17
-rw-r--r--keyboards/handwired/3dfoxc/3dfoxc.h38
-rw-r--r--keyboards/handwired/3dfoxc/config.h45
-rw-r--r--keyboards/handwired/3dfoxc/info.json364
-rw-r--r--keyboards/handwired/3dfoxc/keymaps/default/keymap.c69
-rw-r--r--keyboards/handwired/3dfoxc/keymaps/default/readme.md3
-rw-r--r--keyboards/handwired/3dfoxc/keymaps/dlg/config.h19
-rw-r--r--keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c112
-rwxr-xr-xkeyboards/handwired/3dfoxc/keymaps/dlg/readme.md73
-rw-r--r--keyboards/handwired/3dfoxc/readme.md42
-rw-r--r--keyboards/handwired/3dfoxc/rules.mk18
-rw-r--r--keyboards/handwired/3dortho14u/keymaps/default/keymap.c27
-rw-r--r--keyboards/handwired/3dortho14u/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/3dortho14u/keymaps/via/keymap.c35
-rw-r--r--keyboards/handwired/3dortho14u/keymaps/via/rules.mk4
-rw-r--r--keyboards/handwired/3dortho14u/readme.md40
-rw-r--r--keyboards/handwired/3dortho14u/rev1/config.h6
-rw-r--r--keyboards/handwired/3dortho14u/rev1/info.json115
-rw-r--r--keyboards/handwired/3dortho14u/rev1/readme.md39
-rw-r--r--keyboards/handwired/3dortho14u/rev1/rev1.c4
-rw-r--r--keyboards/handwired/3dortho14u/rev1/rev1.h6
-rw-r--r--keyboards/handwired/3dortho14u/rev1/rules.mk1
-rw-r--r--keyboards/handwired/3dortho14u/rev2/config.h6
-rw-r--r--keyboards/handwired/3dortho14u/rev2/info.json115
-rw-r--r--keyboards/handwired/3dortho14u/rev2/readme.md39
-rw-r--r--keyboards/handwired/3dortho14u/rev2/rev2.c4
-rw-r--r--keyboards/handwired/3dortho14u/rev2/rev2.h6
-rw-r--r--keyboards/handwired/3dortho14u/rev2/rules.mk1
-rw-r--r--keyboards/handwired/3dp660/rules.mk5
-rw-r--r--keyboards/handwired/412_64/keymaps/default/config.h5
-rw-r--r--keyboards/handwired/412_64/rules.mk5
-rw-r--r--keyboards/handwired/42/rules.mk5
-rw-r--r--keyboards/handwired/6key/rules.mk5
-rw-r--r--keyboards/handwired/6macro/keymaps/default/keymap.c12
-rw-r--r--keyboards/handwired/6macro/rules.mk5
-rw-r--r--keyboards/handwired/aball/aball.c17
-rw-r--r--keyboards/handwired/aball/aball.h21
-rw-r--r--keyboards/handwired/aball/config.h36
-rw-r--r--keyboards/handwired/aball/info.json12
-rw-r--r--keyboards/handwired/aball/keymaps/default/keymap.c19
-rw-r--r--keyboards/handwired/aball/readme.md14
-rw-r--r--keyboards/handwired/aball/rules.mk22
-rw-r--r--keyboards/handwired/aek64/rules.mk6
-rw-r--r--keyboards/handwired/aim65/rules.mk5
-rw-r--r--keyboards/handwired/amigopunk/rules.mk5
-rw-r--r--keyboards/handwired/angel/rules.mk5
-rw-r--r--keyboards/handwired/aplx2/rules.mk5
-rw-r--r--keyboards/handwired/aranck/rules.mk5
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/default/keymap.c36
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c36
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk5
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c36
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk5
-rw-r--r--keyboards/handwired/arrow_pad/rules.mk5
-rw-r--r--keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c40
-rw-r--r--keyboards/handwired/atreus50/keymaps/ajp10304/readme.md22
-rw-r--r--keyboards/handwired/atreus50/keymaps/default/keymap.c10
-rw-r--r--keyboards/handwired/atreus50/rules.mk8
-rw-r--r--keyboards/handwired/axon/rules.mk5
-rw-r--r--keyboards/handwired/baredev/rev1/config.h25
-rw-r--r--keyboards/handwired/baredev/rev1/info.json706
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/default/keymap.c56
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/default/readme.md7
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c99
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/manoshu/readme.md16
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/via/keymap.c88
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/via/rules.mk4
-rw-r--r--keyboards/handwired/baredev/rev1/readme.md29
-rw-r--r--keyboards/handwired/baredev/rev1/rev1.c17
-rw-r--r--keyboards/handwired/baredev/rev1/rev1.h19
-rw-r--r--keyboards/handwired/baredev/rev1/rules.mk (renamed from keyboards/helix/rev1/.noci)0
-rw-r--r--keyboards/handwired/battleship_gamepad/rules.mk5
-rw-r--r--keyboards/handwired/bdn9_ble/rules.mk5
-rw-r--r--keyboards/handwired/bento/rev1/rules.mk5
-rw-r--r--keyboards/handwired/bigmac/rules.mk5
-rw-r--r--keyboards/handwired/bolek/rules.mk5
-rw-r--r--keyboards/handwired/boss566y/redragon_vara/rules.mk5
-rw-r--r--keyboards/handwired/brain/rules.mk4
-rw-r--r--keyboards/handwired/bstk100/bstk100.c18
-rw-r--r--keyboards/handwired/bstk100/bstk100.h43
-rw-r--r--keyboards/handwired/bstk100/config.h156
-rw-r--r--keyboards/handwired/bstk100/info.json36
-rw-r--r--keyboards/handwired/bstk100/keymaps/default/keymap.c53
-rw-r--r--keyboards/handwired/bstk100/keymaps/default/readme.md26
-rw-r--r--keyboards/handwired/bstk100/keymaps/via/keymap.c53
-rw-r--r--keyboards/handwired/bstk100/keymaps/via/readme.md26
-rw-r--r--keyboards/handwired/bstk100/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/bstk100/readme.md35
-rw-r--r--keyboards/handwired/bstk100/rules.mk18
-rw-r--r--keyboards/handwired/cans12er/rules.mk7
-rw-r--r--keyboards/handwired/carpolly/carpolly.c20
-rw-r--r--keyboards/handwired/carpolly/carpolly.h36
-rw-r--r--keyboards/handwired/carpolly/config.h49
-rw-r--r--keyboards/handwired/carpolly/info.json55
-rw-r--r--keyboards/handwired/carpolly/keymaps/default/keymap.c53
-rw-r--r--keyboards/handwired/carpolly/readme.md30
-rw-r--r--keyboards/handwired/carpolly/rules.mk22
-rw-r--r--keyboards/handwired/chiron/rules.mk2
-rw-r--r--keyboards/handwired/ck4x4/keymaps/default/keymap.c8
-rw-r--r--keyboards/handwired/ck4x4/rules.mk7
-rw-r--r--keyboards/handwired/cmd60/keymaps/default/keymap.c60
-rw-r--r--keyboards/handwired/cmd60/rules.mk5
-rw-r--r--keyboards/handwired/co60/keymaps/all_keys/config.h20
-rw-r--r--keyboards/handwired/co60/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/co60/rev1/rules.mk5
-rw-r--r--keyboards/handwired/co60/rev6/rules.mk4
-rw-r--r--keyboards/handwired/co60/rev7/rules.mk4
-rw-r--r--keyboards/handwired/colorlice/rules.mk5
-rw-r--r--keyboards/handwired/concertina/64key/rules.mk5
-rw-r--r--keyboards/handwired/consolekeyboard/18key/rules.mk5
-rw-r--r--keyboards/handwired/consolekeyboard/20key/rules.mk5
-rw-r--r--keyboards/handwired/consolekeyboard/27key/rules.mk5
-rw-r--r--keyboards/handwired/consolekeyboard/30key/rules.mk5
-rw-r--r--keyboards/handwired/croxsplit44/config.h53
-rw-r--r--keyboards/handwired/croxsplit44/croxsplit44.c17
-rw-r--r--keyboards/handwired/croxsplit44/croxsplit44.h32
-rw-r--r--keyboards/handwired/croxsplit44/info.json55
-rw-r--r--keyboards/handwired/croxsplit44/keymaps/default/keymap.c31
-rw-r--r--keyboards/handwired/croxsplit44/keymaps/via/keymap.c43
-rw-r--r--keyboards/handwired/croxsplit44/keymaps/via/rules.mk2
-rw-r--r--keyboards/handwired/croxsplit44/readme.md23
-rw-r--r--keyboards/handwired/croxsplit44/rules.mk21
-rw-r--r--keyboards/handwired/curiosity/rules.mk5
-rw-r--r--keyboards/handwired/d48/keymaps/default/keymap.c34
-rw-r--r--keyboards/handwired/d48/rules.mk3
-rw-r--r--keyboards/handwired/dactyl/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_left/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/dactyl_left/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md8
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h60
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c64
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk10
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md8
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h47
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c64
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk9
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.c1
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h26
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/config.h41
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/info.json72
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/config.h24
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/keymap.c63
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h24
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c5
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/rules.mk19
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md8
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h47
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c70
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk10
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h11
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c170
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk1
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h14
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c190
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk6
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/5x7/rules.mk5
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/6x6.h29
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/chconf.h22
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h54
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/halconf.h24
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/mcuconf.h22
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk30
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/config.h18
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/info.json95
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c13
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/keymaps/default_5_thumb/keymap.c51
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c59
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/promicro/config.h29
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/promicro/rules.mk8
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/readme.md63
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/rules.mk13
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.c5
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h37
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/config.h40
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/info.json108
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/keymaps/default/keymap.c52
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/rules.mk19
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.c5
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h37
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h40
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json108
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/keymaps/default/keymap.c52
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/readme.md85
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/rules.mk19
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/6x7.c4
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/6x7.h35
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/config.h40
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/info.json114
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/keymaps/default/keymap.c50
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/rules.mk19
-rw-r--r--keyboards/handwired/dactyl_manuform/dactyl_manuform.h8
-rw-r--r--keyboards/handwired/dactyl_manuform/readme.md7
-rw-r--r--keyboards/handwired/dactyl_promicro/rules.mk8
-rw-r--r--keyboards/handwired/dactyl_rah/rules.mk5
-rw-r--r--keyboards/handwired/daishi/rules.mk8
-rw-r--r--keyboards/handwired/datahand/rules.mk7
-rw-r--r--keyboards/handwired/dc/mc/001/rules.mk5
-rw-r--r--keyboards/handwired/ddg_56/rules.mk5
-rw-r--r--keyboards/handwired/dygma/raise/ansi/ansi.c81
-rw-r--r--keyboards/handwired/dygma/raise/ansi/info.json1115
-rw-r--r--keyboards/handwired/dygma/raise/ansi/rules.mk (renamed from keyboards/laptreus/keymaps/vosechu/readme.md)0
-rw-r--r--keyboards/handwired/dygma/raise/config.h34
-rw-r--r--keyboards/handwired/dygma/raise/halconf.h21
-rw-r--r--keyboards/handwired/dygma/raise/iso/info.json1115
-rw-r--r--keyboards/handwired/dygma/raise/iso/iso.c79
-rw-r--r--keyboards/handwired/dygma/raise/iso/rules.mk (renamed from keyboards/m65/rev1/readme.md)0
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/ansi/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/default/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/iso/keymap.c43
-rw-r--r--keyboards/handwired/dygma/raise/keymaps/iso/readme.md1
-rw-r--r--keyboards/handwired/dygma/raise/leds.c101
-rw-r--r--keyboards/handwired/dygma/raise/leds.h25
-rw-r--r--keyboards/handwired/dygma/raise/matrix.c104
-rw-r--r--keyboards/handwired/dygma/raise/mcuconf.h25
-rw-r--r--keyboards/handwired/dygma/raise/raise.c22
-rw-r--r--keyboards/handwired/dygma/raise/raise.h83
-rw-r--r--keyboards/handwired/dygma/raise/readme.md55
-rw-r--r--keyboards/handwired/dygma/raise/rules.mk32
-rw-r--r--keyboards/handwired/dygma/raise/wire-protocol-constants.h51
-rw-r--r--keyboards/handwired/eagleii/rules.mk3
-rw-r--r--keyboards/handwired/elrgo_s/rules.mk5
-rw-r--r--keyboards/handwired/ergocheap/rules.mk6
-rw-r--r--keyboards/handwired/evk/v1_3/rules.mk5
-rw-r--r--keyboards/handwired/fc200rt_qmk/rules.mk5
-rw-r--r--keyboards/handwired/fivethirteen/keymaps/default/keymap.c40
-rw-r--r--keyboards/handwired/fivethirteen/rules.mk5
-rw-r--r--keyboards/handwired/floorboard/rules.mk5
-rw-r--r--keyboards/handwired/frankie_macropad/rules.mk8
-rw-r--r--keyboards/handwired/frenchdev/keymaps/default/keymap.c64
-rw-r--r--keyboards/handwired/frenchdev/rules.mk5
-rw-r--r--keyboards/handwired/freoduo/rules.mk5
-rw-r--r--keyboards/handwired/fruity60/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/fruity60/rules.mk5
-rw-r--r--keyboards/handwired/gamenum/keymaps/default/keymap.c30
-rw-r--r--keyboards/handwired/gamenum/rules.mk5
-rw-r--r--keyboards/handwired/hacked_motospeed/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c8
-rw-r--r--keyboards/handwired/hacked_motospeed/rules.mk5
-rw-r--r--keyboards/handwired/heisenberg/rules.mk5
-rw-r--r--keyboards/handwired/hexon38/rules.mk9
-rw-r--r--keyboards/handwired/hillside/0_1/0_1.c4
-rw-r--r--keyboards/handwired/hillside/0_1/0_1.h34
-rw-r--r--keyboards/handwired/hillside/0_1/config.h35
-rw-r--r--keyboards/handwired/hillside/0_1/info.json13
-rw-r--r--keyboards/handwired/hillside/0_1/rules.mk8
-rw-r--r--keyboards/handwired/hillside/info.json97
-rw-r--r--keyboards/handwired/hillside/keymaps/default/keymap.json102
-rw-r--r--keyboards/handwired/hillside/keymaps/default/readme.md216
-rwxr-xr-xkeyboards/handwired/hillside/keymaps/json2hill.py136
-rw-r--r--keyboards/handwired/hillside/keymaps/via/keymap.json101
-rw-r--r--keyboards/handwired/hillside/readme.md29
-rw-r--r--keyboards/handwired/hnah108/rules.mk5
-rw-r--r--keyboards/handwired/hnah40/keymaps/default/config.h18
-rw-r--r--keyboards/handwired/hnah40/rules.mk5
-rw-r--r--keyboards/handwired/hnah40rgb/rules.mk5
-rw-r--r--keyboards/handwired/ibm122m/rules.mk5
-rw-r--r--keyboards/handwired/ibm_wheelwriter/rules.mk5
-rw-r--r--keyboards/handwired/jn68m/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/jn68m/rules.mk5
-rw-r--r--keyboards/handwired/jopr/rules.mk5
-rw-r--r--keyboards/handwired/jot50/keymaps/default/keymap.c51
-rw-r--r--keyboards/handwired/jot50/rules.mk8
-rw-r--r--keyboards/handwired/jotanck/rules.mk8
-rw-r--r--keyboards/handwired/jotpad16/rules.mk8
-rw-r--r--keyboards/handwired/jtallbean/split_65/rules.mk5
-rw-r--r--keyboards/handwired/juliet/rules.mk5
-rw-r--r--keyboards/handwired/k8split/rules.mk5
-rw-r--r--keyboards/handwired/k_numpad17/rules.mk4
-rw-r--r--keyboards/handwired/kbod/keymaps/default/config.h3
-rw-r--r--keyboards/handwired/kbod/keymaps/default/keymap.c40
-rw-r--r--keyboards/handwired/kbod/keymaps/default/rules.mk7
-rw-r--r--keyboards/handwired/kbod/rules.mk5
-rw-r--r--keyboards/handwired/ks63/rules.mk5
-rw-r--r--keyboards/handwired/lagrange/rules.mk5
-rw-r--r--keyboards/handwired/leftynumpad/rules.mk5
-rw-r--r--keyboards/handwired/lovelive9/rules.mk9
-rw-r--r--keyboards/handwired/macroboard/chconf.h39
-rw-r--r--keyboards/handwired/macroboard/config.h141
-rw-r--r--keyboards/handwired/macroboard/info.json41
-rw-r--r--keyboards/handwired/macroboard/keymaps/default/keymap.c27
-rw-r--r--keyboards/handwired/macroboard/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/macroboard/macroboard.c17
-rw-r--r--keyboards/handwired/macroboard/macroboard.h41
-rw-r--r--keyboards/handwired/macroboard/readme.md27
-rw-r--r--keyboards/handwired/macroboard/rules.mk19
-rw-r--r--keyboards/handwired/magicforce61/keymaps/default/keymap.c30
-rw-r--r--keyboards/handwired/magicforce61/rules.mk5
-rw-r--r--keyboards/handwired/magicforce68/keymaps/default/keymap.c30
-rw-r--r--keyboards/handwired/magicforce68/rules.mk5
-rw-r--r--keyboards/handwired/marauder/rules.mk5
-rw-r--r--keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/mechboards_micropad/rules.mk5
-rw-r--r--keyboards/handwired/meck_tkl/blackpill_f401/chconf.h39
-rw-r--r--keyboards/handwired/meck_tkl/blackpill_f401/config.h14
-rw-r--r--keyboards/handwired/meck_tkl/blackpill_f401/rules.mk10
-rw-r--r--keyboards/handwired/meck_tkl/config.h47
-rw-r--r--keyboards/handwired/meck_tkl/info.json103
-rw-r--r--keyboards/handwired/meck_tkl/keymaps/default/keymap.c29
-rw-r--r--keyboards/handwired/meck_tkl/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/meck_tkl/meck_tkl.c4
-rw-r--r--keyboards/handwired/meck_tkl/meck_tkl.h38
-rw-r--r--keyboards/handwired/meck_tkl/readme.md37
-rw-r--r--keyboards/handwired/meck_tkl/rules.mk16
-rw-r--r--keyboards/handwired/minorca/keymaps/default/keymap.c24
-rw-r--r--keyboards/handwired/minorca/keymaps/readme.md23
-rw-r--r--keyboards/handwired/minorca/rules.mk5
-rw-r--r--keyboards/handwired/misterdeck/config.h45
-rw-r--r--keyboards/handwired/misterdeck/info.json5
-rw-r--r--keyboards/handwired/misterdeck/keymaps/default/config.h20
-rw-r--r--keyboards/handwired/misterdeck/keymaps/default/keymap.c37
-rw-r--r--keyboards/handwired/misterdeck/keymaps/nobuttons/config.h22
-rw-r--r--keyboards/handwired/misterdeck/keymaps/nobuttons/keymap.c37
-rw-r--r--keyboards/handwired/misterdeck/misterdeck.c17
-rw-r--r--keyboards/handwired/misterdeck/misterdeck.h29
-rw-r--r--keyboards/handwired/misterdeck/readme.md21
-rw-r--r--keyboards/handwired/misterdeck/rules.mk21
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/keymaps/default/config.h3
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c14
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk7
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/rules.mk9
-rw-r--r--keyboards/handwired/myskeeb/rules.mk6
-rw-r--r--keyboards/handwired/nicekey/rules.mk5
-rw-r--r--keyboards/handwired/not_so_minidox/rules.mk7
-rw-r--r--keyboards/handwired/novem/rules.mk5
-rw-r--r--keyboards/handwired/nozbe_macro/config.h57
-rw-r--r--keyboards/handwired/nozbe_macro/info.json15
-rw-r--r--keyboards/handwired/nozbe_macro/keymaps/default/keymap.c31
-rw-r--r--keyboards/handwired/nozbe_macro/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/nozbe_macro/nozbe_macro.c17
-rw-r--r--keyboards/handwired/nozbe_macro/nozbe_macro.h25
-rw-r--r--keyboards/handwired/nozbe_macro/readme.md26
-rw-r--r--keyboards/handwired/nozbe_macro/rules.mk18
-rw-r--r--keyboards/handwired/numpad20/keymaps/default/keymap.c10
-rw-r--r--keyboards/handwired/numpad20/rules.mk5
-rw-r--r--keyboards/handwired/obro/config.h58
-rw-r--r--keyboards/handwired/obro/info.json10
-rw-r--r--keyboards/handwired/obro/keymaps/default/keymap.c49
-rw-r--r--keyboards/handwired/obro/keymaps/via/keymap.c49
-rw-r--r--keyboards/handwired/obro/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/obro/obro.c18
-rw-r--r--keyboards/handwired/obro/obro.h37
-rw-r--r--keyboards/handwired/obro/readme.md22
-rw-r--r--keyboards/handwired/obro/rules.mk18
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c48
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/rules.mk5
-rw-r--r--keyboards/handwired/oem_ansi_fullsize/rules.mk5
-rw-r--r--keyboards/handwired/oem_iso_fullsize/rules.mk5
-rw-r--r--keyboards/handwired/onekey/keymaps/oled/keymap.c2
-rw-r--r--keyboards/handwired/onekey/rules.mk5
-rw-r--r--keyboards/handwired/ortho5x13/rules.mk5
-rw-r--r--keyboards/handwired/ortho5x14/rules.mk5
-rw-r--r--keyboards/handwired/ortho_brass/config.h44
-rw-r--r--keyboards/handwired/ortho_brass/info.json116
-rw-r--r--keyboards/handwired/ortho_brass/keymaps/default/keymap.c240
-rw-r--r--keyboards/handwired/ortho_brass/keymaps/default/readme.md5
-rw-r--r--keyboards/handwired/ortho_brass/ortho_brass.c26
-rw-r--r--keyboards/handwired/ortho_brass/ortho_brass.h47
-rw-r--r--keyboards/handwired/ortho_brass/readme.md6
-rw-r--r--keyboards/handwired/ortho_brass/rules.mk22
-rw-r--r--keyboards/handwired/owlet60/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/owlet60/keymaps/default/keymap.c20
-rw-r--r--keyboards/handwired/owlet60/rules.mk5
-rw-r--r--keyboards/handwired/p65rgb/rules.mk5
-rw-r--r--keyboards/handwired/pilcrow/keymaps/default/config.h3
-rw-r--r--keyboards/handwired/pilcrow/keymaps/default/keymap.c40
-rw-r--r--keyboards/handwired/pilcrow/keymaps/default/rules.mk7
-rw-r--r--keyboards/handwired/pilcrow/rules.mk5
-rw-r--r--keyboards/handwired/pill60/rules.mk6
-rw-r--r--keyboards/handwired/postageboard/mini/rules.mk8
-rw-r--r--keyboards/handwired/postageboard/r1/rules.mk8
-rw-r--r--keyboards/handwired/prime_exl/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/prime_exl/rules.mk5
-rw-r--r--keyboards/handwired/prime_exl_plus/rules.mk5
-rw-r--r--keyboards/handwired/prkl30/feather/rules.mk3
-rw-r--r--keyboards/handwired/prkl30/promicro/rules.mk3
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rules.mk11
-rw-r--r--keyboards/handwired/promethium/keymaps/readme.md22
-rw-r--r--keyboards/handwired/promethium/promethium.h2
-rw-r--r--keyboards/handwired/promethium/rules.mk8
-rw-r--r--keyboards/handwired/pterodactyl/rules.mk5
-rw-r--r--keyboards/handwired/pteron/keymaps/default/keymap.c48
-rw-r--r--keyboards/handwired/pteron/rules.mk5
-rw-r--r--keyboards/handwired/pteron38/rules.mk5
-rw-r--r--keyboards/handwired/pteron44/rules.mk5
-rw-r--r--keyboards/handwired/qc60/keymaps/default/keymap.c8
-rw-r--r--keyboards/handwired/qc60/rules.mk8
-rw-r--r--keyboards/handwired/reddot/keymaps/default/keymap.c20
-rwxr-xr-xkeyboards/handwired/reddot/rules.mk5
-rw-r--r--keyboards/handwired/retro_refit/keymaps/default/keymap.c14
-rw-r--r--keyboards/handwired/retro_refit/rules.mk6
-rw-r--r--keyboards/handwired/riblee_f401/rules.mk5
-rw-r--r--keyboards/handwired/riblee_f411/config.h5
-rw-r--r--keyboards/handwired/riblee_f411/rules.mk12
-rw-r--r--keyboards/handwired/rs60/keymaps/default/keymap.c72
-rw-r--r--keyboards/handwired/rs60/rules.mk5
-rw-r--r--keyboards/handwired/selene/rules.mk5
-rw-r--r--keyboards/handwired/sick68/rules.mk5
-rw-r--r--keyboards/handwired/sick_pad/rules.mk5
-rw-r--r--keyboards/handwired/slash/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/slash/rules.mk5
-rw-r--r--keyboards/handwired/snatchpad/config.h145
-rw-r--r--keyboards/handwired/snatchpad/info.json21
-rw-r--r--keyboards/handwired/snatchpad/keymaps/default/keymap.c23
-rw-r--r--keyboards/handwired/snatchpad/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/snatchpad/readme.md34
-rw-r--r--keyboards/handwired/snatchpad/rules.mk20
-rw-r--r--keyboards/handwired/snatchpad/snatchpad.c66
-rw-r--r--keyboards/handwired/snatchpad/snatchpad.h24
-rw-r--r--keyboards/handwired/sono1/chconf.h29
-rw-r--r--keyboards/handwired/sono1/config.h74
-rw-r--r--keyboards/handwired/sono1/halconf.h27
-rw-r--r--keyboards/handwired/sono1/keymaps/via/config.h4
-rw-r--r--keyboards/handwired/sono1/keymaps/via/keymap.c66
-rw-r--r--keyboards/handwired/sono1/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/sono1/mcuconf.h31
-rw-r--r--keyboards/handwired/sono1/readme.md32
-rw-r--r--keyboards/handwired/sono1/rules.mk14
-rw-r--r--keyboards/handwired/sono1/stm32f103/chconf.h28
-rw-r--r--keyboards/handwired/sono1/stm32f103/config.h36
-rw-r--r--keyboards/handwired/sono1/stm32f103/halconf.h26
-rw-r--r--keyboards/handwired/sono1/stm32f103/mcuconf.h30
-rw-r--r--keyboards/handwired/sono1/stm32f103/rules.mk8
-rw-r--r--keyboards/handwired/sono1/t2pp/config.h36
-rw-r--r--keyboards/handwired/sono1/t2pp/rules.mk5
-rw-r--r--keyboards/handwired/space_oddity/keymaps/default/keymap.c42
-rw-r--r--keyboards/handwired/space_oddity/rules.mk5
-rw-r--r--keyboards/handwired/split65/promicro/rules.mk5
-rw-r--r--keyboards/handwired/split65/stm32/rules.mk5
-rw-r--r--keyboards/handwired/split89/rules.mk5
-rw-r--r--keyboards/handwired/splittest/rules.mk8
-rw-r--r--keyboards/handwired/steamvan/keymaps/default/config.h3
-rw-r--r--keyboards/handwired/steamvan/rev1/rules.mk4
-rw-r--r--keyboards/handwired/sticc14/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/sticc14/rules.mk5
-rw-r--r--keyboards/handwired/stream_cheap/2x3/rules.mk5
-rw-r--r--keyboards/handwired/stream_cheap/2x4/rules.mk5
-rw-r--r--keyboards/handwired/stream_cheap/2x5/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/astro65/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/bebol/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/beegboy/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/bumblebee.c56
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/bumblebee.h39
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/config.h58
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/info.json10
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/keymaps/default/keymap.c47
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/keymaps/default/rules.mk2
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/keymaps/via/keymap.c53
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/keymaps/via/rules.mk4
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/readme.md21
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/rules.mk19
-rw-r--r--keyboards/handwired/swiftrax/cowfish/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/config.h47
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/digicarp65.c31
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/digicarp65.h78
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/info.json315
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/keymaps/default/keymap.c42
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/keymaps/via/keymap.c50
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/readme.md21
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/rules.mk21
-rw-r--r--keyboards/handwired/swiftrax/equator/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/glacier/config.h51
-rw-r--r--keyboards/handwired/swiftrax/glacier/glacier.c18
-rw-r--r--keyboards/handwired/swiftrax/glacier/glacier.h43
-rw-r--r--keyboards/handwired/swiftrax/glacier/info.json10
-rw-r--r--keyboards/handwired/swiftrax/glacier/keymaps/default/keymap.c28
-rw-r--r--keyboards/handwired/swiftrax/glacier/keymaps/via/keymap.c44
-rw-r--r--keyboards/handwired/swiftrax/glacier/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/swiftrax/glacier/readme.md18
-rw-r--r--keyboards/handwired/swiftrax/glacier/rules.mk18
-rw-r--r--keyboards/handwired/swiftrax/joypad/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/koalafications/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/nodu/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/pandamic/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/the_galleon/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/unsplit/rules.mk5
-rw-r--r--keyboards/handwired/swiftrax/walter/rules.mk5
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/rules.mk5
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/rules.mk5
-rw-r--r--keyboards/handwired/symmetry60/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/symmetry60/rules.mk5
-rw-r--r--keyboards/handwired/t111/rules.mk5
-rw-r--r--keyboards/handwired/tennie/keymaps/simple-numbpad/config.h19
-rw-r--r--keyboards/handwired/tennie/keymaps/soundboard/config.h19
-rw-r--r--keyboards/handwired/tennie/rules.mk5
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/keymap.c64
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/rules.mk7
-rw-r--r--keyboards/handwired/terminus_mini/rules.mk5
-rw-r--r--keyboards/handwired/trackpoint/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/trackpoint/rules.mk7
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/config.h2
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c100
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/rules.mk5
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/config.h3
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h1
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h11
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c29
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/post_config.h20
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md5
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk2
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h7
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c302
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk46
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/rules.mk7
-rw-r--r--keyboards/handwired/tractyl_manuform/tm_sync.c114
-rw-r--r--keyboards/handwired/tractyl_manuform/tractyl_manuform.c18
-rw-r--r--keyboards/handwired/tractyl_manuform/tractyl_manuform.h9
-rw-r--r--keyboards/handwired/traveller/rules.mk5
-rw-r--r--keyboards/handwired/tritium_numpad/rules.mk4
-rw-r--r--keyboards/handwired/twadlee/tp69/rules.mk5
-rw-r--r--keyboards/handwired/unicomp_mini_m/rules.mk5
-rw-r--r--keyboards/handwired/unk/rules.mk5
-rw-r--r--keyboards/handwired/videowriter/rules.mk5
-rw-r--r--keyboards/handwired/wabi/rules.mk5
-rw-r--r--keyboards/handwired/woodpad/rules.mk5
-rw-r--r--keyboards/handwired/wulkan/rules.mk4
-rw-r--r--keyboards/handwired/xealous/keymaps/default/keymap.c36
-rw-r--r--keyboards/handwired/xealous/rules.mk8
-rw-r--r--keyboards/handwired/xealousbrown/rules.mk5
-rw-r--r--keyboards/handwired/z150/rules.mk5
-rw-r--r--keyboards/handwired/zergo/rules.mk5
-rw-r--r--keyboards/hardlineworks/otd_plus/rules.mk7
-rw-r--r--keyboards/hecomi/alpha/rules.mk5
-rw-r--r--keyboards/hecomi/keymaps/default/config.h19
-rw-r--r--keyboards/hecomi/keymaps/default/keymap.c24
-rw-r--r--keyboards/hecomi/rules.mk5
-rw-r--r--keyboards/heliar/wm1_hotswap/rules.mk5
-rw-r--r--keyboards/helix/pico/config.h10
-rw-r--r--keyboards/helix/pico/keymaps/biacco/keymap.c35
-rw-r--r--keyboards/helix/pico/keymaps/biacco/rules.mk6
-rw-r--r--keyboards/helix/pico/keymaps/default/keymap.c195
-rw-r--r--keyboards/helix/pico/keymaps/default/readme.md6
-rw-r--r--keyboards/helix/pico/keymaps/default/readme_jp.md14
-rw-r--r--keyboards/helix/pico/keymaps/default/rules.mk13
-rw-r--r--keyboards/helix/pico/keymaps/mtei/keymap.c163
-rw-r--r--keyboards/helix/pico/keymaps/mtei/rules.mk6
-rw-r--r--keyboards/helix/pico/matrix.c342
-rw-r--r--keyboards/helix/pico/override_helix_options.mk-maintenance42
-rw-r--r--keyboards/helix/pico/pico.c29
-rw-r--r--keyboards/helix/pico/pico.h20
-rw-r--r--keyboards/helix/pico/post_rules.mk138
-rw-r--r--keyboards/helix/pico/qmk_conf/rules.mk2
-rw-r--r--keyboards/helix/pico/rules.mk4
-rw-r--r--keyboards/helix/pico/split_util.c104
-rw-r--r--keyboards/helix/pico/split_util.h16
-rw-r--r--keyboards/helix/rev1/config.h86
-rw-r--r--keyboards/helix/rev1/info.json80
-rw-r--r--keyboards/helix/rev1/keymaps/OLED_sample/config.h51
-rw-r--r--keyboards/helix/rev1/keymaps/OLED_sample/keymap.c471
-rw-r--r--keyboards/helix/rev1/keymaps/OLED_sample/readme.md25
-rw-r--r--keyboards/helix/rev1/keymaps/OLED_sample/rules.mk4
-rw-r--r--keyboards/helix/rev1/keymaps/OLED_sample/serial_config.h9
-rw-r--r--keyboards/helix/rev1/keymaps/default/config.h34
-rw-r--r--keyboards/helix/rev1/keymaps/default/keymap.c342
-rw-r--r--keyboards/helix/rev1/matrix.c308
-rw-r--r--keyboards/helix/rev1/rev1.c10
-rw-r--r--keyboards/helix/rev1/rev1.h129
-rw-r--r--keyboards/helix/rev1/rules.mk11
-rw-r--r--keyboards/helix/rev1/serial_config.h9
-rw-r--r--keyboards/helix/rev1/split_util.c86
-rw-r--r--keyboards/helix/rev1/split_util.h17
-rw-r--r--keyboards/helix/rev2/keymaps/default/keymap.c132
-rw-r--r--keyboards/helix/rev2/keymaps/default/rules.mk7
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows/rules.mk7
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk7
-rw-r--r--keyboards/helix/rev3_4rows/keymaps/default/config.h19
-rw-r--r--keyboards/helix/rev3_4rows/keymaps/default/keymap.c40
-rw-r--r--keyboards/helix/rev3_4rows/keymaps/via/config.h19
-rw-r--r--keyboards/helix/rev3_4rows/keymaps/via/keymap.c40
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/default/config.h19
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/default/keymap.c48
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk6
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/via/config.h19
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/via/keymap.c48
-rw-r--r--keyboards/helix/rules.mk9
-rw-r--r--keyboards/hhkb/ansi/rules.mk6
-rw-r--r--keyboards/hhkb/jp/rules.mk6
-rw-r--r--keyboards/hhkb_lite_2/rules.mk5
-rwxr-xr-xkeyboards/hid_liber/rules.mk5
-rw-r--r--keyboards/hidtech/bastyl/rules.mk5
-rw-r--r--keyboards/hifumi/rules.mk5
-rw-r--r--keyboards/hineybush/h08_ocelot/config.h150
-rw-r--r--keyboards/hineybush/h08_ocelot/h08_ocelot.c17
-rw-r--r--keyboards/hineybush/h08_ocelot/h08_ocelot.h36
-rw-r--r--keyboards/hineybush/h08_ocelot/info.json10
-rw-r--r--keyboards/hineybush/h08_ocelot/keymaps/default/keymap.c35
-rw-r--r--keyboards/hineybush/h08_ocelot/keymaps/default/readme.md1
-rw-r--r--keyboards/hineybush/h08_ocelot/keymaps/via/keymap.c45
-rw-r--r--keyboards/hineybush/h08_ocelot/keymaps/via/readme.md1
-rw-r--r--keyboards/hineybush/h08_ocelot/keymaps/via/rules.mk1
-rw-r--r--keyboards/hineybush/h08_ocelot/readme.md27
-rw-r--r--keyboards/hineybush/h08_ocelot/rules.mk18
-rw-r--r--keyboards/hineybush/h10/rules.mk5
-rw-r--r--keyboards/hineybush/h60/rules.mk6
-rw-r--r--keyboards/hineybush/h65/config.h150
-rw-r--r--keyboards/hineybush/h65/h65.c17
-rw-r--r--keyboards/hineybush/h65/h65.h41
-rw-r--r--keyboards/hineybush/h65/info.json10
-rw-r--r--keyboards/hineybush/h65/keymaps/default/keymap.c41
-rw-r--r--keyboards/hineybush/h65/keymaps/default/readme.md1
-rw-r--r--keyboards/hineybush/h65/keymaps/via/keymap.c61
-rw-r--r--keyboards/hineybush/h65/keymaps/via/readme.md1
-rw-r--r--keyboards/hineybush/h65/keymaps/via/rules.mk1
-rw-r--r--keyboards/hineybush/h65/readme.md27
-rw-r--r--keyboards/hineybush/h65/rules.mk18
-rw-r--r--keyboards/hineybush/h65_hotswap/config.h150
-rw-r--r--keyboards/hineybush/h65_hotswap/h65_hotswap.c17
-rw-r--r--keyboards/hineybush/h65_hotswap/h65_hotswap.h41
-rw-r--r--keyboards/hineybush/h65_hotswap/info.json10
-rw-r--r--keyboards/hineybush/h65_hotswap/keymaps/default/keymap.c41
-rw-r--r--keyboards/hineybush/h65_hotswap/keymaps/default/readme.md1
-rw-r--r--keyboards/hineybush/h65_hotswap/keymaps/via/keymap.c61
-rw-r--r--keyboards/hineybush/h65_hotswap/keymaps/via/readme.md1
-rw-r--r--keyboards/hineybush/h65_hotswap/keymaps/via/rules.mk1
-rw-r--r--keyboards/hineybush/h65_hotswap/readme.md27
-rw-r--r--keyboards/hineybush/h65_hotswap/rules.mk18
-rw-r--r--keyboards/hineybush/h660s/keymaps/default/keymap.c8
-rw-r--r--keyboards/hineybush/h660s/keymaps/via/keymap.c8
-rw-r--r--keyboards/hineybush/h660s/rules.mk6
-rw-r--r--keyboards/hineybush/h75_singa/keymaps/default/keymap.c6
-rw-r--r--keyboards/hineybush/h75_singa/keymaps/via/keymap.c6
-rw-r--r--keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c6
-rw-r--r--keyboards/hineybush/h75_singa/rules.mk5
-rw-r--r--keyboards/hineybush/h87a/keymaps/default/config.h21
-rw-r--r--keyboards/hineybush/h87a/keymaps/wkl/config.h21
-rw-r--r--keyboards/hineybush/h87a/rules.mk7
-rw-r--r--keyboards/hineybush/h88/keymaps/default/config.h21
-rw-r--r--keyboards/hineybush/h88/keymaps/wkl/config.h21
-rw-r--r--keyboards/hineybush/h88/rules.mk5
-rw-r--r--keyboards/hineybush/hbcp/keymaps/default/config.h19
-rw-r--r--keyboards/hineybush/hbcp/keymaps/default/keymap.c9
-rw-r--r--keyboards/hineybush/hbcp/keymaps/wkl/config.h19
-rw-r--r--keyboards/hineybush/hbcp/keymaps/wkl/keymap.c7
-rw-r--r--keyboards/hineybush/hbcp/rules.mk5
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/default/config.h19
-rw-r--r--keyboards/hineybush/hineyg80/keymaps/wkl/config.h19
-rw-r--r--keyboards/hineybush/hineyg80/rules.mk5
-rw-r--r--keyboards/hineybush/physix/keymaps/default/keymap.c7
-rw-r--r--keyboards/hineybush/physix/rules.mk5
-rw-r--r--keyboards/hineybush/sm68/rules.mk5
-rw-r--r--keyboards/holyswitch/southpaw75/rules.mk5
-rwxr-xr-xkeyboards/honeycomb/rules.mk6
-rw-r--r--keyboards/horizon/rules.mk5
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/config.h103
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.c49
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.h48
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/info.json83
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/keymap.c187
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/readme.md3
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/config.h23
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/keymap.c187
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/readme.md3
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/rules.mk2
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md24
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/rules.mk22
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/config.h107
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/info.json78
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/keymap.c187
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/readme.md3
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/config.h23
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/keymap.c187
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/readme.md3
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/rules.mk1
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.c49
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.h48
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/readme.md24
-rw-r--r--keyboards/horrortroll/chinese_pcb/m63_rgb/rules.mk22
-rw-r--r--keyboards/horrortroll/chinese_pcb/readme.md14
-rw-r--r--keyboards/horrortroll/handwired_k552/boards/k552/board.c49
-rw-r--r--keyboards/horrortroll/handwired_k552/boards/k552/board.h145
-rw-r--r--keyboards/horrortroll/handwired_k552/boards/k552/board.mk5
-rw-r--r--keyboards/horrortroll/handwired_k552/chconf.h26
-rw-r--r--keyboards/horrortroll/handwired_k552/config.h102
-rw-r--r--keyboards/horrortroll/handwired_k552/halconf.h26
-rw-r--r--keyboards/horrortroll/handwired_k552/handwired_k552.c64
-rw-r--r--keyboards/horrortroll/handwired_k552/handwired_k552.h54
-rw-r--r--keyboards/horrortroll/handwired_k552/info.json103
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/keymap.c98
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/keymap_stuff.h300
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/led/cool_diagonal.c22
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/led/custom_gradient.c74
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/led/diagonal.c22
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/led/kitt.c68
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/led/random_breath_rainbow.c55
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/oled/oled_stuff.h69
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/readme.md16
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/rgb_matrix_user.inc15
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/default/rules.mk1
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/config.h23
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/keymap.c98
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/keymap_stuff.h300
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/led/cool_diagonal.c22
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/led/custom_gradient.c74
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/led/diagonal.c22
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/led/kitt.c68
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/led/random_breath_rainbow.c55
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/oled/oled_stuff.h69
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/readme.md16
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/rgb_matrix_user.inc15
-rw-r--r--keyboards/horrortroll/handwired_k552/keymaps/via/rules.mk3
-rw-r--r--keyboards/horrortroll/handwired_k552/ld/k552_f103.ld85
-rw-r--r--keyboards/horrortroll/handwired_k552/lib/bongocat.c376
-rw-r--r--keyboards/horrortroll/handwired_k552/lib/galaxy.c58
-rw-r--r--keyboards/horrortroll/handwired_k552/lib/glcdfont.c248
-rw-r--r--keyboards/horrortroll/handwired_k552/lib/logo.c58
-rw-r--r--keyboards/horrortroll/handwired_k552/lib/wave.c133
-rw-r--r--keyboards/horrortroll/handwired_k552/mcuconf.h27
-rw-r--r--keyboards/horrortroll/handwired_k552/readme.md22
-rw-r--r--keyboards/horrortroll/handwired_k552/rules.mk33
-rw-r--r--keyboards/horrortroll/paws60/config.h49
-rw-r--r--keyboards/horrortroll/paws60/info.json285
-rw-r--r--keyboards/horrortroll/paws60/keymaps/default/keymap.c87
-rw-r--r--keyboards/horrortroll/paws60/keymaps/default/readme.md3
-rw-r--r--keyboards/horrortroll/paws60/keymaps/via/config.h19
-rw-r--r--keyboards/horrortroll/paws60/keymaps/via/keymap.c87
-rw-r--r--keyboards/horrortroll/paws60/keymaps/via/readme.md3
-rw-r--r--keyboards/horrortroll/paws60/keymaps/via/rules.mk1
-rw-r--r--keyboards/horrortroll/paws60/paws60.c17
-rw-r--r--keyboards/horrortroll/paws60/paws60.h129
-rw-r--r--keyboards/horrortroll/paws60/readme.md27
-rw-r--r--keyboards/horrortroll/paws60/rules.mk20
-rw-r--r--keyboards/horrortroll/readme.md11
-rw-r--r--keyboards/hotdox/keymaps/bliss/keymap.c173
-rw-r--r--keyboards/hotdox/keymaps/bliss/readme.md8
-rw-r--r--keyboards/hotdox/keymaps/bliss/rules.mk5
-rw-r--r--keyboards/hotdox/rules.mk5
-rw-r--r--keyboards/hp69/rules.mk5
-rw-r--r--keyboards/hs60/v1/keymaps/ansi/keymap.c16
-rw-r--r--keyboards/hs60/v1/keymaps/default/keymap.c16
-rw-r--r--keyboards/hs60/v1/rules.mk5
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/default/keymap.c32
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/via/keymap.c32
-rw-r--r--keyboards/hs60/v2/ansi/rules.mk5
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/default/keymap.c32
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/via/keymap.c32
-rw-r--r--keyboards/hs60/v2/hhkb/rules.mk5
-rw-r--r--keyboards/hs60/v2/iso/keymaps/default/keymap.c32
-rw-r--r--keyboards/hs60/v2/iso/keymaps/via/keymap.c32
-rw-r--r--keyboards/hs60/v2/iso/rules.mk5
-rwxr-xr-xkeyboards/hub16/rules.mk7
-rw-r--r--keyboards/hub20/rules.mk5
-rw-r--r--keyboards/ianklug/grooveboard/rules.mk5
-rw-r--r--keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk5
-rw-r--r--keyboards/id67/default_rgb/config.h (renamed from keyboards/id67/config.h)0
-rw-r--r--keyboards/id67/default_rgb/default_rgb.c17
-rw-r--r--keyboards/id67/default_rgb/default_rgb.h (renamed from keyboards/id67/id67.h)0
-rw-r--r--keyboards/id67/default_rgb/info.json (renamed from keyboards/id67/info.json)0
-rw-r--r--keyboards/id67/default_rgb/readme.md19
-rw-r--r--keyboards/id67/default_rgb/rules.mk22
-rw-r--r--keyboards/id67/id67.c17
-rw-r--r--keyboards/id67/readme.md20
-rw-r--r--keyboards/id67/rgb/config.h120
-rw-r--r--keyboards/id67/rgb/info.json85
-rw-r--r--keyboards/id67/rgb/keymaps/default/keymap.c36
-rw-r--r--keyboards/id67/rgb/keymaps/thewerther/config.h95
-rw-r--r--keyboards/id67/rgb/keymaps/thewerther/keymap.c57
-rw-r--r--keyboards/id67/rgb/keymaps/thewerther/rules.mk2
-rw-r--r--keyboards/id67/rgb/readme.md36
-rw-r--r--keyboards/id67/rgb/rgb.c49
-rw-r--r--keyboards/id67/rgb/rgb.h34
-rw-r--r--keyboards/id67/rgb/rules.mk25
-rw-r--r--keyboards/id67/rules.mk25
-rw-r--r--keyboards/id80/rules.mk5
-rw-r--r--keyboards/id87/rules.mk5
-rw-r--r--keyboards/idb/idb_60/rules.mk6
-rw-r--r--keyboards/idobao/id75/v2/config.h152
-rw-r--r--keyboards/idobao/id75/v2/info.json10
-rw-r--r--keyboards/idobao/id75/v2/readme.md27
-rw-r--r--keyboards/idobao/id75/v2/rules.mk24
-rw-r--r--keyboards/idobao/id75/v2/v2.c49
-rw-r--r--keyboards/idobao/id75/v2/v2.h41
-rw-r--r--keyboards/idobao/id80/v3/config.h135
-rw-r--r--keyboards/idobao/id80/v3/info.json96
-rw-r--r--keyboards/idobao/id80/v3/keymaps/default/keymap.c36
-rw-r--r--keyboards/idobao/id80/v3/keymaps/default/readme.md1
-rw-r--r--keyboards/idobao/id80/v3/keymaps/via/keymap.c52
-rw-r--r--keyboards/idobao/id80/v3/keymaps/via/rules.mk2
-rw-r--r--keyboards/idobao/id80/v3/readme.md27
-rw-r--r--keyboards/idobao/id80/v3/rules.mk22
-rw-r--r--keyboards/idobao/id80/v3/v3.c62
-rw-r--r--keyboards/idobao/id80/v3/v3.h37
-rw-r--r--keyboards/idobao/id96/rules.mk5
-rw-r--r--keyboards/idobo/keymaps/default/config.h19
-rw-r--r--keyboards/idobo/keymaps/default/keymap.c12
-rw-r--r--keyboards/idobo/keymaps/default75/config.h21
-rw-r--r--keyboards/idobo/keymaps/default75/keymap.c20
-rw-r--r--keyboards/idobo/rules.mk7
-rw-r--r--keyboards/illuminati/is0/rules.mk5
-rw-r--r--keyboards/illusion/rosa/rules.mk5
-rw-r--r--keyboards/ilumkb/primus75/rules.mk5
-rw-r--r--keyboards/ilumkb/simpler61/config.h104
-rw-r--r--keyboards/ilumkb/simpler61/info.json76
-rw-r--r--keyboards/ilumkb/simpler61/keymaps/default/keymap.c35
-rw-r--r--keyboards/ilumkb/simpler61/keymaps/via/keymap.c49
-rw-r--r--keyboards/ilumkb/simpler61/keymaps/via/rules.mk2
-rw-r--r--keyboards/ilumkb/simpler61/readme.md17
-rw-r--r--keyboards/ilumkb/simpler61/rules.mk20
-rw-r--r--keyboards/ilumkb/simpler61/simpler61.c110
-rw-r--r--keyboards/ilumkb/simpler61/simpler61.h35
-rw-r--r--keyboards/ilumkb/simpler64/config.h105
-rw-r--r--keyboards/ilumkb/simpler64/info.json79
-rw-r--r--keyboards/ilumkb/simpler64/keymaps/default/keymap.c35
-rw-r--r--keyboards/ilumkb/simpler64/keymaps/via/keymap.c49
-rw-r--r--keyboards/ilumkb/simpler64/keymaps/via/rules.mk2
-rw-r--r--keyboards/ilumkb/simpler64/readme.md17
-rw-r--r--keyboards/ilumkb/simpler64/rules.mk20
-rw-r--r--keyboards/ilumkb/simpler64/simpler64.c113
-rw-r--r--keyboards/ilumkb/simpler64/simpler64.h35
-rw-r--r--keyboards/ilumkb/volcano660/rules.mk5
-rw-r--r--keyboards/inett_studio/sqx/hotswap/rules.mk5
-rw-r--r--keyboards/inett_studio/sqx/universal/rules.mk5
-rw-r--r--keyboards/infinity60/rules.mk5
-rw-r--r--keyboards/irene/rules.mk5
-rw-r--r--keyboards/iriskeyboards/rules.mk5
-rw-r--r--keyboards/iron180/config.h28
-rw-r--r--keyboards/iron180/halconf.h10
-rw-r--r--keyboards/iron180/iron180.c17
-rw-r--r--keyboards/iron180/iron180.h2
-rwxr-xr-xkeyboards/iron180/keymaps/default/keymap.c2
-rwxr-xr-xkeyboards/iron180/keymaps/via/keymap.c2
-rw-r--r--keyboards/iron180/mcuconf.h10
-rw-r--r--keyboards/iron180/readme.md36
-rw-r--r--keyboards/iron180/rules.mk8
-rw-r--r--keyboards/ivy/keymaps/default/keymap.c16
-rw-r--r--keyboards/ivy/rules.mk8
-rw-r--r--keyboards/jacky_studio/bear_65/rules.mk5
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev1/rules.mk3
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev2/rules.mk5
-rw-r--r--keyboards/jadookb/jkb2/rules.mk5
-rw-r--r--keyboards/jadookb/jkb65/config.h51
-rw-r--r--keyboards/jadookb/jkb65/keymaps/default/keymap.c16
-rw-r--r--keyboards/jadookb/jkb65/keymaps/via/rules.mk1
-rw-r--r--keyboards/jadookb/jkb65/r2/config.h27
-rw-r--r--keyboards/jadookb/jkb65/r2/readme.md23
-rw-r--r--keyboards/jadookb/jkb65/rules.mk5
-rw-r--r--keyboards/jae/j01/keymaps/default/keymap.c16
-rw-r--r--keyboards/jae/j01/rules.mk5
-rw-r--r--keyboards/jagdpietr/drakon/rules.mk5
-rw-r--r--keyboards/jc65/v32a/rules.mk4
-rw-r--r--keyboards/jc65/v32u4/keymaps/default/config.h3
-rw-r--r--keyboards/jc65/v32u4/rules.mk5
-rw-r--r--keyboards/jd40/rules.mk6
-rw-r--r--keyboards/jd45/rules.mk6
-rw-r--r--keyboards/jels/jels88/rules.mk5
-rw-r--r--keyboards/jiran/rules.mk5
-rw-r--r--keyboards/jisplit89/rules.mk5
-rw-r--r--keyboards/jkdlab/binary_monkey/rules.mk5
-rw-r--r--keyboards/jm60/rules.mk5
-rw-r--r--keyboards/jnao/keymaps/default/keymap.c60
-rw-r--r--keyboards/jnao/rules.mk5
-rw-r--r--keyboards/jolofsor/denial75/config.h63
-rw-r--r--keyboards/jolofsor/denial75/denial75.c17
-rw-r--r--keyboards/jolofsor/denial75/denial75.h33
-rw-r--r--keyboards/jolofsor/denial75/info.json99
-rw-r--r--keyboards/jolofsor/denial75/keymaps/default/keymap.c134
-rw-r--r--keyboards/jolofsor/denial75/keymaps/via/keymap.c152
-rw-r--r--keyboards/jolofsor/denial75/keymaps/via/rules.mk1
-rw-r--r--keyboards/jolofsor/denial75/readme.md20
-rw-r--r--keyboards/jolofsor/denial75/rules.mk19
-rw-r--r--keyboards/jones/v03/rules.mk5
-rw-r--r--keyboards/jones/v03_1/rules.mk5
-rw-r--r--keyboards/jorne/config.h6
-rw-r--r--keyboards/jorne/info.json240
-rw-r--r--keyboards/jorne/jorne.c70
-rw-r--r--keyboards/jorne/jorne.h9
-rw-r--r--keyboards/jorne/keymaps/default/config.h25
-rw-r--r--keyboards/jorne/keymaps/default/keymap.c84
-rw-r--r--keyboards/jorne/keymaps/via/config.h24
-rw-r--r--keyboards/jorne/keymaps/via/keymap.c84
-rw-r--r--keyboards/jorne/keymaps/via/rules.mk1
-rw-r--r--keyboards/jorne/post_config.h29
-rw-r--r--keyboards/jorne/readme.md25
-rw-r--r--keyboards/jorne/rev1/config.h46
-rw-r--r--keyboards/jorne/rev1/rev1.c3
-rw-r--r--keyboards/jorne/rev1/rev1.h31
-rw-r--r--keyboards/jorne/rev1/rules.mk2
-rw-r--r--keyboards/jorne/rules.mk21
-rw-r--r--keyboards/just60/rules.mk5
-rw-r--r--keyboards/k34/config.h38
-rw-r--r--keyboards/k34/info.json52
-rw-r--r--keyboards/k34/k34.c4
-rw-r--r--keyboards/k34/k34.h26
-rw-r--r--keyboards/k34/keymaps/default/config.h24
-rw-r--r--keyboards/k34/keymaps/default/keymap.c61
-rw-r--r--keyboards/k34/keymaps/default/readme.md1
-rw-r--r--keyboards/k34/keymaps/default/rules.mk1
-rw-r--r--keyboards/k34/readme.md25
-rw-r--r--keyboards/k34/rules.mk18
-rw-r--r--keyboards/k_type/config.h79
-rw-r--r--keyboards/k_type/i2c_master.c16
-rw-r--r--keyboards/k_type/i2c_master.h10
-rw-r--r--keyboards/k_type/is31fl3733-dual.c10
-rw-r--r--keyboards/k_type/is31fl3733-dual.h1
-rw-r--r--keyboards/k_type/k_type-rgbdriver.c4
-rw-r--r--keyboards/k_type/k_type.c55
-rw-r--r--keyboards/k_type/keymaps/default/keymap.c11
-rw-r--r--keyboards/k_type/keymaps/default/rules.mk (renamed from keyboards/k_type/keymaps/rgb/rules.mk)0
-rw-r--r--keyboards/k_type/keymaps/rgb/config.h32
-rw-r--r--keyboards/k_type/keymaps/rgb/keymap.c30
-rw-r--r--keyboards/k_type/keymaps/rgb/readme.md7
-rw-r--r--keyboards/k_type/mcuconf.h2
-rw-r--r--keyboards/k_type/rules.mk17
-rw-r--r--keyboards/kabedon/kabedon78s/rules.mk7
-rw-r--r--keyboards/kabedon/kabedon980/rules.mk7
-rw-r--r--keyboards/kabedon/kabedon98e/rules.mk5
-rw-r--r--keyboards/kagamidget/keymaps/default/config.h19
-rw-r--r--keyboards/kagamidget/rules.mk5
-rw-r--r--keyboards/kapcave/arya/arya.h5
-rw-r--r--keyboards/kapcave/arya/info.json140
-rw-r--r--keyboards/kapcave/arya/rules.mk7
-rwxr-xr-xkeyboards/kapcave/gskt00/rules.mk5
-rwxr-xr-xkeyboards/kapcave/paladin64/rules.mk5
-rw-r--r--keyboards/kapcave/paladinpad/rules.mk5
-rw-r--r--keyboards/kapl/config.h5
-rw-r--r--keyboards/kapl/info.json85
-rw-r--r--keyboards/kapl/kapl.c3
-rw-r--r--keyboards/kapl/kapl.h8
-rw-r--r--keyboards/kapl/keymaps/default/config.h3
-rw-r--r--keyboards/kapl/keymaps/default/keymap.c49
-rw-r--r--keyboards/kapl/keymaps/via/config.h3
-rw-r--r--keyboards/kapl/keymaps/via/keymap.c64
-rw-r--r--keyboards/kapl/keymaps/via/rules.mk1
-rw-r--r--keyboards/kapl/readme.md27
-rw-r--r--keyboards/kapl/rev1/config.h99
-rw-r--r--keyboards/kapl/rev1/rev1.c55
-rw-r--r--keyboards/kapl/rev1/rev1.h34
-rw-r--r--keyboards/kapl/rev1/rules.mk5
-rw-r--r--keyboards/kapl/rules.mk21
-rw-r--r--keyboards/karlb/kbic65/info.json400
-rw-r--r--keyboards/karlb/kbic65/kbic65.c4
-rw-r--r--keyboards/karlb/kbic65/kbic65.h28
-rw-r--r--keyboards/karlb/kbic65/keymaps/default/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/default/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso_full/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/iso_full/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/keymap.c22
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/readme.md5
-rw-r--r--keyboards/karlb/kbic65/keymaps/via/rules.mk3
-rw-r--r--keyboards/karlb/kbic65/readme.md31
-rw-r--r--keyboards/karlb/kbic65/rules.mk17
-rw-r--r--keyboards/kb_elmo/67mk_e/rules.mk5
-rw-r--r--keyboards/kb_elmo/aek2_usb/rules.mk5
-rw-r--r--keyboards/kb_elmo/elmopad/rules.mk5
-rw-r--r--keyboards/kb_elmo/isolation/rules.mk5
-rw-r--r--keyboards/kb_elmo/m0110a_usb/rules.mk5
-rw-r--r--keyboards/kb_elmo/m0116_usb/rules.mk5
-rw-r--r--keyboards/kb_elmo/noah_avr/rules.mk5
-rw-r--r--keyboards/kb_elmo/qez/rules.mk5
-rw-r--r--keyboards/kb_elmo/sesame/rules.mk5
-rw-r--r--keyboards/kb_elmo/twelvekey/rules.mk5
-rw-r--r--keyboards/kb_elmo/vertex/config.h46
-rw-r--r--keyboards/kb_elmo/vertex/info.json205
-rw-r--r--keyboards/kb_elmo/vertex/keymaps/default/keymap.c37
-rw-r--r--keyboards/kb_elmo/vertex/keymaps/via/keymap.c43
-rw-r--r--keyboards/kb_elmo/vertex/keymaps/via/rules.mk2
-rw-r--r--keyboards/kb_elmo/vertex/readme.md25
-rw-r--r--keyboards/kb_elmo/vertex/rules.mk18
-rw-r--r--keyboards/kb_elmo/vertex/vertex.c17
-rw-r--r--keyboards/kb_elmo/vertex/vertex.h69
-rw-r--r--keyboards/kbdclack/kaishi65/rules.mk5
-rw-r--r--keyboards/kbdfans/bella/rgb/rules.mk5
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/rules.mk5
-rwxr-xr-xkeyboards/kbdfans/bella/soldered/rules.mk5
-rw-r--r--keyboards/kbdfans/boop65/rgb/config.h2
-rw-r--r--keyboards/kbdfans/boop65/rgb/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd19x/info.json125
-rw-r--r--keyboards/kbdfans/kbd19x/kbd19x.h66
-rw-r--r--keyboards/kbdfans/kbd19x/keymaps/default/config.h20
-rw-r--r--keyboards/kbdfans/kbd19x/keymaps/default/keymap.c24
-rw-r--r--keyboards/kbdfans/kbd19x/keymaps/default_iso/keymap.c36
-rw-r--r--keyboards/kbdfans/kbd19x/keymaps/via/keymap.c48
-rw-r--r--keyboards/kbdfans/kbd19x/readme.md15
-rw-r--r--keyboards/kbdfans/kbd19x/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd4x/keymaps/default/config.h19
-rw-r--r--keyboards/kbdfans/kbd4x/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd66/keymaps/ansi/config.h24
-rw-r--r--keyboards/kbdfans/kbd66/keymaps/default/config.h19
-rw-r--r--keyboards/kbdfans/kbd66/keymaps/iso/config.h24
-rw-r--r--keyboards/kbdfans/kbd66/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/default/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c16
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c16
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h36
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c137
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/readme.md41
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rgb_matrix_map.h109
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk10
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c32
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/readme.md15
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk5
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk5
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/v3.c56
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/config.h118
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md18
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/rules.mk20
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/v4.c49
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/v4.h32
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/config.h109
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/info.json83
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/default/keymap.c34
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/keymap.c48
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.c49
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.h33
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md18
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk22
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c16
-rw-r--r--keyboards/kbdfans/kbd67/rev1/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/default/config.h19
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c16
-rw-r--r--keyboards/kbdfans/kbd67/rev2/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd6x/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c18
-rw-r--r--keyboards/kbdfans/kbd75/rev1/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd75/rev2/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd75hs/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd75rgb/config.h92
-rw-r--r--keyboards/kbdfans/kbd75rgb/kbd75rgb.c51
-rw-r--r--keyboards/kbdfans/kbd75rgb/kbd75rgb.h34
-rw-r--r--keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c55
-rw-r--r--keyboards/kbdfans/kbd75rgb/keymaps/via/keymap.c55
-rw-r--r--keyboards/kbdfans/kbd75rgb/keymaps/via/rules.mk1
-rw-r--r--keyboards/kbdfans/kbd75rgb/readme.md23
-rw-r--r--keyboards/kbdfans/kbd75rgb/rules.mk22
-rw-r--r--keyboards/kbdfans/kbd8x/keymaps/default/keymap.c20
-rw-r--r--keyboards/kbdfans/kbd8x/keymaps/default_backlighting/keymap.c20
-rw-r--r--keyboards/kbdfans/kbd8x/rules.mk5
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/default_ansi/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/default_iso/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c12
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/rules.mk5
-rw-r--r--keyboards/kbdfans/kbdmini/rules.mk5
-rw-r--r--keyboards/kbdfans/kbdpad/mk1/rules.mk4
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/config.h (renamed from keyboards/kbdfans/kbdpad_mk2/config.h)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/info.json (renamed from keyboards/kbdfans/kbdpad_mk2/info.json)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/default/keymap.c28
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/default/readme.md (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/default/readme.md)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/keymap.c (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/readme.md (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/rules.mk (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/tester/keymap.c28
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/tester/readme.md (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/tester/readme.md)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/via/keymap.c (renamed from keyboards/kbdfans/kbdpad_mk2/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/mk2.c16
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/mk2.h60
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/readme.md (renamed from keyboards/kbdfans/kbdpad_mk2/readme.md)0
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/rules.mk20
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.c16
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.h43
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c28
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c28
-rw-r--r--keyboards/kbdfans/kbdpad_mk2/rules.mk23
-rwxr-xr-xkeyboards/kbdfans/maja/rules.mk5
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/rules.mk5
-rw-r--r--keyboards/kbdfans/odin/rgb/config.h90
-rw-r--r--keyboards/kbdfans/odin/rgb/info.json111
-rw-r--r--keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c36
-rw-r--r--keyboards/kbdfans/odin/rgb/keymaps/via/config.h17
-rw-r--r--keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c36
-rw-r--r--keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk1
-rw-r--r--keyboards/kbdfans/odin/rgb/readme.md21
-rw-r--r--keyboards/kbdfans/odin/rgb/rgb.c59
-rw-r--r--keyboards/kbdfans/odin/rgb/rgb.h35
-rw-r--r--keyboards/kbdfans/odin/rgb/rules.mk23
-rw-r--r--keyboards/kbdfans/odin/soldered/config.h57
-rw-r--r--keyboards/kbdfans/odin/soldered/info.json118
-rw-r--r--keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c36
-rw-r--r--keyboards/kbdfans/odin/soldered/keymaps/via/config.h17
-rw-r--r--keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c36
-rw-r--r--keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk1
-rw-r--r--keyboards/kbdfans/odin/soldered/readme.md21
-rw-r--r--keyboards/kbdfans/odin/soldered/rules.mk21
-rw-r--r--keyboards/kbdfans/odin/soldered/soldered.c16
-rw-r--r--keyboards/kbdfans/odin/soldered/soldered.h35
-rw-r--r--keyboards/kbnordic/nordic60/keymaps/via/rules.mk1
-rw-r--r--keyboards/kbnordic/nordic60/rev_a/rules.mk5
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/keymap.c2
-rw-r--r--keyboards/kc60/rules.mk5
-rw-r--r--keyboards/kc60se/rules.mk6
-rw-r--r--keyboards/keebio/bdn9/keymaps/bcat/keymap.c13
-rw-r--r--keyboards/keebio/bdn9/keymaps/default/keymap.c2
-rw-r--r--keyboards/keebio/bdn9/keymaps/via/keymap.c25
-rw-r--r--keyboards/keebio/bdn9/rev1/rev1.c26
-rw-r--r--keyboards/keebio/bdn9/rev1/rules.mk5
-rw-r--r--keyboards/keebio/bdn9/rev2/rev2.c26
-rw-r--r--keyboards/keebio/bdn9/rev2/rules.mk5
-rw-r--r--keyboards/keebio/bfo9000/keymaps/default/keymap.c14
-rw-r--r--keyboards/keebio/bfo9000/rules.mk7
-rw-r--r--keyboards/keebio/choconum/rules.mk5
-rw-r--r--keyboards/keebio/chocopad/keymaps/default/config.h3
-rw-r--r--keyboards/keebio/chocopad/keymaps/default/keymap.c24
-rw-r--r--keyboards/keebio/chocopad/rules.mk5
-rw-r--r--keyboards/keebio/dilly/rules.mk5
-rwxr-xr-xkeyboards/keebio/dsp40/keymaps/default/keymap.c2
-rwxr-xr-xkeyboards/keebio/dsp40/keymaps/via/keymap.c11
-rw-r--r--keyboards/keebio/dsp40/rev1/rev1.c12
-rw-r--r--keyboards/keebio/dsp40/rev1/rules.mk5
-rw-r--r--keyboards/keebio/ergodicity/keymaps/default/config.h19
-rw-r--r--keyboards/keebio/ergodicity/keymaps/default/keymap.c20
-rw-r--r--keyboards/keebio/ergodicity/rules.mk5
-rw-r--r--keyboards/keebio/foldkb/keymaps/default/keymap.c17
-rw-r--r--keyboards/keebio/foldkb/keymaps/via/keymap.c17
-rw-r--r--keyboards/keebio/foldkb/rev1/rev1.c18
-rw-r--r--keyboards/keebio/foldkb/rules.mk5
-rw-r--r--keyboards/keebio/fourier/rules.mk8
-rw-r--r--keyboards/keebio/iris/keymaps/default/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/config.h9
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/rules.mk33
-rw-r--r--keyboards/keebio/iris/keymaps/khang/colors.h67
-rw-r--r--keyboards/keebio/iris/keymaps/khang/config.h33
-rw-r--r--keyboards/keebio/iris/keymaps/khang/extrakeys.h81
-rw-r--r--keyboards/keebio/iris/keymaps/khang/keymap.c71
-rw-r--r--keyboards/keebio/iris/keymaps/khang/readme.md7
-rw-r--r--keyboards/keebio/iris/keymaps/khang/rules.mk3
-rw-r--r--keyboards/keebio/iris/keymaps/mnil/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/via/keymap.c18
-rw-r--r--keyboards/keebio/iris/rev1/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev1_led/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev2/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev3/rev3.c18
-rw-r--r--keyboards/keebio/iris/rev3/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev4/rev4.c18
-rw-r--r--keyboards/keebio/iris/rev4/rules.mk8
-rw-r--r--keyboards/keebio/iris/rev5/rev5.c18
-rw-r--r--keyboards/keebio/iris/rev5/rules.mk5
-rw-r--r--keyboards/keebio/iris/rev6/config.h47
-rw-r--r--keyboards/keebio/iris/rev6/rev6.c18
-rw-r--r--keyboards/keebio/iris/rev6/rules.mk5
-rw-r--r--keyboards/keebio/kbo5000/keymaps/default/keymap.c2
-rw-r--r--keyboards/keebio/kbo5000/keymaps/via/keymap.c23
-rw-r--r--keyboards/keebio/kbo5000/rev1/rev1.c24
-rw-r--r--keyboards/keebio/kbo5000/rules.mk4
-rw-r--r--keyboards/keebio/laplace/rules.mk5
-rw-r--r--keyboards/keebio/levinson/keymaps/default/keymap.c60
-rw-r--r--keyboards/keebio/levinson/keymaps/numpad/keymap.c20
-rw-r--r--keyboards/keebio/levinson/rules.mk8
-rw-r--r--keyboards/keebio/nyquist/keymaps/default/keymap.c72
-rw-r--r--keyboards/keebio/nyquist/keymaps/tester/keymap.c72
-rw-r--r--keyboards/keebio/nyquist/rev1/rules.mk7
-rw-r--r--keyboards/keebio/nyquist/rev2/rules.mk7
-rw-r--r--keyboards/keebio/nyquist/rev3/rules.mk7
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/keymap.c13
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/readme.md2
-rw-r--r--keyboards/keebio/quefrency/keymaps/default/keymap.c16
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65/keymap.c18
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65macro/keymap.c18
-rw-r--r--keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c80
-rw-r--r--keyboards/keebio/quefrency/keymaps/via/keymap.c17
-rw-r--r--keyboards/keebio/quefrency/rev2/rev2.c18
-rw-r--r--keyboards/keebio/quefrency/rev3/rev3.c18
-rw-r--r--keyboards/keebio/quefrency/rev4/rev4.c18
-rw-r--r--keyboards/keebio/quefrency/rules.mk4
-rw-r--r--keyboards/keebio/rorschach/rules.mk7
-rw-r--r--keyboards/keebio/sinc/keymaps/default/keymap.c2
-rw-r--r--keyboards/keebio/sinc/keymaps/lickel/keymap.c109
-rw-r--r--keyboards/keebio/sinc/keymaps/lickel/readme.md18
-rw-r--r--keyboards/keebio/sinc/keymaps/lickel/rules.mk2
-rw-r--r--keyboards/keebio/sinc/keymaps/via/keymap.c17
-rw-r--r--keyboards/keebio/sinc/rev1/rev1.c18
-rw-r--r--keyboards/keebio/sinc/rev2/rev2.c18
-rw-r--r--keyboards/keebio/sinc/rules.mk4
-rw-r--r--keyboards/keebio/stick/keymaps/default/keymap.c2
-rw-r--r--keyboards/keebio/stick/keymaps/via/keymap.c18
-rw-r--r--keyboards/keebio/stick/rules.mk5
-rw-r--r--keyboards/keebio/stick/stick.c18
-rw-r--r--keyboards/keebio/tragicforce68/rules.mk5
-rw-r--r--keyboards/keebio/tukey/keymaps/default/config.h19
-rw-r--r--keyboards/keebio/tukey/rules.mk5
-rw-r--r--keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c185
-rw-r--r--keyboards/keebio/viterbi/rules.mk7
-rw-r--r--keyboards/keebio/wavelet/keymaps/default/keymap.c60
-rw-r--r--keyboards/keebio/wavelet/rules.mk8
-rw-r--r--keyboards/keebio/wtf60/rules.mk5
-rw-r--r--keyboards/keebsforall/coarse60/rules.mk5
-rw-r--r--keyboards/keebsforall/freebird60/rules.mk5
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/config.h55
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/info.json204
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/keymaps/default/keymap.c32
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/keymaps/via/keymap.c46
-rwxr-xr-xkeyboards/keebsforall/freebirdnp/lite/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/lite.c16
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/lite.h48
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/readme.md19
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/rules.mk20
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/config.h58
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/info.json71
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/keymaps/default/keymap.c45
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/keymaps/via/keymap.c51
-rwxr-xr-xkeyboards/keebsforall/freebirdnp/pro/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/pro.c28
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/pro.h52
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/readme.md21
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/rules.mk21
-rw-r--r--keyboards/keebsforall/freebirdtkl/freebirdtkl.h76
-rw-r--r--keyboards/keebsforall/freebirdtkl/info.json398
-rw-r--r--keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c14
-rw-r--r--keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c56
-rw-r--r--keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c14
-rw-r--r--keyboards/keebsforall/freebirdtkl/rules.mk5
-rw-r--r--keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c176
-rw-r--r--keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/readme.md9
-rw-r--r--keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/rules.mk1
-rwxr-xr-xkeyboards/keebwerk/mega/ansi/rules.mk5
-rw-r--r--keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c154
-rw-r--r--keyboards/keebwerk/nano_slider/keymaps/midi2vol/readme.md2
-rw-r--r--keyboards/keebwerk/nano_slider/rules.mk7
-rw-r--r--keyboards/keebzdotnet/fme/rules.mk5
-rw-r--r--keyboards/keebzdotnet/wazowski/rules.mk5
-rw-r--r--keyboards/kelowna/rgb64/rules.mk5
-rw-r--r--keyboards/keybage/radpad/rules.mk5
-rw-r--r--keyboards/keybee/keybee65/config.h3
-rw-r--r--keyboards/keybee/keybee65/keymaps/default/keymap.c2
-rw-r--r--keyboards/keybee/keybee65/keymaps/via/keymap.c2
-rw-r--r--keyboards/keybee/keybee65/rules.mk5
-rw-r--r--keyboards/keyboardio/atreus/rules.mk5
-rw-r--r--keyboards/keyboardio/model01/keymaps/default/config.h19
-rw-r--r--keyboards/keyboardio/model01/rules.mk5
-rw-r--r--keyboards/keycapsss/kimiko/rules.mk5
-rw-r--r--keyboards/keycapsss/o4l_5x12/rules.mk5
-rw-r--r--keyboards/keycapsss/plaid_pad/keymaps/default/config.h19
-rw-r--r--keyboards/keycapsss/plaid_pad/rules.mk5
-rw-r--r--keyboards/keychron/q1/config.h14
-rw-r--r--keyboards/keychron/q1/q1.h5
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c95
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c109
-rw-r--r--keyboards/keychron/q1/rev_0100/rules.mk5
-rw-r--r--keyboards/keychron/q1/rev_0101/config.h37
-rw-r--r--keyboards/keychron/q1/rev_0101/info.json191
-rw-r--r--keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c90
-rw-r--r--keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c131
-rw-r--r--keyboards/keychron/q1/rev_0101/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q1/rev_0101/readme.md4
-rw-r--r--keyboards/keychron/q1/rev_0101/rev_0101.c156
-rw-r--r--keyboards/keychron/q1/rev_0101/rev_0101.h52
-rw-r--r--keyboards/keychron/q1/rev_0101/rules.mk22
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c87
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md16
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h25
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c66
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h28
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c75
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h24
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk6
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c109
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h69
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c152
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md4
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk3
-rw-r--r--keyboards/keychron/q1/rev_0102/rev_0102.c3
-rw-r--r--keyboards/keychron/q1/rev_0102/rules.mk5
-rw-r--r--keyboards/keychron/q2/chconf.h25
-rw-r--r--keyboards/keychron/q2/config.h121
-rw-r--r--keyboards/keychron/q2/halconf.h21
-rw-r--r--keyboards/keychron/q2/mcuconf.h22
-rw-r--r--keyboards/keychron/q2/q2.c33
-rw-r--r--keyboards/keychron/q2/q2.h29
-rw-r--r--keyboards/keychron/q2/readme.md19
-rw-r--r--keyboards/keychron/q2/rev_0110/config.h26
-rw-r--r--keyboards/keychron/q2/rev_0110/info.json82
-rw-r--r--keyboards/keychron/q2/rev_0110/keymaps/default/keymap.c94
-rw-r--r--keyboards/keychron/q2/rev_0110/keymaps/via/keymap.c112
-rw-r--r--keyboards/keychron/q2/rev_0110/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q2/rev_0110/readme.md1
-rw-r--r--keyboards/keychron/q2/rev_0110/rev_0110.c123
-rw-r--r--keyboards/keychron/q2/rev_0110/rev_0110.h35
-rw-r--r--keyboards/keychron/q2/rev_0110/rules.mk23
-rw-r--r--keyboards/keychron/q2/rev_0111/config.h33
-rw-r--r--keyboards/keychron/q2/rev_0111/info.json159
-rw-r--r--keyboards/keychron/q2/rev_0111/keymaps/default/keymap.c94
-rw-r--r--keyboards/keychron/q2/rev_0111/keymaps/via/keymap.c154
-rw-r--r--keyboards/keychron/q2/rev_0111/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q2/rev_0111/readme.md5
-rw-r--r--keyboards/keychron/q2/rev_0111/rev_0111.c137
-rw-r--r--keyboards/keychron/q2/rev_0111/rev_0111.h48
-rw-r--r--keyboards/keychron/q2/rev_0111/rules.mk23
-rw-r--r--keyboards/keychron/q2/rev_0112/config.h26
-rw-r--r--keyboards/keychron/q2/rev_0112/info.json83
-rw-r--r--keyboards/keychron/q2/rev_0112/keymaps/default/keymap.c94
-rw-r--r--keyboards/keychron/q2/rev_0112/keymaps/via/keymap.c112
-rw-r--r--keyboards/keychron/q2/rev_0112/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q2/rev_0112/readme.md1
-rw-r--r--keyboards/keychron/q2/rev_0112/rev_0112.c124
-rw-r--r--keyboards/keychron/q2/rev_0112/rev_0112.h36
-rw-r--r--keyboards/keychron/q2/rev_0112/rules.mk23
-rw-r--r--keyboards/keychron/q2/rev_0113/config.h33
-rw-r--r--keyboards/keychron/q2/rev_0113/info.json161
-rw-r--r--keyboards/keychron/q2/rev_0113/keymaps/default/keymap.c94
-rw-r--r--keyboards/keychron/q2/rev_0113/keymaps/via/keymap.c154
-rw-r--r--keyboards/keychron/q2/rev_0113/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q2/rev_0113/readme.md5
-rw-r--r--keyboards/keychron/q2/rev_0113/rev_0113.c138
-rw-r--r--keyboards/keychron/q2/rev_0113/rev_0113.h48
-rw-r--r--keyboards/keychron/q2/rev_0113/rules.mk23
-rw-r--r--keyboards/keyhive/maypad/keymaps/default/config.h19
-rw-r--r--keyboards/keyhive/maypad/rules.mk5
-rw-r--r--keyboards/keyprez/bison/rules.mk5
-rw-r--r--keyboards/keyprez/corgi/rules.mk5
-rw-r--r--keyboards/keyprez/rhino/rules.mk5
-rw-r--r--keyboards/keyprez/unicorn/config.h148
-rw-r--r--keyboards/keyprez/unicorn/info.json91
-rw-r--r--keyboards/keyprez/unicorn/keymaps/default/keymap.c31
-rw-r--r--keyboards/keyprez/unicorn/keymaps/default/readme.md1
-rw-r--r--keyboards/keyprez/unicorn/keymaps/jorge/keymap.c33
-rw-r--r--keyboards/keyprez/unicorn/keymaps/jorge/readme.md1
-rw-r--r--keyboards/keyprez/unicorn/readme.md25
-rw-r--r--keyboards/keyprez/unicorn/rules.mk20
-rw-r--r--keyboards/keyprez/unicorn/unicorn.c18
-rw-r--r--keyboards/keyprez/unicorn/unicorn.h36
-rwxr-xr-xkeyboards/keysofkings/twokey/config.h5
-rwxr-xr-xkeyboards/keysofkings/twokey/rules.mk5
-rw-r--r--keyboards/keyten/kt60_m/config.h51
-rw-r--r--keyboards/keyten/kt60_m/info.json81
-rw-r--r--keyboards/keyten/kt60_m/keymaps/default/keymap.c39
-rw-r--r--keyboards/keyten/kt60_m/keymaps/default/readme.md1
-rw-r--r--keyboards/keyten/kt60_m/keymaps/via/keymap.c48
-rw-r--r--keyboards/keyten/kt60_m/keymaps/via/readme.md1
-rw-r--r--keyboards/keyten/kt60_m/keymaps/via/rules.mk1
-rw-r--r--keyboards/keyten/kt60_m/kt60_m.c18
-rw-r--r--keyboards/keyten/kt60_m/kt60_m.h48
-rw-r--r--keyboards/keyten/kt60_m/readme.md27
-rw-r--r--keyboards/keyten/kt60_m/rules.mk21
-rw-r--r--keyboards/kikkou/config.h58
-rw-r--r--keyboards/kikkou/info.json13
-rw-r--r--keyboards/kikkou/keymaps/default/keymap.c54
-rw-r--r--keyboards/kikkou/keymaps/via/keymap.c54
-rw-r--r--keyboards/kikkou/keymaps/via/rules.mk1
-rw-r--r--keyboards/kikkou/kikkou.c18
-rw-r--r--keyboards/kikkou/kikkou.h50
-rw-r--r--keyboards/kikkou/rules.mk18
-rw-r--r--keyboards/kikoslab/ellora65/config.h55
-rw-r--r--keyboards/kikoslab/ellora65/ellora65.c17
-rw-r--r--keyboards/kikoslab/ellora65/ellora65.h40
-rw-r--r--keyboards/kikoslab/ellora65/info.json10
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/default/keymap.c242
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/default/rules.mk2
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/via/keymap.c252
-rw-r--r--keyboards/kikoslab/ellora65/keymaps/via/rules.mk3
-rw-r--r--keyboards/kikoslab/ellora65/readme.md21
-rw-r--r--keyboards/kikoslab/ellora65/rules.mk19
-rw-r--r--keyboards/kikoslab/kl90/rules.mk5
-rw-r--r--keyboards/kindakeyboards/conone65/rules.mk5
-rw-r--r--keyboards/kinesis/keymaps/default/config.h3
-rw-r--r--keyboards/kinesis/keymaps/default/rules.mk8
-rw-r--r--keyboards/kinesis/keymaps/default_pretty/config.h8
-rw-r--r--keyboards/kinesis/keymaps/default_pretty/rules.mk8
-rw-r--r--keyboards/kinesis/keymaps/dvorak/config.h8
-rw-r--r--keyboards/kinesis/keymaps/ericgebhart/keymap.c53
-rw-r--r--keyboards/kinesis/keymaps/ericgebhart/readme.md5
-rw-r--r--keyboards/kinesis/keymaps/ericgebhart/rules.mk16
-rw-r--r--keyboards/kinesis/nguyenvietyen/rules.mk2
-rw-r--r--keyboards/kinesis/rules.mk5
-rw-r--r--keyboards/kineticlabs/emu/hotswap/rules.mk5
-rw-r--r--keyboards/kineticlabs/emu/soldered/rules.mk5
-rw-r--r--keyboards/kingly_keys/ave/ortho/rules.mk5
-rw-r--r--keyboards/kingly_keys/ave/staggered/rules.mk5
-rw-r--r--keyboards/kingly_keys/little_foot/rules.mk5
-rw-r--r--keyboards/kingly_keys/romac/keymaps/default/keymap.c16
-rw-r--r--keyboards/kingly_keys/romac/keymaps/via/keymap.c32
-rw-r--r--keyboards/kingly_keys/romac/rules.mk5
-rw-r--r--keyboards/kingly_keys/romac_plus/rules.mk5
-rw-r--r--keyboards/kingly_keys/ropro/rules.mk3
-rw-r--r--keyboards/kingly_keys/smd_milk/rules.mk5
-rw-r--r--keyboards/kingly_keys/soap/rules.mk3
-rw-r--r--keyboards/kira75/keymaps/default/config.h19
-rw-r--r--keyboards/kira75/keymaps/default/keymap.c12
-rw-r--r--keyboards/kira75/rules.mk5
-rw-r--r--keyboards/kira80/rules.mk3
-rw-r--r--keyboards/kiwikeebs/macro/rules.mk3
-rw-r--r--keyboards/kiwikeebs/macro_v2/rules.mk3
-rw-r--r--keyboards/kiwikey/borderland/borderland.c18
-rw-r--r--keyboards/kiwikey/borderland/borderland.h29
-rw-r--r--keyboards/kiwikey/borderland/config.h126
-rw-r--r--keyboards/kiwikey/borderland/info.json82
-rw-r--r--keyboards/kiwikey/borderland/keymaps/default/keymap.c22
-rw-r--r--keyboards/kiwikey/borderland/keymaps/default/readme.md1
-rw-r--r--keyboards/kiwikey/borderland/keymaps/via/keymap.c37
-rw-r--r--keyboards/kiwikey/borderland/keymaps/via/readme.md1
-rw-r--r--keyboards/kiwikey/borderland/keymaps/via/rules.mk1
-rw-r--r--keyboards/kiwikey/borderland/readme.md27
-rw-r--r--keyboards/kiwikey/borderland/rules.mk20
-rw-r--r--keyboards/kiwikey/kawii9/rules.mk5
-rw-r--r--keyboards/kiwikey/wanderland/rules.mk5
-rw-r--r--keyboards/kmac/keymaps/default/config.h19
-rw-r--r--keyboards/kmac/keymaps/default_tkl_ansi/config.h19
-rw-r--r--keyboards/kmac/keymaps/default_tkl_ansi_wkl/config.h19
-rw-r--r--keyboards/kmac/rules.mk5
-rw-r--r--keyboards/kmac_pad/rules.mk5
-rwxr-xr-xkeyboards/kmini/keymaps/default/keymap.c20
-rwxr-xr-xkeyboards/kmini/rules.mk5
-rw-r--r--keyboards/knobgoblin/rules.mk5
-rw-r--r--keyboards/knops/mini/keymaps/default/config.h19
-rw-r--r--keyboards/knops/mini/keymaps/knops/config.h24
-rw-r--r--keyboards/knops/mini/rules.mk5
-rw-r--r--keyboards/kona_classic/keymaps/ansi/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/ansi/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/ansi/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows_lcap/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split_arrows/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/default/config.h19
-rw-r--r--keyboards/kona_classic/keymaps/default/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/default/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/iso/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/iso/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/iso/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/iso_arrows/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/iso_arrows/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/iso_arrows/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/iso_split/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/iso_split/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/iso_split/rules.mk24
-rw-r--r--keyboards/kona_classic/keymaps/iso_split_arrows/config.h24
-rw-r--r--keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c20
-rw-r--r--keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk24
-rw-r--r--keyboards/kona_classic/rules.mk5
-rw-r--r--keyboards/kopibeng/mnk88/info.json8
-rw-r--r--keyboards/kopibeng/mnk88/mnk88.h8
-rw-r--r--keyboards/kopibeng/mnk88/rules.mk9
-rw-r--r--keyboards/kopibeng/xt65/rules.mk5
-rw-r--r--keyboards/kopibeng/xt8x/rules.mk5
-rw-r--r--keyboards/kprepublic/bm16a/keymaps/default/config.h19
-rw-r--r--keyboards/kprepublic/bm16a/keymaps/default/keymap.c24
-rw-r--r--keyboards/kprepublic/bm16a/rules.mk5
-rwxr-xr-xkeyboards/kprepublic/bm16s/keymaps/default/keymap.c16
-rwxr-xr-xkeyboards/kprepublic/bm16s/keymaps/media/keymap.c16
-rwxr-xr-xkeyboards/kprepublic/bm16s/rules.mk5
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/rules.mk5
-rw-r--r--keyboards/kprepublic/bm43a/keymaps/default/config.h19
-rw-r--r--keyboards/kprepublic/bm43a/rules.mk5
-rwxr-xr-xkeyboards/kprepublic/bm43hsrgb/rules.mk5
-rw-r--r--keyboards/kprepublic/bm60hsrgb/readme.md7
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/readme.md (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/default/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/readme.md (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/readme.md (renamed from keyboards/kprepublic/bm60hsrgb/keymaps/via/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/rules.mk1
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/readme.md13
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/rules.mk5
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/config.h139
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/info.json78
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/keymaps/default/keymap.c35
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/keymap.c48
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/readme.md13
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/rev2.c200
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/rev2.h32
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/rules.mk27
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/readme.md11
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/readme.md (renamed from keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/config.h (renamed from keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/config.h)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/readme.md (renamed from keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/readme.md19
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk5
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h157
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json79
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/default/keymap.c34
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/keymap.c49
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/readme.md19
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c200
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.h32
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk31
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/readme.md9
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h6
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/keymap.c25
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/default/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/default/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/readme.md (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/readme.md)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/rules.mk (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/rules.mk)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/keymap.c (renamed from keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/keymap.c)0
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/readme.md13
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk5
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h153
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json76
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/default/keymap.c35
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/keymap.c49
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/readme.md13
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c196
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.h32
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk31
-rw-r--r--keyboards/kprepublic/bm65hsrgb/rev1/rules.mk5
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c56
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/config.h9
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/rules.mk5
-rw-r--r--keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c8
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rules.mk5
-rw-r--r--keyboards/kprepublic/bm80hsrgb/config.h2
-rw-r--r--keyboards/kprepublic/bm80hsrgb/rules.mk5
-rw-r--r--keyboards/kprepublic/bm980hsrgb/bm980hsrgb.c51
-rw-r--r--keyboards/kprepublic/bm980hsrgb/bm980hsrgb.h35
-rw-r--r--keyboards/kprepublic/bm980hsrgb/config.h136
-rw-r--r--keyboards/kprepublic/bm980hsrgb/info.json110
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/default/keymap.c49
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/default/readme.md1
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c61
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/via/keymap.c64
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/via/readme.md1
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/via/rules.mk1
-rw-r--r--keyboards/kprepublic/bm980hsrgb/readme.md30
-rw-r--r--keyboards/kprepublic/bm980hsrgb/rules.mk22
-rw-r--r--keyboards/kprepublic/cospad/rules.mk5
-rw-r--r--keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md21
-rw-r--r--keyboards/kprepublic/jj40/keymaps/default/keymap.c40
-rw-r--r--keyboards/kprepublic/jj40/rules.mk5
-rw-r--r--keyboards/kprepublic/jj4x4/rules.mk5
-rw-r--r--keyboards/kprepublic/jj50/info.json82
-rw-r--r--keyboards/kprepublic/jj50/jj50.h22
-rw-r--r--keyboards/kprepublic/jj50/rules.mk23
-rw-r--r--keyboards/ktec/daisy/rules.mk5
-rw-r--r--keyboards/ktec/ergodone/rules.mk5
-rwxr-xr-xkeyboards/ktec/staryu/rules.mk7
-rw-r--r--keyboards/kudox/rules.mk5
-rw-r--r--keyboards/kudox_full/config.h13
-rw-r--r--keyboards/kudox_full/keymaps/default/keymap.c86
-rw-r--r--keyboards/kudox_full/keymaps/jis/keymap.c84
-rw-r--r--keyboards/kudox_full/keymaps/via/keymap.c76
-rw-r--r--keyboards/kudox_full/keymaps/via/rules.mk3
-rw-r--r--keyboards/kudox_full/kudox_full.c41
-rw-r--r--keyboards/kudox_full/kudox_full.h10
-rw-r--r--keyboards/kudox_full/post_config.h20
-rw-r--r--keyboards/kudox_full/readme.md32
-rw-r--r--keyboards/kudox_full/rev1/config.h77
-rw-r--r--keyboards/kudox_full/rev1/info.json83
-rw-r--r--keyboards/kudox_full/rev1/rev1.c4
-rw-r--r--keyboards/kudox_full/rev1/rev1.h26
-rw-r--r--keyboards/kudox_full/rev1/rules.mk1
-rw-r--r--keyboards/kudox_full/rules.mk24
-rw-r--r--keyboards/kudox_game/rules.mk5
-rw-r--r--keyboards/kv/revt/keymaps/default/keymap.c24
-rw-r--r--keyboards/kv/revt/rules.mk5
-rw-r--r--keyboards/kwub/bloop/rules.mk5
-rw-r--r--keyboards/ky01/rules.mk5
-rw-r--r--keyboards/labyrinth75/keymaps/default/keymap.c12
-rw-r--r--keyboards/labyrinth75/keymaps/via/keymap.c36
-rw-r--r--keyboards/labyrinth75/rules.mk5
-rw-r--r--keyboards/laptreus/config.h71
-rw-r--r--keyboards/laptreus/info.json62
-rw-r--r--keyboards/laptreus/keymaps/debug/keymap.c11
-rw-r--r--keyboards/laptreus/keymaps/debug/readme.md81
-rw-r--r--keyboards/laptreus/keymaps/default/keymap.c74
-rw-r--r--keyboards/laptreus/keymaps/default/readme.md79
-rw-r--r--keyboards/laptreus/keymaps/vosechu/keymap.c36
-rw-r--r--keyboards/laptreus/laptreus.c6
-rw-r--r--keyboards/laptreus/laptreus.h19
-rw-r--r--keyboards/laptreus/readme.md35
-rw-r--r--keyboards/laptreus/rules.mk27
-rw-r--r--keyboards/latin17rgb/rules.mk5
-rw-r--r--keyboards/latin47ble/rules.mk5
-rw-r--r--keyboards/latin60rgb/rules.mk5
-rw-r--r--keyboards/latin64ble/rules.mk5
-rw-r--r--keyboards/latin6rgb/rules.mk5
-rw-r--r--keyboards/latinpad/rules.mk4
-rw-r--r--keyboards/latinpadble/rules.mk5
-rw-r--r--keyboards/lattice60/rules.mk5
-rw-r--r--keyboards/launchpad/keymaps/default/keymap.c20
-rw-r--r--keyboards/launchpad/keymaps/default_rgb/keymap.c30
-rw-r--r--keyboards/launchpad/rules.mk8
-rw-r--r--keyboards/lazydesigners/bolt/rules.mk5
-rwxr-xr-xkeyboards/lazydesigners/cassette8/rules.mk5
-rw-r--r--keyboards/lazydesigners/dimple/config.h1
-rw-r--r--keyboards/lazydesigners/dimple/dimple.c30
-rw-r--r--keyboards/lazydesigners/dimple/dimple.h46
-rw-r--r--keyboards/lazydesigners/dimple/keymaps/default/keymap.c136
-rw-r--r--keyboards/lazydesigners/dimple/ortho/info.json150
-rw-r--r--keyboards/lazydesigners/dimple/ortho/keymaps/default/keymap.c53
-rw-r--r--keyboards/lazydesigners/dimple/ortho/keymaps/via/keymap.c59
-rw-r--r--keyboards/lazydesigners/dimple/ortho/keymaps/via/rules.mk2
-rw-r--r--keyboards/lazydesigners/dimple/ortho/ortho.c15
-rw-r--r--keyboards/lazydesigners/dimple/ortho/ortho.h91
-rw-r--r--keyboards/lazydesigners/dimple/ortho/rules.mk3
-rw-r--r--keyboards/lazydesigners/dimple/readme.md17
-rw-r--r--keyboards/lazydesigners/dimple/rules.mk16
-rw-r--r--keyboards/lazydesigners/dimple/staggered/info.json (renamed from keyboards/lazydesigners/dimple/info.json)0
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/default/keymap.c130
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/default/readme.md (renamed from keyboards/lazydesigners/dimple/keymaps/default/readme.md)0
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/erovia/config.h19
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c162
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/erovia/readme.md60
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c23
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c (renamed from keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c)0
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/via/keymap.c (renamed from keyboards/lazydesigners/dimple/keymaps/via/keymap.c)0
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/via/rules.mk2
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev1/config.h20
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev1/rules.mk4
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev2/rules.mk4
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/config.h22
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/info.json144
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/keymaps/default/keymap.c54
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/rev3.c16
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/rev3.h90
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/rules.mk4
-rw-r--r--keyboards/lazydesigners/dimple/staggered/staggered.c23
-rw-r--r--keyboards/lazydesigners/dimple/staggered/staggered.h45
-rw-r--r--keyboards/lazydesigners/dimpleplus/rules.mk5
-rw-r--r--keyboards/lazydesigners/the30/rules.mk5
-rw-r--r--keyboards/lazydesigners/the40/rules.mk5
-rw-r--r--keyboards/lazydesigners/the50/rules.mk5
-rwxr-xr-xkeyboards/lazydesigners/the60/rev1/rules.mk5
-rwxr-xr-xkeyboards/lazydesigners/the60/rev2/rules.mk5
-rw-r--r--keyboards/lck75/rules.mk5
-rw-r--r--keyboards/le_chiffre/rules.mk6
-rw-r--r--keyboards/leafcutterlabs/bigknob/rules.mk5
-rw-r--r--keyboards/leeku/finger65/rules.mk4
-rw-r--r--keyboards/lefishe/rules.mk5
-rw-r--r--keyboards/lefty/rules.mk5
-rw-r--r--keyboards/lets_split/keymaps/default/keymap.c58
-rw-r--r--keyboards/lets_split/rules.mk8
-rw-r--r--keyboards/lets_split_eh/keymaps/default/config.h23
-rw-r--r--keyboards/lets_split_eh/keymaps/default/keymap.c50
-rw-r--r--keyboards/lets_split_eh/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk9
-rw-r--r--keyboards/lfkeyboards/lfk78/rules.mk4
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h8
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk9
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/default/config.h3
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c36
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk10
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h8
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c36
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk10
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/iso/config.h8
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c36
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk10
-rw-r--r--keyboards/lfkeyboards/lfk87/rules.mk8
-rw-r--r--keyboards/lfkeyboards/lfkpad/rules.mk6
-rw-r--r--keyboards/lfkeyboards/mini1800/config.h2
-rw-r--r--keyboards/lfkeyboards/mini1800/info.json91
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/ca178858/config.h8
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk49
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/default/config.h3
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c30
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk46
-rw-r--r--keyboards/lfkeyboards/mini1800/post_rules.mk9
-rw-r--r--keyboards/lfkeyboards/mini1800/readme.md28
-rw-r--r--keyboards/lfkeyboards/mini1800/reva/post_rules.mk7
-rw-r--r--keyboards/lfkeyboards/mini1800/reva/readme.md22
-rw-r--r--keyboards/lfkeyboards/mini1800/reva/rules.mk29
-rw-r--r--keyboards/lfkeyboards/mini1800/revc/post_rules.mk7
-rw-r--r--keyboards/lfkeyboards/mini1800/revc/readme.md24
-rw-r--r--keyboards/lfkeyboards/mini1800/revc/rules.mk29
-rw-r--r--keyboards/lfkeyboards/mini1800/rules.mk19
-rw-r--r--keyboards/lfkeyboards/smk65/rules.mk5
-rw-r--r--keyboards/lily58/keymaps/bcat/config.h2
-rw-r--r--keyboards/lily58/keymaps/bcat/keymap.c33
-rw-r--r--keyboards/lily58/keymaps/bcat/readme.md2
-rw-r--r--keyboards/lily58/keymaps/bcat/rules.mk2
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h49
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c334
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md23
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk11
-rw-r--r--keyboards/lily58/keymaps/default/keymap.c48
-rw-r--r--keyboards/lily58/keymaps/default/rules.mk9
-rw-r--r--keyboards/lily58/keymaps/druotoni/boot.c309
-rw-r--r--keyboards/lily58/keymaps/druotoni/boot.h9
-rw-r--r--keyboards/lily58/keymaps/druotoni/burst.c252
-rw-r--r--keyboards/lily58/keymaps/druotoni/burst.h24
-rw-r--r--keyboards/lily58/keymaps/druotoni/config.h55
-rw-r--r--keyboards/lily58/keymaps/druotoni/draw_helper.c768
-rw-r--r--keyboards/lily58/keymaps/druotoni/draw_helper.h47
-rw-r--r--keyboards/lily58/keymaps/druotoni/fast_random.c17
-rw-r--r--keyboards/lily58/keymaps/druotoni/fast_random.h7
-rw-r--r--keyboards/lily58/keymaps/druotoni/gui_state.c71
-rw-r--r--keyboards/lily58/keymaps/druotoni/gui_state.h18
-rw-r--r--keyboards/lily58/keymaps/druotoni/keymap.c253
-rw-r--r--keyboards/lily58/keymaps/druotoni/layer_frame.c105
-rw-r--r--keyboards/lily58/keymaps/druotoni/layer_frame.h15
-rw-r--r--keyboards/lily58/keymaps/druotoni/navi_font.c139
-rw-r--r--keyboards/lily58/keymaps/druotoni/navi_logo.c117
-rw-r--r--keyboards/lily58/keymaps/druotoni/navi_logo.h7
-rw-r--r--keyboards/lily58/keymaps/druotoni/readme.md133
-rw-r--r--keyboards/lily58/keymaps/druotoni/ring.c494
-rw-r--r--keyboards/lily58/keymaps/druotoni/ring.h11
-rw-r--r--keyboards/lily58/keymaps/druotoni/rules.mk28
-rw-r--r--keyboards/lily58/keymaps/gaston/keymap.c8
-rw-r--r--keyboards/lily58/keymaps/gaston/readme.md8
-rw-r--r--keyboards/lily58/rules.mk7
-rw-r--r--keyboards/lime/rules.mk5
-rw-r--r--keyboards/linworks/fave84h/config.h115
-rw-r--r--keyboards/linworks/fave84h/fave84h.c50
-rw-r--r--keyboards/linworks/fave84h/fave84h.h34
-rw-r--r--keyboards/linworks/fave84h/info.json10
-rw-r--r--keyboards/linworks/fave84h/keymaps/default/keymap.c48
-rw-r--r--keyboards/linworks/fave84h/keymaps/via/keymap.c68
-rw-r--r--keyboards/linworks/fave84h/keymaps/via/rules.mk1
-rw-r--r--keyboards/linworks/fave84h/readme.md23
-rw-r--r--keyboards/linworks/fave84h/rules.mk23
-rw-r--r--keyboards/linworks/fave87/rules.mk5
-rw-r--r--keyboards/linworks/fave87h/config.h103
-rw-r--r--keyboards/linworks/fave87h/fave87h.c51
-rw-r--r--keyboards/linworks/fave87h/fave87h.h34
-rw-r--r--keyboards/linworks/fave87h/info.json10
-rw-r--r--keyboards/linworks/fave87h/keymaps/default/keymap.c48
-rw-r--r--keyboards/linworks/fave87h/keymaps/via/keymap.c68
-rw-r--r--keyboards/linworks/fave87h/keymaps/via/rules.mk1
-rw-r--r--keyboards/linworks/fave87h/readme.md22
-rw-r--r--keyboards/linworks/fave87h/rules.mk23
-rw-r--r--keyboards/linworks/whale75/rules.mk5
-rw-r--r--keyboards/littlealby/mute/rules.mk5
-rw-r--r--keyboards/lizard_trick/tenkey_plusplus/rules.mk5
-rw-r--r--keyboards/ll3macorn/bongopad/bongopad.c124
-rw-r--r--keyboards/ll3macorn/bongopad/bongopad.h18
-rw-r--r--keyboards/ll3macorn/bongopad/config.h40
-rw-r--r--keyboards/ll3macorn/bongopad/info.json10
-rw-r--r--keyboards/ll3macorn/bongopad/keymaps/default/keymap.c41
-rw-r--r--keyboards/ll3macorn/bongopad/keymaps/default/rules.mk3
-rw-r--r--keyboards/ll3macorn/bongopad/readme.md10
-rw-r--r--keyboards/ll3macorn/bongopad/rules.mk22
-rw-r--r--keyboards/lm_keyboard/lm60n/rules.mk5
-rw-r--r--keyboards/longnald/corin/rules.mk5
-rw-r--r--keyboards/ls_60/rules.mk5
-rw-r--r--keyboards/lucid/alexa/rules.mk5
-rw-r--r--keyboards/lucid/kbd8x_hs/rules.mk5
-rw-r--r--keyboards/lucid/phantom_hs/rules.mk5
-rw-r--r--keyboards/lucid/phantom_solder/rules.mk5
-rw-r--r--keyboards/lucid/scarlet/rules.mk5
-rw-r--r--keyboards/lw67/config.h53
-rw-r--r--keyboards/lw67/info.json22
-rw-r--r--keyboards/lw67/keymaps/ansi_split_backspace/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/default/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/iso/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/iso_split_backspace/keymap.c41
-rw-r--r--keyboards/lw67/keymaps/via/keymap.c47
-rw-r--r--keyboards/lw67/keymaps/via/rules.mk1
-rw-r--r--keyboards/lw67/lw67.c30
-rw-r--r--keyboards/lw67/lw67.h131
-rw-r--r--keyboards/lw67/readme.md22
-rw-r--r--keyboards/lw67/rules.mk19
-rw-r--r--keyboards/lyra/keymaps/default/rules.mk1
-rw-r--r--keyboards/lyra/keymaps/via/rules.mk2
-rw-r--r--keyboards/lyra/lyra.c93
-rw-r--r--keyboards/lyra/lyra.h23
-rw-r--r--keyboards/lyra/readme.md20
-rw-r--r--keyboards/lyra/rev1/config.h50
-rw-r--r--keyboards/lyra/rev1/rules.mk26
-rw-r--r--keyboards/lz/erghost/config.h92
-rw-r--r--keyboards/lz/erghost/erghost.c17
-rw-r--r--keyboards/lz/erghost/erghost.h67
-rw-r--r--keyboards/lz/erghost/info.json16
-rw-r--r--keyboards/lz/erghost/keymaps/default/keymap.c27
-rw-r--r--keyboards/lz/erghost/keymaps/default/readme.md1
-rw-r--r--keyboards/lz/erghost/keymaps/via/keymap.c51
-rw-r--r--keyboards/lz/erghost/keymaps/via/readme.md1
-rw-r--r--keyboards/lz/erghost/keymaps/via/rules.mk2
-rw-r--r--keyboards/lz/erghost/matrix.c344
-rw-r--r--keyboards/lz/erghost/readme.md27
-rw-r--r--keyboards/lz/erghost/rules.mk21
-rw-r--r--keyboards/m10a/rules.mk5
-rw-r--r--keyboards/m3n3van/keymaps/via/keymap.c40
-rw-r--r--keyboards/m3n3van/rules.mk5
-rw-r--r--keyboards/m65/config.h33
-rw-r--r--keyboards/m65/info.json81
-rw-r--r--keyboards/m65/keymaps/default/config.h20
-rw-r--r--keyboards/m65/keymaps/default/keymap.c113
-rw-r--r--keyboards/m65/keymaps/dk/config.h20
-rw-r--r--keyboards/m65/keymaps/dk/keymap.c114
-rw-r--r--keyboards/m65/keymaps/uk/config.h20
-rw-r--r--keyboards/m65/keymaps/uk/keymap.c114
-rw-r--r--keyboards/m65/m65.c19
-rw-r--r--keyboards/m65/m65.h34
-rw-r--r--keyboards/m65/readme.md22
-rw-r--r--keyboards/m65/rev1/chconf.h29
-rw-r--r--keyboards/m65/rev1/config.h32
-rw-r--r--keyboards/m65/rev1/mcuconf.h27
-rw-r--r--keyboards/m65/rev1/rules.mk21
-rw-r--r--keyboards/machkeyboards/mach3/rules.mk5
-rw-r--r--keyboards/macro1/macro1.c42
-rw-r--r--keyboards/macro1/rules.mk5
-rw-r--r--keyboards/macro3/config.h24
-rw-r--r--keyboards/macro3/info.json2
-rw-r--r--keyboards/macro3/keymaps/default/keymap.c18
-rw-r--r--keyboards/macro3/macro3.c26
-rw-r--r--keyboards/macro3/macro3.h14
-rw-r--r--keyboards/macro3/post_config.h17
-rw-r--r--keyboards/macro3/readme.md6
-rw-r--r--keyboards/macro3/rules.mk5
-rw-r--r--keyboards/majistic/keymaps/default/keymap.c20
-rw-r--r--keyboards/majistic/rules.mk5
-rw-r--r--keyboards/makrosu/config.h5
-rw-r--r--keyboards/makrosu/rules.mk5
-rw-r--r--keyboards/malevolti/lyra/config.h (renamed from keyboards/lyra/config.h)0
-rw-r--r--keyboards/malevolti/lyra/keymaps/default/config.h (renamed from keyboards/lyra/keymaps/default/config.h)0
-rw-r--r--keyboards/malevolti/lyra/keymaps/default/keymap.c (renamed from keyboards/lyra/keymaps/default/keymap.c)0
-rw-r--r--keyboards/malevolti/lyra/keymaps/via/config.h (renamed from keyboards/lyra/keymaps/via/config.h)0
-rw-r--r--keyboards/malevolti/lyra/keymaps/via/keymap.c (renamed from keyboards/lyra/keymaps/via/keymap.c)0
-rw-r--r--keyboards/malevolti/lyra/keymaps/via/rules.mk1
-rw-r--r--keyboards/malevolti/lyra/lyra.c84
-rw-r--r--keyboards/malevolti/lyra/lyra.h23
-rw-r--r--keyboards/malevolti/lyra/readme.md20
-rw-r--r--keyboards/malevolti/lyra/rev1/config.h49
-rw-r--r--keyboards/malevolti/lyra/rev1/info.json (renamed from keyboards/lyra/rev1/info.json)0
-rw-r--r--keyboards/malevolti/lyra/rev1/rev1.c19
-rw-r--r--keyboards/malevolti/lyra/rev1/rev1.h (renamed from keyboards/lyra/rev1/rev1.h)0
-rw-r--r--keyboards/malevolti/lyra/rev1/rules.mk21
-rw-r--r--keyboards/malevolti/superlyra/config.h19
-rw-r--r--keyboards/malevolti/superlyra/keymaps/default/config.h26
-rw-r--r--keyboards/malevolti/superlyra/keymaps/default/keymap.c43
-rw-r--r--keyboards/malevolti/superlyra/keymaps/via/config.h26
-rw-r--r--keyboards/malevolti/superlyra/keymaps/via/keymap.c56
-rw-r--r--keyboards/malevolti/superlyra/keymaps/via/rules.mk1
-rw-r--r--keyboards/malevolti/superlyra/readme.md19
-rw-r--r--keyboards/malevolti/superlyra/rev1/config.h44
-rw-r--r--keyboards/malevolti/superlyra/rev1/info.json116
-rw-r--r--keyboards/malevolti/superlyra/rev1/rev1.c (renamed from keyboards/lyra/rev1/rev1.c)0
-rw-r--r--keyboards/malevolti/superlyra/rev1/rev1.h34
-rw-r--r--keyboards/malevolti/superlyra/rev1/rules.mk20
-rw-r--r--keyboards/malevolti/superlyra/superlyra.c17
-rw-r--r--keyboards/malevolti/superlyra/superlyra.h23
-rw-r--r--keyboards/manta60/rules.mk5
-rw-r--r--keyboards/manyboard/macro/rules.mk5
-rw-r--r--keyboards/marksard/leftover30/rules.mk5
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/config.h2
-rw-r--r--keyboards/marksard/rhymestone/rules.mk5
-rw-r--r--keyboards/massdrop/alt/keymaps/b_/config.h121
-rw-r--r--keyboards/massdrop/alt/keymaps/b_/keymap.c50
-rw-r--r--keyboards/massdrop/alt/keymaps/default/keymap.c30
-rw-r--r--keyboards/massdrop/alt/keymaps/default_md/keymap.c30
-rw-r--r--keyboards/massdrop/alt/keymaps/via/keymap.c128
-rw-r--r--keyboards/massdrop/alt/keymaps/via/rules.mk1
-rw-r--r--keyboards/massdrop/alt/rules.mk7
-rw-r--r--keyboards/massdrop/ctrl/keymaps/R167/keymap.c143
-rw-r--r--keyboards/massdrop/ctrl/keymaps/R167/readme.md14
-rw-r--r--keyboards/massdrop/ctrl/keymaps/default/keymap.c36
-rw-r--r--keyboards/massdrop/ctrl/keymaps/default_md/keymap.c36
-rw-r--r--keyboards/massdrop/ctrl/rules.mk7
-rw-r--r--keyboards/massdrop/thekey/config.h49
-rw-r--r--keyboards/massdrop/thekey/info.json14
-rw-r--r--keyboards/massdrop/thekey/keymaps/default-macos/keymap.c23
-rw-r--r--keyboards/massdrop/thekey/keymaps/default/keymap.c23
-rw-r--r--keyboards/massdrop/thekey/keymaps/url-copy-paste-macos/keymap.c39
-rw-r--r--keyboards/massdrop/thekey/keymaps/url-copy-paste/keymap.c40
-rw-r--r--keyboards/massdrop/thekey/readme.md38
-rw-r--r--keyboards/massdrop/thekey/rules.mk18
-rw-r--r--keyboards/massdrop/thekey/thekey.c17
-rw-r--r--keyboards/massdrop/thekey/thekey.h27
-rw-r--r--keyboards/masterworks/classy_tkl/keymaps/default/config.h19
-rw-r--r--keyboards/masterworks/classy_tkl/keymaps/default_tkl_ansi_wkl/config.h19
-rw-r--r--keyboards/masterworks/classy_tkl/keymaps/default_tkl_iso_wkl/config.h19
-rw-r--r--keyboards/masterworks/classy_tkl/rev_a/rules.mk6
-rw-r--r--keyboards/matchstickworks/southpad/rules.mk5
-rw-r--r--keyboards/matrix/abelx/rules.mk5
-rw-r--r--keyboards/matrix/cain_re/rules.mk5
-rw-r--r--keyboards/matrix/falcon/rules.mk5
-rw-r--r--keyboards/matrix/m12og/rev1/rules.mk5
-rw-r--r--keyboards/matrix/m12og/rev2/rules.mk5
-rw-r--r--keyboards/matrix/m20add/rules.mk4
-rw-r--r--keyboards/matrix/me/rules.mk7
-rw-r--r--keyboards/matrix/noah/rules.mk4
-rw-r--r--keyboards/maxipad/keymaps/default/config.h19
-rw-r--r--keyboards/maxipad/keymaps/default/keymap.c20
-rw-r--r--keyboards/maxipad/rules.mk5
-rw-r--r--keyboards/maxr1998/phoebe/config.h42
-rw-r--r--keyboards/maxr1998/phoebe/info.json414
-rw-r--r--keyboards/maxr1998/phoebe/rules.mk22
-rw-r--r--keyboards/maxr1998/pulse4k/keymaps/default/keymap.c40
-rw-r--r--keyboards/maxr1998/pulse4k/keymaps/default/rules.mk1
-rw-r--r--keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c40
-rw-r--r--keyboards/maxr1998/pulse4k/keymaps/maxr1998/rules.mk1
-rw-r--r--keyboards/maxr1998/pulse4k/pulse4k.c36
-rw-r--r--keyboards/maxr1998/pulse4k/rules.mk7
-rw-r--r--keyboards/mb44/rules.mk5
-rw-r--r--keyboards/mc_76k/rules.mk5
-rw-r--r--keyboards/mechanickeys/miniashen40/info.json73
-rw-r--r--keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c50
-rw-r--r--keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c24
-rw-r--r--keyboards/mechanickeys/miniashen40/miniashen40.h53
-rw-r--r--keyboards/mechanickeys/miniashen40/rules.mk5
-rw-r--r--keyboards/mechanickeys/undead60m/rules.mk5
-rw-r--r--keyboards/mechbrewery/mb65s/config.h72
-rw-r--r--keyboards/mechbrewery/mb65s/info.json233
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/default/keymap.c63
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/default/readme.md1
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/iso/keymap.c64
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/iso/readme.md33
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/split_bs/keymap.c63
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/split_bs/readme.md1
-rw-r--r--keyboards/mechbrewery/mb65s/mb65s.c17
-rw-r--r--keyboards/mechbrewery/mb65s/mb65s.h90
-rw-r--r--keyboards/mechbrewery/mb65s/readme.md17
-rw-r--r--keyboards/mechbrewery/mb65s/rules.mk21
-rw-r--r--keyboards/mechkeys/mk60/keymaps/default/config.h19
-rw-r--r--keyboards/mechkeys/mk60/keymaps/default/keymap.c24
-rw-r--r--keyboards/mechkeys/mk60/rules.mk5
-rw-r--r--keyboards/mechllama/g35/rules.mk2
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/config.h2
-rw-r--r--keyboards/mechlovin/adelais/rules.mk5
-rw-r--r--keyboards/mechlovin/adelais/standard_led/rules.mk2
-rw-r--r--keyboards/mechlovin/delphine/rules.mk5
-rw-r--r--keyboards/mechlovin/hannah60rgb/rules.mk5
-rw-r--r--keyboards/mechlovin/hannah65/config.h3
-rw-r--r--keyboards/mechlovin/hannah65/rev1/haus/config.h2
-rw-r--r--keyboards/mechlovin/hannah65/rules.mk5
-rw-r--r--keyboards/mechlovin/hannah910/rev1/rules.mk5
-rw-r--r--keyboards/mechlovin/hannah910/rev2/rules.mk5
-rw-r--r--keyboards/mechlovin/hannah910/rev3/rules.mk5
-rw-r--r--keyboards/mechlovin/hex4b/config.h19
-rw-r--r--keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c98
-rw-r--r--keyboards/mechlovin/hex4b/keymaps/nazzer/reame.md15
-rw-r--r--keyboards/mechlovin/hex4b/keymaps/nazzer/rules.mk1
-rw-r--r--keyboards/mechlovin/hex4b/rev1/config.h53
-rw-r--r--keyboards/mechlovin/hex4b/rev1/readme.md21
-rw-r--r--keyboards/mechlovin/hex4b/rev1/rules.mk21
-rw-r--r--keyboards/mechlovin/hex4b/rev2/chconf.h24
-rw-r--r--keyboards/mechlovin/hex4b/rev2/config.h56
-rw-r--r--keyboards/mechlovin/hex4b/rev2/halconf.h22
-rw-r--r--keyboards/mechlovin/hex4b/rev2/mcuconf.h26
-rw-r--r--keyboards/mechlovin/hex4b/rev2/readme.md28
-rw-r--r--keyboards/mechlovin/hex4b/rev2/rules.mk18
-rw-r--r--keyboards/mechlovin/hex4b/rules.mk25
-rw-r--r--keyboards/mechlovin/hex6c/rules.mk5
-rw-r--r--keyboards/mechlovin/infinity87/rev2/rules.mk3
-rw-r--r--keyboards/mechlovin/infinity87/rules.mk5
-rw-r--r--keyboards/mechlovin/infinity88/infinity88.h4
-rw-r--r--keyboards/mechlovin/infinity88/info.json4
-rw-r--r--keyboards/mechlovin/infinity88/rules.mk7
-rw-r--r--keyboards/mechlovin/infinityce/rules.mk5
-rw-r--r--keyboards/mechlovin/jay60/rules.mk5
-rw-r--r--keyboards/mechlovin/kanu/rules.mk5
-rw-r--r--keyboards/mechlovin/kay60/config.h136
-rw-r--r--keyboards/mechlovin/kay60/info.json147
-rw-r--r--keyboards/mechlovin/kay60/kay60.c17
-rw-r--r--keyboards/mechlovin/kay60/kay60.h66
-rw-r--r--keyboards/mechlovin/kay60/keymaps/default/keymap.c36
-rw-r--r--keyboards/mechlovin/kay60/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/kay60/keymaps/via/keymap.c50
-rw-r--r--keyboards/mechlovin/kay60/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/kay60/readme.md26
-rw-r--r--keyboards/mechlovin/kay60/rules.mk18
-rw-r--r--keyboards/mechlovin/mechlovin9/rev1/rules.mk2
-rw-r--r--keyboards/mechlovin/mechlovin9/rules.mk5
-rw-r--r--keyboards/mechlovin/olly/bb/bb.h67
-rw-r--r--keyboards/mechlovin/olly/bb/info.json208
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/default/keymap.c32
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/keymap.c52
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/readme.md1
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/keymap.c52
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/readme.md1
-rw-r--r--keyboards/mechlovin/olly/bb/keymaps/via/keymap.c32
-rw-r--r--keyboards/mechlovin/olly/bb/rules.mk5
-rw-r--r--keyboards/mechlovin/olly/jf/rules.mk5
-rw-r--r--keyboards/mechlovin/pisces/rules.mk5
-rw-r--r--keyboards/mechlovin/serratus/rules.mk5
-rw-r--r--keyboards/mechlovin/th1800/rules.mk5
-rw-r--r--keyboards/mechlovin/tmkl/rules.mk5
-rw-r--r--keyboards/mechmini/v1/rules.mk4
-rwxr-xr-xkeyboards/mechmini/v2/rules.mk5
-rw-r--r--keyboards/mechstudio/dawn/rules.mk5
-rw-r--r--keyboards/mechstudio/ud_40_ortho/rules.mk5
-rw-r--r--keyboards/mechwild/bde/lefty/rules.mk5
-rw-r--r--keyboards/mechwild/bde/righty/rules.mk5
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fearless_spiff/config.h19
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c293
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fearless_spiff/readme.md24
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fearless_spiff/rules.mk7
-rw-r--r--keyboards/mechwild/mercutio/rules.mk5
-rw-r--r--keyboards/mechwild/murphpad/rules.mk5
-rw-r--r--keyboards/mechwild/obe/rules.mk5
-rw-r--r--keyboards/mechwild/waka60/config.h143
-rw-r--r--keyboards/mechwild/waka60/f401/halconf.h25
-rw-r--r--keyboards/mechwild/waka60/f401/mcuconf.h27
-rw-r--r--keyboards/mechwild/waka60/f401/rules.mk5
-rw-r--r--keyboards/mechwild/waka60/f411/halconf.h22
-rw-r--r--keyboards/mechwild/waka60/f411/mcuconf.h23
-rw-r--r--keyboards/mechwild/waka60/f411/rules.mk5
-rw-r--r--keyboards/mechwild/waka60/info.json73
-rw-r--r--keyboards/mechwild/waka60/keymaps/audio/config.h23
-rw-r--r--keyboards/mechwild/waka60/keymaps/audio/keymap.c57
-rw-r--r--keyboards/mechwild/waka60/keymaps/audio/rules.mk3
-rw-r--r--keyboards/mechwild/waka60/keymaps/default/keymap.c57
-rw-r--r--keyboards/mechwild/waka60/keymaps/via/keymap.c57
-rw-r--r--keyboards/mechwild/waka60/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechwild/waka60/readme.md19
-rw-r--r--keyboards/mechwild/waka60/rules.mk17
-rw-r--r--keyboards/mechwild/waka60/waka60.c37
-rw-r--r--keyboards/mechwild/waka60/waka60.h49
-rw-r--r--keyboards/mehkee96/config.h3
-rw-r--r--keyboards/mehkee96/mehkee96.h2
-rw-r--r--keyboards/mehkee96/rules.mk2
-rw-r--r--keyboards/meira/keymaps/default/keymap.c60
-rw-r--r--keyboards/meira/rules.mk5
-rw-r--r--keyboards/meishi/keymaps/default/keymap.c2
-rw-r--r--keyboards/meishi/rules.mk5
-rw-r--r--keyboards/meishi2/keymaps/default/config.h19
-rw-r--r--keyboards/meishi2/keymaps/default/keymap.c2
-rw-r--r--keyboards/meishi2/rules.mk5
-rw-r--r--keyboards/meletrix/zoom65/config.h3
-rw-r--r--keyboards/meletrix/zoom65/rules.mk5
-rw-r--r--keyboards/meletrix/zoom65_lite/config.h54
-rw-r--r--keyboards/meletrix/zoom65_lite/info.json623
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/default/keymap.c34
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/default/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/via/keymap.c91
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/via/readme.md1
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/via/rules.mk2
-rw-r--r--keyboards/meletrix/zoom65_lite/readme.md26
-rw-r--r--keyboards/meletrix/zoom65_lite/rules.mk21
-rw-r--r--keyboards/meletrix/zoom65_lite/zoom65_lite.c25
-rw-r--r--keyboards/meletrix/zoom65_lite/zoom65_lite.h243
-rwxr-xr-xkeyboards/melgeek/mach80/config.h2
-rwxr-xr-xkeyboards/melgeek/mach80/rev1/rules.mk5
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/config.h42
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/rev2.c191
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/rules.mk23
-rw-r--r--keyboards/melgeek/mj61/rev1/rules.mk5
-rw-r--r--keyboards/melgeek/mj61/rev2/rules.mk5
-rw-r--r--keyboards/melgeek/mj63/rev1/rules.mk5
-rw-r--r--keyboards/melgeek/mj63/rev2/rules.mk5
-rw-r--r--keyboards/melgeek/mj64/rev1/rules.mk5
-rw-r--r--keyboards/melgeek/mj64/rev2/rules.mk5
-rw-r--r--keyboards/melgeek/mj64/rev3/rules.mk5
-rw-r--r--keyboards/melgeek/mj65/rev3/rules.mk5
-rwxr-xr-xkeyboards/melgeek/mj6xy/rev3/rules.mk5
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/rules.mk5
-rw-r--r--keyboards/melgeek/mojo75/rev1/rules.mk5
-rw-r--r--keyboards/melgeek/z70ultra/rev1/rules.mk5
-rw-r--r--keyboards/melody96/rules.mk5
-rw-r--r--keyboards/meme/keymaps/default/config.h19
-rw-r--r--keyboards/meme/keymaps/default/keymap.c2
-rw-r--r--keyboards/meme/rules.mk5
-rw-r--r--keyboards/meow65/config.h147
-rw-r--r--keyboards/meow65/info.json85
-rw-r--r--keyboards/meow65/keymaps/default/keymap.c40
-rw-r--r--keyboards/meow65/keymaps/default/readme.md1
-rw-r--r--keyboards/meow65/keymaps/via/keymap.c54
-rw-r--r--keyboards/meow65/keymaps/via/readme.md1
-rw-r--r--keyboards/meow65/keymaps/via/rules.mk1
-rw-r--r--keyboards/meow65/meow65.c17
-rw-r--r--keyboards/meow65/meow65.h41
-rw-r--r--keyboards/meow65/readme.md27
-rw-r--r--keyboards/meow65/rules.mk20
-rw-r--r--keyboards/merge/iso_macro/rules.mk5
-rw-r--r--keyboards/merge/uc1/rules.mk5
-rw-r--r--keyboards/merge/um70/rules.mk5
-rw-r--r--keyboards/merge/uma/config.h47
-rw-r--r--keyboards/merge/uma/info.json19
-rw-r--r--keyboards/merge/uma/keymaps/default/keymap.c65
-rw-r--r--keyboards/merge/uma/keymaps/default/readme.md3
-rw-r--r--keyboards/merge/uma/keymaps/default/rules.mk1
-rw-r--r--keyboards/merge/uma/keymaps/via/keymap.c65
-rw-r--r--keyboards/merge/uma/keymaps/via/rules.mk2
-rw-r--r--keyboards/merge/uma/readme.md22
-rw-r--r--keyboards/merge/uma/rules.mk23
-rw-r--r--keyboards/merge/uma/uma.c109
-rw-r--r--keyboards/merge/uma/uma.h192
-rw-r--r--keyboards/mesa/mesa_tkl/rules.mk5
-rw-r--r--keyboards/meson/keymaps/default/config.h19
-rw-r--r--keyboards/meson/rules.mk5
-rw-r--r--keyboards/metamechs/timberwolf/rules.mk5
-rw-r--r--keyboards/mexsistor/ludmila/rules.mk5
-rw-r--r--keyboards/mikeneko65/rev3/config.h109
-rw-r--r--keyboards/mikeneko65/rev3/info.json10
-rw-r--r--keyboards/mikeneko65/rev3/keymaps/default/keymap.c39
-rw-r--r--keyboards/mikeneko65/rev3/keymaps/default/readme.md1
-rw-r--r--keyboards/mikeneko65/rev3/keymaps/via/keymap.c55
-rw-r--r--keyboards/mikeneko65/rev3/keymaps/via/rules.mk1
-rw-r--r--keyboards/mikeneko65/rev3/readme.md23
-rw-r--r--keyboards/mikeneko65/rev3/rev3.c18
-rw-r--r--keyboards/mikeneko65/rev3/rev3.h34
-rw-r--r--keyboards/mikeneko65/rev3/rules.mk18
-rw-r--r--keyboards/mikeneko65/rev4/config.h109
-rw-r--r--keyboards/mikeneko65/rev4/info.json10
-rw-r--r--keyboards/mikeneko65/rev4/keymaps/default/keymap.c39
-rw-r--r--keyboards/mikeneko65/rev4/keymaps/default/readme.md1
-rw-r--r--keyboards/mikeneko65/rev4/keymaps/via/keymap.c55
-rw-r--r--keyboards/mikeneko65/rev4/keymaps/via/rules.mk1
-rw-r--r--keyboards/mikeneko65/rev4/readme.md23
-rw-r--r--keyboards/mikeneko65/rev4/rev4.c18
-rw-r--r--keyboards/mikeneko65/rev4/rev4.h34
-rw-r--r--keyboards/mikeneko65/rev4/rules.mk18
-rw-r--r--keyboards/miller/gm862/keymaps/default/keymap.c16
-rw-r--r--keyboards/miller/gm862/keymaps/via/keymap.c16
-rw-r--r--keyboards/miller/gm862/rules.mk5
-rw-r--r--keyboards/millipad/rules.mk5
-rw-r--r--keyboards/mini_elixivy/rules.mk5
-rw-r--r--keyboards/mini_ten_key_plus/config.h110
-rw-r--r--keyboards/mini_ten_key_plus/info.json25
-rw-r--r--keyboards/mini_ten_key_plus/keymaps/default/keymap.c32
-rw-r--r--keyboards/mini_ten_key_plus/keymaps/default/readme.md2
-rw-r--r--keyboards/mini_ten_key_plus/keymaps/standard_numpad/keymap.c32
-rw-r--r--keyboards/mini_ten_key_plus/keymaps/standard_numpad/readme.md2
-rw-r--r--keyboards/mini_ten_key_plus/mini_ten_key_plus.c15
-rw-r--r--keyboards/mini_ten_key_plus/mini_ten_key_plus.h78
-rw-r--r--keyboards/mini_ten_key_plus/readme.md24
-rw-r--r--keyboards/mini_ten_key_plus/rules.mk19
-rw-r--r--keyboards/miniaxe/keymaps/default/keymap.c40
-rw-r--r--keyboards/miniaxe/rules.mk6
-rw-r--r--keyboards/minidox/keymaps/default/keymap.c40
-rw-r--r--keyboards/minidox/rules.mk5
-rw-r--r--keyboards/minim/rules.mk5
-rw-r--r--keyboards/minimacro5/rules.mk5
-rw-r--r--keyboards/minimon/index_tab/rules.mk5
-rw-r--r--keyboards/mint60/keymaps/default/keymap.c24
-rw-r--r--keyboards/mint60/rules.mk5
-rw-r--r--keyboards/mio/rules.mk5
-rw-r--r--keyboards/misonoworks/chocolatebar/rules.mk5
-rw-r--r--keyboards/misonoworks/karina/rules.mk5
-rw-r--r--keyboards/misterknife/knife66/rules.mk5
-rw-r--r--keyboards/misterknife/knife66_iso/rules.mk5
-rw-r--r--keyboards/mitosis/rules.mk6
-rw-r--r--keyboards/miuni32/keymaps/default/config.h3
-rw-r--r--keyboards/miuni32/rules.mk5
-rw-r--r--keyboards/mixi/rules.mk5
-rw-r--r--keyboards/mlego/m48/config.h37
-rw-r--r--keyboards/mlego/m48/info.json10
-rw-r--r--keyboards/mlego/m48/keymaps/default/config.h21
-rw-r--r--keyboards/mlego/m48/keymaps/default/keymap.c216
-rw-r--r--keyboards/mlego/m48/keymaps/via/config.h20
-rw-r--r--keyboards/mlego/m48/keymaps/via/keymap.c171
-rw-r--r--keyboards/mlego/m48/keymaps/via/rules.mk1
-rw-r--r--keyboards/mlego/m48/m48.c30
-rw-r--r--keyboards/mlego/m48/m48.h50
-rw-r--r--keyboards/mlego/m48/readme.md50
-rw-r--r--keyboards/mlego/m48/rev1/config.h58
-rw-r--r--keyboards/mlego/m48/rev1/halconf.h30
-rw-r--r--keyboards/mlego/m48/rev1/mcuconf.h30
-rw-r--r--keyboards/mlego/m48/rev1/rules.mk21
-rw-r--r--keyboards/mlego/m60/config.h37
-rw-r--r--keyboards/mlego/m60/info.json10
-rw-r--r--keyboards/mlego/m60/keymaps/default/config.h21
-rw-r--r--keyboards/mlego/m60/keymaps/default/keymap.c175
-rw-r--r--keyboards/mlego/m60/keymaps/via/config.h20
-rw-r--r--keyboards/mlego/m60/keymaps/via/keymap.c175
-rw-r--r--keyboards/mlego/m60/keymaps/via/rules.mk1
-rw-r--r--keyboards/mlego/m60/m60.c30
-rw-r--r--keyboards/mlego/m60/m60.h57
-rw-r--r--keyboards/mlego/m60/readme.md49
-rw-r--r--keyboards/mlego/m60/rev1/config.h58
-rw-r--r--keyboards/mlego/m60/rev1/halconf.h30
-rw-r--r--keyboards/mlego/m60/rev1/mcuconf.h30
-rw-r--r--keyboards/mlego/m60/rev1/rules.mk22
-rw-r--r--keyboards/mlego/m60_split/config.h37
-rw-r--r--keyboards/mlego/m60_split/info.json10
-rw-r--r--keyboards/mlego/m60_split/keymaps/default/config.h21
-rw-r--r--keyboards/mlego/m60_split/keymaps/default/keymap.c193
-rw-r--r--keyboards/mlego/m60_split/keymaps/via/config.h20
-rw-r--r--keyboards/mlego/m60_split/keymaps/via/keymap.c185
-rw-r--r--keyboards/mlego/m60_split/keymaps/via/rules.mk1
-rw-r--r--keyboards/mlego/m60_split/m60_split.c17
-rw-r--r--keyboards/mlego/m60_split/m60_split.h57
-rw-r--r--keyboards/mlego/m60_split/readme.md67
-rw-r--r--keyboards/mlego/m60_split/rev1/config.h86
-rw-r--r--keyboards/mlego/m60_split/rev1/halconf.h30
-rw-r--r--keyboards/mlego/m60_split/rev1/mcuconf.h30
-rw-r--r--keyboards/mlego/m60_split/rev1/rules.mk24
-rw-r--r--keyboards/mlego/m60_split/rev2/config.h82
-rw-r--r--keyboards/mlego/m60_split/rev2/halconf.h30
-rw-r--r--keyboards/mlego/m60_split/rev2/mcuconf.h30
-rw-r--r--keyboards/mlego/m60_split/rev2/rules.mk23
-rw-r--r--keyboards/mlego/m65/config.h33
-rw-r--r--keyboards/mlego/m65/info.json80
-rw-r--r--keyboards/mlego/m65/keymaps/default/config.h20
-rw-r--r--keyboards/mlego/m65/keymaps/default/keymap.c169
-rw-r--r--keyboards/mlego/m65/keymaps/default/readme.md (renamed from keyboards/m65/keymaps/default/readme.md)0
-rw-r--r--keyboards/mlego/m65/keymaps/dk/config.h20
-rw-r--r--keyboards/mlego/m65/keymaps/dk/keymap.c170
-rw-r--r--keyboards/mlego/m65/keymaps/dk/readme.md (renamed from keyboards/m65/keymaps/dk/readme.md)0
-rw-r--r--keyboards/mlego/m65/keymaps/uk/config.h29
-rw-r--r--keyboards/mlego/m65/keymaps/uk/keymap.c462
-rw-r--r--keyboards/mlego/m65/keymaps/uk/readme.md (renamed from keyboards/m65/keymaps/uk/readme.md)0
-rw-r--r--keyboards/mlego/m65/keymaps/uk/rules.mk1
-rw-r--r--keyboards/mlego/m65/keymaps/via/config.h20
-rw-r--r--keyboards/mlego/m65/keymaps/via/keymap.c225
-rw-r--r--keyboards/mlego/m65/keymaps/via/rules.mk1
-rw-r--r--keyboards/mlego/m65/lib/glcdfont.c231
-rw-r--r--keyboards/mlego/m65/m65.c18
-rw-r--r--keyboards/mlego/m65/m65.h133
-rw-r--r--keyboards/mlego/m65/readme.md172
-rw-r--r--keyboards/mlego/m65/rev1/chconf.h28
-rw-r--r--keyboards/mlego/m65/rev1/config.h59
-rw-r--r--keyboards/mlego/m65/rev1/mcuconf.h27
-rw-r--r--keyboards/mlego/m65/rev1/rules.mk19
-rw-r--r--keyboards/mlego/m65/rev2/board.h20
-rw-r--r--keyboards/mlego/m65/rev2/chconf.h28
-rw-r--r--keyboards/mlego/m65/rev2/config.h70
-rw-r--r--keyboards/mlego/m65/rev2/mcuconf.h27
-rw-r--r--keyboards/mlego/m65/rev2/rules.mk19
-rw-r--r--keyboards/mlego/m65/rev3/config.h59
-rw-r--r--keyboards/mlego/m65/rev3/halconf.h30
-rw-r--r--keyboards/mlego/m65/rev3/mcuconf.h30
-rw-r--r--keyboards/mlego/m65/rev3/rules.mk19
-rw-r--r--keyboards/mlego/m65/rev4/config.h67
-rw-r--r--keyboards/mlego/m65/rev4/halconf.h32
-rw-r--r--keyboards/mlego/m65/rev4/mcuconf.h33
-rw-r--r--keyboards/mlego/m65/rev4/rules.mk22
-rw-r--r--keyboards/mmkzoo65/config.h48
-rw-r--r--keyboards/mmkzoo65/info.json81
-rw-r--r--keyboards/mmkzoo65/keymaps/default/keymap.c53
-rw-r--r--keyboards/mmkzoo65/keymaps/via/keymap.c52
-rw-r--r--keyboards/mmkzoo65/keymaps/via/rules.mk2
-rw-r--r--keyboards/mmkzoo65/mmkzoo65.c18
-rw-r--r--keyboards/mmkzoo65/mmkzoo65.h32
-rw-r--r--keyboards/mmkzoo65/readme.md22
-rw-r--r--keyboards/mmkzoo65/rules.mk19
-rwxr-xr-xkeyboards/mnk1800s/rules.mk12
-rwxr-xr-xkeyboards/mnk50/rules.mk8
-rwxr-xr-xkeyboards/mnk75/config.h76
-rwxr-xr-xkeyboards/mnk75/info.json10
-rw-r--r--keyboards/mnk75/keymaps/default/keymap.c27
-rwxr-xr-xkeyboards/mnk75/keymaps/default/readme.md1
-rw-r--r--keyboards/mnk75/keymaps/via/keymap.c54
-rwxr-xr-xkeyboards/mnk75/keymaps/via/readme.md1
-rwxr-xr-xkeyboards/mnk75/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/mnk75/mnk75.c16
-rw-r--r--keyboards/mnk75/mnk75.h36
-rwxr-xr-xkeyboards/mnk75/readme.md32
-rwxr-xr-xkeyboards/mnk75/rules.mk26
-rw-r--r--keyboards/mntre/config.h101
-rw-r--r--keyboards/mntre/info.json98
-rw-r--r--keyboards/mntre/keymaps/default/keymap.c31
-rw-r--r--keyboards/mntre/keymaps/default/readme.md19
-rw-r--r--keyboards/mntre/mntre.c19
-rw-r--r--keyboards/mntre/mntre.h30
-rw-r--r--keyboards/mntre/readme.md27
-rw-r--r--keyboards/mntre/rules.mk21
-rw-r--r--keyboards/mode/eighty/eighty.c14
-rw-r--r--keyboards/mode/eighty/eighty.h9
-rw-r--r--keyboards/mode/eighty/halconf.h27
-rw-r--r--keyboards/mode/eighty/m80h/m80h.h32
-rw-r--r--keyboards/mode/eighty/m80h/rules.mk24
-rw-r--r--keyboards/mode/eighty/m80s/m80s.h32
-rw-r--r--keyboards/mode/eighty/m80s/rules.mk24
-rw-r--r--keyboards/mode/eighty/readme.md22
-rw-r--r--keyboards/mode/m65ha_alpha/chconf.h25
-rw-r--r--keyboards/mode/m65ha_alpha/config.h73
-rw-r--r--keyboards/mode/m65ha_alpha/halconf.h21
-rw-r--r--keyboards/mode/m65ha_alpha/info.json82
-rwxr-xr-xkeyboards/mode/m65ha_alpha/keymaps/default/keymap.c49
-rwxr-xr-xkeyboards/mode/m65ha_alpha/keymaps/via/keymap.c49
-rw-r--r--keyboards/mode/m65ha_alpha/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m65ha_alpha/m65ha_alpha.c67
-rw-r--r--keyboards/mode/m65ha_alpha/m65ha_alpha.h37
-rw-r--r--keyboards/mode/m65ha_alpha/mcuconf.h35
-rw-r--r--keyboards/mode/m65ha_alpha/readme.md16
-rw-r--r--keyboards/mode/m65ha_alpha/rules.mk21
-rw-r--r--keyboards/mode/m65hi_alpha/chconf.h25
-rw-r--r--keyboards/mode/m65hi_alpha/config.h73
-rw-r--r--keyboards/mode/m65hi_alpha/halconf.h21
-rw-r--r--keyboards/mode/m65hi_alpha/info.json83
-rwxr-xr-xkeyboards/mode/m65hi_alpha/keymaps/default/keymap.c49
-rwxr-xr-xkeyboards/mode/m65hi_alpha/keymaps/via/keymap.c49
-rw-r--r--keyboards/mode/m65hi_alpha/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m65hi_alpha/m65hi_alpha.c67
-rw-r--r--keyboards/mode/m65hi_alpha/m65hi_alpha.h37
-rw-r--r--keyboards/mode/m65hi_alpha/mcuconf.h40
-rw-r--r--keyboards/mode/m65hi_alpha/readme.md15
-rw-r--r--keyboards/mode/m65hi_alpha/rules.mk21
-rw-r--r--keyboards/mode/m65s/rules.mk5
-rw-r--r--keyboards/mode/m75h/chconf.h30
-rw-r--r--keyboards/mode/m75h/config.h75
-rw-r--r--keyboards/mode/m75h/halconf.h26
-rw-r--r--keyboards/mode/m75h/info.json97
-rwxr-xr-xkeyboards/mode/m75h/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/mode/m75h/keymaps/via/keymap.c53
-rw-r--r--keyboards/mode/m75h/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m75h/m75h.c23
-rw-r--r--keyboards/mode/m75h/m75h.h59
-rw-r--r--keyboards/mode/m75h/mcuconf.h40
-rw-r--r--keyboards/mode/m75h/readme.md19
-rw-r--r--keyboards/mode/m75h/rules.mk23
-rw-r--r--keyboards/mode/m75s/chconf.h30
-rw-r--r--keyboards/mode/m75s/config.h75
-rw-r--r--keyboards/mode/m75s/halconf.h26
-rw-r--r--keyboards/mode/m75s/info.json824
-rwxr-xr-xkeyboards/mode/m75s/keymaps/default/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_ansi/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_ansi_split_bs/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_ansi_tsangan/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_ansi_tsangan_split_bs/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_iso/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_iso_split_bs/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_iso_tsangan/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/default_iso_tsangan_split_bs/keymap.c53
-rwxr-xr-xkeyboards/mode/m75s/keymaps/via/keymap.c53
-rw-r--r--keyboards/mode/m75s/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m75s/m75s.c23
-rw-r--r--keyboards/mode/m75s/m75s.h195
-rw-r--r--keyboards/mode/m75s/mcuconf.h40
-rw-r--r--keyboards/mode/m75s/readme.md17
-rw-r--r--keyboards/mode/m75s/rules.mk23
-rw-r--r--keyboards/mode/m80v1/chconf.h (renamed from keyboards/mode/eighty/chconf.h)0
-rw-r--r--keyboards/mode/m80v1/config.h (renamed from keyboards/mode/eighty/config.h)0
-rw-r--r--keyboards/mode/m80v1/halconf.h19
-rw-r--r--keyboards/mode/m80v1/m80h/config.h (renamed from keyboards/mode/eighty/m80h/config.h)0
-rw-r--r--keyboards/mode/m80v1/m80h/info.json (renamed from keyboards/mode/eighty/m80h/info.json)0
-rw-r--r--keyboards/mode/m80v1/m80h/keymaps/default/keymap.c (renamed from keyboards/mode/eighty/m80h/keymaps/default/keymap.c)0
-rw-r--r--keyboards/mode/m80v1/m80h/keymaps/via/keymap.c (renamed from keyboards/mode/eighty/m80h/keymaps/via/keymap.c)0
-rw-r--r--keyboards/mode/m80v1/m80h/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m80v1/m80h/m80h.c (renamed from keyboards/mode/eighty/m80h/m80h.c)0
-rw-r--r--keyboards/mode/m80v1/m80h/m80h.h32
-rw-r--r--keyboards/mode/m80v1/m80h/readme.md (renamed from keyboards/mode/eighty/m80h/readme.md)0
-rw-r--r--keyboards/mode/m80v1/m80h/rules.mk21
-rw-r--r--keyboards/mode/m80v1/m80s/config.h (renamed from keyboards/mode/eighty/m80s/config.h)0
-rw-r--r--keyboards/mode/m80v1/m80s/info.json (renamed from keyboards/mode/eighty/m80s/info.json)0
-rw-r--r--keyboards/mode/m80v1/m80s/keymaps/default/keymap.c (renamed from keyboards/mode/eighty/m80s/keymaps/default/keymap.c)0
-rw-r--r--keyboards/mode/m80v1/m80s/keymaps/via/keymap.c (renamed from keyboards/mode/eighty/m80s/keymaps/via/keymap.c)0
-rw-r--r--keyboards/mode/m80v1/m80s/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m80v1/m80s/m80s.c (renamed from keyboards/mode/eighty/m80s/m80s.c)0
-rw-r--r--keyboards/mode/m80v1/m80s/m80s.h32
-rw-r--r--keyboards/mode/m80v1/m80s/readme.md (renamed from keyboards/mode/eighty/m80s/readme.md)0
-rw-r--r--keyboards/mode/m80v1/m80s/rules.mk21
-rw-r--r--keyboards/mode/m80v1/m80v1.c14
-rw-r--r--keyboards/mode/m80v1/m80v1.h9
-rw-r--r--keyboards/mode/m80v1/mcuconf.h (renamed from keyboards/mode/eighty/mcuconf.h)0
-rw-r--r--keyboards/mode/m80v1/readme.md38
-rw-r--r--keyboards/mode/m80v2/chconf.h25
-rw-r--r--keyboards/mode/m80v2/config.h45
-rw-r--r--keyboards/mode/m80v2/halconf.h18
-rw-r--r--keyboards/mode/m80v2/m80v2.c18
-rw-r--r--keyboards/mode/m80v2/m80v2.h26
-rw-r--r--keyboards/mode/m80v2/m80v2h/config.h2
-rw-r--r--keyboards/mode/m80v2/m80v2h/info.json97
-rwxr-xr-xkeyboards/mode/m80v2/m80v2h/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/mode/m80v2/m80v2h/keymaps/via/keymap.c53
-rw-r--r--keyboards/mode/m80v2/m80v2h/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m80v2/m80v2h/m80v2h.c18
-rw-r--r--keyboards/mode/m80v2/m80v2h/m80v2h.h39
-rw-r--r--keyboards/mode/m80v2/m80v2h/rules.mk21
-rw-r--r--keyboards/mode/m80v2/m80v2s/config.h2
-rw-r--r--keyboards/mode/m80v2/m80v2s/info.json101
-rwxr-xr-xkeyboards/mode/m80v2/m80v2s/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/mode/m80v2/m80v2s/keymaps/via/keymap.c53
-rw-r--r--keyboards/mode/m80v2/m80v2s/keymaps/via/rules.mk1
-rw-r--r--keyboards/mode/m80v2/m80v2s/m80v2s.c18
-rw-r--r--keyboards/mode/m80v2/m80v2s/m80v2s.h39
-rw-r--r--keyboards/mode/m80v2/m80v2s/rules.mk21
-rw-r--r--keyboards/mode/m80v2/mcuconf.h19
-rw-r--r--keyboards/mode/m80v2/readme.md38
-rw-r--r--keyboards/model_v/rules.mk5
-rw-r--r--keyboards/mokey/ginkgo65/rules.mk5
-rw-r--r--keyboards/mokey/ginkgo65hot/config.h41
-rw-r--r--keyboards/mokey/ginkgo65hot/ginkgo65hot.c16
-rw-r--r--keyboards/mokey/ginkgo65hot/ginkgo65hot.h47
-rw-r--r--keyboards/mokey/ginkgo65hot/info.json82
-rw-r--r--keyboards/mokey/ginkgo65hot/keymaps/default/keymap.c49
-rw-r--r--keyboards/mokey/ginkgo65hot/keymaps/via/keymap.c50
-rw-r--r--keyboards/mokey/ginkgo65hot/keymaps/via/rules.mk2
-rw-r--r--keyboards/mokey/ginkgo65hot/readme.md20
-rw-r--r--keyboards/mokey/ginkgo65hot/rules.mk18
-rw-r--r--keyboards/mokey/mokey63/rules.mk5
-rw-r--r--keyboards/mokey/mokey64/rules.mk5
-rw-r--r--keyboards/mokey/xox70/info.json647
-rw-r--r--keyboards/mokey/xox70/keymaps/default/keymap.c19
-rw-r--r--keyboards/mokey/xox70/keymaps/via/keymap.c44
-rw-r--r--keyboards/mokey/xox70/rules.mk7
-rw-r--r--keyboards/mokey/xox70/xox70.h129
-rw-r--r--keyboards/mokey/xox70hot/config.h36
-rw-r--r--keyboards/mokey/xox70hot/info.json88
-rw-r--r--keyboards/mokey/xox70hot/keymaps/default/keymap.c35
-rw-r--r--keyboards/mokey/xox70hot/keymaps/via/keymap.c49
-rw-r--r--keyboards/mokey/xox70hot/keymaps/via/rules.mk1
-rw-r--r--keyboards/mokey/xox70hot/readme.md19
-rw-r--r--keyboards/mokey/xox70hot/rules.mk18
-rw-r--r--keyboards/mokey/xox70hot/xox70hot.c15
-rw-r--r--keyboards/mokey/xox70hot/xox70hot.h37
-rwxr-xr-xkeyboards/molecule/rules.mk5
-rw-r--r--keyboards/momoka_ergo/rules.mk5
-rw-r--r--keyboards/monarch/rules.mk6
-rw-r--r--keyboards/monoflex60/config.h42
-rw-r--r--keyboards/monoflex60/info.json217
-rw-r--r--keyboards/monoflex60/keymaps/60_iso_tsangan/keymap.c34
-rw-r--r--keyboards/monoflex60/keymaps/60_tsangan_hhkb/keymap.c34
-rw-r--r--keyboards/monoflex60/keymaps/default/keymap.c34
-rw-r--r--keyboards/monoflex60/keymaps/default/readme.md1
-rw-r--r--keyboards/monoflex60/keymaps/via/keymap.c48
-rw-r--r--keyboards/monoflex60/keymaps/via/readme.md1
-rw-r--r--keyboards/monoflex60/keymaps/via/rules.mk1
-rw-r--r--keyboards/monoflex60/monoflex60.c17
-rw-r--r--keyboards/monoflex60/monoflex60.h102
-rw-r--r--keyboards/monoflex60/readme.md29
-rw-r--r--keyboards/monoflex60/rules.mk19
-rw-r--r--keyboards/monstargear/xo87/rgb/rules.mk4
-rw-r--r--keyboards/monstargear/xo87/solderable/rules.mk5
-rw-r--r--keyboards/montex/rules.mk5
-rw-r--r--keyboards/montsinger/rebound/rev1/rules.mk8
-rw-r--r--keyboards/montsinger/rebound/rev2/rules.mk8
-rw-r--r--keyboards/montsinger/rebound/rev3/rules.mk8
-rw-r--r--keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c101
-rw-r--r--keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h113
-rw-r--r--keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/readme.md5
-rw-r--r--keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk16
-rw-r--r--keyboards/montsinger/rebound/rev4/rules.mk8
-rw-r--r--keyboards/montsinger/rewind/rules.mk8
-rw-r--r--keyboards/moon/keymaps/default/config.h3
-rw-r--r--keyboards/moon/keymaps/default_tkl_ansi/config.h3
-rw-r--r--keyboards/moon/keymaps/default_tkl_ansi_wkl/config.h3
-rw-r--r--keyboards/moon/keymaps/default_tkl_iso/config.h3
-rw-r--r--keyboards/moon/keymaps/default_tkl_iso_wkl/config.h3
-rw-r--r--keyboards/moon/rules.mk5
-rw-r--r--keyboards/moonlander/config.h12
-rw-r--r--keyboards/moonlander/keymaps/drashna/keymap.c84
-rw-r--r--keyboards/moonlander/keymaps/drashna/rules.mk10
-rw-r--r--keyboards/moonlander/matrix.c4
-rw-r--r--keyboards/moonlander/moonlander.c117
-rw-r--r--keyboards/moonlander/readme.md2
-rw-r--r--keyboards/moonlander/rules.mk8
-rw-r--r--keyboards/mountainblocks/mb17/rules.mk5
-rw-r--r--keyboards/mschwingen/modelm/rules.mk5
-rw-r--r--keyboards/mt40/keymaps/default/keymap.c30
-rw-r--r--keyboards/mt40/rules.mk6
-rw-r--r--keyboards/mt64rgb/rules.mk5
-rw-r--r--keyboards/mt84/rules.mk5
-rw-r--r--keyboards/mt980/rules.mk5
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/hotswap.h38
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/info.json133
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c4
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/rules.mk7
-rw-r--r--keyboards/mtbkeys/mtb60/solder/info.json139
-rw-r--r--keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c4
-rw-r--r--keyboards/mtbkeys/mtb60/solder/rules.mk5
-rw-r--r--keyboards/mtbkeys/mtb60/solder/solder.h38
-rw-r--r--keyboards/murcielago/rev1/rules.mk5
-rw-r--r--keyboards/mwstudio/mw65_black/config.h54
-rw-r--r--keyboards/mwstudio/mw65_black/info.json83
-rw-r--r--keyboards/mwstudio/mw65_black/keymaps/default/keymap.c48
-rw-r--r--keyboards/mwstudio/mw65_black/keymaps/via/keymap.c48
-rw-r--r--keyboards/mwstudio/mw65_black/keymaps/via/rules.mk2
-rw-r--r--keyboards/mwstudio/mw65_black/mw65_black.c16
-rw-r--r--keyboards/mwstudio/mw65_black/mw65_black.h30
-rw-r--r--keyboards/mwstudio/mw65_black/readme.md22
-rw-r--r--keyboards/mwstudio/mw65_black/rules.mk19
-rw-r--r--keyboards/mwstudio/mw65_rgb/config.h63
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c20
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h40
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c103
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap_stuff.h335
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/cool_diagonal.c22
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/custom_gradient.c74
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/diagonal.c22
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/kitt.c68
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c25
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h45
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/random_breath_rainbow.c55
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/readme.md11
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rgb_matrix_user.inc17
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rules.mk6
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h26
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c201
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/readme.md3
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/rules.mk2
-rw-r--r--keyboards/mwstudio/mw65_rgb/mw65_rgb.c44
-rw-r--r--keyboards/mwstudio/mw65_rgb/mw65_rgb.h12
-rw-r--r--keyboards/mwstudio/mw65_rgb/rules.mk7
-rw-r--r--keyboards/mwstudio/mw75/config.h2
-rw-r--r--keyboards/mwstudio/mw75/rules.mk5
-rw-r--r--keyboards/mwstudio/mw75r2/config.h80
-rw-r--r--keyboards/mwstudio/mw75r2/info.json97
-rw-r--r--keyboards/mwstudio/mw75r2/keymaps/default/keymap.c39
-rw-r--r--keyboards/mwstudio/mw75r2/keymaps/via/keymap.c171
-rw-r--r--keyboards/mwstudio/mw75r2/keymaps/via/rules.mk2
-rw-r--r--keyboards/mwstudio/mw75r2/mw75r2.c28
-rw-r--r--keyboards/mwstudio/mw75r2/mw75r2.h34
-rw-r--r--keyboards/mwstudio/mw75r2/readme.md22
-rw-r--r--keyboards/mwstudio/mw75r2/rules.mk21
-rw-r--r--keyboards/mxss/keymaps/default/config.h19
-rw-r--r--keyboards/mxss/rules.mk5
-rw-r--r--keyboards/mysticworks/wyvern/rules.mk5
-rw-r--r--keyboards/nack/rules.mk5
-rw-r--r--keyboards/nafuda/rules.mk4
-rw-r--r--keyboards/naiping/np64/rules.mk5
-rw-r--r--keyboards/naiping/nphhkb/rules.mk5
-rw-r--r--keyboards/naiping/npminila/rules.mk5
-rw-r--r--keyboards/naked48/keymaps/scheiklp/config.h9
-rw-r--r--keyboards/naked48/keymaps/scheiklp/keymap.c68
-rw-r--r--keyboards/naked48/keymaps/scheiklp/readme.md37
-rw-r--r--keyboards/naked48/keymaps/scheiklp/rules.mk5
-rw-r--r--keyboards/naked48/rules.mk5
-rw-r--r--keyboards/naked60/rules.mk5
-rw-r--r--keyboards/naked64/keymaps/default/keymap.c58
-rw-r--r--keyboards/naked64/rules.mk4
-rw-r--r--keyboards/namecard2x4/keymaps/default/config.h19
-rw-r--r--keyboards/namecard2x4/rules.mk5
-rw-r--r--keyboards/nasu/config.h93
-rw-r--r--keyboards/nasu/info.json81
-rw-r--r--keyboards/nasu/keymaps/default/keymap.c32
-rw-r--r--keyboards/nasu/keymaps/default/readme.md5
-rw-r--r--keyboards/nasu/keymaps/via/keymap.c47
-rw-r--r--keyboards/nasu/keymaps/via/readme.md5
-rw-r--r--keyboards/nasu/keymaps/via/rules.mk1
-rw-r--r--keyboards/nasu/nasu.c16
-rw-r--r--keyboards/nasu/nasu.h48
-rw-r--r--keyboards/nasu/readme.md32
-rw-r--r--keyboards/nasu/rules.mk28
-rw-r--r--keyboards/navi10/rev0/rules.mk5
-rw-r--r--keyboards/navi10/rev2/rules.mk5
-rw-r--r--keyboards/navi10/rev3/rules.mk5
-rw-r--r--keyboards/ncc1701kb/rules.mk5
-rwxr-xr-xkeyboards/nebula12/rules.mk5
-rwxr-xr-xkeyboards/nebula68/rules.mk5
-rwxr-xr-xkeyboards/nebula68b/config.h134
-rwxr-xr-xkeyboards/nebula68b/info.json84
-rwxr-xr-xkeyboards/nebula68b/keymaps/default/keymap.c32
-rwxr-xr-xkeyboards/nebula68b/keymaps/default/readme.md7
-rwxr-xr-xkeyboards/nebula68b/keymaps/via/keymap.c46
-rwxr-xr-xkeyboards/nebula68b/keymaps/via/readme.md7
-rwxr-xr-xkeyboards/nebula68b/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/nebula68b/nebula68b.c111
-rwxr-xr-xkeyboards/nebula68b/nebula68b.h36
-rwxr-xr-xkeyboards/nebula68b/readme.md32
-rwxr-xr-xkeyboards/nebula68b/rules.mk22
-rw-r--r--keyboards/neito/rules.mk5
-rw-r--r--keyboards/nek_type_a/keymaps/default/config.h19
-rw-r--r--keyboards/nek_type_a/keymaps/default/keymap.c12
-rw-r--r--keyboards/nek_type_a/rules.mk8
-rw-r--r--keyboards/nemui/rules.mk5
-rw-r--r--keyboards/neokeys/g67/element_hs/rules.mk5
-rw-r--r--keyboards/neokeys/g67/hotswap/rules.mk5
-rw-r--r--keyboards/neokeys/g67/soldered/rules.mk5
-rwxr-xr-xkeyboards/neopad/rev1/info.json1
-rwxr-xr-xkeyboards/neopad/rev1/rules.mk5
-rw-r--r--keyboards/neson_design/n6/rules.mk5
-rw-r--r--keyboards/newgame40/keymaps/default/config.h5
-rw-r--r--keyboards/newgame40/keymaps/default/keymap.c70
-rw-r--r--keyboards/newgame40/rules.mk8
-rw-r--r--keyboards/nibiria/stream15/rules.mk5
-rw-r--r--keyboards/nightingale_studios/hailey/rules.mk5
-rw-r--r--keyboards/nightly_boards/adellein/rules.mk5
-rw-r--r--keyboards/nightly_boards/alter/rev1/rules.mk5
-rw-r--r--keyboards/nightly_boards/n2/rules.mk5
-rw-r--r--keyboards/nightly_boards/n40_o/rules.mk5
-rw-r--r--keyboards/nightly_boards/n60_s/rules.mk5
-rw-r--r--keyboards/nightly_boards/n87/rules.mk5
-rw-r--r--keyboards/nightly_boards/n9/rules.mk5
-rw-r--r--keyboards/nightly_boards/octopad/rules.mk5
-rw-r--r--keyboards/nightly_boards/ph_arisu/rules.mk5
-rw-r--r--keyboards/nightmare/keymaps/default/config.h19
-rw-r--r--keyboards/nightmare/rules.mk5
-rw-r--r--keyboards/nimrod/rules.mk5
-rw-r--r--keyboards/niu_mini/keymaps/readme.md25
-rw-r--r--keyboards/niu_mini/rules.mk8
-rw-r--r--keyboards/nix_studio/oxalys80/rules.mk5
-rw-r--r--keyboards/nk1/rules.mk5
-rwxr-xr-xkeyboards/nk65/keymaps/default/keymap.c32
-rwxr-xr-xkeyboards/nk65/keymaps/via/keymap.c32
-rwxr-xr-xkeyboards/nk65/rules.mk5
-rwxr-xr-xkeyboards/nk87/rules.mk5
-rw-r--r--keyboards/nknl7en/rules.mk5
-rw-r--r--keyboards/nknl7jp/rules.mk5
-rw-r--r--keyboards/nomu30/rev1/rules.mk5
-rw-r--r--keyboards/nomu30/rev2/rules.mk5
-rw-r--r--keyboards/nopunin10did/jabberwocky/readme.md2
-rw-r--r--keyboards/nopunin10did/jabberwocky/rules.mk5
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/config.h51
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/info.json76
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c60
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h51
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c94
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c94
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk2
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/readme.md28
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/rules.mk20
-rw-r--r--keyboards/nopunin10did/kastenwagen48/config.h51
-rw-r--r--keyboards/nopunin10did/kastenwagen48/info.json64
-rw-r--r--keyboards/nopunin10did/kastenwagen48/kastenwagen48.c60
-rw-r--r--keyboards/nopunin10did/kastenwagen48/kastenwagen48.h51
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c93
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h31
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c67
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md54
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk11
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c93
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk2
-rw-r--r--keyboards/nopunin10did/kastenwagen48/readme.md28
-rw-r--r--keyboards/nopunin10did/kastenwagen48/rules.mk20
-rw-r--r--keyboards/nopunin10did/railroad/readme.md2
-rw-r--r--keyboards/nopunin10did/railroad/rev0/readme.md2
-rw-r--r--keyboards/nopunin10did/railroad/rev0/rules.mk5
-rw-r--r--keyboards/nopunin10did/readme.md14
-rwxr-xr-xkeyboards/novelpad/rules.mk5
-rw-r--r--keyboards/noxary/220/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/220/rules.mk5
-rw-r--r--keyboards/noxary/260/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/260/rules.mk7
-rw-r--r--keyboards/noxary/268/rules.mk5
-rw-r--r--keyboards/noxary/268_2/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/268_2/rules.mk5
-rw-r--r--keyboards/noxary/268_2_rgb/rules.mk5
-rw-r--r--keyboards/noxary/280/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/280/rules.mk5
-rw-r--r--keyboards/noxary/378/rules.mk5
-rw-r--r--keyboards/noxary/valhalla/chconf.h30
-rw-r--r--keyboards/noxary/valhalla/config.h71
-rw-r--r--keyboards/noxary/valhalla/info.json88
-rwxr-xr-xkeyboards/noxary/valhalla/keymaps/default/keymap.c48
-rwxr-xr-xkeyboards/noxary/valhalla/keymaps/via/keymap.c48
-rw-r--r--keyboards/noxary/valhalla/keymaps/via/rules.mk1
-rw-r--r--keyboards/noxary/valhalla/mcuconf.h24
-rw-r--r--keyboards/noxary/valhalla/readme.md32
-rw-r--r--keyboards/noxary/valhalla/rules.mk21
-rw-r--r--keyboards/noxary/valhalla/valhalla.c18
-rw-r--r--keyboards/noxary/valhalla/valhalla.h36
-rw-r--r--keyboards/noxary/vulcan/rules.mk5
-rw-r--r--keyboards/noxary/x268/keymaps/default/config.h19
-rw-r--r--keyboards/noxary/x268/rules.mk5
-rw-r--r--keyboards/np12/rules.mk5
-rw-r--r--keyboards/nullbitsco/nibble/rules.mk3
-rw-r--r--keyboards/nullbitsco/scramble/rules.mk5
-rw-r--r--keyboards/numatreus/rules.mk5
-rw-r--r--keyboards/ocean/addon/addon.c15
-rw-r--r--keyboards/ocean/addon/addon.h35
-rw-r--r--keyboards/ocean/addon/config.h51
-rw-r--r--keyboards/ocean/addon/info.json45
-rw-r--r--keyboards/ocean/addon/keymaps/default/keymap.c50
-rw-r--r--keyboards/ocean/addon/keymaps/via/keymap.c50
-rw-r--r--keyboards/ocean/addon/keymaps/via/rules.mk2
-rw-r--r--keyboards/ocean/addon/readme.md24
-rw-r--r--keyboards/ocean/addon/rules.mk18
-rw-r--r--keyboards/ocean/gin_v2/rules.mk5
-rw-r--r--keyboards/ocean/slamz/rules.mk5
-rw-r--r--keyboards/ocean/stealth/rules.mk5
-rw-r--r--keyboards/ocean/sus/rules.mk5
-rw-r--r--keyboards/ocean/wang_ergo/rules.mk5
-rw-r--r--keyboards/ocean/wang_v2/rules.mk5
-rw-r--r--keyboards/ocean/yuri/config.h50
-rw-r--r--keyboards/ocean/yuri/info.json59
-rw-r--r--keyboards/ocean/yuri/keymaps/default/keymap.c45
-rw-r--r--keyboards/ocean/yuri/keymaps/via/keymap.c45
-rw-r--r--keyboards/ocean/yuri/keymaps/via/rules.mk2
-rw-r--r--keyboards/ocean/yuri/readme.md24
-rw-r--r--keyboards/ocean/yuri/rules.mk18
-rw-r--r--keyboards/ocean/yuri/yuri.c15
-rw-r--r--keyboards/ocean/yuri/yuri.h31
-rw-r--r--keyboards/oddball/rules.mk5
-rw-r--r--keyboards/oddforge/vea/rules.mk2
-rw-r--r--keyboards/odelia/rules.mk5
-rw-r--r--keyboards/ogre/ergo_single/rules.mk5
-rw-r--r--keyboards/ogre/ergo_split/rules.mk5
-rw-r--r--keyboards/ogurec/info.json2
-rw-r--r--keyboards/ogurec/rules.mk5
-rw-r--r--keyboards/ok60/rules.mk4
-rw-r--r--keyboards/omnikey_bh/keymaps/default/keymap.c4
-rw-r--r--keyboards/omnikey_bh/rules.mk5
-rw-r--r--keyboards/omnikeyish/rules.mk5
-rw-r--r--keyboards/onekeyco/dango40/info.json323
-rw-r--r--keyboards/onekeyco/dango40/rules.mk5
-rw-r--r--keyboards/opendeck/32/rev1/rules.mk5
-rw-r--r--keyboards/opus/rules.mk6
-rw-r--r--keyboards/orange75/rules.mk5
-rw-r--r--keyboards/org60/keymaps/default/keymap.c16
-rw-r--r--keyboards/org60/rules.mk5
-rw-r--r--keyboards/ortho5by12/rules.mk5
-rw-r--r--keyboards/orthocode/config.h4
-rw-r--r--keyboards/orthocode/info.json12
-rw-r--r--keyboards/orthocode/keymaps/default/keymap.c143
-rw-r--r--keyboards/orthocode/keymaps/via/keymap.c92
-rw-r--r--keyboards/orthocode/keymaps/via/rules.mk1
-rw-r--r--keyboards/orthocode/orthocode.c45
-rw-r--r--keyboards/orthocode/orthocode.h14
-rw-r--r--keyboards/orthocode/rules.mk6
-rw-r--r--keyboards/orthodox/keymaps/default/keymap.c48
-rw-r--r--keyboards/orthodox/keymaps/drashna/rules.mk2
-rw-r--r--keyboards/orthodox/rules.mk7
-rw-r--r--keyboards/otaku_split/rev0/keymaps/default/config.h19
-rw-r--r--keyboards/otaku_split/rev0/keymaps/default/keymap.c2
-rw-r--r--keyboards/otaku_split/rev0/keymaps/sample/config.h19
-rw-r--r--keyboards/otaku_split/rev0/keymaps/sample/keymap.c12
-rw-r--r--keyboards/otaku_split/rev0/rules.mk5
-rw-r--r--keyboards/otaku_split/rev1/keymaps/default/config.h19
-rw-r--r--keyboards/otaku_split/rev1/keymaps/sample/config.h19
-rw-r--r--keyboards/otaku_split/rev1/keymaps/sample/keymap.c12
-rw-r--r--keyboards/otaku_split/rev1/rules.mk5
-rw-r--r--keyboards/owl8/rules.mk5
-rw-r--r--keyboards/owlab/jelly_epoch/hotswap/rules.mk5
-rw-r--r--keyboards/owlab/jelly_epoch/soldered/rules.mk5
-rw-r--r--keyboards/owlab/spring/config.h68
-rw-r--r--keyboards/owlab/spring/info.json78
-rw-r--r--keyboards/owlab/spring/keymaps/default/keymap.c38
-rw-r--r--keyboards/owlab/spring/keymaps/via/keymap.c54
-rw-r--r--keyboards/owlab/spring/keymaps/via/rules.mk2
-rw-r--r--keyboards/owlab/spring/readme.md21
-rw-r--r--keyboards/owlab/spring/rules.mk18
-rw-r--r--keyboards/owlab/spring/spring.c125
-rw-r--r--keyboards/owlab/spring/spring.h33
-rw-r--r--keyboards/owlab/suit80/ansi/rules.mk5
-rw-r--r--keyboards/owlab/suit80/iso/rules.mk5
-rw-r--r--keyboards/owlab/voice65/hotswap/rules.mk5
-rw-r--r--keyboards/owlab/voice65/soldered/rules.mk5
-rw-r--r--keyboards/pabile/p18/rules.mk5
-rw-r--r--keyboards/pabile/p20/ver1/rules.mk5
-rw-r--r--keyboards/pabile/p20/ver2/rules.mk5
-rw-r--r--keyboards/pabile/p40/rules.mk5
-rw-r--r--keyboards/pabile/p40_ortho/rules.mk5
-rw-r--r--keyboards/pabile/p42/rules.mk5
-rw-r--r--keyboards/packrat/rules.mk5
-rw-r--r--keyboards/palette1202/rules.mk5
-rw-r--r--keyboards/panc40/rules.mk5
-rw-r--r--keyboards/panc60/keymaps/default/config.h19
-rw-r--r--keyboards/panc60/rules.mk4
-rw-r--r--keyboards/pandora/rules.mk5
-rw-r--r--keyboards/paprikman/albacore/albacore.c30
-rw-r--r--keyboards/paprikman/albacore/albacore.h36
-rw-r--r--keyboards/paprikman/albacore/config.h80
-rw-r--r--keyboards/paprikman/albacore/info.json19
-rw-r--r--keyboards/paprikman/albacore/keymaps/default/keymap.c27
-rw-r--r--keyboards/paprikman/albacore/keymaps/pulp/keymap.c75
-rw-r--r--keyboards/paprikman/albacore/keymaps/pulp/rules.mk1
-rw-r--r--keyboards/paprikman/albacore/keymaps/via/keymap.c35
-rw-r--r--keyboards/paprikman/albacore/keymaps/via/rules.mk1
-rw-r--r--keyboards/paprikman/albacore/readme.md26
-rw-r--r--keyboards/paprikman/albacore/rules.mk26
-rw-r--r--keyboards/pdxkbc/keymaps/default/config.h19
-rw-r--r--keyboards/pdxkbc/rules.mk5
-rw-r--r--keyboards/pearl/rules.mk4
-rw-r--r--keyboards/pearlboards/atlas/atlas.c31
-rw-r--r--keyboards/pearlboards/atlas/atlas.h38
-rw-r--r--keyboards/pearlboards/atlas/config.h100
-rw-r--r--keyboards/pearlboards/atlas/info.json84
-rw-r--r--keyboards/pearlboards/atlas/keymaps/default/keymap.c34
-rw-r--r--keyboards/pearlboards/atlas/keymaps/via/keymap.c48
-rw-r--r--keyboards/pearlboards/atlas/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/atlas/readme.md22
-rw-r--r--keyboards/pearlboards/atlas/rules.mk23
-rw-r--r--keyboards/pearlboards/pandora/config.h20
-rw-r--r--keyboards/pearlboards/pandora/keymaps/default/keymap.c51
-rw-r--r--keyboards/pearlboards/pandora/keymaps/via/keymap.c73
-rw-r--r--keyboards/pearlboards/pandora/pandora.c35
-rw-r--r--keyboards/pearlboards/pandora/rules.mk7
-rw-r--r--keyboards/pearlboards/pearl/config.h94
-rw-r--r--keyboards/pearlboards/pearl/info.json58
-rw-r--r--keyboards/pearlboards/pearl/keymaps/default/keymap.c32
-rw-r--r--keyboards/pearlboards/pearl/keymaps/via/keymap.c45
-rw-r--r--keyboards/pearlboards/pearl/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/pearl/pearl.c17
-rw-r--r--keyboards/pearlboards/pearl/pearl.h36
-rw-r--r--keyboards/pearlboards/pearl/readme.md22
-rw-r--r--keyboards/pearlboards/pearl/rules.mk22
-rw-r--r--keyboards/pearlboards/zeus/config.h104
-rw-r--r--keyboards/pearlboards/zeus/info.json106
-rw-r--r--keyboards/pearlboards/zeus/keymaps/default/keymap.c40
-rw-r--r--keyboards/pearlboards/zeus/keymaps/via/keymap.c60
-rw-r--r--keyboards/pearlboards/zeus/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/zeus/readme.md22
-rw-r--r--keyboards/pearlboards/zeus/rules.mk23
-rw-r--r--keyboards/pearlboards/zeus/zeus.c34
-rw-r--r--keyboards/pearlboards/zeus/zeus.h41
-rw-r--r--keyboards/pearlboards/zeuspad/config.h90
-rw-r--r--keyboards/pearlboards/zeuspad/info.json40
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/default/keymap.c36
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/via/keymap.c52
-rw-r--r--keyboards/pearlboards/zeuspad/keymaps/via/rules.mk1
-rw-r--r--keyboards/pearlboards/zeuspad/readme.md22
-rw-r--r--keyboards/pearlboards/zeuspad/rules.mk23
-rw-r--r--keyboards/pearlboards/zeuspad/zeuspad.c75
-rw-r--r--keyboards/pearlboards/zeuspad/zeuspad.h40
-rw-r--r--keyboards/peej/lumberjack/rules.mk5
-rw-r--r--keyboards/peej/rosaline/config.h41
-rw-r--r--keyboards/peej/rosaline/info.json126
-rw-r--r--keyboards/peej/rosaline/keymaps/default/keymap.c64
-rw-r--r--keyboards/peej/rosaline/keymaps/ortho/keymap.c64
-rw-r--r--keyboards/peej/rosaline/keymaps/via-ortho/keymap.c46
-rw-r--r--keyboards/peej/rosaline/keymaps/via-ortho/rules.mk1
-rw-r--r--keyboards/peej/rosaline/keymaps/via/keymap.c46
-rw-r--r--keyboards/peej/rosaline/keymaps/via/rules.mk1
-rw-r--r--keyboards/peej/rosaline/readme.md18
-rw-r--r--keyboards/peej/rosaline/rosaline.c29
-rw-r--r--keyboards/peej/rosaline/rosaline.h58
-rw-r--r--keyboards/peej/rosaline/rules.mk18
-rw-r--r--keyboards/peej/tripel/rules.mk5
-rw-r--r--keyboards/peranekofactory/tone/rev1/rules.mk5
-rw-r--r--keyboards/peranekofactory/tone/rev2/rules.mk5
-rw-r--r--keyboards/percent/booster/rules.mk7
-rw-r--r--keyboards/percent/canoe/keymaps/default/keymap.c16
-rw-r--r--keyboards/percent/canoe/rules.mk4
-rw-r--r--keyboards/percent/canoe_gen2/rules.mk5
-rw-r--r--keyboards/percent/skog/rules.mk7
-rw-r--r--keyboards/percent/skog_lite/keymaps/default/keymap.c14
-rw-r--r--keyboards/phantom/rules.mk5
-rw-r--r--keyboards/phase_studio/titan65/hotswap/rules.mk2
-rw-r--r--keyboards/phase_studio/titan65/soldered/rules.mk2
-rw-r--r--keyboards/phoenix/rules.mk3
-rw-r--r--keyboards/phrygian/ph100/rules.mk5
-rw-r--r--keyboards/pico/rules.mk5
-rw-r--r--keyboards/picolab/frusta_fundamental/rules.mk5
-rw-r--r--keyboards/pimentoso/paddino02/rev1/rules.mk5
-rwxr-xr-xkeyboards/pimentoso/paddino02/rev2/left/rules.mk5
-rwxr-xr-xkeyboards/pimentoso/paddino02/rev2/right/rules.mk5
-rw-r--r--keyboards/pimentoso/touhoupad/rules.mk5
-rw-r--r--keyboards/pinky/rules.mk5
-rw-r--r--keyboards/pisces/rules.mk5
-rw-r--r--keyboards/pistachio/rev1/rules.mk5
-rw-r--r--keyboards/pistachio/rev2/rules.mk5
-rw-r--r--keyboards/pistachio_mp/keymaps/via/keymap.c79
-rw-r--r--keyboards/pistachio_mp/rules.mk5
-rw-r--r--keyboards/pistachio_pro/keymaps/via/keymap.c72
-rw-r--r--keyboards/pistachio_pro/rules.mk5
-rw-r--r--keyboards/pizzakeyboards/pizza65/rules.mk5
-rw-r--r--keyboards/pkb65/rules.mk5
-rw-r--r--keyboards/planck/ez/config.h13
-rw-r--r--keyboards/planck/ez/ez.c12
-rw-r--r--keyboards/planck/ez/rules.mk15
-rw-r--r--keyboards/planck/keymaps/ajp10304/readme.md21
-rw-r--r--keyboards/planck/keymaps/ariccb/.vscode/settings.json5
-rw-r--r--keyboards/planck/keymaps/ariccb/config.h56
-rw-r--r--keyboards/planck/keymaps/ariccb/features/caps_word.c122
-rw-r--r--keyboards/planck/keymaps/ariccb/features/caps_word.h101
-rw-r--r--keyboards/planck/keymaps/ariccb/features/select_word.c110
-rw-r--r--keyboards/planck/keymaps/ariccb/features/select_word.h37
-rw-r--r--keyboards/planck/keymaps/ariccb/keymap.c664
-rw-r--r--keyboards/planck/keymaps/ariccb/readme.md78
-rw-r--r--keyboards/planck/keymaps/ariccb/rules.mk10
-rw-r--r--keyboards/planck/keymaps/default/keymap.c6
-rw-r--r--keyboards/planck/keymaps/inkwell/config.h50
-rw-r--r--keyboards/planck/keymaps/inkwell/keymap.c182
-rw-r--r--keyboards/planck/keymaps/inkwell/readme.md19
-rw-r--r--keyboards/planck/keymaps/inkwell/rules.mk3
-rw-r--r--keyboards/planck/keymaps/jimmysjolund/keymap.c34
-rw-r--r--keyboards/planck/keymaps/masoncowen/keymap.c59
-rw-r--r--keyboards/planck/keymaps/masoncowen/readme.md46
-rw-r--r--keyboards/planck/keymaps/masoncowen/rules.mk1
-rw-r--r--keyboards/planck/keymaps/mnil/keymap.c6
-rw-r--r--keyboards/planck/keymaps/oryx/keymap.c2
-rw-r--r--keyboards/planck/keymaps/oryx/rules.mk2
-rw-r--r--keyboards/planck/keymaps/readme.md23
-rw-r--r--keyboards/planck/light/rules.mk8
-rw-r--r--keyboards/planck/planck.c20
-rw-r--r--keyboards/planck/rev1/rules.mk8
-rw-r--r--keyboards/planck/rev2/rules.mk8
-rw-r--r--keyboards/planck/rev3/rules.mk8
-rw-r--r--keyboards/planck/rev4/rules.mk8
-rw-r--r--keyboards/planck/rev5/rules.mk8
-rw-r--r--keyboards/planck/rev6/rules.mk8
-rw-r--r--keyboards/planck/rev6_drop/rules.mk5
-rw-r--r--keyboards/planck/thk/rules.mk5
-rw-r--r--keyboards/playkbtw/ca66/rules.mk5
-rw-r--r--keyboards/playkbtw/helen80/rules.mk5
-rw-r--r--keyboards/playkbtw/pk60/keymaps/default/keymap.c24
-rw-r--r--keyboards/playkbtw/pk60/rules.mk5
-rw-r--r--keyboards/playkbtw/pk64rgb/rules.mk5
-rw-r--r--keyboards/plexus75/rules.mk4
-rw-r--r--keyboards/ploopyco/mouse/keymaps/uqs/keymap.c36
-rw-r--r--keyboards/ploopyco/mouse/keymaps/uqs/rules.mk1
-rw-r--r--keyboards/ploopyco/mouse/mouse.c25
-rw-r--r--keyboards/ploopyco/mouse/mouse.h13
-rw-r--r--keyboards/ploopyco/mouse/readme.md4
-rw-r--r--keyboards/ploopyco/mouse/rules.mk8
-rw-r--r--keyboards/ploopyco/trackball/config.h1
-rw-r--r--keyboards/ploopyco/trackball/readme.md2
-rw-r--r--keyboards/ploopyco/trackball/rules.mk8
-rw-r--r--keyboards/ploopyco/trackball/trackball.c30
-rw-r--r--keyboards/ploopyco/trackball/trackball.h5
-rw-r--r--keyboards/ploopyco/trackball_mini/config.h2
-rw-r--r--keyboards/ploopyco/trackball_mini/readme.md4
-rw-r--r--keyboards/ploopyco/trackball_mini/rules.mk10
-rw-r--r--keyboards/ploopyco/trackball_mini/trackball_mini.c58
-rw-r--r--keyboards/ploopyco/trackball_mini/trackball_mini.h13
-rw-r--r--keyboards/ploopyco/trackball_nano/config.h2
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c3
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c3
-rw-r--r--keyboards/ploopyco/trackball_nano/rules.mk5
-rw-r--r--keyboards/ploopyco/trackball_nano/trackball_nano.c2
-rw-r--r--keyboards/ploopyco/trackball_nano/trackball_nano.h2
-rw-r--r--keyboards/pluckey/rules.mk5
-rw-r--r--keyboards/plume/plume65/rules.mk5
-rw-r--r--keyboards/plut0nium/0x3e/keymaps/default/keymap.c2
-rw-r--r--keyboards/plut0nium/0x3e/rules.mk8
-rw-r--r--keyboards/plx/rules.mk5
-rw-r--r--keyboards/pohjolaworks/louhi/rules.mk5
-rw-r--r--keyboards/poker87c/rules.mk5
-rw-r--r--keyboards/poker87d/rules.mk5
-rw-r--r--keyboards/polilla/rev1/rules.mk5
-rw-r--r--keyboards/polycarbdiet/s20/rules.mk8
-rw-r--r--keyboards/pom_keyboards/tnln95/rules.mk5
-rw-r--r--keyboards/portal_66/hotswap/rules.mk5
-rw-r--r--keyboards/portal_66/soldered/rules.mk5
-rw-r--r--keyboards/pos78/rules.mk5
-rw-r--r--keyboards/preonic/keymaps/uqs/keymap.c117
-rw-r--r--keyboards/preonic/keymaps/uqs/rules.mk14
-rw-r--r--keyboards/preonic/preonic.c20
-rw-r--r--keyboards/preonic/rev1/rules.mk8
-rw-r--r--keyboards/preonic/rev2/rules.mk8
-rw-r--r--keyboards/preonic/rev3/rules.mk9
-rw-r--r--keyboards/preonic/rev3_drop/rules.mk5
-rw-r--r--keyboards/primekb/meridian/ktr1010/config.h51
-rw-r--r--keyboards/primekb/meridian/ktr1010/rules.mk1
-rw-r--r--keyboards/primekb/meridian/readme.md24
-rw-r--r--keyboards/primekb/meridian/rules.mk6
-rw-r--r--keyboards/primekb/meridian/ws2812/config.h48
-rw-r--r--keyboards/primekb/meridian/ws2812/rules.mk1
-rw-r--r--keyboards/primekb/prime_e/rules.mk5
-rw-r--r--keyboards/primekb/prime_l/rules.mk5
-rw-r--r--keyboards/primekb/prime_m/rules.mk5
-rw-r--r--keyboards/primekb/prime_o/keymaps/default/config.h19
-rw-r--r--keyboards/primekb/prime_o/rules.mk5
-rw-r--r--keyboards/primekb/prime_r/keymaps/default/config.h19
-rw-r--r--keyboards/primekb/prime_r/keymaps/default/keymap.c20
-rw-r--r--keyboards/primekb/prime_r/rules.mk5
-rw-r--r--keyboards/program_yoink/rules.mk5
-rw-r--r--keyboards/projectcain/vault35/rules.mk5
-rw-r--r--keyboards/projectcain/vault45/rules.mk5
-rw-r--r--keyboards/projectkb/alice/rev1/rules.mk5
-rw-r--r--keyboards/projectkb/alice/rev2/rules.mk5
-rw-r--r--keyboards/projectkb/signature65/chconf.h37
-rw-r--r--keyboards/projectkb/signature65/config.h46
-rw-r--r--keyboards/projectkb/signature65/halconf.h37
-rw-r--r--keyboards/projectkb/signature65/info.json11
-rw-r--r--keyboards/projectkb/signature65/keymaps/default/keymap.c38
-rw-r--r--keyboards/projectkb/signature65/keymaps/via/keymap.c54
-rw-r--r--keyboards/projectkb/signature65/keymaps/via/rules.mk2
-rw-r--r--keyboards/projectkb/signature65/mcuconf.h34
-rw-r--r--keyboards/projectkb/signature65/readme.md20
-rw-r--r--keyboards/projectkb/signature65/rules.mk22
-rw-r--r--keyboards/projectkb/signature65/signature65.c17
-rw-r--r--keyboards/projectkb/signature65/signature65.h35
-rw-r--r--keyboards/projectkb/signature87/rules.mk5
-rw-r--r--keyboards/prototypist/j01/rules.mk5
-rw-r--r--keyboards/psuieee/pluto12/config.h138
-rw-r--r--keyboards/psuieee/pluto12/info.json23
-rw-r--r--keyboards/psuieee/pluto12/keymaps/default/keymap.c23
-rw-r--r--keyboards/psuieee/pluto12/keymaps/default/readme.md1
-rw-r--r--keyboards/psuieee/pluto12/pluto12.c4
-rw-r--r--keyboards/psuieee/pluto12/pluto12.h24
-rw-r--r--keyboards/psuieee/pluto12/readme.md27
-rw-r--r--keyboards/psuieee/pluto12/rules.mk18
-rw-r--r--keyboards/pteron36/keymaps/via/keymap.c2
-rw-r--r--keyboards/pteron36/pteron36.c4
-rw-r--r--keyboards/pteron36/rules.mk7
-rw-r--r--keyboards/puck/rules.mk8
-rw-r--r--keyboards/punk75/rules.mk5
-rw-r--r--keyboards/pursuit40/rules.mk5
-rw-r--r--keyboards/q4z/rules.mk5
-rw-r--r--keyboards/qaz/rules.mk5
-rw-r--r--keyboards/quad_h/lb75/rules.mk5
-rw-r--r--keyboards/quantrik/kyuu/keymaps/default/config.h19
-rw-r--r--keyboards/quantrik/kyuu/rules.mk5
-rw-r--r--keyboards/quark/keymaps/ajp10304/keymap.c40
-rw-r--r--keyboards/quark/keymaps/ajp10304/readme.md21
-rw-r--r--keyboards/quark/rules.mk5
-rw-r--r--keyboards/qvex/lynepad/keymaps/default/keymap.c2
-rw-r--r--keyboards/qvex/lynepad/rules.mk5
-rw-r--r--keyboards/qwertyydox/rules.mk7
-rw-r--r--keyboards/rabbit/rabbit68/keymaps/default/config.h19
-rw-r--r--keyboards/rabbit/rabbit68/rules.mk5
-rw-r--r--keyboards/rabbit_capture_plan/rules.mk5
-rw-r--r--keyboards/rainkeeb/rules.mk5
-rw-r--r--keyboards/ramonimbao/aelith/rules.mk5
-rw-r--r--keyboards/ramonimbao/chevron/keymaps/via/keymap.c2
-rw-r--r--keyboards/ramonimbao/chevron/rules.mk5
-rw-r--r--keyboards/ramonimbao/herringbone/pro/config.h2
-rw-r--r--keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c2
-rw-r--r--keyboards/ramonimbao/herringbone/pro/rules.mk5
-rw-r--r--keyboards/ramonimbao/herringbone/v1/rules.mk5
-rw-r--r--keyboards/ramonimbao/mona/v1/rules.mk5
-rw-r--r--keyboards/ramonimbao/mona/v1_1/rules.mk5
-rw-r--r--keyboards/ramonimbao/mona/v32a/config.h62
-rw-r--r--keyboards/ramonimbao/mona/v32a/info.json503
-rw-r--r--keyboards/ramonimbao/mona/v32a/keymaps/default/keymap.c34
-rw-r--r--keyboards/ramonimbao/mona/v32a/keymaps/iso/keymap.c34
-rw-r--r--keyboards/ramonimbao/mona/v32a/keymaps/via/keymap.c48
-rw-r--r--keyboards/ramonimbao/mona/v32a/keymaps/via/rules.mk1
-rw-r--r--keyboards/ramonimbao/mona/v32a/readme.md20
-rw-r--r--keyboards/ramonimbao/mona/v32a/rules.mk22
-rw-r--r--keyboards/ramonimbao/mona/v32a/v32a.c17
-rw-r--r--keyboards/ramonimbao/mona/v32a/v32a.h113
-rw-r--r--keyboards/ramonimbao/squishy65/rules.mk5
-rw-r--r--keyboards/ramonimbao/squishyfrl/info.json2
-rw-r--r--keyboards/ramonimbao/squishyfrl/rules.mk5
-rw-r--r--keyboards/ramonimbao/squishytkl/rules.mk5
-rw-r--r--keyboards/ramonimbao/tkl_ff/rules.mk5
-rw-r--r--keyboards/ramonimbao/wete/readme.md14
-rw-r--r--keyboards/ramonimbao/wete/rules.mk24
-rw-r--r--keyboards/ramonimbao/wete/v1/chconf.h (renamed from keyboards/ramonimbao/wete/chconf.h)0
-rw-r--r--keyboards/ramonimbao/wete/v1/config.h (renamed from keyboards/ramonimbao/wete/config.h)0
-rw-r--r--keyboards/ramonimbao/wete/v1/halconf.h (renamed from keyboards/ramonimbao/wete/halconf.h)0
-rw-r--r--keyboards/ramonimbao/wete/v1/info.json (renamed from keyboards/ramonimbao/wete/info.json)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/default/keymap.c (renamed from keyboards/ramonimbao/wete/keymaps/default/keymap.c)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/iso/keymap.c (renamed from keyboards/ramonimbao/wete/keymaps/iso/keymap.c)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c (renamed from keyboards/ramonimbao/wete/keymaps/jis/keymap.c)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/via/config.h (renamed from keyboards/ramonimbao/wete/keymaps/via/config.h)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/via/keymap.c (renamed from keyboards/ramonimbao/wete/keymaps/via/keymap.c)0
-rw-r--r--keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk (renamed from keyboards/ramonimbao/wete/keymaps/via/rules.mk)0
-rw-r--r--keyboards/ramonimbao/wete/v1/mcuconf.h (renamed from keyboards/ramonimbao/wete/mcuconf.h)0
-rw-r--r--keyboards/ramonimbao/wete/v1/readme.md14
-rw-r--r--keyboards/ramonimbao/wete/v1/rules.mk22
-rw-r--r--keyboards/ramonimbao/wete/v1/v1.c19
-rw-r--r--keyboards/ramonimbao/wete/v1/v1.h (renamed from keyboards/ramonimbao/wete/wete.h)0
-rw-r--r--keyboards/ramonimbao/wete/v2/config.h163
-rw-r--r--keyboards/ramonimbao/wete/v2/info.json350
-rw-r--r--keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c97
-rw-r--r--keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c97
-rw-r--r--keyboards/ramonimbao/wete/v2/keymaps/via/config.h20
-rw-r--r--keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c135
-rw-r--r--keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk1
-rw-r--r--keyboards/ramonimbao/wete/v2/readme.md26
-rw-r--r--keyboards/ramonimbao/wete/v2/rules.mk19
-rw-r--r--keyboards/ramonimbao/wete/v2/v2.c17
-rw-r--r--keyboards/ramonimbao/wete/v2/v2.h110
-rw-r--r--keyboards/ramonimbao/wete/wete.c19
-rw-r--r--keyboards/rart/rart45/rules.mk5
-rw-r--r--keyboards/rart/rart4x4/rules.mk5
-rw-r--r--keyboards/rart/rart67/rules.mk5
-rw-r--r--keyboards/rart/rart67m/keymaps/default/keymap.c148
-rw-r--r--keyboards/rart/rart67m/keymaps/via/rules.mk3
-rw-r--r--keyboards/rart/rart67m/rart67m.c122
-rw-r--r--keyboards/rart/rart67m/rules.mk5
-rw-r--r--keyboards/rart/rart75/rules.mk5
-rw-r--r--keyboards/rart/rart75m/rules.mk5
-rw-r--r--keyboards/rart/rartand/rules.mk5
-rw-r--r--keyboards/rart/rartland/rules.mk5
-rw-r--r--keyboards/rart/rartlice/rules.mk6
-rw-r--r--keyboards/rart/rartlite/rules.mk5
-rw-r--r--keyboards/rart/rartpad/rules.mk5
-rw-r--r--keyboards/readme.md33
-rw-r--r--keyboards/rect44/rules.mk5
-rw-r--r--keyboards/redox/readme.md31
-rw-r--r--keyboards/redox/rev1/proton_c/config.h66
-rw-r--r--keyboards/redox/rev1/proton_c/halconf.h8
-rw-r--r--keyboards/redox/rev1/proton_c/mcuconf.h9
-rw-r--r--keyboards/redox/rev1/proton_c/proton_c.c4
-rw-r--r--keyboards/redox/rev1/proton_c/proton_c.h6
-rw-r--r--keyboards/redox/rev1/proton_c/rules.mk7
-rw-r--r--keyboards/redox/rev1/rev1.h7
-rw-r--r--keyboards/redox/rules.mk5
-rw-r--r--keyboards/redox_media/rules.mk5
-rw-r--r--keyboards/redox_w/keymaps/dvorak/keymap.c128
-rw-r--r--keyboards/redox_w/keymaps/dvorak/readme.md38
-rw-r--r--keyboards/redox_w/redox_w.c13
-rw-r--r--keyboards/redox_w/redox_w.h27
-rw-r--r--keyboards/redox_w/rules.mk6
-rw-r--r--keyboards/redscarf_i/rules.mk2
-rwxr-xr-xkeyboards/redscarf_iiplus/verb/rules.mk5
-rwxr-xr-xkeyboards/redscarf_iiplus/verc/rules.mk5
-rw-r--r--keyboards/redscarf_iiplus/verd/rules.mk5
-rw-r--r--keyboards/retro_75/rules.mk5
-rw-r--r--keyboards/reversestudio/decadepad/rules.mk8
-rw-r--r--keyboards/reviung33/rules.mk5
-rwxr-xr-xkeyboards/reviung34/rules.mk5
-rw-r--r--keyboards/reviung39/rules.mk5
-rw-r--r--keyboards/reviung41/rules.mk5
-rw-r--r--keyboards/reviung5/rules.mk5
-rw-r--r--keyboards/reviung53/config.h138
-rw-r--r--keyboards/reviung53/info.json68
-rw-r--r--keyboards/reviung53/keymaps/default/keymap.c55
-rw-r--r--keyboards/reviung53/keymaps/default/readme.md1
-rw-r--r--keyboards/reviung53/keymaps/via/keymap.c55
-rw-r--r--keyboards/reviung53/keymaps/via/readme.md3
-rw-r--r--keyboards/reviung53/keymaps/via/rules.mk1
-rw-r--r--keyboards/reviung53/readme.md27
-rw-r--r--keyboards/reviung53/reviung53.c4
-rw-r--r--keyboards/reviung53/reviung53.h30
-rw-r--r--keyboards/reviung53/rules.mk19
-rw-r--r--keyboards/reviung61/rules.mk5
-rw-r--r--keyboards/rgbkb/mun/rules.mk7
-rw-r--r--keyboards/rgbkb/pan/rules.mk5
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/config.h25
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/keymap.c64
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/readme.md2
-rw-r--r--keyboards/rgbkb/sol/rev1/rules.mk2
-rw-r--r--keyboards/rgbkb/sol/rev2/rules.mk2
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/default/keymap.c24
-rw-r--r--keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c26
-rw-r--r--keyboards/rgbkb/zen/rules.mk7
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c44
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk7
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default/config.h25
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default/keymap.c48
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default/readme.md2
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default/rules.mk7
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default_oled/config.h25
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c48
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk7
-rw-r--r--keyboards/rgbkb/zygomorph/rules.mk5
-rw-r--r--keyboards/ristretto/rules.mk5
-rw-r--r--keyboards/rocketboard_16/rules.mk5
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/colemak/config.h24
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/default/config.h19
-rw-r--r--keyboards/rominronin/katana60/rev1/rules.mk5
-rw-r--r--keyboards/rominronin/katana60/rev2/keymaps/default/config.h19
-rw-r--r--keyboards/rominronin/katana60/rev2/rules.mk5
-rw-r--r--keyboards/roseslite/rules.mk5
-rw-r--r--keyboards/rotor/rules.mk5
-rw-r--r--keyboards/rotr/rules.mk5
-rw-r--r--keyboards/rpiguy9907/southpaw66/rules.mk5
-rw-r--r--keyboards/rubi/rules.mk5
-rw-r--r--keyboards/runes/vaengr/config.h12
-rw-r--r--keyboards/runes/vaengr/keymaps/default/keymap.c24
-rw-r--r--keyboards/runes/vaengr/keymaps/via/keymap.c24
-rw-r--r--keyboards/runes/vaengr/rules.mk5
-rw-r--r--keyboards/runes/vaengr/vaengr.h4
-rw-r--r--keyboards/runner3680/5x6/keymaps/default/keymap.c2
-rw-r--r--keyboards/runner3680/5x6_5x8/.noci0
-rw-r--r--keyboards/runner3680/5x6_5x8/5x6_5x8.c52
-rw-r--r--keyboards/runner3680/5x6_5x8/5x6_5x8.h41
-rw-r--r--keyboards/runner3680/5x6_5x8/config.h84
-rw-r--r--keyboards/runner3680/5x6_5x8/info.json85
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/default/config.h25
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c71
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h26
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c60
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk3
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/jis/config.h25
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c72
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/via/config.h25
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c71
-rw-r--r--keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk1
-rw-r--r--keyboards/runner3680/5x6_5x8/rules.mk1
-rw-r--r--keyboards/runner3680/5x7/keymaps/default/keymap.c24
-rw-r--r--keyboards/runner3680/rules.mk5
-rw-r--r--keyboards/runner3680/runner3680.h4
-rw-r--r--keyboards/ryanbaekr/rb86/rules.mk5
-rwxr-xr-xkeyboards/ryloo_studio/m0110/rules.mk5
-rw-r--r--keyboards/sam/s80/rules.mk5
-rw-r--r--keyboards/sam/sg81m/rules.mk5
-rw-r--r--keyboards/sanctified/dystopia/rules.mk5
-rw-r--r--keyboards/sandwich/keeb68/config.h152
-rw-r--r--keyboards/sandwich/keeb68/keeb68.c17
-rw-r--r--keyboards/sandwich/keeb68/keeb68.h42
-rw-r--r--keyboards/sandwich/keeb68/keymaps/default/keymap.c42
-rw-r--r--keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c42
-rw-r--r--keyboards/sandwich/keeb68/keymaps/grv_esc/readme.md1
-rw-r--r--keyboards/sandwich/keeb68/readme.md29
-rw-r--r--keyboards/sandwich/keeb68/rules.mk18
-rw-r--r--keyboards/satt/vision/rules.mk3
-rw-r--r--keyboards/sauce/mild/rules.mk5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/config.h1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/info.json545
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/readme.md3
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c16
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/keymap.c38
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c36
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/keymap.c37
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/readme.md6
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c35
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c39
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c46
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md2
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/rules.mk5
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/solder.h187
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/config.h1
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/info.json504
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c22
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md4
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c38
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c22
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md5
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c22
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md6
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c2
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c44
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md6
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/rules.mk5
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/solder.h101
-rw-r--r--keyboards/sawnsprojects/satxri6key/config.h2
-rw-r--r--keyboards/sawnsprojects/satxri6key/rules.mk5
-rw-r--r--keyboards/scarletbandana/keymaps/default/config.h19
-rw-r--r--keyboards/scarletbandana/keymaps/default/keymap.c32
-rw-r--r--keyboards/scarletbandana/rules.mk7
-rw-r--r--keyboards/scatter42/rules.mk5
-rw-r--r--keyboards/sck/gtm/rules.mk5
-rw-r--r--keyboards/sck/m0116b/keymaps/m0118/config.h19
-rw-r--r--keyboards/sck/m0116b/rules.mk5
-rw-r--r--keyboards/sck/neiso/keymaps/default/config.h19
-rw-r--r--keyboards/sck/neiso/rules.mk5
-rw-r--r--keyboards/sck/osa/keymaps/all/config.h19
-rw-r--r--keyboards/sck/osa/keymaps/default/config.h19
-rw-r--r--keyboards/sck/osa/keymaps/ocm/config.h19
-rw-r--r--keyboards/sck/osa/keymaps/splitbs/config.h19
-rw-r--r--keyboards/sck/osa/keymaps/splitrs/config.h19
-rw-r--r--keyboards/sck/osa/rules.mk5
-rw-r--r--keyboards/scythe/keymaps/default/config.h19
-rw-r--r--keyboards/scythe/keymaps/forties/config.h19
-rw-r--r--keyboards/scythe/rules.mk5
-rw-r--r--keyboards/seigaiha/rules.mk5
-rw-r--r--keyboards/sekigon/grs_70ec/rules.mk5
-rw-r--r--keyboards/sendyyeah/75pixels/rules.mk5
-rw-r--r--keyboards/sendyyeah/bevi/keymaps/default/keymap.c20
-rw-r--r--keyboards/sendyyeah/bevi/keymaps/via/keymap.c20
-rw-r--r--keyboards/sendyyeah/bevi/rules.mk5
-rw-r--r--keyboards/sendyyeah/pix/config.h26
-rw-r--r--keyboards/sendyyeah/pix/keymaps/default/glcdfont.c24
-rw-r--r--keyboards/sendyyeah/pix/keymaps/default/keymap.c63
-rw-r--r--keyboards/sendyyeah/pix/keymaps/via/keymap.c63
-rw-r--r--keyboards/sendyyeah/pix/rules.mk7
-rw-r--r--keyboards/senselessclay/ck60/ck60.c30
-rw-r--r--keyboards/senselessclay/ck60/ck60.h24
-rw-r--r--keyboards/senselessclay/ck60/config.h111
-rw-r--r--keyboards/senselessclay/ck60/info.json88
-rw-r--r--keyboards/senselessclay/ck60/keymaps/default/keymap.c54
-rw-r--r--keyboards/senselessclay/ck60/keymaps/via/keymap.c54
-rw-r--r--keyboards/senselessclay/ck60/rules.mk16
-rw-r--r--keyboards/senselessclay/ck65/ck65.h24
-rw-r--r--keyboards/senselessclay/ck65/info.json95
-rw-r--r--keyboards/senselessclay/ck65/keymaps/default/keymap.c54
-rw-r--r--keyboards/senselessclay/ck65/keymaps/via/keymap.c54
-rw-r--r--keyboards/senselessclay/ck65/rules.mk9
-rw-r--r--keyboards/senselessclay/gos65/config.h123
-rw-r--r--keyboards/senselessclay/gos65/gos65.c26
-rw-r--r--keyboards/senselessclay/gos65/gos65.h35
-rw-r--r--keyboards/senselessclay/gos65/info.json10
-rw-r--r--keyboards/senselessclay/gos65/keymaps/default/keymap.c45
-rw-r--r--keyboards/senselessclay/gos65/keymaps/via/keymap.c51
-rw-r--r--keyboards/senselessclay/gos65/keymaps/via/rules.mk1
-rw-r--r--keyboards/senselessclay/gos65/readme.md18
-rw-r--r--keyboards/senselessclay/gos65/rules.mk21
-rw-r--r--keyboards/senselessclay/had60/rules.mk7
-rw-r--r--keyboards/sentraq/number_pad/keymaps/default/keymap.c16
-rw-r--r--keyboards/sentraq/number_pad/rules.mk5
-rw-r--r--keyboards/sentraq/s60_x/default/rules.mk3
-rw-r--r--keyboards/sentraq/s60_x/keymaps/default/keymap.c20
-rw-r--r--keyboards/sentraq/s60_x/keymaps/default_rgb/keymap.c20
-rw-r--r--keyboards/sentraq/s60_x/keymaps/iso_rgb/keymap.c16
-rw-r--r--keyboards/sentraq/s60_x/rgb/rules.mk5
-rw-r--r--keyboards/sentraq/s65_plus/keymaps/default/keymap.c20
-rw-r--r--keyboards/sentraq/s65_plus/keymaps/iso/keymap.c20
-rw-r--r--keyboards/sentraq/s65_plus/rules.mk4
-rw-r--r--keyboards/sentraq/s65_x/keymaps/default/keymap.c40
-rw-r--r--keyboards/sentraq/s65_x/keymaps/iso/keymap.c40
-rw-r--r--keyboards/sentraq/s65_x/rules.mk4
-rw-r--r--keyboards/sergiopoverony/creator_pro/rules.mk5
-rw-r--r--keyboards/sets3n/kk980/rules.mk7
-rw-r--r--keyboards/setta21/rules.mk4
-rw-r--r--keyboards/shambles/rules.mk5
-rw-r--r--keyboards/shapeshifter4060/config.h71
-rw-r--r--keyboards/shapeshifter4060/info.json62
-rw-r--r--keyboards/shapeshifter4060/keymaps/debug/keymap.c28
-rw-r--r--keyboards/shapeshifter4060/keymaps/debug/readme.md85
-rw-r--r--keyboards/shapeshifter4060/keymaps/default/keymap.c91
-rw-r--r--keyboards/shapeshifter4060/keymaps/default/readme.md79
-rw-r--r--keyboards/shapeshifter4060/keymaps/vosechu/keymap.c53
-rw-r--r--keyboards/shapeshifter4060/keymaps/vosechu/readme.md82
-rw-r--r--keyboards/shapeshifter4060/readme.md37
-rw-r--r--keyboards/shapeshifter4060/rules.mk17
-rw-r--r--keyboards/shapeshifter4060/shapeshifter4060.c18
-rw-r--r--keyboards/shapeshifter4060/shapeshifter4060.h34
-rw-r--r--keyboards/shiro/keymaps/check/config.h19
-rw-r--r--keyboards/shiro/keymaps/default/config.h19
-rw-r--r--keyboards/shiro/keymaps/default_mac/config.h19
-rw-r--r--keyboards/shiro/rules.mk5
-rw-r--r--keyboards/shk9/rules.mk5
-rw-r--r--keyboards/sidderskb/majbritt/rev1/rules.mk5
-rw-r--r--keyboards/sidderskb/majbritt/rev2/rules.mk5
-rw-r--r--keyboards/signum/3_0/rules.mk7
-rw-r--r--keyboards/silverbullet44/rules.mk5
-rw-r--r--keyboards/singa/keymaps/default/config.h19
-rw-r--r--keyboards/singa/keymaps/default/keymap.c24
-rw-r--r--keyboards/singa/keymaps/test/keymap.c24
-rw-r--r--keyboards/singa/rules.mk4
-rw-r--r--keyboards/sirius/uni660/rev1/rules.mk5
-rw-r--r--keyboards/sirius/uni660/rev2/rules.mk5
-rw-r--r--keyboards/sirius/unigo66/keymaps/default/config.h3
-rw-r--r--keyboards/sirius/unigo66/rules.mk5
-rw-r--r--keyboards/sixkeyboard/keymaps/default/keymap.c4
-rw-r--r--keyboards/sixkeyboard/rules.mk5
-rw-r--r--keyboards/skeletn87/hotswap/rules.mk5
-rw-r--r--keyboards/skeletn87/soldered/rules.mk5
-rw-r--r--keyboards/skergo/rules.mk5
-rw-r--r--keyboards/skippys_custom_pcs/roopad/config.h71
-rw-r--r--keyboards/skippys_custom_pcs/roopad/info.json10
-rw-r--r--keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c67
-rw-r--r--keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c85
-rw-r--r--keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk1
-rw-r--r--keyboards/skippys_custom_pcs/roopad/readme.md22
-rw-r--r--keyboards/skippys_custom_pcs/roopad/roopad.c14
-rw-r--r--keyboards/skippys_custom_pcs/roopad/roopad.h32
-rw-r--r--keyboards/skippys_custom_pcs/roopad/rules.mk21
-rw-r--r--keyboards/slz40/rules.mk5
-rw-r--r--keyboards/smallice/rules.mk5
-rw-r--r--keyboards/smallkeyboard/config.h2
-rw-r--r--keyboards/smallkeyboard/rules.mk5
-rw-r--r--keyboards/smk60/rules.mk5
-rw-r--r--keyboards/snampad/keymaps/default/config.h19
-rw-r--r--keyboards/snampad/rules.mk5
-rw-r--r--keyboards/sneakbox/aliceclone/rules.mk5
-rw-r--r--keyboards/sneakbox/aliceclonergb/aliceclonergb.c32
-rw-r--r--keyboards/sneakbox/aliceclonergb/aliceclonergb.h60
-rw-r--r--keyboards/sneakbox/aliceclonergb/config.h73
-rw-r--r--keyboards/sneakbox/aliceclonergb/info.json25
-rw-r--r--keyboards/sneakbox/aliceclonergb/keymaps/default/keymap.c39
-rw-r--r--keyboards/sneakbox/aliceclonergb/keymaps/via/keymap.c54
-rw-r--r--keyboards/sneakbox/aliceclonergb/keymaps/via/rules.mk1
-rw-r--r--keyboards/sneakbox/aliceclonergb/readme.md23
-rw-r--r--keyboards/sneakbox/aliceclonergb/rules.mk21
-rw-r--r--keyboards/sneakbox/ava/rules.mk5
-rw-r--r--keyboards/sneakbox/disarray/ortho/rules.mk5
-rw-r--r--keyboards/sneakbox/disarray/staggered/rules.mk5
-rwxr-xr-xkeyboards/sofle/keyhive/config.h101
-rw-r--r--keyboards/sofle/keyhive/info.json2
-rwxr-xr-xkeyboards/sofle/keyhive/keyhive.c71
-rwxr-xr-xkeyboards/sofle/keyhive/keyhive.h25
-rwxr-xr-xkeyboards/sofle/keyhive/readme.md62
-rwxr-xr-xkeyboards/sofle/keyhive/rules.mk7
-rw-r--r--keyboards/sofle/keymaps/default/keymap.c60
-rw-r--r--keyboards/sofle/keymaps/flare576/config.h40
-rw-r--r--keyboards/sofle/keymaps/flare576/enums.h34
-rw-r--r--keyboards/sofle/keymaps/flare576/graphics.c290
-rw-r--r--keyboards/sofle/keymaps/flare576/graphics.h16
-rw-r--r--keyboards/sofle/keymaps/flare576/keymap.c196
-rw-r--r--keyboards/sofle/keymaps/flare576/logos.h96
-rw-r--r--keyboards/sofle/keymaps/flare576/readme.md22
-rw-r--r--keyboards/sofle/keymaps/flare576/rules.mk7
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/config.h48
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/encoder.c49
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/keymap.c191
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/oled.c85
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/readme.md49
-rw-r--r--keyboards/sofle/keymaps/keyhive_via/rules.mk2
-rw-r--r--keyboards/sofle/keymaps/via/keymap.c6
-rw-r--r--keyboards/soup10/rules.mk5
-rw-r--r--keyboards/southpole/keymaps/default/keymap.c20
-rw-r--r--keyboards/southpole/rules.mk5
-rw-r--r--keyboards/sowbug/68keys/rules.mk5
-rw-r--r--keyboards/sowbug/ansi_tkl/keymaps/default/keymap.c36
-rw-r--r--keyboards/sowbug/ansi_tkl/rules.mk5
-rw-r--r--keyboards/soy20/rules.mk5
-rw-r--r--keyboards/space_space/rev1/rules.mk5
-rw-r--r--keyboards/space_space/rev2/config.h5
-rw-r--r--keyboards/space_space/rev2/rules.mk5
-rw-r--r--keyboards/spaceman/2_milk/rules.mk5
-rw-r--r--keyboards/spaceman/pancake/rev1/feather/rules.mk5
-rw-r--r--keyboards/spaceman/pancake/rev1/promicro/rules.mk5
-rw-r--r--keyboards/spaceman/pancake/rev2/info.json1
-rw-r--r--keyboards/spaceman/pancake/rev2/rules.mk5
-rw-r--r--keyboards/spaceman/yun65/rules.mk5
-rw-r--r--keyboards/spacetime/keymaps/default/config.h19
-rw-r--r--keyboards/spacetime/keymaps/default/keymap.c6
-rw-r--r--keyboards/spacetime/rules.mk5
-rw-r--r--keyboards/spacey/config.h4
-rw-r--r--keyboards/spacey/keymaps/via/keymap.c48
-rw-r--r--keyboards/spacey/keymaps/via/rules.mk2
-rw-r--r--keyboards/spacey/rules.mk5
-rw-r--r--keyboards/sparrow62/rules.mk3
-rw-r--r--keyboards/specskeys/rules.mk5
-rw-r--r--keyboards/spiderisland/split78/rules.mk2
-rw-r--r--keyboards/spiderisland/winry25tc/rules.mk5
-rw-r--r--keyboards/splitish/rules.mk8
-rw-r--r--keyboards/splitkb/kyria/keymaps/default/config.h6
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/config.h13
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/keymap.c29
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/rules.mk31
-rw-r--r--keyboards/splitkb/kyria/keymaps/lw/config.h26
-rw-r--r--keyboards/splitkb/kyria/keymaps/lw/keymap.c251
-rw-r--r--keyboards/splitkb/kyria/keymaps/lw/readme.md104
-rw-r--r--keyboards/splitkb/kyria/keymaps/lw/rules.mk6
-rw-r--r--keyboards/splitkb/kyria/keymaps/uqs/config.h13
-rw-r--r--keyboards/splitkb/kyria/keymaps/uqs/keymap.c158
-rw-r--r--keyboards/splitkb/kyria/keymaps/uqs/rules.mk1
-rw-r--r--keyboards/splitkb/kyria/kyria.c102
-rw-r--r--keyboards/splitkb/kyria/kyria.h5
-rw-r--r--keyboards/splitkb/kyria/readme.md10
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h6
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/rules.mk7
-rw-r--r--keyboards/splitkb/kyria/rev1/rev1.c108
-rw-r--r--keyboards/splitkb/kyria/rev2/config.h107
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/chconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/halconf.h22
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/mcuconf.h29
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/proton_c.c17
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/proton_c.h19
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/rules.mk12
-rw-r--r--keyboards/splitkb/kyria/rev2/rev2.c76
-rw-r--r--keyboards/splitkb/kyria/rev2/rev2.h70
-rw-r--r--keyboards/splitkb/kyria/rev2/rules.mk8
-rw-r--r--keyboards/splitkb/kyria/rules.mk7
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/config.h2
-rw-r--r--keyboards/splitkb/zima/rules.mk5
-rw-r--r--keyboards/splitreus62/keymaps/scheiklp/config.h84
-rw-r--r--keyboards/splitreus62/keymaps/scheiklp/keymap.c56
-rw-r--r--keyboards/splitreus62/keymaps/scheiklp/rules.mk9
-rw-r--r--keyboards/splitreus62/rules.mk5
-rw-r--r--keyboards/splitty/rules.mk5
-rw-r--r--keyboards/squiggle/keymaps/defaultfull/config.h22
-rw-r--r--keyboards/squiggle/keymaps/defaultfull/keymap.c157
-rw-r--r--keyboards/squiggle/keymaps/defaultfull/readme.md6
-rw-r--r--keyboards/squiggle/keymaps/defaultfull/rules.mk1
-rw-r--r--keyboards/squiggle/readme.md7
-rw-r--r--keyboards/squiggle/rev1/rev1.h18
-rw-r--r--keyboards/squiggle/rev1/rules.mk8
-rw-r--r--keyboards/standaside/keymaps/default/config.h5
-rw-r--r--keyboards/standaside/rules.mk5
-rw-r--r--keyboards/steal_this_keyboard/rules.mk5
-rw-r--r--keyboards/stella/rules.mk5
-rw-r--r--keyboards/stratos/rules.mk5
-rw-r--r--keyboards/studiokestra/bourgeau/bourgeau.h2
-rw-r--r--keyboards/studiokestra/bourgeau/info.json7
-rw-r--r--keyboards/studiokestra/bourgeau/keymaps/default/keymap.c4
-rw-r--r--keyboards/studiokestra/bourgeau/keymaps/via/keymap.c8
-rw-r--r--keyboards/studiokestra/bourgeau/rules.mk5
-rw-r--r--keyboards/studiokestra/cascade/rules.mk5
-rw-r--r--keyboards/studiokestra/galatea/config.h77
-rw-r--r--keyboards/studiokestra/galatea/galatea.c17
-rw-r--r--keyboards/studiokestra/galatea/galatea.h25
-rw-r--r--keyboards/studiokestra/galatea/keymaps/default/keymap.c42
-rw-r--r--keyboards/studiokestra/galatea/keymaps/default/readme.md1
-rw-r--r--keyboards/studiokestra/galatea/keymaps/via/keymap.c51
-rw-r--r--keyboards/studiokestra/galatea/keymaps/via/readme.md1
-rw-r--r--keyboards/studiokestra/galatea/keymaps/via/rules.mk1
-rw-r--r--keyboards/studiokestra/galatea/readme.md27
-rw-r--r--keyboards/studiokestra/galatea/rev1/config.h21
-rw-r--r--keyboards/studiokestra/galatea/rev1/info.json308
-rw-r--r--keyboards/studiokestra/galatea/rev1/rev1.c17
-rw-r--r--keyboards/studiokestra/galatea/rev1/rev1.h116
-rw-r--r--keyboards/studiokestra/galatea/rev1/rules.mk18
-rw-r--r--keyboards/studiokestra/galatea/rev2/config.h21
-rw-r--r--keyboards/studiokestra/galatea/rev2/info.json308
-rw-r--r--keyboards/studiokestra/galatea/rev2/rev2.c17
-rw-r--r--keyboards/studiokestra/galatea/rev2/rev2.h116
-rw-r--r--keyboards/studiokestra/galatea/rev2/rules.mk18
-rw-r--r--keyboards/studiokestra/galatea/rules.mk1
-rw-r--r--keyboards/studiokestra/nue/rules.mk5
-rw-r--r--keyboards/subatomic/rules.mk8
-rw-r--r--keyboards/suihankey/alpha/keymaps/default/config.h19
-rw-r--r--keyboards/suihankey/rev1/keymaps/default/config.h19
-rw-r--r--keyboards/suihankey/rules.mk5
-rw-r--r--keyboards/suihankey/split/keymaps/default/config.h19
-rw-r--r--keyboards/superuser/ext/rules.mk5
-rw-r--r--keyboards/superuser/frl/rules.mk5
-rw-r--r--keyboards/superuser/tkl/rules.mk5
-rw-r--r--keyboards/swiftrax/retropad/rules.mk5
-rw-r--r--keyboards/switchplate/southpaw_65/rules.mk5
-rw-r--r--keyboards/switchplate/southpaw_fullsize/rules.mk5
-rw-r--r--keyboards/switchplate/switchplate910/rules.mk5
-rwxr-xr-xkeyboards/sx60/rules.mk5
-rw-r--r--keyboards/synapse/config.h5
-rw-r--r--keyboards/synapse/rules.mk5
-rw-r--r--keyboards/system76/launch_1/config.h121
-rw-r--r--keyboards/system76/launch_1/info.json94
-rw-r--r--keyboards/system76/launch_1/keymaps/default/keymap.c104
-rw-r--r--keyboards/system76/launch_1/launch_1.c240
-rw-r--r--keyboards/system76/launch_1/launch_1.h38
-rw-r--r--keyboards/system76/launch_1/post_rules.mk12
-rw-r--r--keyboards/system76/launch_1/readme.md62
-rw-r--r--keyboards/system76/launch_1/rgb_matrix_kb.inc157
-rw-r--r--keyboards/system76/launch_1/rules.mk33
-rw-r--r--keyboards/system76/launch_1/usb_mux.c478
-rw-r--r--keyboards/system76/launch_1/usb_mux.h21
-rwxr-xr-xkeyboards/system76/layouts.sh75
-rw-r--r--keyboards/system76/readme.md5
-rw-r--r--keyboards/system76/system76_ec.c416
-rwxr-xr-xkeyboards/tada68/rules.mk5
-rw-r--r--keyboards/takashicompany/center_enter/info.json219
-rw-r--r--keyboards/takashicompany/center_enter/rules.mk5
-rw-r--r--keyboards/takashicompany/compacx/rules.mk5
-rw-r--r--keyboards/takashicompany/dogtag/config.h152
-rw-r--r--keyboards/takashicompany/dogtag/dogtag.c28
-rw-r--r--keyboards/takashicompany/dogtag/dogtag.h37
-rw-r--r--keyboards/takashicompany/dogtag/info.json83
-rw-r--r--keyboards/takashicompany/dogtag/keymaps/default/keymap.c30
-rw-r--r--keyboards/takashicompany/dogtag/keymaps/via/config.h20
-rw-r--r--keyboards/takashicompany/dogtag/keymaps/via/keymap.c30
-rw-r--r--keyboards/takashicompany/dogtag/keymaps/via/rules.mk1
-rw-r--r--keyboards/takashicompany/dogtag/readme.md37
-rw-r--r--keyboards/takashicompany/dogtag/rules.mk21
-rw-r--r--keyboards/takashicompany/endzone34/endzone34.c50
-rw-r--r--keyboards/takashicompany/endzone34/keymaps/default/keymap.c70
-rw-r--r--keyboards/takashicompany/endzone34/keymaps/via/config.h20
-rw-r--r--keyboards/takashicompany/endzone34/keymaps/via/keymap.c50
-rw-r--r--keyboards/takashicompany/endzone34/keymaps/via/rules.mk3
-rw-r--r--keyboards/takashicompany/endzone34/rules.mk7
-rw-r--r--keyboards/takashicompany/heavy_left/config.h2
-rw-r--r--keyboards/takashicompany/heavy_left/keymaps/takashicompany/keymap.c69
-rw-r--r--keyboards/takashicompany/heavy_left/keymaps/takashicompany/rules.mk1
-rw-r--r--keyboards/takashicompany/heavy_left/rules.mk7
-rw-r--r--keyboards/takashicompany/qoolee/info.json186
-rw-r--r--keyboards/takashicompany/qoolee/rules.mk5
-rw-r--r--keyboards/takashicompany/radialex/config.h139
-rw-r--r--keyboards/takashicompany/radialex/info.json191
-rw-r--r--keyboards/takashicompany/radialex/keymaps/default/keymap.c64
-rw-r--r--keyboards/takashicompany/radialex/keymaps/via/config.h20
-rw-r--r--keyboards/takashicompany/radialex/keymaps/via/keymap.c89
-rw-r--r--keyboards/takashicompany/radialex/keymaps/via/rules.mk1
-rw-r--r--keyboards/takashicompany/radialex/radialex.c17
-rw-r--r--keyboards/takashicompany/radialex/radialex.h42
-rw-r--r--keyboards/takashicompany/radialex/readme.md31
-rw-r--r--keyboards/takashicompany/radialex/rules.mk18
-rw-r--r--keyboards/taleguers/taleguers75/rules.mk5
-rw-r--r--keyboards/tanuki/keymaps/default/keymap.c24
-rw-r--r--keyboards/tanuki/rules.mk4
-rwxr-xr-xkeyboards/tau4/rules.mk5
-rw-r--r--keyboards/team0110/p1800fl/rules.mk5
-rw-r--r--keyboards/technika/rules.mk5
-rw-r--r--keyboards/teleport/numpad/rules.mk5
-rw-r--r--keyboards/telophase/rules.mk4
-rw-r--r--keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c32
-rw-r--r--keyboards/tempo_turtle/bradpad/rules.mk5
-rw-r--r--keyboards/tender/macrowo_pad/rules.mk5
-rw-r--r--keyboards/tenki/keymaps/default/keymap.c16
-rw-r--r--keyboards/tenki/keymaps/via/keymap.c32
-rw-r--r--keyboards/tenki/rules.mk5
-rw-r--r--keyboards/terrazzo/rules.mk5
-rwxr-xr-xkeyboards/tetris/rules.mk7
-rw-r--r--keyboards/tg4x/keymaps/default/config.h19
-rw-r--r--keyboards/tg4x/rules.mk5
-rw-r--r--keyboards/tgr/910/rules.mk4
-rw-r--r--keyboards/tgr/alice/keymaps/default/keymap.c20
-rw-r--r--keyboards/tgr/alice/rules.mk4
-rw-r--r--keyboards/tgr/jane/v2/keymaps/default/config.h19
-rw-r--r--keyboards/tgr/jane/v2/keymaps/default/keymap.c14
-rw-r--r--keyboards/tgr/jane/v2/rules.mk4
-rw-r--r--keyboards/tgr/jane/v2ce/info.json16
-rw-r--r--keyboards/tgr/jane/v2ce/keymaps/default/keymap.c2
-rw-r--r--keyboards/tgr/jane/v2ce/keymaps/via/keymap.c6
-rw-r--r--keyboards/tgr/jane/v2ce/rules.mk4
-rw-r--r--keyboards/tgr/jane/v2ce/v2ce.h46
-rw-r--r--keyboards/the_royal/liminal/rules.mk9
-rw-r--r--keyboards/the_royal/schwann/rules.mk5
-rw-r--r--keyboards/the_ruler/keymaps/default/config.h3
-rw-r--r--keyboards/the_ruler/keymaps/default/keymap.c6
-rw-r--r--keyboards/the_ruler/rules.mk5
-rw-r--r--keyboards/the_uni/pro_micro/rules.mk5
-rw-r--r--keyboards/the_uni/usb_c/rules.mk5
-rw-r--r--keyboards/thedogkeyboard/rules.mk5
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/rules.mk5
-rw-r--r--keyboards/themadnoodle/noodlepad/rules.mk5
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/default/config.h19
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/default/keymap.c20
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/via/keymap.c24
-rw-r--r--keyboards/thevankeyboards/bananasplit/rules.mk4
-rw-r--r--keyboards/thevankeyboards/caravan/rules.mk2
-rw-r--r--keyboards/thevankeyboards/jetvan/rules.mk5
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/default/config.h3
-rw-r--r--keyboards/thevankeyboards/minivan/rules.mk5
-rw-r--r--keyboards/thevankeyboards/roadkit/keymaps/default/config.h3
-rw-r--r--keyboards/thevankeyboards/roadkit/keymaps/default/keymap.c8
-rw-r--r--keyboards/thevankeyboards/roadkit/rules.mk5
-rw-r--r--keyboards/tiger910/rules.mk6
-rw-r--r--keyboards/tkc/california/california.c18
-rw-r--r--keyboards/tkc/california/california.h50
-rw-r--r--keyboards/tkc/california/config.h123
-rw-r--r--keyboards/tkc/california/info.json10
-rw-r--r--keyboards/tkc/california/keymaps/default/keymap.c29
-rw-r--r--keyboards/tkc/california/keymaps/via/keymap.c38
-rw-r--r--keyboards/tkc/california/keymaps/via/rules.mk2
-rw-r--r--keyboards/tkc/california/readme.md21
-rw-r--r--keyboards/tkc/california/rules.mk18
-rw-r--r--keyboards/tkc/candybar/lefty/keymaps/default/keymap.c12
-rw-r--r--keyboards/tkc/candybar/lefty/keymaps/via/keymap.c24
-rw-r--r--keyboards/tkc/candybar/lefty/rules.mk6
-rw-r--r--keyboards/tkc/candybar/lefty_r3/config.h91
-rw-r--r--keyboards/tkc/candybar/lefty_r3/info.json17
-rw-r--r--keyboards/tkc/candybar/lefty_r3/keymaps/default/keymap.c40
-rw-r--r--keyboards/tkc/candybar/lefty_r3/keymaps/via/keymap.c54
-rw-r--r--keyboards/tkc/candybar/lefty_r3/keymaps/via/rules.mk1
-rw-r--r--keyboards/tkc/candybar/lefty_r3/lefty_r3.c18
-rw-r--r--keyboards/tkc/candybar/lefty_r3/lefty_r3.h31
-rw-r--r--keyboards/tkc/candybar/lefty_r3/readme.md22
-rw-r--r--keyboards/tkc/candybar/lefty_r3/rules.mk19
-rw-r--r--keyboards/tkc/candybar/righty/keymaps/default/keymap.c12
-rw-r--r--keyboards/tkc/candybar/righty/keymaps/via/keymap.c24
-rw-r--r--keyboards/tkc/candybar/righty/rules.mk6
-rw-r--r--keyboards/tkc/candybar/righty_r3/config.h91
-rw-r--r--keyboards/tkc/candybar/righty_r3/info.json16
-rw-r--r--keyboards/tkc/candybar/righty_r3/keymaps/default/keymap.c40
-rw-r--r--keyboards/tkc/candybar/righty_r3/keymaps/via/keymap.c54
-rw-r--r--keyboards/tkc/candybar/righty_r3/keymaps/via/rules.mk1
-rw-r--r--keyboards/tkc/candybar/righty_r3/readme.md22
-rw-r--r--keyboards/tkc/candybar/righty_r3/righty_r3.c17
-rw-r--r--keyboards/tkc/candybar/righty_r3/righty_r3.h30
-rw-r--r--keyboards/tkc/candybar/righty_r3/rules.mk19
-rw-r--r--keyboards/tkc/godspeed75/rules.mk5
-rw-r--r--keyboards/tkc/m0lly/rules.mk5
-rw-r--r--keyboards/tkc/osav2/rules.mk5
-rw-r--r--keyboards/tkc/portico/info.json2
-rw-r--r--keyboards/tkc/portico/rules.mk5
-rw-r--r--keyboards/tkc/portico75/config.h179
-rw-r--r--keyboards/tkc/portico75/info.json10
-rw-r--r--keyboards/tkc/portico75/keymaps/default/keymap.c31
-rw-r--r--keyboards/tkc/portico75/keymaps/via/keymap.c109
-rw-r--r--keyboards/tkc/portico75/keymaps/via/rules.mk11
-rw-r--r--keyboards/tkc/portico75/portico75.c188
-rw-r--r--keyboards/tkc/portico75/portico75.h60
-rw-r--r--keyboards/tkc/portico75/readme.md21
-rw-r--r--keyboards/tkc/portico75/rules.mk22
-rw-r--r--keyboards/tkc/tkc1800/keymaps/default/keymap.c28
-rw-r--r--keyboards/tkc/tkc1800/keymaps/via/keymap.c56
-rw-r--r--keyboards/tkc/tkc1800/keymaps/wkl/keymap.c28
-rw-r--r--keyboards/tkc/tkc1800/rules.mk6
-rw-r--r--keyboards/tkc/tkl_ab87/rules.mk5
-rw-r--r--keyboards/tkw/grandiceps/rules.mk5
-rw-r--r--keyboards/tkw/stoutgat/v1/rules.mk5
-rw-r--r--keyboards/tkw/stoutgat/v2/rules.mk5
-rw-r--r--keyboards/tmo50/rules.mk5
-rw-r--r--keyboards/toad/keymaps/ansi_wk/keymap.c10
-rw-r--r--keyboards/toad/keymaps/ansi_wkl/keymap.c10
-rw-r--r--keyboards/toad/keymaps/default/keymap.c10
-rw-r--r--keyboards/toad/keymaps/iso_wk/keymap.c10
-rw-r--r--keyboards/toad/keymaps/iso_wkl/keymap.c10
-rw-r--r--keyboards/toad/rules.mk5
-rw-r--r--keyboards/tokyokeyboard/alix40/rules.mk5
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h3
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c16
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h3
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c32
-rw-r--r--keyboards/tokyokeyboard/tokyo60/rules.mk5
-rw-r--r--keyboards/torn/rules.mk2
-rw-r--r--keyboards/touchpad/rules.mk8
-rw-r--r--keyboards/tr60w/rules.mk5
-rw-r--r--keyboards/trashman/ketch/rules.mk5
-rw-r--r--keyboards/treadstone32/keymaps/default/rules.mk5
-rw-r--r--keyboards/treadstone32/rules.mk2
-rw-r--r--keyboards/treadstone48/keymaps/default/keymap.c48
-rw-r--r--keyboards/treadstone48/rules.mk5
-rw-r--r--keyboards/treasure/type9/keymaps/default/config.h19
-rw-r--r--keyboards/treasure/type9/keymaps/default/keymap.c6
-rw-r--r--keyboards/treasure/type9/rules.mk5
-rw-r--r--keyboards/treasure/type9s2/rules.mk5
-rw-r--r--keyboards/tronguylabs/m122_3270/blackpill/rules.mk5
-rw-r--r--keyboards/tronguylabs/m122_3270/teensy/rules.mk5
-rw-r--r--keyboards/tszaboo/ortho4exent/rules.mk5
-rw-r--r--keyboards/tunks/ergo33/rules.mk5
-rw-r--r--keyboards/tw40/rules.mk5
-rw-r--r--keyboards/txuu/rules.mk5
-rw-r--r--keyboards/ua62/rules.mk5
-rw-r--r--keyboards/uk78/rules.mk5
-rw-r--r--keyboards/underscore33/rev1/rules.mk5
-rw-r--r--keyboards/underscore33/rev2/rules.mk5
-rw-r--r--keyboards/ungodly/launch_pad/rules.mk5
-rw-r--r--keyboards/ungodly/nines/rules.mk5
-rw-r--r--keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk5
-rw-r--r--keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk5
-rw-r--r--keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk5
-rw-r--r--keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk5
-rw-r--r--keyboards/unikorn/rules.mk4
-rw-r--r--keyboards/unison/v04/rules.mk5
-rw-r--r--keyboards/uno/rules.mk5
-rw-r--r--keyboards/uranuma/rules.mk5
-rw-r--r--keyboards/ut472/keymaps/default/config.h21
-rw-r--r--keyboards/ut472/keymaps/default/keymap.c4
-rw-r--r--keyboards/ut472/rules.mk5
-rw-r--r--keyboards/utd80/rules.mk5
-rw-r--r--keyboards/uzu42/keymaps/default/keymap.c40
-rw-r--r--keyboards/uzu42/rules.mk7
-rw-r--r--keyboards/v4n4g0rth0n/v1/rules.mk5
-rw-r--r--keyboards/v4n4g0rth0n/v2/rules.mk5
-rw-r--r--keyboards/v60_type_r/keymaps/default/keymap.c16
-rw-r--r--keyboards/v60_type_r/keymaps/iso/config.h18
-rw-r--r--keyboards/v60_type_r/keymaps/iso/keymap.c22
-rw-r--r--keyboards/v60_type_r/rules.mk5
-rwxr-xr-xkeyboards/vagrant_10/rules.mk5
-rw-r--r--keyboards/viktus/smolka/config.h116
-rw-r--r--keyboards/viktus/smolka/info.json66
-rw-r--r--keyboards/viktus/smolka/keymaps/default/keymap.c44
-rw-r--r--keyboards/viktus/smolka/keymaps/default/readme.md1
-rw-r--r--keyboards/viktus/smolka/keymaps/via/keymap.c58
-rw-r--r--keyboards/viktus/smolka/keymaps/via/readme.md1
-rw-r--r--keyboards/viktus/smolka/keymaps/via/rules.mk1
-rw-r--r--keyboards/viktus/smolka/readme.md30
-rw-r--r--keyboards/viktus/smolka/rules.mk20
-rw-r--r--keyboards/viktus/smolka/smolka.c37
-rw-r--r--keyboards/viktus/smolka/smolka.h47
-rw-r--r--keyboards/viktus/sp111/rules.mk5
-rw-r--r--keyboards/viktus/sp_mini/rules.mk5
-rw-r--r--keyboards/viktus/styrka/rules.mk5
-rw-r--r--keyboards/vitamins_included/keymaps/default/keymap.c60
-rw-r--r--keyboards/vitamins_included/keymaps/numpad/keymap.c20
-rw-r--r--keyboards/vitamins_included/keymaps/via/keymap.c40
-rw-r--r--keyboards/vitamins_included/rules.mk7
-rw-r--r--keyboards/vn66/rules.mk5
-rw-r--r--keyboards/w1_at/config.h83
-rw-r--r--keyboards/w1_at/info.json10
-rw-r--r--keyboards/w1_at/keymaps/default/keymap.c49
-rw-r--r--keyboards/w1_at/keymaps/default/readme.md9
-rw-r--r--keyboards/w1_at/keymaps/via/keymap.c63
-rw-r--r--keyboards/w1_at/keymaps/via/readme.md9
-rw-r--r--keyboards/w1_at/keymaps/via/rules.mk1
-rw-r--r--keyboards/w1_at/readme.md32
-rw-r--r--keyboards/w1_at/rules.mk26
-rw-r--r--keyboards/w1_at/w1_at.c30
-rw-r--r--keyboards/w1_at/w1_at.h34
-rw-r--r--keyboards/waldo/keymaps/default/keymap.c24
-rw-r--r--keyboards/waldo/keymaps/default_split_shft_bck/keymap.c24
-rw-r--r--keyboards/waldo/rules.mk8
-rw-r--r--keyboards/wallaby/rules.mk5
-rw-r--r--keyboards/walletburner/cajal/keymaps/default/keymap.c10
-rw-r--r--keyboards/walletburner/cajal/keymaps/default_ortho/keymap.c9
-rw-r--r--keyboards/walletburner/cajal/keymaps/via/keymap.c96
-rw-r--r--keyboards/walletburner/cajal/keymaps/via/rules.mk2
-rw-r--r--keyboards/walletburner/cajal/rules.mk5
-rw-r--r--keyboards/walletburner/neuron/rules.mk5
-rw-r--r--keyboards/wanten/rules.mk5
-rw-r--r--keyboards/wavtype/foundation/config.h136
-rw-r--r--keyboards/wavtype/foundation/foundation.c4
-rw-r--r--keyboards/wavtype/foundation/foundation.h76
-rw-r--r--keyboards/wavtype/foundation/info.json19
-rw-r--r--keyboards/wavtype/foundation/keymaps/default/keymap.c28
-rw-r--r--keyboards/wavtype/foundation/keymaps/via/keymap.c42
-rw-r--r--keyboards/wavtype/foundation/keymaps/via/rules.mk1
-rw-r--r--keyboards/wavtype/foundation/readme.md22
-rw-r--r--keyboards/wavtype/foundation/rules.mk18
-rw-r--r--keyboards/wekey/polaris/rules.mk5
-rw-r--r--keyboards/wekey/stelo65/config.h150
-rw-r--r--keyboards/wekey/stelo65/encoder_actions.c57
-rw-r--r--keyboards/wekey/stelo65/encoder_actions.h21
-rw-r--r--keyboards/wekey/stelo65/info.json10
-rw-r--r--keyboards/wekey/stelo65/keymaps/default/keymap.c29
-rw-r--r--keyboards/wekey/stelo65/keymaps/default/readme.md1
-rw-r--r--keyboards/wekey/stelo65/keymaps/via/keymap.c47
-rw-r--r--keyboards/wekey/stelo65/keymaps/via/rules.mk2
-rw-r--r--keyboards/wekey/stelo65/readme.md27
-rw-r--r--keyboards/wekey/stelo65/rules.mk22
-rw-r--r--keyboards/wekey/stelo65/stelo65.c16
-rw-r--r--keyboards/wekey/stelo65/stelo65.h35
-rw-r--r--keyboards/wekey/we27/rules.mk5
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/default/config.h19
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c16
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/iso-default/config.h19
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c16
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/via/config.h19
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c16
-rw-r--r--keyboards/westfoxtrot/aanzee/rules.mk4
-rw-r--r--keyboards/westfoxtrot/cyclops/keymaps/default/config.h19
-rw-r--r--keyboards/westfoxtrot/cyclops/rules.mk5
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/rules.mk5
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/rules.mk5
-rw-r--r--keyboards/westfoxtrot/prophet/rules.mk7
-rw-r--r--keyboards/westm/westm68/chconf.h26
-rw-r--r--keyboards/westm/westm68/config.h61
-rw-r--r--keyboards/westm/westm68/halconf.h23
-rw-r--r--keyboards/westm/westm68/info.json83
-rwxr-xr-xkeyboards/westm/westm68/keymaps/default/keymap.c34
-rw-r--r--keyboards/westm/westm68/keymaps/via/keymap.c48
-rw-r--r--keyboards/westm/westm68/keymaps/via/rules.mk1
-rw-r--r--keyboards/westm/westm68/mcuconf.h26
-rw-r--r--keyboards/westm/westm68/readme.md18
-rw-r--r--keyboards/westm/westm68/rules.mk21
-rw-r--r--keyboards/westm/westm68/westm68.c18
-rw-r--r--keyboards/westm/westm68/westm68.h35
-rw-r--r--keyboards/westm/westmergo/chconf.h27
-rw-r--r--keyboards/westm/westmergo/config.h61
-rw-r--r--keyboards/westm/westmergo/halconf.h22
-rw-r--r--keyboards/westm/westmergo/info.json80
-rwxr-xr-xkeyboards/westm/westmergo/keymaps/default/keymap.c35
-rw-r--r--keyboards/westm/westmergo/keymaps/via/keymap.c49
-rw-r--r--keyboards/westm/westmergo/keymaps/via/rules.mk1
-rw-r--r--keyboards/westm/westmergo/mcuconf.h26
-rw-r--r--keyboards/westm/westmergo/readme.md18
-rw-r--r--keyboards/westm/westmergo/rules.mk21
-rw-r--r--keyboards/westm/westmergo/westmergo.c17
-rw-r--r--keyboards/westm/westmergo/westmergo.h38
-rw-r--r--keyboards/whale/sk/v3/rules.mk5
-rw-r--r--keyboards/wheatfield/blocked65/rules.mk5
-rw-r--r--keyboards/wheatfield/split75/info.json3
-rw-r--r--keyboards/whitefox/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_kara/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h19
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m10_c/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m50_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m50_ax/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/rules.mk8
-rw-r--r--keyboards/wilba_tech/rama_works_m65_b/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m65_bx/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h24
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/rules.mk5
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_b/rules.mk8
-rw-r--r--keyboards/wilba_tech/wt60_bx/rules.mk8
-rw-r--r--keyboards/wilba_tech/wt60_c/rules.mk8
-rw-r--r--keyboards/wilba_tech/wt60_d/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_g/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_g2/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_h1/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_h2/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_h3/info.json74
-rw-r--r--keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c12
-rw-r--r--keyboards/wilba_tech/wt60_h3/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt60_h3/wt60_h3.h6
-rw-r--r--keyboards/wilba_tech/wt60_xt/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_b/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_f/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_fx/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_g/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_g2/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_h1/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_xt/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt65_xtx/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt69_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt70_jb/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt75_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt75_b/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt75_c/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt80_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt80_bc/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt80_g/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt8_a/rules.mk5
-rw-r--r--keyboards/wilba_tech/wt_rgb_backlight.c193
-rw-r--r--keyboards/wilba_tech/zeal60/rules.mk8
-rw-r--r--keyboards/wilba_tech/zeal65/rules.mk8
-rw-r--r--keyboards/wings42/rev1/info.json56
-rw-r--r--keyboards/wings42/rev1/readme.md4
-rw-r--r--keyboards/wings42/rev1_extkeys/info.json60
-rw-r--r--keyboards/wings42/rev2/config.h152
-rw-r--r--keyboards/wings42/rev2/info.json60
-rw-r--r--keyboards/wings42/rev2/keymaps/default/keymap.c81
-rw-r--r--keyboards/wings42/rev2/keymaps/default/readme.md1
-rw-r--r--keyboards/wings42/rev2/keymaps/via/config.h20
-rw-r--r--keyboards/wings42/rev2/keymaps/via/keymap.c218
-rw-r--r--keyboards/wings42/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/wings42/rev2/readme.md21
-rw-r--r--keyboards/wings42/rev2/rev2.c17
-rw-r--r--keyboards/wings42/rev2/rev2.h46
-rw-r--r--keyboards/wings42/rev2/rules.mk0
-rw-r--r--keyboards/wings42/rules.mk7
-rw-r--r--keyboards/wings42/wings42.h4
-rw-r--r--keyboards/winkeyless/b87/rules.mk2
-rw-r--r--keyboards/winkeyless/bface/rules.mk4
-rw-r--r--keyboards/winkeyless/bmini/rules.mk4
-rw-r--r--keyboards/winkeyless/bminiex/keymaps/ansi/keymap.c12
-rw-r--r--keyboards/winkeyless/bminiex/keymaps/iso/keymap.c12
-rw-r--r--keyboards/winkeyless/bminiex/rules.mk7
-rw-r--r--keyboards/wolf/kuku65/rules.mk5
-rw-r--r--keyboards/wolf/sabre/config.h61
-rw-r--r--keyboards/wolf/sabre/info.json10
-rw-r--r--keyboards/wolf/sabre/keymaps/default/keymap.c41
-rw-r--r--keyboards/wolf/sabre/keymaps/via/keymap.c61
-rw-r--r--keyboards/wolf/sabre/keymaps/via/rules.mk1
-rw-r--r--keyboards/wolf/sabre/readme.md21
-rw-r--r--keyboards/wolf/sabre/rules.mk23
-rw-r--r--keyboards/wolf/sabre/sabre.c14
-rw-r--r--keyboards/wolf/sabre/sabre.h40
-rw-r--r--keyboards/wolf/ts60/keymaps/default/keymap.c2
-rw-r--r--keyboards/wolf/ts60/keymaps/via/keymap.c2
-rw-r--r--keyboards/wolf/ts60/rules.mk5
-rw-r--r--keyboards/wolfmarkclub/wm1/rules.mk6
-rw-r--r--keyboards/work_louder/loop/info.json2
-rw-r--r--keyboards/work_louder/loop/rules.mk5
-rw-r--r--keyboards/work_louder/nano/info.json2
-rw-r--r--keyboards/work_louder/nano/rules.mk5
-rw-r--r--keyboards/work_louder/work_board/keymaps/drashna/config.h5
-rw-r--r--keyboards/work_louder/work_board/keymaps/drashna/keymap.c37
-rw-r--r--keyboards/work_louder/work_board/keymaps/drashna/rules.mk4
-rw-r--r--keyboards/work_louder/work_board/rules.mk5
-rw-r--r--keyboards/wren/config.h125
-rw-r--r--keyboards/wren/info.json105
-rw-r--r--keyboards/wren/keymaps/default/keymap.c36
-rw-r--r--keyboards/wren/keymaps/default/readme.md11
-rw-r--r--keyboards/wren/keymaps/walterhanley/config.h20
-rw-r--r--keyboards/wren/keymaps/walterhanley/keymap.c170
-rw-r--r--keyboards/wren/keymaps/walterhanley/readme.md12
-rw-r--r--keyboards/wren/readme.md27
-rw-r--r--keyboards/wren/rules.mk21
-rw-r--r--keyboards/wren/wren.c35
-rw-r--r--keyboards/wren/wren.h46
-rw-r--r--keyboards/wsk/alpha9/rules.mk5
-rw-r--r--keyboards/wsk/g4m3ralpha/rules.mk5
-rw-r--r--keyboards/wsk/gothic50/keymaps/default/keymap.c24
-rw-r--r--keyboards/wsk/gothic50/rules.mk5
-rw-r--r--keyboards/wsk/gothic70/keymaps/default/keymap.c30
-rw-r--r--keyboards/wsk/gothic70/rules.mk5
-rw-r--r--keyboards/wsk/houndstooth/rules.mk5
-rw-r--r--keyboards/wsk/jerkin/rules.mk8
-rw-r--r--keyboards/wsk/kodachi50/rules.mk5
-rw-r--r--keyboards/wsk/pain27/rules.mk5
-rw-r--r--keyboards/wsk/sl40/rules.mk5
-rw-r--r--keyboards/wsk/tkl30/rules.mk5
-rw-r--r--keyboards/wuque/ikki68/rules.mk7
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/ewersp/README.md40
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/ewersp/config.h19
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c215
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/ewersp/rules.mk1
-rw-r--r--keyboards/wuque/ikki68_aurora/rules.mk5
-rw-r--r--keyboards/wuque/mammoth20x/config.h6
-rw-r--r--keyboards/wuque/mammoth20x/keymaps/via/keymap.c4
-rw-r--r--keyboards/wuque/mammoth20x/rules.mk5
-rw-r--r--keyboards/wuque/mammoth75x/config.h10
-rw-r--r--keyboards/wuque/mammoth75x/info.json1020
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/default/keymap.c24
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/via/keymap.c48
-rw-r--r--keyboards/wuque/mammoth75x/mammoth75x.h12
-rw-r--r--keyboards/wuque/mammoth75x/rules.mk5
-rw-r--r--keyboards/wuque/serneity65/rules.mk5
-rw-r--r--keyboards/x16/rules.mk5
-rw-r--r--keyboards/xbows/knight/config.h62
-rw-r--r--keyboards/xbows/knight/keymaps/default/config.h43
-rw-r--r--keyboards/xbows/knight/keymaps/via/config.h63
-rw-r--r--keyboards/xbows/knight/knight.c1
-rw-r--r--keyboards/xbows/knight/rules.mk5
-rw-r--r--keyboards/xbows/knight_plus/config.h66
-rw-r--r--keyboards/xbows/knight_plus/keymaps/default/config.h43
-rw-r--r--keyboards/xbows/knight_plus/keymaps/via/config.h63
-rw-r--r--keyboards/xbows/knight_plus/knight_plus.c1
-rw-r--r--keyboards/xbows/knight_plus/rules.mk5
-rw-r--r--keyboards/xbows/nature/config.h62
-rw-r--r--keyboards/xbows/nature/nature.c2
-rw-r--r--keyboards/xbows/nature/rules.mk6
-rw-r--r--keyboards/xbows/numpad/config.h62
-rw-r--r--keyboards/xbows/numpad/keymaps/default/config.h44
-rw-r--r--keyboards/xbows/numpad/keymaps/via/config.h63
-rw-r--r--keyboards/xbows/numpad/rules.mk5
-rw-r--r--keyboards/xbows/ranger/config.h64
-rw-r--r--keyboards/xbows/ranger/keymaps/default/config.h44
-rw-r--r--keyboards/xbows/ranger/keymaps/via/config.h63
-rw-r--r--keyboards/xbows/ranger/rules.mk5
-rw-r--r--keyboards/xbows/woody/keymaps/default/keymap.c16
-rw-r--r--keyboards/xbows/woody/rules.mk7
-rw-r--r--keyboards/xelus/akis/rules.mk5
-rw-r--r--keyboards/xelus/dawn60/rev1/rules.mk5
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rules.mk5
-rw-r--r--keyboards/xelus/dharma/rules.mk5
-rw-r--r--keyboards/xelus/kangaroo/keymaps/default/config.h19
-rw-r--r--keyboards/xelus/kangaroo/keymaps/via/config.h19
-rw-r--r--keyboards/xelus/kangaroo/rules.mk6
-rwxr-xr-xkeyboards/xelus/la_plus/config.h106
-rw-r--r--keyboards/xelus/la_plus/info.json83
-rw-r--r--keyboards/xelus/la_plus/keymaps/default/config.h21
-rwxr-xr-xkeyboards/xelus/la_plus/keymaps/default/keymap.c54
-rwxr-xr-xkeyboards/xelus/la_plus/keymaps/default/readme.md2
-rw-r--r--keyboards/xelus/la_plus/keymaps/via/config.h24
-rwxr-xr-xkeyboards/xelus/la_plus/keymaps/via/keymap.c54
-rwxr-xr-xkeyboards/xelus/la_plus/keymaps/via/readme.md2
-rwxr-xr-xkeyboards/xelus/la_plus/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/xelus/la_plus/la_plus.c111
-rwxr-xr-xkeyboards/xelus/la_plus/la_plus.h50
-rwxr-xr-xkeyboards/xelus/la_plus/readme.md18
-rw-r--r--keyboards/xelus/la_plus/rgb_matrix_kb.inc59
-rwxr-xr-xkeyboards/xelus/la_plus/rules.mk23
-rw-r--r--keyboards/xelus/ninjin/rules.mk5
-rw-r--r--keyboards/xelus/pachi/mini_32u4/info.json107
-rw-r--r--keyboards/xelus/pachi/mini_32u4/rules.mk5
-rw-r--r--keyboards/xelus/pachi/rev1/info.json107
-rw-r--r--keyboards/xelus/pachi/rev1/rules.mk5
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/default/keymap.c4
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/via/keymap.c6
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/config.h10
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/info.json105
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/rev1.h2
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/rules.mk5
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/config.h14
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/info.json105
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/rev2.c2
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/rev2.h2
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/rules.mk5
-rw-r--r--keyboards/xelus/rs60/rules.mk5
-rw-r--r--keyboards/xelus/snap96/rules.mk5
-rw-r--r--keyboards/xelus/trinityxttkl/rules.mk6
-rw-r--r--keyboards/xelus/valor/rev1/rules.mk5
-rw-r--r--keyboards/xelus/valor/rev2/config.h6
-rw-r--r--keyboards/xelus/valor/rev2/rules.mk5
-rw-r--r--keyboards/xelus/valor_frl_tkl/rules.mk5
-rw-r--r--keyboards/xelus/xs60/config.h60
-rw-r--r--keyboards/xelus/xs60/halconf.h22
-rw-r--r--keyboards/xelus/xs60/info.json74
-rw-r--r--keyboards/xelus/xs60/keymaps/default/config.h19
-rw-r--r--keyboards/xelus/xs60/keymaps/default/keymap.c38
-rw-r--r--keyboards/xelus/xs60/keymaps/via/config.h22
-rw-r--r--keyboards/xelus/xs60/keymaps/via/keymap.c85
-rw-r--r--keyboards/xelus/xs60/keymaps/via/rules.mk1
-rw-r--r--keyboards/xelus/xs60/mcuconf.h23
-rw-r--r--keyboards/xelus/xs60/readme.md17
-rw-r--r--keyboards/xelus/xs60/rules.mk24
-rw-r--r--keyboards/xelus/xs60/xs60.c20
-rw-r--r--keyboards/xelus/xs60/xs60.h34
-rw-r--r--keyboards/xenon/config.h65
-rw-r--r--keyboards/xenon/info.json70
-rw-r--r--keyboards/xenon/keymaps/default/keymap.c64
-rw-r--r--keyboards/xenon/readme.md30
-rw-r--r--keyboards/xenon/rules.mk21
-rw-r--r--keyboards/xenon/xenon.c97
-rw-r--r--keyboards/xenon/xenon.h40
-rw-r--r--keyboards/xiaomi/mk02/keymaps/default/keymap.c12
-rw-r--r--keyboards/xiaomi/mk02/rules.mk4
-rw-r--r--keyboards/xiudi/xd002/rules.mk5
-rw-r--r--keyboards/xiudi/xd004/v1/rules.mk5
-rw-r--r--keyboards/xiudi/xd60/keymaps/default/keymap.c16
-rw-r--r--keyboards/xiudi/xd60/keymaps/finnish/keymap.c25
-rw-r--r--keyboards/xiudi/xd60/keymaps/finnish/readme.md20
-rw-r--r--keyboards/xiudi/xd60/rev2/rules.mk5
-rw-r--r--keyboards/xiudi/xd60/rev3/rules.mk5
-rw-r--r--keyboards/xiudi/xd68/rules.mk7
-rw-r--r--keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c169
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklb/config.h8
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c41
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklb/rules.mk17
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklp/config.h18
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c19
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk5
-rw-r--r--keyboards/xiudi/xd75/rules.mk5
-rw-r--r--keyboards/xiudi/xd84/rules.mk5
-rw-r--r--keyboards/xiudi/xd84pro/rules.mk5
-rw-r--r--keyboards/xiudi/xd87/keymaps/default/config.h19
-rw-r--r--keyboards/xiudi/xd87/keymaps/default/keymap.c12
-rwxr-xr-xkeyboards/xiudi/xd87/keymaps/default_underglow/config.h19
-rw-r--r--keyboards/xiudi/xd87/rules.mk5
-rw-r--r--keyboards/xiudi/xd96/rules.mk5
-rw-r--r--keyboards/xmmx/keymaps/ansi_wk/keymap.c10
-rw-r--r--keyboards/xmmx/keymaps/ansi_wkl/keymap.c10
-rw-r--r--keyboards/xmmx/keymaps/default/keymap.c10
-rw-r--r--keyboards/xmmx/keymaps/iso_wk/keymap.c10
-rw-r--r--keyboards/xmmx/keymaps/iso_wkl/keymap.c10
-rw-r--r--keyboards/xmmx/rules.mk5
-rw-r--r--keyboards/xw60/rules.mk7
-rw-r--r--keyboards/yampad/rules.mk3
-rw-r--r--keyboards/yanghu/unicorne/keymaps/bcat/config.h19
-rw-r--r--keyboards/yanghu/unicorne/keymaps/bcat/keymap.c83
-rw-r--r--keyboards/yanghu/unicorne/keymaps/bcat/readme.md33
-rw-r--r--keyboards/yanghu/unicorne/keymaps/bcat/rules.mk1
-rw-r--r--keyboards/yanghu/unicorne/rules.mk5
-rw-r--r--keyboards/yasui/rules.mk5
-rw-r--r--keyboards/yatara/drink_me/rules.mk5
-rw-r--r--keyboards/yd60mq/rules.mk5
-rw-r--r--keyboards/yd68/keymaps/default/config.h19
-rw-r--r--keyboards/yd68/keymaps/default/keymap.c10
-rw-r--r--keyboards/yd68/rules.mk5
-rw-r--r--keyboards/yeehaw/rules.mk5
-rw-r--r--keyboards/ymd75/rev1/rules.mk9
-rw-r--r--keyboards/ymd75/rev2/rules.mk9
-rw-r--r--keyboards/ymd75/rev3/rules.mk5
-rw-r--r--keyboards/ymd96/rules.mk7
-rw-r--r--keyboards/ymdk/bface/rules.mk4
-rw-r--r--keyboards/ymdk/np24/u4rgb6/info.json2
-rw-r--r--keyboards/ymdk/np24/u4rgb6/rules.mk5
-rw-r--r--keyboards/ymdk/sp64/keymaps/via/keymap.c78
-rw-r--r--keyboards/ymdk/sp64/keymaps/via/rules.mk2
-rw-r--r--keyboards/ymdk/sp64/rules.mk2
-rw-r--r--keyboards/ymdk/wings/rules.mk5
-rw-r--r--keyboards/ymdk/wingshs/rules.mk5
-rw-r--r--keyboards/ymdk/ym68/rules.mk5
-rw-r--r--keyboards/ymdk/ymd09/rules.mk5
-rw-r--r--keyboards/ymdk/ymd40/v2/rules.mk5
-rw-r--r--keyboards/ymdk/ymd67/rules.mk5
-rw-r--r--keyboards/ymdk_np21/rules.mk2
-rw-r--r--keyboards/yncognito/batpad/rules.mk5
-rw-r--r--keyboards/yoichiro/lunakey_macro/rules.mk5
-rw-r--r--keyboards/yoichiro/lunakey_mini/rules.mk5
-rw-r--r--keyboards/yosino58/keymaps/default/keymap.c48
-rw-r--r--keyboards/yosino58/rules.mk7
-rw-r--r--keyboards/yugo_m/model_m_101/rules.mk5
-rw-r--r--keyboards/yurei/rules.mk5
-rw-r--r--keyboards/yushakobo/navpad/10/10.c17
-rw-r--r--keyboards/yushakobo/navpad/10/10.h26
-rw-r--r--keyboards/yushakobo/navpad/10/config.h84
-rw-r--r--keyboards/yushakobo/navpad/10/info.json18
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/default/config.h25
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/default/keymap.c92
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/default/readme.md80
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/via/config.h25
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/via/keymap.c105
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/via/readme.md72
-rw-r--r--keyboards/yushakobo/navpad/10/keymaps/via/rules.mk1
-rw-r--r--keyboards/yushakobo/navpad/10/readme.md27
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/config.h45
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/rev0.c17
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/rev0.h44
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/rules.mk0
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/config.h49
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/rev1.c17
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/rev1.h44
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/rules.mk0
-rw-r--r--keyboards/yushakobo/navpad/10/rules.mk23
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/10_helix_r.c17
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/10_helix_r.h50
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/config.h126
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/info.json17
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/keymaps/default/config.h25
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c94
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md86
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/readme.md33
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/rules.mk23
-rw-r--r--keyboards/yushakobo/navpad/navpad_prefs.c104
-rw-r--r--keyboards/yushakobo/navpad/navpad_prefs.h30
-rw-r--r--keyboards/yushakobo/navpad/readme.md14
-rw-r--r--keyboards/yushakobo/quick17/rules.mk5
-rw-r--r--keyboards/yushakobo/quick7/rules.mk5
-rw-r--r--keyboards/yynmt/acperience12/rules.mk5
-rw-r--r--keyboards/z12/config.h5
-rw-r--r--keyboards/z12/info.json2
-rw-r--r--keyboards/z12/keymaps/zigotica/encoder.c12
-rw-r--r--keyboards/z12/keymaps/zigotica/keymap.c116
-rw-r--r--keyboards/z12/keymaps/zigotica/oled.c10
-rw-r--r--keyboards/z12/keymaps/zigotica/readme.md3
-rw-r--r--keyboards/z12/rules.mk7
-rw-r--r--keyboards/z150_bh/rules.mk5
-rw-r--r--keyboards/z34/rules.mk5
-rw-r--r--keyboards/zfrontier/big_switch/rules.mk5
-rw-r--r--keyboards/ziggurat/rules.mk5
-rw-r--r--keyboards/zinc/keymaps/default/keymap.c60
-rw-r--r--keyboards/zinc/keymaps/default/rules.mk10
-rw-r--r--keyboards/zinc/rules.mk6
-rw-r--r--keyboards/zj68/rules.mk5
-rwxr-xr-xkeyboards/zlant/keymaps/default/keymap.c16
-rwxr-xr-xkeyboards/zlant/rules.mk5
-rw-r--r--keyboards/zoo/wampus/rules.mk5
-rw-r--r--keyboards/ztboards/after/rules.mk5
-rw-r--r--keyboards/ztboards/noon/rules.mk5
-rw-r--r--keyboards/zvecr/split_blackpill/rules.mk5
-rw-r--r--keyboards/zvecr/zv48/rules.mk5
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c11
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/bcat/readme.md2
-rw-r--r--layouts/community/60_tsangan_hhkb/bcat/keymap.c11
-rw-r--r--layouts/community/60_tsangan_hhkb/bcat/readme.md2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c13
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/bcat/readme.md2
-rw-r--r--layouts/community/ergodox/coderkun_neo2/keymap.c265
-rw-r--r--layouts/community/ergodox/coderkun_neo2/readme.md129
-rw-r--r--layouts/community/ergodox/coderkun_neo2/rules.mk3
-rw-r--r--layouts/community/ergodox/drashna/config.h7
-rw-r--r--layouts/community/ergodox/drashna/keymap.c44
-rw-r--r--layouts/community/ergodox/drashna/rules.mk13
-rw-r--r--layouts/community/ortho_4x12/ajp10304/keymap.c40
-rw-r--r--layouts/community/ortho_4x12/ajp10304/readme.md21
-rw-r--r--layouts/community/ortho_4x12/bifbofii/keymap.c173
-rw-r--r--layouts/community/ortho_4x12/bifbofii/readme.md89
-rw-r--r--layouts/community/ortho_4x12/bifbofii/rules.mk1
-rw-r--r--layouts/community/ortho_4x12/drashna/keymap.c57
-rw-r--r--layouts/community/ortho_4x12/drashna/rules.mk24
-rw-r--r--layouts/community/ortho_5x12/drashna/rules.mk1
-rw-r--r--layouts/community/ortho_5x12/riblee/keymap.c24
-rw-r--r--layouts/community/ortho_5x12/riblee/readme.md21
-rw-r--r--layouts/community/split_3x6_3/bcat/config.h9
-rw-r--r--layouts/community/split_3x6_3/bcat/keymap.c33
-rw-r--r--layouts/community/split_3x6_3/bcat/readme.md2
-rw-r--r--layouts/community/split_3x6_3/bcat/rules.mk4
-rw-r--r--layouts/community/split_3x6_3/drashna/config.h4
-rw-r--r--layouts/community/split_3x6_3/drashna/keymap.c5
-rw-r--r--layouts/community/split_3x6_3/drashna/rules.mk34
-rw-r--r--layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json2
-rw-r--r--layouts/default/65_ansi_split_bs/info.json2
-rw-r--r--layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c24
-rw-r--r--layouts/default/65_iso_split_bs/info.json85
-rw-r--r--layouts/default/65_iso_split_bs/layout.json5
-rw-r--r--layouts/default/65_iso_split_bs/readme.md3
-rw-r--r--layouts/default/ortho_4x16/default_ortho_4x16/keymap.c61
-rw-r--r--layouts/default/ortho_4x16/info.json78
-rw-r--r--layouts/default/ortho_4x16/layout.json4
-rw-r--r--layouts/default/ortho_4x16/readme.md3
-rw-r--r--layouts/default/readme.md182
-rw-r--r--layouts/default/split_3x5_2/default_split_3x5_2/keymap.c23
-rw-r--r--layouts/default/split_3x5_2/info.json52
-rw-r--r--layouts/default/split_3x5_2/layout.json11
-rw-r--r--layouts/default/split_3x5_2/readme.md5
-rw-r--r--layouts/default/tkl_f13_ansi/default_tkl_f13_ansi/keymap.c29
-rw-r--r--layouts/default/tkl_f13_ansi/info.json104
-rw-r--r--layouts/default/tkl_f13_ansi/layout.json6
-rw-r--r--layouts/default/tkl_f13_ansi/readme.md3
-rw-r--r--layouts/default/tkl_f13_ansi_tsangan/default_tkl_f13_ansi_tsangan/keymap.c29
-rw-r--r--layouts/default/tkl_f13_ansi_tsangan/info.json103
-rw-r--r--layouts/default/tkl_f13_ansi_tsangan/layout.json6
-rw-r--r--layouts/default/tkl_f13_ansi_tsangan/readme.md3
-rw-r--r--layouts/default/tkl_f13_iso/default_tkl_f13_iso/keymap.c29
-rw-r--r--layouts/default/tkl_f13_iso/info.json105
-rw-r--r--layouts/default/tkl_f13_iso/layout.json6
-rw-r--r--layouts/default/tkl_f13_iso/readme.md3
-rw-r--r--layouts/default/tkl_f13_iso_tsangan/default_tkl_f13_iso_tsangan/keymap.c29
-rw-r--r--layouts/default/tkl_f13_iso_tsangan/info.json104
-rw-r--r--layouts/default/tkl_f13_iso_tsangan/layout.json6
-rw-r--r--layouts/default/tkl_f13_iso_tsangan/readme.md3
-rw-r--r--layouts/default/tkl_nofrow_ansi/info.json4
-rw-r--r--layouts/default/tkl_nofrow_iso/default_tkl_nofrow_iso/keymap.c24
-rw-r--r--layouts/default/tkl_nofrow_iso/info.json91
-rw-r--r--layouts/default/tkl_nofrow_iso/layout.json5
-rw-r--r--layouts/default/tkl_nofrow_iso/readme.md3
-rwxr-xr-xlib/python/qmk/cli/doctor/main.py7
-rw-r--r--lib/python/qmk/cli/format/c.py29
-rwxr-xr-xlib/python/qmk/cli/format/python.py3
-rwxr-xr-xlib/python/qmk/cli/generate/compilation_database.py3
-rw-r--r--lib/python/qmk/cli/generate/docs.py16
-rw-r--r--lib/python/qmk/cli/pytest.py4
-rw-r--r--lib/python/qmk/commands.py8
-rw-r--r--lib/python/qmk/constants.py2
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h26
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h2
-rw-r--r--platforms/chibios/bootloader.c2
-rw-r--r--platforms/chibios/eeprom_teensy.c213
-rw-r--r--quantum/action.c83
-rw-r--r--quantum/action.h2
-rw-r--r--quantum/backlight/backlight_avr.c8
-rw-r--r--quantum/dynamic_keymap.c1
-rw-r--r--quantum/encoder.c6
-rw-r--r--quantum/joystick.h2
-rw-r--r--quantum/keymap_extras/keymap_lithuanian_azerty.h2
-rw-r--r--quantum/keymap_extras/keymap_slovak.h9
-rw-r--r--quantum/keymap_extras/sendstring_canadian_multilingual.h2
-rw-r--r--quantum/keymap_extras/sendstring_lithuanian_azerty.h4
-rw-r--r--quantum/keymap_extras/sendstring_slovak.h2
-rw-r--r--quantum/led_matrix/animations/solid_reactive_wide.h4
-rw-r--r--quantum/matrix.c15
-rw-r--r--quantum/process_keycode/process_joystick.c5
-rw-r--r--quantum/quantum.c1
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c8
-rw-r--r--readme.md4
-rw-r--r--tmk_core/protocol/arm_atsam/usb/compiler.h556
-rw-r--r--tmk_core/protocol/arm_atsam/usb/udi_cdc.c16
-rw-r--r--tmk_core/protocol/arm_atsam/usb/usb_device_udd.c5
-rw-r--r--tmk_core/protocol/chibios/usb_main.c2
-rw-r--r--users/ajp10304/ajp10304.c10
-rw-r--r--users/ajp10304/ajp10304.h2
-rw-r--r--users/ajp10304/readme.md21
-rw-r--r--users/bcat/bcat.c10
-rw-r--r--users/bcat/bcat.h36
-rw-r--r--users/bcat/bcat_oled.c216
-rw-r--r--users/bcat/bcat_oled.h55
-rw-r--r--users/bcat/bcat_oled_pet.h73
-rw-r--r--users/bcat/bcat_oled_pet_isda.c134
-rw-r--r--users/bcat/bcat_oled_pet_luna.c168
-rw-r--r--users/bcat/bcat_rgblight.c22
-rwxr-xr-xusers/bcat/compile.sh52
-rw-r--r--users/bcat/config.h79
-rw-r--r--users/bcat/readme.md3
-rw-r--r--users/bcat/rules.mk43
-rw-r--r--users/byungyoonc/byungyoonc.c48
-rw-r--r--users/byungyoonc/byungyoonc.h27
-rw-r--r--users/byungyoonc/readme.md14
-rw-r--r--users/byungyoonc/rules.mk1
-rw-r--r--users/byungyoonc/saturated_solid_multisplash.h50
-rw-r--r--users/drashna/callbacks.c211
-rw-r--r--users/drashna/callbacks.h25
-rw-r--r--users/drashna/callbacks.md71
-rw-r--r--users/drashna/config.h69
-rw-r--r--users/drashna/drashna.c357
-rw-r--r--users/drashna/drashna.h81
-rw-r--r--users/drashna/drashna_font.h1404
-rw-r--r--users/drashna/keyrecords/autocorrection/autocorrection.c170
-rw-r--r--users/drashna/keyrecords/autocorrection/autocorrection.h10
-rwxr-xr-xusers/drashna/keyrecords/autocorrection/make_autocorrection_data.py274
-rw-r--r--users/drashna/keyrecords/autocorrection/readme.md301
-rw-r--r--users/drashna/keyrecords/caps_word.c83
-rw-r--r--users/drashna/keyrecords/caps_word.h8
-rw-r--r--users/drashna/keyrecords/capwords.md36
-rw-r--r--users/drashna/keyrecords/keycodes.md18
-rw-r--r--users/drashna/keyrecords/process_records.c242
-rw-r--r--users/drashna/keyrecords/process_records.h147
-rw-r--r--users/drashna/keyrecords/readme.md9
-rw-r--r--users/drashna/keyrecords/secrets.md (renamed from users/drashna/readme_secrets.md)0
-rw-r--r--users/drashna/keyrecords/tap_dance.md121
-rw-r--r--users/drashna/keyrecords/tap_dances.c67
-rw-r--r--users/drashna/keyrecords/tap_dances.h31
-rw-r--r--users/drashna/keyrecords/tapping.c64
-rw-r--r--users/drashna/keyrecords/unicode.c294
-rw-r--r--users/drashna/keyrecords/unicode.md27
-rw-r--r--users/drashna/keyrecords/wrappers.h266
-rw-r--r--users/drashna/keyrecords/wrappers.md (renamed from users/drashna/readme_wrappers.md)0
-rw-r--r--users/drashna/oled/drashna_font.h1404
-rw-r--r--users/drashna/oled/oled_stuff.c1120
-rw-r--r--users/drashna/oled/oled_stuff.h159
-rw-r--r--users/drashna/oled/readme.md42
-rw-r--r--users/drashna/oled/sh110x.c860
-rw-r--r--users/drashna/oled_stuff.c446
-rw-r--r--users/drashna/oled_stuff.h131
-rw-r--r--users/drashna/pointing/pointing.c125
-rw-r--r--users/drashna/pointing/pointing.h10
-rw-r--r--users/drashna/pointing/readme.md19
-rw-r--r--users/drashna/post_config.h21
-rw-r--r--users/drashna/process_records.c224
-rw-r--r--users/drashna/process_records.h130
-rw-r--r--users/drashna/readme.md24
-rw-r--r--users/drashna/readme_handlers.md97
-rw-r--r--users/drashna/readme_keycodes.md10
-rw-r--r--users/drashna/readme_rgb.md43
-rw-r--r--users/drashna/readme_tap_dance.md119
-rw-r--r--users/drashna/rgb/readme.md52
-rw-r--r--users/drashna/rgb/rgb_matrix_stuff.c129
-rw-r--r--users/drashna/rgb/rgb_matrix_stuff.h15
-rw-r--r--users/drashna/rgb/rgb_stuff.c117
-rw-r--r--users/drashna/rgb/rgb_stuff.h12
-rw-r--r--users/drashna/rgb_matrix_stuff.c97
-rw-r--r--users/drashna/rgb_matrix_stuff.h25
-rw-r--r--users/drashna/rgb_stuff.c132
-rw-r--r--users/drashna/rgb_stuff.h25
-rw-r--r--users/drashna/rgblight_breathe_table.h17
-rw-r--r--users/drashna/rules.mk87
-rw-r--r--users/drashna/split/readme.md29
-rw-r--r--users/drashna/split/transport_sync.c239
-rw-r--r--users/drashna/split/transport_sync.h26
-rw-r--r--users/drashna/tap_dances.c72
-rw-r--r--users/drashna/tap_dances.h44
-rw-r--r--users/drashna/template.c17
-rw-r--r--users/drashna/template.h17
-rw-r--r--users/drashna/transport_sync.c173
-rw-r--r--users/drashna/transport_sync.h36
-rw-r--r--users/drashna/wrappers.h278
-rwxr-xr-xusers/ericgebhart/altlocal_keys.c94
-rw-r--r--users/ericgebhart/altlocal_keys.h36
-rw-r--r--users/ericgebhart/base_layers.h283
-rw-r--r--users/ericgebhart/caps_word.c81
-rw-r--r--users/ericgebhart/caps_word.h35
-rw-r--r--users/ericgebhart/combos.def10
-rwxr-xr-xusers/ericgebhart/config.h23
-rwxr-xr-x[-rw-r--r--]users/ericgebhart/core_keys.h233
-rwxr-xr-x[-rw-r--r--]users/ericgebhart/core_keysets.h492
-rw-r--r--users/ericgebhart/edge_keys.h238
-rwxr-xr-x[-rw-r--r--]users/ericgebhart/ericgebhart.c590
-rwxr-xr-x[-rw-r--r--]users/ericgebhart/ericgebhart.h80
-rwxr-xr-xusers/ericgebhart/layers.h677
-rw-r--r--users/ericgebhart/layouts.h720
-rw-r--r--users/ericgebhart/mod_layer.h178
-rwxr-xr-xusers/ericgebhart/oled_stuff.c303
-rwxr-xr-xusers/ericgebhart/oled_stuff.h24
-rwxr-xr-xusers/ericgebhart/process_records.c255
-rwxr-xr-x[-rw-r--r--]users/ericgebhart/readme.md292
-rwxr-xr-xusers/ericgebhart/rules.mk28
-rwxr-xr-xusers/ericgebhart/tap_dances.c269
-rwxr-xr-xusers/ericgebhart/tap_dances.h19
-rw-r--r--users/jonavin/config.h5
-rw-r--r--users/jonavin/readme.md4
-rw-r--r--users/mnil/mnil.c16
-rw-r--r--users/noroadsleft/noroadsleft.c83
-rw-r--r--users/noroadsleft/noroadsleft.h2
-rw-r--r--users/noroadsleft/readme.md43
-rw-r--r--users/riblee/riblee.c45
-rw-r--r--users/riblee/riblee.h1
-rw-r--r--users/scheiklp/koy_keys_on_quertz_de_latin1.h1
-rw-r--r--users/stanrc85/config.h10
-rw-r--r--users/uqs/config.h40
-rw-r--r--users/uqs/rules.mk24
-rw-r--r--users/uqs/uqs.c584
-rw-r--r--users/uqs/uqs.h77
-rw-r--r--users/zigotica/rows.h20
-rw-r--r--users/zigotica/zigotica.h2
-rwxr-xr-xutil/qmk_install.sh2
6214 files changed, 163675 insertions, 46077 deletions
diff --git a/.gitattributes b/.gitattributes
index a0fd4fed62..30a783f26c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,69 +2,70 @@
* text=auto
# sources
-*.c text
-*.cc text
-*.cxx text
-*.cpp text
-*.c++ text
-*.hpp text
-*.h text
-*.h++ text
-*.hh text
-*.bat text
-*.coffee text
-*.css text
-*.htm text
-*.html text
-*.inc text
-*.ini text
-*.js text
-*.jsx text
-*.json text
-*.less text
-*.php text
-*.pl text
-*.py text
-*.rb text
-*.sass text
-*.scm text
-*.scss text
-*.sh text
-*.sql text
-*.styl text
-*.ts text
-*.xml text
-*.xhtml text
+*.c text eol=lf
+*.cc text eol=lf
+*.cxx text eol=lf
+*.cpp text eol=lf
+*.c++ text eol=lf
+*.hpp text eol=lf
+*.h text eol=lf
+*.h++ text eol=lf
+*.hh text eol=lf
+*.bat text eol=crlf
+*.cmd text eol=crlf
+*.coffee text eol=lf
+*.css text eol=lf
+*.htm text eol=lf
+*.html text eol=lf
+*.inc text eol=lf
+*.ini text eol=crlf
+*.js text eol=lf
+*.jsx text eol=lf
+*.json text eol=lf
+*.less text eol=lf
+*.php text eol=lf
+*.pl text eol=lf
+*.py text eol=lf
+*.rb text eol=lf
+*.sass text eol=lf
+*.scm text eol=lf
+*.scss text eol=lf
+*.sh text eol=lf
+*.sql text eol=lf
+*.styl text eol=lf
+*.ts text eol=lf
+*.xml text eol=lf
+*.xhtml text eol=lf
# make files (need to always use lf for compatibility with Windows 10 bash)
Makefile eol=lf
-*.mk eol=lf
+*.mk eol=lf
# make files (need to always use lf for compatibility with Windows 10 bash)
*.sh eol=lf
# documentation
-*.markdown text
-*.md text
-*.mdwn text
-*.mdown text
-*.mkd text
-*.mkdn text
-*.mdtxt text
-*.mdtext text
-*.txt text
-AUTHORS text
-CHANGELOG text
-CHANGES text
-CONTRIBUTING text
-COPYING text
-INSTALL text
-license text
-LICENSE text
-NEWS text
-readme text
-*README* text
-TODO text
+*.markdown text eol=lf
+*.md text eol=lf
+*.mdwn text eol=lf
+*.mdown text eol=lf
+*.mkd text eol=lf
+*.mkdn text eol=lf
+*.mdtxt text eol=lf
+*.mdtext text eol=lf
+*.txt text eol=lf
+AUTHORS text eol=lf
+CHANGELOG text eol=lf
+CHANGES text eol=lf
+CONTRIBUTING text eol=lf
+COPYING text eol=lf
+INSTALL text eol=lf
+license text eol=lf
+LICENSE text eol=lf
+NEWS text eol=lf
+readme text eol=lf
+*README* text eol=lf
+TODO text eol=lf
GRAPHICS
*.ai binary
@@ -82,7 +83,7 @@ GRAPHICS
*.png binary
*.psb binary
*.psd binary
-*.svg text
+*.svg text eol=lf
*.svgz binary
*.tif binary
*.tiff binary
diff --git a/.github/workflows/format.yaml b/.github/workflows/format.yaml
index f1525526ce..ba0a86aa78 100644
--- a/.github/workflows/format.yaml
+++ b/.github/workflows/format.yaml
@@ -19,14 +19,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - name: Install dependencies
- run: |
- apt-get update && apt-get install -y dos2unix
-
- uses: actions/checkout@v2
with:
fetch-depth: 0
+ - name: Install dependencies
+ run: |
+ pip3 install -r requirements-dev.txt
+
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:
diff --git a/.github/workflows/format_push.yaml b/.github/workflows/format_push.yaml
index b79130f17a..4b51213b36 100644
--- a/.github/workflows/format_push.yaml
+++ b/.github/workflows/format_push.yaml
@@ -13,14 +13,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - name: Install dependencies
- run: |
- apt-get update && apt-get install -y dos2unix
-
- uses: actions/checkout@v2
with:
fetch-depth: 0
+ - name: Install dependencies
+ run: |
+ pip3 install -r requirements-dev.txt
+
- name: Run qmk formatters
shell: 'bash {0}'
run: |
diff --git a/.gitignore b/.gitignore
index 768f40b191..3cc40dc2ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,7 +18,6 @@
# QMK-specific
api_data/v1
-doxygen/
quantum/version.h
*.bin
*.eep
diff --git a/Doxyfile b/Doxyfile
index 218d77b4dd..4b0ea3f086 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -21,7 +21,7 @@ DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QMK Firmware"
PROJECT_NUMBER = https://github.com/qmk/qmk_firmware
PROJECT_BRIEF = "Keyboard controller firmware for Atmel AVR and ARM USB families"
-OUTPUT_DIRECTORY = doxygen
+OUTPUT_DIRECTORY = .build/doxygen
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
@@ -145,7 +145,7 @@ FILE_PATTERNS = *.c \
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS = */protocol/arm_atsam/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
@@ -209,7 +209,7 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
-PREDEFINED =
+PREDEFINED = __DOXYGEN__ PROGMEM
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
diff --git a/book.json b/book.json
deleted file mode 100644
index 79206bf35a..0000000000
--- a/book.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "structure": {
- "summary": "_summary.md"
- },
- "plugins" : [
- "edit-link",
- "forkmegithub",
- "hints",
- "page-toc",
- "terminal",
- "toolbar",
- "bulk-redirect"
- ],
- "pluginsConfig": {
- "edit-link": {
- "base": "https://github.com/qmk/qmk_firmware/edit/master/docs",
- "label": "Suggest an edit"
- },
- "forkmegithub": {
- "color": "red",
- "url": "https://github.com/qmk/qmk_firmware"
- },
- "page-toc": {
- "selector": ".markdown-section h1, .markdown-section h2"
- },
- "terminal": {
- "copyButtons": true,
- "fade": false,
- "style": "flat"
- },
- "toolbar": {
- "buttons": [
- {
- "label": "QMK Firmware",
- "icon": "fa fa-github",
- "url": "https://github.com/qmk/qmk_firmware"
- }
- ]
- },
- "bulk-redirect": {
- "basepath": "/",
- "redirectsFile": "docs/redirects.json"
- }
- },
- "root": "./docs/"
-}
diff --git a/build_keyboard.mk b/build_keyboard.mk
index c12aa0fce0..6473e3e473 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -425,8 +425,7 @@ OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" \
--DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
--DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
+-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(PLATFORM_SRC)
diff --git a/data/mappings/keyboard_aliases.json b/data/mappings/keyboard_aliases.json
index 60c91b1bfc..c9467f7c84 100644
--- a/data/mappings/keyboard_aliases.json
+++ b/data/mappings/keyboard_aliases.json
@@ -344,6 +344,9 @@
'mechlovin/hannah65/mechlovin9': {
target: 'mechlovin/mechlovin9/rev1'
},
+ 'mechlovin/hex4b': {
+ target: 'mechlovin/hex4b/rev1'
+ },
'melgeek/z70ultra': {
target: 'melgeek/z70ultra/rev1'
},
diff --git a/data/templates/avr/rules.mk b/data/templates/avr/rules.mk
index 9906266f48..1275531ef6 100644
--- a/data/templates/avr/rules.mk
+++ b/data/templates/avr/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/data/templates/ps2avrgb/rules.mk b/data/templates/ps2avrgb/rules.mk
index b374eca336..1bbfa8fa0e 100644
--- a/data/templates/ps2avrgb/rules.mk
+++ b/data/templates/ps2avrgb/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/docs/_langs.md b/docs/_langs.md
index 3fecd72da6..8b08c34513 100644
--- a/docs/_langs.md
+++ b/docs/_langs.md
@@ -1,9 +1,4 @@
- Translations
- [:uk: English](/)
- - [:cn: 中文](/zh-cn/)
- - [:es: Español](/es/)
- - [:fr: Français](/fr-fr/)
- - [:israel: עברית](/he-il/)
- - [:brazil: Português](/pt-br/)
- - [:ru: Русский](/ru-ru/)
+ - [:cn: 简体中文](/zh-cn/)
- [:jp: 日本語](/ja/)
diff --git a/docs/api_docs.md b/docs/api_docs.md
index 5032dbc87e..eefb61a54d 100644
--- a/docs/api_docs.md
+++ b/docs/api_docs.md
@@ -62,7 +62,7 @@ This shows us that the job has made it through the queue and is currently runnin
Once your compile job has finished you'll check the `result` key. The value of this key is a hash containing several key bits of information:
-* `firmware_binary_url`: A list of URLs for the the flashable firmware
-* `firmware_keymap_url`: A list of URLs for the the `keymap.c`
+* `firmware_binary_url`: A list of URLs for the flashable firmware
+* `firmware_keymap_url`: A list of URLs for the `keymap.c`
* `firmware_source_url`: A list of URLs for the full firmware source code
* `output`: The stdout and stderr for this compile job. Errors will be found here.
diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md
index 333c128ccb..8bde6c88f7 100644
--- a/docs/breaking_changes.md
+++ b/docs/breaking_changes.md
@@ -24,7 +24,7 @@ The next Breaking Change is scheduled for February 26, 2022.
### Important Dates
-* [x] 2022 Nov 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
+* [x] 2021 Nov 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Jan 31 - `develop` closed to new PR's.
* [ ] 2022 Jan 31 - Call for testers.
* [ ] 2022 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 520da06c41..dfbd4c6a28 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -54,7 +54,7 @@ or in keymap directory
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
-Ψ Compiling keymap with make make gh60/satan:colemak
+Ψ Compiling keymap with make gh60/satan:colemak
...
```
@@ -481,5 +481,20 @@ This command runs the python test suite. If you make changes to python code you
**Usage**:
```
-qmk pytest
+qmk pytest [-t TEST]
```
+
+**Examples**:
+
+Run entire test suite:
+
+ qmk pytest
+
+Run test group:
+
+ qmk pytest -t qmk.tests.test_cli_commands
+
+Run single test:
+
+ qmk pytest -t qmk.tests.test_cli_commands.test_c2json
+ qmk pytest -t qmk.tests.test_qmk_path
diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md
index eb3e2c3e57..1f46a1c634 100644
--- a/docs/compatible_microcontrollers.md
+++ b/docs/compatible_microcontrollers.md
@@ -37,8 +37,8 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
-
- ### WestBerryTech (WB32)
+
+### WestBerryTech (WB32)
* [WB32F3G71xx](http://www.westberrytech.com)
@@ -57,4 +57,4 @@ There is limited support for one of Atmel's ATSAM microcontrollers, that being t
### GigaDevice
-[ChibiOS-Contrib](https://github.com/ChibiOS/ChibiOS-Contrib) has support for the GigaDevice [GD32VF103 series](https://www.gigadevice.com/products/microcontrollers/gd32/risc-v/mainstream-line/gd32vf103-series/) microcontrollers and provides configurations for the [SiPeed Longan Nano](https://longan.sipeed.com/en/) development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers. \ No newline at end of file
+[ChibiOS-Contrib](https://github.com/ChibiOS/ChibiOS-Contrib) has support for the GigaDevice [GD32VF103 series](https://www.gigadevice.com/products/microcontrollers/gd32/risc-v/mainstream-line/gd32vf103-series/) microcontrollers and provides configurations for the [SiPeed Longan Nano](https://longan.sipeed.com/en/) development board that uses this microcontroller. It is largely pin and feature compatible with STM32F103 and STM32F303 microcontrollers.
diff --git a/docs/config_options.md b/docs/config_options.md
index b661b55ee0..15ad945b22 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -61,6 +61,8 @@ This is a C header file that is one of the first things included, and will persi
* pins unused by the keyboard for reference
* `#define MATRIX_HAS_GHOST`
* define is matrix has ghost (unlikely)
+* `#define MATRIX_UNSELECT_DRIVE_HIGH`
+ * On un-select of matrix pins, rather than setting pins to input-high, sets them to output-high.
* `#define DIODE_DIRECTION COL2ROW`
* COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
* `#define DIRECT_PINS { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
diff --git a/docs/configurator_step_by_step.md b/docs/configurator_step_by_step.md
index 965012a907..c3cc2bfcdb 100644
--- a/docs/configurator_step_by_step.md
+++ b/docs/configurator_step_by_step.md
@@ -43,7 +43,7 @@ Keycode Entry is accomplished in one of 3 ways:
## Step 5: Save Your Keymap for Future Changes
-When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.
+When you're satisfied with your keymap or just want to work on it later, press the `Download this QMK Keymap JSON File` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Upload a QMK Keymap JSON File` button.
!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
diff --git a/docs/contributing.md b/docs/contributing.md
index eb033d167f..91833e30df 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -109,7 +109,7 @@ Before opening a pull request, you can preview your changes if you have set up t
or if you only have Python 3 installed:
- python3 -m http.server 8936
+ python3 -m http.server 8936 --directory docs
and navigating to `http://localhost:8936/`.
@@ -165,4 +165,4 @@ To maintain a clear vision of how things are laid out in QMK we try to plan out
# What Does the Code of Conduct Mean for Me?
-Our [Code of Conduct](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
+Our [Code of Conduct](https://qmk.fm/coc/) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index dd1654bd29..f9a6e1bcc8 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -408,7 +408,7 @@ The `val` is the value of the data that you want to write to EEPROM. And the `e
### Deferred Execution :id=deferred-execution
-QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers.
+QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk.
#### Deferred executor callbacks
diff --git a/docs/data_driven_config.md b/docs/data_driven_config.md
index c2ad4fed8f..38fb5dbf14 100644
--- a/docs/data_driven_config.md
+++ b/docs/data_driven_config.md
@@ -74,7 +74,7 @@ Whenever QMK generates a complete `info.json` it extracts information from `conf
If you are not sure how to edit this file or are not comfortable with Python [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and someone can help you with this part.
-### Add code to generate it
+### Add code to generate it :id=add-code-to-generate-it
The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:
diff --git a/docs/de/README.md b/docs/de/README.md
deleted file mode 100644
index f5f35d9d1c..0000000000
--- a/docs/de/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Quantum Mechanical Keyboard Firmware
-
-[![Aktuelle Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## Was ist QMK Firmware?
-
-QMK (*Quantum Mechanical Keyboard*) ist eine Open-Source-Community, welche die QMK-Firmware, die QMK-Toolbox, [qmk.fm](https://qmk.fm) und diese Dokumententation betreut. QMK-Firmware ist eine Weiterentwicklung der [tmk\_keyboard](https://github.com/tmk/tmk_keyboard)-Tastatur-Firmware mit vielen nützlichen Zusatzfunktionen für Atmel AVR-Prozessoren. Ursprünglich wurde sie für Produkte von [OLKB](https://olkb.com), das [ErgoDox EZ](https://www.ergodox-ez.com) und das [Clueboard](https://clueboard.co/) entwickelt. Im Laufe der Zeit wurde sie mit Hilfe von [ChibiOS](https://chibios.org) auch für die ARM-Architektur angepasst. Außerdem ist es inzwischen möglich, auch handverdrahtete Tastaturen und selbst geätzte PCBs mit QMK zu verwenden.
-
-## Bezugsquelle für QMK
-
-Wenn Du vorhast, deine Tastatur, Tastaturbelegung oder Features zu QMK beizusteuern, geht das am einfachsten, indem Du das [Repository auf GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) forkst, die Änderungen in deinem lokalen Repo vornimmst und anschließend einen [Pull Request](https://github.com/qmk/qmk_firmware/pulls) einreichst.
-
-Ansonsten kannst Du es als [zip](https://github.com/qmk/qmk_firmware/zipball/master) oder [tar](https://github.com/qmk/qmk_firmware/tarball/master) herunterladen, oder es direkt via git klonen (`git clone git@github.com:qmk/qmk_firmware.git` bzw. `git clone https://github.com/qmk/qmk_firmware.git`).
-
-
-## Anleitung fürs Kompilieren
-
-Bevor Du in der Lage bist, die Firmware zu kompilieren, musst Du eine [Entwicklungsumgebung](de/getting_started_build_tools.md) für AVR und/oder ARM aufsetzen. Danach kannst Du mit dem `make` Befehl eine Keymap für deine Tastatur erzeugen. Die Notation dafür ist:
-
- make planck/rev4:default
-
-Dies generiert die Revision `rev4` für eine Tastatur vom Type `planck` mit der `default` Tastaturbelegung. Nicht alle Tastaturen haben Revisionen (auch bekannt als Subprojekt oder Unterordner) weswegen dies auch ausgelassen werden kann:
-
- make preonic:default
-
-## Möglichkeiten der Anpassung
-
-QMK hat viele [Features](de/features.md), die es zu entdecken gibt. In der [Dokumentation](https://docs.qmk.fmk) kannst Du Dir einen Überblick verschaffen. Die meisten Features basieren darauf, die [Tastaturbelegung](de/keymap.md) anzupassen und das Verhalten der [Keycodes](de/keycodes.md) zu verändern.
diff --git a/docs/de/_summary.md b/docs/de/_summary.md
deleted file mode 100644
index ffbd292bd4..0000000000
--- a/docs/de/_summary.md
+++ /dev/null
@@ -1,122 +0,0 @@
-* [Anleitung für Anfänger](de/newbs.md)
- * [Erste Schritte](de/newbs_getting_started.md)
- * [Die erste Firmware](de/newbs_building_firmware.md)
- * [Firmware flashen](de/newbs_flashing.md)
- * [Testen und Debuggen](de/newbs_testing_debugging.md)
- * [Git Tips und Tricks](de/newbs_best_practices.md)
- * [Hilfreiche Ressourcen](de/newbs_learn_more_resources.md)
-
-* [QMK Basics](de/README.md)
- * [QMK Einführung](de/getting_started_introduction.md)
- * [QMK CLI](de/cli.md)
- * [QMK CLI Konfiguration](de/cli_configuration.md)
- * [Zu QMK beitragen](de/contributing.md)
- * [Anleitung für GitHub](de/getting_started_github.md)
- * [Nach Hilfe fragen](de/getting_started_getting_help.md)
-
-* [Breaking Changes](de/breaking_changes.md)
- * [2019 Aug 30](de/ChangeLog/20190830.md)
-
-* [FAQ](de/faq.md)
- * [Häufige Fragen](de/faq_general.md)
- * [Build/Kompilieren](de/faq_build.md)
- * [Debugging/Troubleshooting](de/faq_debug.md)
- * [Keymap](de/faq_keymap.md)
- * [Treiber Installation mit Zadig](de/driver_installation_zadig.md)
-
-* Detailierte Guides
- * [Build Tools installieren](de/getting_started_build_tools.md)
- * [Vagrant Guide](de/getting_started_vagrant.md)
- * [Build/Compile Anleitung](de/getting_started_make_guide.md)
- * [Firmware flashen](de/flashing.md)
- * [Funktionalität anpassen](de/custom_quantum_functions.md)
- * [Keymap Überblick](de/keymap.md)
-
-* [Hardware](de/hardware.md)
- * [AVR Prozessoren](de/hardware_avr.md)
- * [Treiber](de/hardware_drivers.md)
-
-* Referenz
- * [Tastatur Richtlinien](de/hardware_keyboard_guidelines.md)
- * [Konfigurations Optionen](de/config_options.md)
- * [Keycodes](de/keycodes.md)
- * [Coding Konventionen - C](de/coding_conventions_c.md)
- * [Coding Konventionen - Python](de/coding_conventions_python.md)
- * [Dokumentations Best Practices](de/documentation_best_practices.md)
- * [Dokumentations Templates](de/documentation_templates.md)
- * [Glossar](de/reference_glossary.md)
- * [Unit Testing](de/unit_testing.md)
- * [Nützliche Funktionen](de/ref_functions.md)
- * [Configurator Support](de/reference_configurator_support.md)
- * [info.json Format](de/reference_info_json.md)
- * [Python CLI Development](de/cli_development.md)
-
-* [Features](de/features.md)
- * [Basic Keycodes](de/keycodes_basic.md)
- * [US ANSI Shifted Keys](de/keycodes_us_ansi_shifted.md)
- * [Quantum Keycodes](de/quantum_keycodes.md)
- * [Advanced Keycodes](de/feature_advanced_keycodes.md)
- * [Audio](de/feature_audio.md)
- * [Auto Shift](de/feature_auto_shift.md)
- * [Backlight](de/feature_backlight.md)
- * [Bluetooth](de/feature_bluetooth.md)
- * [Bootmagic](de/feature_bootmagic.md)
- * [Combos](de/feature_combo.md)
- * [Command](de/feature_command.md)
- * [Debounce API](de/feature_debounce_type.md)
- * [DIP Switch](de/feature_dip_switch.md)
- * [Dynamic Macros](de/feature_dynamic_macros.md)
- * [Encoders](de/feature_encoders.md)
- * [Grave Escape](de/feature_grave_esc.md)
- * [Haptic Feedback](de/feature_haptic_feedback.md)
- * [HD44780 LCD Controller](de/feature_hd44780.md)
- * [Key Lock](de/feature_key_lock.md)
- * [Layouts](de/feature_layouts.md)
- * [Leader Key](de/feature_leader_key.md)
- * [LED Matrix](de/feature_led_matrix.md)
- * [Macros](de/feature_macros.md)
- * [Mouse Keys](de/feature_mouse_keys.md)
- * [OLED Driver](de/feature_oled_driver.md)
- * [One Shot Keys](de/one_shot_keys.md)
- * [Pointing Device](de/feature_pointing_device.md)
- * [PS/2 Mouse](de/feature_ps2_mouse.md)
- * [RGB Lighting](de/feature_rgblight.md)
- * [RGB Matrix](de/feature_rgb_matrix.md)
- * [Space Cadet](de/feature_space_cadet.md)
- * [Split Keyboard](de/feature_split_keyboard.md)
- * [Stenography](de/feature_stenography.md)
- * [Swap Hands](de/feature_swap_hands.md)
- * [Tap Dance](de/feature_tap_dance.md)
- * [Terminal](de/feature_terminal.md)
- * [Thermal Printer](de/feature_thermal_printer.md)
- * [Unicode](de/feature_unicode.md)
- * [Userspace](de/feature_userspace.md)
- * [Velocikey](de/feature_velocikey.md)
-
-* Für Maker und Modder
- * [Hand Wiring Guide](de/hand_wire.md)
- * [ISP Flashing Guide](de/isp_flashing_guide.md)
- * [ARM Debugging Guide](de/arm_debugging.md)
- * [I2C Driver](de/i2c_driver.md)
- * [SPI Driver](de/spi_driver.md)
- * [GPIO Controls](de/internals_gpio_control.md)
- * [Proton C Conversion](de/proton_c_conversion.md)
-
-* Für ein tieferes Verständnis
- * [Wie Tastaturen funktionieren](de/how_keyboards_work.md)
- * [QMK verstehen](de/understanding_qmk.md)
-
-* Andere Themen
- * [Eclipse mit QMK](de/other_eclipse.md)
- * [VSCode mit QMK](de/other_vscode.md)
- * [Support](de/getting_started_getting_help.md)
- * [Übersetzungen](de/translating.md)
-
-* QMK Internals (In Progress)
- * [Defines](de/internals_defines.md)
- * [Input Callback Reg](de/internals_input_callback_reg.md)
- * [Midi Device](de/internals_midi_device.md)
- * [Midi Device Setup Process](de/internals_midi_device_setup_process.md)
- * [Midi Util](de/internals_midi_util.md)
- * [Send Functions](de/internals_send_functions.md)
- * [Sysex Tools](de/internals_sysex_tools.md)
diff --git a/docs/de/cli.md b/docs/de/cli.md
deleted file mode 100644
index 259aeecf75..0000000000
--- a/docs/de/cli.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# QMK CLI (Kommandozeile)
-
-Diese Seite beschreibt die Einrichtung und den Umgang mit dem QMK CLI (Kommandozeile).
-
-# Übersicht
-
-Die QMK CLI vereinfacht das Zusammenbauen und Arbeiten mit QMK Tastaturen. Hier findest Du wichtige Befehle, um beispielsweise das Herunterladen und Kompilieren der QMK Firmware oder das Erstellen von Tastaturbelegungen (und vieles mehr) zu erleichtern.
-
-* [Globale CLI](#globale-cli)
-* [Lokale CLI](#lokale-cli)
-* [CLI-Befehle](#cli-befehle)
-
-# System-Anforderungen
-
-Die CLI benötigt Python 3.5 oder höher. Außerdem ist es nötig, die Packages laut [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt) zu installieren.
-
-# Globale CLI
-
-QMK bietet ein installierbares CLI, das Du zum Einrichten Deiner QMK Build-Umgebung verwenden kannst. Dieses ermöglicht Dir das Arbeiten mit QMK, und erleichtert das Arbeiten mit mehreren Kopien der `qmk_firmware`. Wir empfehlen, dieses CLI zu installieren und regelmäßig upzudaten.
-
-## Installation mit Homebrew (macOS, manche Linux)
-
-Solltest Du [Homebrew](https://brew.sh) installiert haben, kannst Du QMK per tap installieren:
-
-```
-brew tap qmk/qmk
-brew install qmk
-export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
-qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
-```
-
-## Installation mit easy_install oder pip
-
-Falls Du kein Homebrew hast, kannst Du QMK auch manuell installieren. Zuerst musst Du sicherstellen, dass Python 3.5 (oder höher) und pip installiert ist. Dann installiere QMK mit diesem Befehl:
-
-```
-pip3 install qmk
-export QMK_HOME='~/qmk_firmware' # Optional: setzt den Installationsort für `qmk_firmware`
-qmk setup # Dies klont `qmk/qmk_firmware` und richtet optional auch Deine Build-Umgebung ein
-```
-## Installation mit git Repo
-
-`git clone https://github.com/qmk/qmk_cli.git && cd qmk_cli && python3 setup.py install`
-
-## Packaging für andere Betriebssysteme
-
-Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme erstellen und pflegen. Falls Du ein Package für Dein OS erstellen möchtest, bitte befolge diese Richtlinien:
-
-* Verwende "Best Practices" für Dein OS, sollten sie mit diesen Richtlinien in Konflikt stehen.
- * Dokumentiere den Grund in einem Kommentar, wenn Du abweichen musstest.
-* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
-* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
-
-# CLI-Befehle
-
-## `qmk compile`
-
-Dieser Befehl erlaubt es dir, die Firmware - aus egal welchem Datei-Verzeichnis - zu compilen. Du kannst JSON-Exporte von <https://config.qmk.fm> oder Keymaps in der Repo kompilen.
-
-**Anwendung für Konfigurations-Exports**:
-
-```
-qmk compile <configuratorExport.json>
-```
-
-**Anwendung für Keymaps**:
-
-```
-qmk compile -kb <keyboard_name> -km <keymap_name>
-```
-
-## `qmk format-c`
-
-Dieser Befehl formatiert C-Code im clang-Format. Benutze ihn ohne Argumente, um den core-Code zu formatieren, oder benutze Namen von Dateien in der CLI, um den Befehl auf bestimmte Dateien anzuwenden.
-
-**Anwendung**:
-
-```
-qmk format-c [file1] [file2] [...] [fileN]
-```
-
-## `qmk config`
-
-Dieser Befehl konfiguriert das Verhalten von QMK. Für die volle `qmk config`-Dokumentation gehe zu [CLI-Konfiguration](cli_configuration.md).
-
-**Anwendung**:
-
-```
-qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
-```
-
-## `qmk docs`
-
-Dieser Befehl startet einen lokalen HTTP-Server, den Du zum Browsen oder Verbessern der Dokumentation verwenden kannst. Der Default-Port ist 8936.
-
-**Anwendung**:
-
-```
-qmk docs [-p PORT]
-```
-
-## `qmk doctor`
-
-Dieser Befehl untersucht Deine Umgebung und warnt Dich vor potentiellen Build- oder Flash-Problemen.
-
-**Anwendung**:
-
-```
-qmk doctor
-```
-
-## `qmk list-keyboards`
-
-Dieser Befehl listet alle zurzeit in `qmk_firmware` definierten Tastaturen/Keyboards auf.
-
-**Anwendung**:
-
-```
-qmk list-keyboards
-```
-
-## `qmk new-keymap`
-
-Dieser Befehl erstellt eine neue Keymap basierend auf einer existierenden Standard-Keymap eines bestimmten Keyboards.
-
-**Anwendung**:
-
-```
-qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
-```
-
-## `qmk format-py`
-
-Dieser Befehl formatiert Python-Code in `qmk_firmware`.
-
-**Anwendung**:
-
-```
-qmk format-py
-```
-
-## `qmk pytest`
-
-Dieser Befehl führt die Python Test Suite aus. Wenn Du Python-Code veränderst, solltest Du sicherstellen, dass der Test erfolgreich ausgeführt wurde.
-
-**Anwendung**:
-
-```
-qmk pytest
-```
diff --git a/docs/de/driver_installation_zadig.md b/docs/de/driver_installation_zadig.md
deleted file mode 100644
index bd04e05430..0000000000
--- a/docs/de/driver_installation_zadig.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Bootloader Treiber Installation mit Zadig
-
-QMK erscheint für den Host als normales HID Eingabegerät und benötigt deshalb keine zusätzlichen Treiber. Der Bootloader, den Du für das Flashen der Firmware benötigst, jedoch meistens schon.
-
-Hierzu gibt es zwei Ausnahmen: den Caterina Bootloader, meistens auf Pro Micros, sowie den HalfKay Bootloader auf PJRC Teensys. Diese erscheinen als serieller Port und als generisches HID Gerät und benötigen keine Treiber.
-
-Wir empfehlen deshalb [Zadig](https://zadig.akeo.ie/). Wenn Du die Entwicklungsumgebung mit MSYS2 oder WSL installiert hast, wird dich dass `qmk_install.sh` Skript gefragt haben, ob es die Treiber für dich installieren sollte.
-
-## Installation
-
-Versetze deine Tastatur in den Bootloader-Modus, entweder durch Betätigung des physischen `RESET` Schalters - meist auf der Unterseite der Platine - oder durch das Auslösen des Key-Codes `RESET` bzw. `KC_RESET` (sollte in der zur Tastatur gehörigen `keycode.c` zu entnehmen sein). Sollte deine Tastatur weder noch besitzen, versuche es damit die `Escape`-Taste oder `Leertaste + B` zu halten während Du die Tastatur mit dem PC verbindest (Siehe auch [Bootmagic](de/feature_bootmagic.md) für weitere Details). Ein paar Tastaturen benutzen das [Command](de/feature_command.md)-Feature an Stelle von Bootmagic; in diesem Fall kannst du mit den Tastenkombinationen `linkes Shift + rechtes Shift + B` oder `linkes Shift + rechtes Shift + Escape` zu jeder Zeit in den Bootloader wechseln solange die Tastatur verbunden ist.
-
-Eingie Tastaturen haben u.U. spezielle Anweisungen um in den Bootloader-Modus zu gelangen. Zum Beispiel kann die [Bootmagic-Lite](de/feature_bootmagic.md#bootmagic-lite)-Taste (default: Escape) auf eine andere Taste gemappt sein; oder die magische Kombination (default: linkes Shift+rechtes Shift) verwendet anstatt Shift die STRG-Tasten. Die zur Tastatur gehörige README sollte dir Aufschluss darüber geben wie der Bootloader-Modus ausgelöst werden kann wenn Du unsicher bist.
-
-Um ein Gerät mit USBaspLoader in den Bootloader-Modus zu versetzen, halte `BOOT` gedrückt während Du den `RESET`-Knopf drückst.
-Alternativ, halte `BOOT` gedrückt während Du das USB-Kabel einsteckst.
-
-Zadig sollte das Bootloader-Gerät automatisch erkennen. Manchmal musst Du zusätzlich noch **Options → List All Devices** auswählen.
-
- - Tastaturen mit Atmel AVR MCUs sollten als `ATm32U4DFU` (oder ähnlich) angezeigt werden, mit der Vendor ID `03EB`.
- - USBasp werden als `USBasp` angezeigt, mit VID/PID `16C0:05DC`.
- - Tastaturen AVR controller und dem QMK-DFU Bootloader haben den namen `<Tastatur Name> Bootloader` und die VID `03EB`.
- - Die meisten ARM Tastaturen werden als `STM32 BOOTLOADER` angezeigt, mit VID/PID `0483:DF11`.
-
-!> Sollte Zadig ein oder mehrere Geräte mit `HidUsb`-Treiber anzeigen, dann ist deine Tastatur wahrscheinlich nicht im Bootloader-Modus. Der Pfeil wird orange eingefärbt sein und Du wirst nach einer Bestätigung gefragt um Veränderungen am System vorzunehmen. In diesem Fall **fahre nicht fort**!
-
-Wenn der Pfeil grün angezeigt wird, wähle den Treiber aus und klicke auf **Treiber installieren**. Der `libusb-win32`-Treiber sollte gewöhnlich für AVR verwendet werden und `WinUSB` für ARM. Sollte es danach noch nicht möglich sein die Tastatur zu flashen, versuche es mit einem anderen Treiber. Für USBaspLoader Geräte, die über die Befehlszeile mit MSYS2 geflasht werden, wird der `libusbk`-Treiber empfohlen. Ansonsten sollte `libusb-win32` funktionieren wenn die QMK Toolbox verwendet wird.
-
-![Zadig mit Bootloader-Treiber korrekt installiert](https://i.imgur.com/b8VgXzx.png)
-
-Entferne nun deine Tastatur und verbinde sie erneut um sicherzugehen dass der neue Treiber erfolgreich installiert wurde. Wenn Du QMK Toolbox benutzt, starte die Anwendung zur Sicherheit einmal neu, da Veränderungen am Treiber manchmal nicht richtig erkannt werden. Wenn dies immer noch nicht erfolgreich war hilft es an dieser Stelle manchmal ein Neustart des Computers.
-
-## Wiederherstellung einer Installation für ein falsches Gerät
-
-Wenn Du feststellst dass Du anschließend auf deiner Tastatur nicht mehr tippen kannst, ist etwas bei der Installation schief gelaufen. Ein häufiger Fehler ist es dass die Tastatur nicht im Bootloader-Modus war und stattdessen der Treiber für das HID-Gerät ersetzt wurde. Dies kannst Du einfach mit Zadig überprüfen, eine funktionierende Tastatur verwendet als Treiber `HidUsb` auf allen Interfaces .
-
-![Eine funktionierende Tastatur aus Zadigs Sicht](https://i.imgur.com/Hx0E5kC.png)
-
-Öffne den Geräte-Manager und suche nach einem Gerät das wie deine Tastatur aussieht.
-
-![Die Tastatur mit dem falschen Treiber installiert, im Geräte-Manager](https://i.imgur.com/L3wvX8f.png)
-
-Rechtsklick und **Gerät deinstallieren** anklicken. Bitte gehe sicher dass in diesem Schritt auch **Treibersoftware für dieses Gerät löschen** markiert ist.
-
-![Der "Gerät deinstallieren"-Dialog, mit "Treibersoftware für dieses Gerät entfernen" markiert](https://i.imgur.com/aEs2RuA.png)
-
-Klick **Aktion → Suche nach veränderter Hardware**. Nun solltest Du wieder in der Lage sein normal zu tippen. Vergewissere dich mit Hilfe von Zadig dass die Tastatur nun `HidUsb` als Treiber verwendet. Wenn dies der Fall ist sollte wieder alles funktionieren.
diff --git a/docs/de/newbs.md b/docs/de/newbs.md
deleted file mode 100644
index 61139a99e1..0000000000
--- a/docs/de/newbs.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Anleitung für absolute Beginner
-QMK ist eine mächtige Open Source Firmware für mechanische Tastaturen. Mit QMK kannst Du deine Tastatur sowohl sehr einfach als auch sehr umfangreich anpassen. Menschen unterschiedlichen Wissensstandes - vom kompletten Anfänger bis zum erfahrenen Programmierer - haben ihre Tastaturen mit QMK erfolgreich auf ihre persönlichen Bedürfnisse angepasst. Diese Anleitung soll Dir unabhängig von deinen Vorkenntnissen dabei helfen dies ebenfalls zu bewältigen.
-
-Bist Du unsicher ob deine Tastatur QMK unterstützt? Wenn es eine mechanische Tastatur ist, die Du selbst gebaut hast, stehen deine Chancen gut. Wir unterstützen eine [Vielzahl](https://qmk.fm/keyboards/) selbst gebauter Tastaturen, sodass selbst wenn deine jetzige Tastatur nicht unterstützt wird Du keine Probleme haben solltest eine für deine Anforderungen zu finden.
-
-## Übersicht
-
-Diese Anleitung ist in 7 Abschnitte unterteilt:
-
-* [Die ersten Schritte](newbs_getting_started.md)
-* [Die erste Firmware auf der Kommandozeile erzeugen](newbs_building_firmware.md)
-* [Die erste Firmware mit der Online GUI erzeugen](newbs_building_firmware_configurator.md)
-* [Firmware flashen](newbs_flashing.md)
-* [Testen und Debuggen](newbs_testing_debugging.md)
-* [Git Leitfaden](newbs_best_practices.md)
-* [Weitere hilfreiche Ressourcen für Anfänger](newbs_learn_more_resources.md)
-
-Diese Anleitung richtet sich an Personen, die vorher noch nie Software kompiliert haben. Die Entscheidungen und Empfehlungen basieren auf dieser Grundannahme. Es gibt unterschiedliche Herangehensweisen für viele der Prozeduren und wir unterstützen die meisten Alternativen. Wenn Du mal nicht weiter weißt oder Dir nicht sicher bist, wie Du an ein Problem herangehen sollst, kannst Du uns gerne [um Hilfe bitten](getting_started_getting_help.md).
-
-## Weitere Ressourcen
-
-* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – Ein äußerst hilfreicher Blog eines Community-Mitglieds, der einige Grundlagen der QMK-Firmware aus der Sicht des Benutzers erklärt (auf Englisch).
diff --git a/docs/de/newbs_building_firmware.md b/docs/de/newbs_building_firmware.md
deleted file mode 100644
index b6d4840249..0000000000
--- a/docs/de/newbs_building_firmware.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Eine eigene Firmware erstellen
-
-Nachdem Du nun eine funktionierende Entwicklungsumgebung aufgesetzt hast, bist Du nun bereit, deine eigene Firmware zu erstellen. Dieses Sektion des Guides wird zwischen drei Programmen hin- und herwechseln: deinem Dateimanager, deinem Texteditor und der Befehlszeile. Lasse diese drei Fenster geöffnet, bis Du fertig und zufrieden mit deiner Tastatur-Firmware bist.
-
-Solltest Du die Befehlszeile zwischenzeitlich geschlossen haben, vergiss nicht wieder in das richtige Verzeichnis zu navigieren, benutze dazu den Befehl `cd qmk_firmware`.
-
-## Navigiere in deinen Keymap Ordner
-
-Beginne damit, in das `keymaps` Verzeichnis für deine Tastatur zu navigieren.
-
-Wenn Du macOS oder Windows benutzt, kannst Du einfach in das keymaps Verzeichnis wechseln.
-
-?> macOS:<br>
- open keyboards/<keyboard_folder>/keymaps
-
-?> Windows:<br>
- start .\\keyboards\\<keyboard_folder>\\keymaps
-
-## Eine Kopie der `default` Tastaturbelegung erstellen
-
-Wenn Du den `keymaps` Ordner geöffnet hast, solltest Du zuerst eine Kopie des `default` Verzeichnisses erstellen. Wir empfehlen dafür deinen GitHub Benutzernamen zu verweden, aber Du kannst auch jeden anderen Namen verwenden solange er nur aus Kleinbuchstaben, Zahlen und Unterstrichen besteht.
-
-Um den Prozess zu automatisieren kannst Du dazu auch das Skript `new_keymap.sh` verwenden.
-
-Navigiere dazu in das `qmk_firmware/util` Verzeichnis und gib folgenden Befehl ein:
-
-```
-./new_keymap.sh <keyboard path> <username>
-```
-
-Um zum Beispiel den Benutzernamen John für die Tastaturbelegung eines 1up60hse zu verwenden, würdest Du Folgendes eingeben:
-
-```
-./new_keymap.sh 1upkeyboards/1up60hse john
-```
-
-## Öffne `keymap.c` in deinem bevorzugtem Text Editor
-
-Öffne deine `keymap.c`. In dieser Datei findest Du die Strukturen, die das Verhalten deiner Tastatur bestimmen. Oben in der `keymap.c` befinden sich Definitionen (defines) und Aufzählungen (enums), die die Tastaturbelegung leserlicher machen sollen. Weiter unten wirst Du eine Zeile finden, die wie folgt aussieht:
-
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-Diese Zeile markiert den Anfang der Liste der Ebenen (Layers). Darunter befinden sich Zeilen die entweder `LAYOUT` oder `KEYMAP` enthalten, das deutet auf den Start einer Ebene hin. Danach folgt eine Liste von Tasten, die dieser Ebene zugewiesen sind.
-
-!> Beim Bearbeiten einer Tastaturbelegung solltest Du darauf achten, keine Kommata hinzuzufügen oder zu entfernen. Ansonsten kann dies dazu führen, dass deine Firmware nicht mehr kompiliert und es ist nicht immer einfach festzustellen, wo genau ein Komma zuviel oder zu wenig ist. Die letzte Zeile hat am Ende kein Komma, die Zeilen davor jedoch schon.
-
-## Personalisiere die Tastaturbelegung nach deinen Wünschen
-
-Wie Du diesen Schritt abschließt ist vollkommen Dir überlassen. Ändere die eine Sache die Dich stört oder verändere alles von Grund auf. Du kannst Ebenen entfernen die Du nicht brauchst oder Neue hinzufügen, bis zu 32 Stück. Die folgende Dokumentation verrät Dir was Du hier alles definieren kannst:
-
-* [Keycodes](de/keycodes.md)
-* [Features](de/features.md)
-* [FAQ](de/faq.md)
-
-?> Während Du langsam ein Gefühl dafür kriegst wie Keymaps funktionieren, solltest Du darauf achten nicht zuviel auf einmal zu verändern. Größere Änderungen machen es schwieriger, Probleme zu debuggen.
-
-## Deine Firmware erzeugen
-
-Wenn Du damit fertig bist, deine Tastaturbelegung anzupassen, musst Du noch die Firmware erzeugen. Öffne dazu wieder die Befehlszeile und führe folgenden Befehl aus:
-
- make <my_keyboard>:<my_keymap>
-
-Wenn deine Tastaturbelegung z.B. "xyverz" heißt und Du die Belegung für ein rev5 planck erzeugen möchtest, lautet der Befehl:
-
- make planck/rev5:xyverz
-
-Während des Kompiliervorgangs wird viel Text auf dem Bildschirm ausgegeben. Es sollte am Ende mit etwas enden das ungefähr so aussieht:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex [OK]
- * File size is fine - 18392/28672
-```
-
-## Deine Firmware flashen
-Bitte fahre mit [Firmware flashen](de/newbs_flashing.md) fort, um zu erfahren, wie Du deine neue Firmware auf deine Tastatur flashen kannst.
diff --git a/docs/de/newbs_flashing.md b/docs/de/newbs_flashing.md
deleted file mode 100644
index 940438669e..0000000000
--- a/docs/de/newbs_flashing.md
+++ /dev/null
@@ -1,369 +0,0 @@
-# Deine Tastatur flashen
-
-Nachdem deine Firmware nun fertig ist musst Du Sie noch auf deine Tastatur flashen.
-
-## Flash-Vorgang mit QMK Toolbox
-
-Der einfachste Weg deine Tastatur zu flashen ist mit Hilfe der [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases)
-
-Leider ist die QMK Toolbox derzeit nur für Windows und macOS verfügbar. Wenn Du Linux benutzt (oder es vorziehst die Firmware mit der Kommandozeile zu flashen) solltest Du die Methode benutzen die [hier](de/newbs_flashing.md#tastatur-mit-der-befehlszeile-flashen) beschrieben wird.
-
-### Lade die Datei in QMK Toolbox
-
-Beginne damit die Datei in der QMK Toolbox Anwendung zu laden. Versichere dich dass Du die Firmware-Datei im Finder oder Explorer findest. Deine Tastatur-Firmware sollte entweder vom Typ `.hex` oder `.bin` sein sein. QMK sollte die für deine Tastatur entsprechende Datei automatisch in das Root-Verzeichnis (normalerweise `qmk_firmware`) kopieren.
-
-?> Wenn Du Windows oder macOS benutzt kannst Du mit folgenden Befehlen ganz einfach das aktuelle Firmware-Verzeichnis im Explorer oder Finder öffnen.
-
-#### Windows:
-
-``` start . ```
-
-#### macOS:
-
-``` open . ```
-
-Die Firmware-Dateien folgen dabei immer folgendem Schema:
-
- <meine_Tastatur>_<meine_Tastaturbelegung>.{bin,hex}
-
-Zum Beispiel würde ein `planck/rev5` mit der `default` Tastaturbelegung folgenden Dateinamen haben:
-
- planck_rev5_default.hex
-
-Wenn Du die Firmware-Datei gefunden hast kannst Du sie in das "Local file" ("Lokale Datei") Feld in der QMK Toolbox ziehen, alternativ kannst Du auf "Öffnen" klicken und in das Verzeichnis navigieren indem sich die Firmware-Datei befindet.
-
-### Die Tastatur in den DFU (Bootloader) Modus versetzen
-
-Um deine angepasste Firmware auf deine Tastatur zu flashen musst Du diese erst in einen speziellen "flashing"-Modus versetzen. Während die Tastatur in diesem Modus ist kannst Du nicht auf ihr tippen oder sie wie gewohnt als Tastatur benutzen. Es ist wichtig dass der flashing-Prozesses nicht unterbrochen oder die Tastatur ausstöpselst wird, da der Vorgang ansonst wiederholt werden muss.
-
-Verschiedene Tastaturen verwenden unterschiedliche Methoden um in den Bootloader-Modus zu gelangen. Wenn dein PCB im Moment QMK oder TMK verwendet und Du keine spezifischen Anweisungen erhalten hast probiere die folgenden Methoden in dieser Reihenfolge:
-
-* Halte beide Shift-Tasten und drücke `Pause`
-* Halte beide Shift-Tasten und drücke `B`
-* Entferne deine Tastatur vom Computer, drücke gleichzeitig `Leertaste` und `B`, verbinde die Tastatur wieder mit dem Computer und warte eine Sekunde bevor Du die Tasten wieder loslässt.
-* Drücke den physischen `RESET`-Knopf auf der Unterseite des PCBs
-* Suche auf dem PCB den Pin mit dem Label `RESET`, verbinde diesen mit deinem GND-Pin
-* Suche auf dem PCB den Pin mit dem Label `BOOT0`, verbinde diesen mit GND und schließe die Tastatur wieder an den PC an TODO: DIS IS DANGEROUS!!
-
-Wenn Du damit erfolgreich warst solltest Du in der QMK Toolbox eine Nachricht sehen die ungefähr so aussieht:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-```
-
-### Tastatur flashen
-
-Klicke auf den `Flash`-Knopf in der QMK Toolbox. Die Ausgabe wird ungefähr so aussehen:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash qmk_firmware/clueboard_66_hotswap_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-
-*** DFU device disconnected
-*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
-```
-
-## Tastatur mit der Befehlszeile flashen
-
-Zunächst solltest Du versuchen herauszufinden welchen Bootlader deine Tastatur benutzt. Diese vier Bootloader sind am Weitesten verbreitet:
-
-| MCU | Bootloader |
-| --- | --- |
-| Pro-Micro und Klone | CATERINA |
-| Teensy | Halfkay |
-| OLKB Boards | QMK-DFU |
-| sonstige atmega32u4 | DFU |
-
-Auf der Seite [Flash Anleitung und Bootloader Informationen](de/flashing.md) kannst Du mehr über das Thema erfahren.
-
-Wenn Du weißt welchen Bootloader deine Tastaur verwendet, kannst Du diese Information bei der Kompilation hinzufügen um den Flash-Vorgang mit dem `make`-Befehl zu automatisieren.
-```rules.mk
-...
-BOOTLOADER = caterina
-...
-```
-
-### DFU
-
-Wenn Du den DFU-Bootloader verwendest und Du bereit bist deine Firmware zu kompilieren und zu flashen, öffne ein Befehlszeile und führe folgenden Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:dfu
-
-Wenn deine Tastaturbelegung z.B den Namen "xzverz" trägt und Du ein rev5 planck flashen möchtest sähe der Befehl wie folgt aus:
-
- make planck/rev5:xyverz:dfu
-
-
-Nachdem der Vorgang abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex
- * File size is fine - 18574/28672
- ```
-
-Wenn dieser Punkt erreicht ist wird das Build-Skript alle 5 Sekunden nach einem DFU Bootloader suchen. Dieser Vorgang wird wiederholt bis er erfolgreich ist oder abgebrochen wird.
-
- dfu-programmer: no device present.
- Error: Bootloader not found. Trying again in 5s.
-
-Wenn diese Nachricht erscheint konnte das Build-Skript den Controller nicht eigenständig in den DFU Modus versetzen (z.B. weil der Modus in rules.mk falsch gesetzt wurde oder ein Problem mit der Hardware besteht), wenn dies eintritt musst Du die oben beschrieben Schritte benutzen um den Controller in den DFU Modus zu versetzen. Danach sollte die Ausgabe ungefähr so aussehen:
-
-```
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash qmk_firmware/clueboard_66_hotswap_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-```
-
-?> Wenn Du mit diesem Schritt Probleme hast (z.B. `dfu-programmer: no device present`) hilft dir hoffentlich der Abschnitt [Häufig gestellte Fragen (Build/Kompilieren)](de/faq_build.md).
-
-#### DFU Befehle
-
-Es gibt verschiedene DFU Befehle um die Firmware auf ein DFU Gerät zu flashen:
-
-* `:dfu` - Dies ist die default Option. Es wird gecheckt ob ein DFU Gerät verfügbar ist, ist dies der Fall wird die Firmware geflasht. Dieser Check wird alle 5 Sekunden ausgeführt bis ein DFU Gerät erkannt wird.
-* `:dfu-ee` - Der Flash-Vorgang benutzt eine `.eep` Datei anstatt einer `.hex` Datei. Dies ist eher unüblich.
-* `:dfu-split-left` - Dies flasht die Firmware wie gewohnt (`:dfu`). Allerdings nur die "linke Seite" der EEPROM für geteilte Tastaturen. _Dies ist ideal für auf Elite C basierenden geteilten Tastaturen._
-* `:dfu-split-right` - Dies flasht die Firmware wie gewohnt (`:dfu`). Allerdings nur die "rechte Seite" der EEPROM für geteilte Tastaturen. _Dies ist ideal für auf Elite C basierenden geteilten Tastaturen._
-
-
-### Caterina
-Für Arduinos und andere ProMicro Klone (z.B. SparkFun ProMicro), wenn Du bereit bist zu kompilieren und die Tastatur zu flashen, öffne ein Befehlszeilen-Fenster und führe den Build-Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:avrdude
-
-Wenn deine Tastaturbelegung zum Beispiel den Namen "xyverz" hat und Du eine Tastaturbelegung für ein "rev2 Lets Split" erzeugen möchtest, lautet der Befehl dafür:
-
- make lets_split/rev2:xyverz:avrdude
-
-Nachdem die Kompilation abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-```
-Linking: .build/lets_split_rev2_xyverz.elf [OK]
-Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
-Checking file size of lets_split_rev2_xyverz.hex [OK]
- * File size is fine - 27938/28672
-Detecting USB port, reset your controller now..............
-```
-
-Nun wird die Tastatur automatisch zurückgesetzt und das Skript wird die Firmware flashen sobald es den Bootloader erkennt. Die Ausgabe sollte ungefähr so aussehen:
-
-```
-Detected controller on USB port at /dev/ttyS15
-
-Connecting to programmer: .
-Found programmer: Id = "CATERIN"; type = S
- Software Version = 1.0; No Hardware Version given.
-Programmer supports auto addr increment.
-Programmer supports buffered memory access with buffersize=128 bytes.
-
-Programmer supports the following devices:
- Device code: 0x44
-
-avrdude.exe: AVR device initialized and ready to accept instructions
-
-Reading | ################################################## | 100% 0.00s
-
-avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
-avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
- To disable this feature, specify the -D option.
-avrdude.exe: erasing chip
-avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: writing flash (27938 bytes):
-
-Writing | ################################################## | 100% 2.40s
-
-avrdude.exe: 27938 bytes of flash written
-avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
-avrdude.exe: reading on-chip flash data:
-
-Reading | ################################################## | 100% 0.43s
-
-avrdude.exe: verifying ...
-avrdude.exe: 27938 bytes of flash verified
-
-avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
-
-avrdude.exe done. Thank you.
-```
-Sollten dabei Probleme auftreten (z.B. "Zugriff verweigert" / "Permission denied") muss der Make-Befehl mit privilegierten Berechtigungen ausgeführt werden:
-
- sudo make <meine_Tastatur>:<meine_Tastaturbelegung>:avrdude
-
-Zusätzlich ist es möglich mehrere Tastaturen in einem Vorgang zu flashen:
-
- make <keyboard>:<keymap>:avrdude-loop
-
-Du kannst den Loop mit STRG + C unterbrechen sobald der Vorgang abgeschlossen ist. Die korrekte Tastenkombination kann abweichen und hängt vom Betriebssystem ab.
-
-
-### HalfKay
-
-Für Tastaturen mit PJRC Controllern (Teensy's), wenn Du bereit bist zu kompilieren und die Tastatur zu flashen, öffne ein Befehlszeilen-Fenster und führe den Build-Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:teensy
-
-Wenn deine Tastaturbelegung zum Beispiel den Namen "xyverz" hat und Du eine Tastaturbelegung für ein Ergodox oder Ergodox EZ erzeugen möchtest, lautet der Befehl dafür:
-
- make ergodox_ez:xyverz:teensy
-
-Nachdem die Kompilation abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-```
-Linking: .build/ergodox_ez_xyverz.elf [OK]
-Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
-Checking file size of ergodox_ez_xyverz.hex [OK]
- * File size is fine - 25584/32256
- Teensy Loader, Command Line, Version 2.1
-Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
-Waiting for Teensy device...
- (hint: press the reset button)
- ```
-
-An diesem Punkt solltest Du die Tastatur zurücksetzen um den Flash-Vorgang auszulösen. Wenn dies abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
- ```
-Found HalfKay Bootloader
-Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
-Programming.............................................................
-...................................................
-Booting
-```
-
-### BootloadHID
-
-Für auf Bootmapper Client(BMC)/bootloaderHID/ATmega32A basierende Tastaturen, wenn Du bereit bist zu kompilieren und die Tastatur zu flashen, öffne ein Befehlszeilen-Fenster und führe den Build-Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:bootloaderHID
-
-Wenn deine Tastaturbelegung zum Beispiel den Namen "xyverz" hat und Du eine Tastaturbelegung für ein jj40 erzeugen möchtest, lautet der Befehl dafür:
-
- make jj40:xyverz:bootloaderHID
-
-Nachdem die Kompilation abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-```
-Linking: .build/jj40_default.elf [OK]
-Creating load file for flashing: .build/jj40_default.hex [OK]
-Copying jj40_default.hex to qmk_firmware folder [OK]
-Checking file size of jj40_default.hex [OK]
- * The firmware size is fine - 21920/28672 (6752 bytes free)
-```
-
-Wenn dieser Punkt erreicht ist wird das Build-Skript alle 5 Sekunden nach einem DFU Bootloader suchen. Dieser Vorgang wird wiederholt bis er erfolgreich ist oder abgebrochen wird.
-
-```
-Error opening HIDBoot device: The specified device was not found
-Trying again in 5s.
-```
-
-An diesem Punkt solltest Du die Tastatur zurücksetzen um den Flash-Vorgang auszulösen. Wenn dies abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-```
-Page size = 128 (0x80)
-Device size = 32768 (0x8000); 30720 bytes remaining
-Uploading 22016 (0x5600) bytes starting at 0 (0x0)
-0x05580 ... 0x05600
-```
-
-### STM32 (ARM)
-
-Für die meisten ARM Tastaturen (inkl. Proton C, Planck Rev 6 und Preonic Rev 3), wenn Du bereit bist zu kompilieren und die Tastatur zu flashen, öffne ein Befehlszeilen-Fenster und führe den Build-Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:dfu-util
-
-Wenn deine Tastaturbelegung zum Beispiel den Namen "xyverz" hat und Du eine Tastaturbelegung für ein Planck Revision 6 erzeugen möchtest, benutze dafür den folgenden Befehl und reboote die Tastatur in den Bootloader (kurz bevor der Kompiliervorgang abgeschlossen ist):
-
- make planck/rev6:xyverz:dfu-util
-
-Nachdem der Kompiliervorgang abgeschlossen ist sollte die Ausgabe ungefähr so aussehen:
-
-Für auf Bootmapper Client(BMC)/bootloaderHID/ATmega32A basierende Tastaturen, wenn Du bereit bist zu kompilieren und die Tastatur zu flashen, öffne ein Befehlszeilen-Fenster und führe den Build-Befehl aus:
-
- make <meine_Tastatur>:<meine_Tastaturbelegung>:bootloaderHID
-
-Wenn deine Tastaturbelegung zum Beispiel den Namen "xyverz" hat und Du eine Tastaturbelegung für ein jj40 erzeugen möchtest, lautet der Befehl dafür:
-```
-Linking: .build/planck_rev6_xyverz.elf [OK]
-Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
-Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
-
-Size after:
- text data bss dec hex filename
- 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
-
-Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
-dfu-util 0.9
-
-Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
-Copyright 2010-2016 Tormod Volden and Stefan Schmidt
-This program is Free Software and has ABSOLUTELY NO WARRANTY
-Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
-
-Invalid DFU suffix signature
-A valid DFU suffix will be required in a future dfu-util release!!!
-Opening DFU capable USB device...
-ID 0483:df11
-Run-time device DFU version 011a
-Claiming USB DFU Interface...
-Setting Alternate Setting #0 ...
-Determining device status: state = dfuERROR, status = 10
-dfuERROR, clearing status
-Determining device status: state = dfuIDLE, status = 0
-dfuIDLE, continuing
-DFU mode device DFU version 011a
-Device returned transfer size 2048
-DfuSe interface name: "Internal Flash "
-Downloading to address = 0x08000000, size = 41824
-Download [=========================] 100% 41824 bytes
-Download done.
-File downloaded successfully
-Transitioning to dfuMANIFEST state
-```
-
-#### STM32 Befehle
-
-Für Tastaturen mit STM32 Controller sind die DFU Befehle wie folgt:
-
-* `:dfu-util` - The default command for flashing to STM32 devices.
-* `:dfu-util` - Der Standard-Befehl für STM32 Geräte.
-* `:dfu-util-wait` - Funktioniert wie der Standard-Befehl, aber mit einem 10 Sekunden Timeout bevor erneut versucht wird die Firmware zu flashen. Mit dem Parameter `TIME_DELAY=20` auf der Befehlszeile kann der Timeout beeinflusst werden.
- * z.B.: `make <meine_Tastatur>:<meine_Tastaturbelegung>:dfu-util TIME_DELAY=5`
-* `:dfu-util-split-left` - Gleiche Funktionsweise wie `dfu-util`, jedoch wird zusätzlich das EEPROM Setting "linke Seite" für geteilte Tastaturen gesetzt.
-* `:dfu-util-split-right` - Gleiche Funktionsweise wie `dfu-util`, jedoch wird zusätzlich das EEPROM Setting "rechte Seite" für geteilte Tastaturen gesetzt.
-
-## Probier's aus!
-
-Herzlichen Glückwunsch! Deine individuell angepasst Firmware wurde auf deine Tastatur übertragen!
-
- Probiere deine neue Tastatur aus und gehe sicher dass alles wie gewünscht funktioniert. Wir haben einen weiteren Artikel zum Thema [Testen und Debuggen](de/newbs_testing_debugging.md) verfasst der sich mit Problembeseitigung beschäftigt um den Beginnger-Guide abzuschließen.
diff --git a/docs/de/newbs_getting_started.md b/docs/de/newbs_getting_started.md
deleted file mode 100644
index 188cf97e0a..0000000000
--- a/docs/de/newbs_getting_started.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Einleitung
-Genau wie in einem Computer befindet sich auch in einer Tastatur ein Prozessor.
-
-Dieser Prozessor führt Software aus, die registriert wenn Tasten gedrückt bzw. wieder losgelassen werden und leitet die entsprechenden Signale an den Computer weiter.
-
-QMK übernimmt die Rolle dieser Software und teilt dem Host-Computer den aktuellen Zustand der Tastatur mit. Wenn Du eine Tastaturbelegung definierst, ist dies äquivalent zu einem ausführbarem Programm, das auf deiner Tastatur läuft.
-
-QMK möchte seine BenutzerInnen in die Lage versetzen, simple Aufgaben möglichst einfach zu gestalten und gleichzeitig komplexe Dinge zu ermöglichen, die mit normalen Tastaturen ohne zusätzliche Software undenkbar wären. Du musst nicht programmieren können, um abgefahrene Tastaturbelegungen zu gestalten - es reicht wenn Du eine Idee hast und ein paar einfache syntaktische Regeln verstehen kannst.
-
-# Los geht's!
-Bevor Du damit loslegen kannst, deine Tastaturbelegung zu erstellen, musst Du ein wenig Software installieren und Dir eine Entwicklungsumgebung aufsetzen. Die gute Nachricht ist, dass das nur einmal erledigt werden muss, egal für wie viele verschiedene Tastaturen Du hinterher Firmware entwickeln willst.
-
-Wenn Du es vorziehst mit einer grafischen Oberfläche zu entwickeln kannst Du auch dazu gerne direkt mit dem online [QMK Konfigurator](https://config.qmk.fm) loslegen. Siehe auch: [Firmware mit der Online GUI erzeugen](de/newbs_building_firmware_configurator.md)
-
-## Software herunterladen
-
-### Text Editor
-
-Du wirst ein Programm benötigen, mit dem Du **plain text** (= reiner Text) Dateien bearbeiten und speichern kannst. Wenn Du Windows benutzt, reicht dafür schon das normale `Notepad` und für Linux z.B. `gedit` oder `leafpad`. Beide sind sehr rudimentäre Editoren deren Funktionsumfang aber vollkommen ausreicht. Für macOS' standard `TextEdit` muss man ein bisschen vorsichtig sein und darauf achten, beim Speichern explizit unter _Format_ die Option _Reiner Text_ auszuwählen.
-
-Ansonsten ist es empfehlenswert, einen Editor herunterzuladen der für die Programmierung und das Bearbeiten von Code ausgelegt ist wie z.b [Notepad++](https://notepad-plus-plus.org/), [Sublime Text](https://www.sublimetext.com/) oder [VS Code](https://code.visualstudio.com/).
-
-?> Immer noch unsicher, welcher Text Editor der Richtige für Dich ist? Laurence Bradford hat eine hervorragende [Einleitung](https://learntocodewith.me/programming/basics/text-editors/) zu dem Thema geschrieben (auf Englisch).
-
-### QMK Toolbox
-
-QMK Toolbox ist ein optionales grafisches Programm für Windows und macOS, das es erleichtern soll, deine Tastatur zu programmieren und zu debuggen. Du wirst es höchstwahrscheinlich früher oder später als unverzichtbar ansehen, wenn es darum geht eine Tastatur einfach zu flashen oder zu debuggen, da es ermöglicht, sich debug-Nachrichten direkt anzeigen zu lassen.
-
-[Hier kannst Du die aktuelle Version herunterladen.](https://github.com/qmk/qmk_toolbox/releases/latest)
-
-* Für Windows: `qmk_toolbox.exe` (portable) oder `qmk_toolbox_install.exe` (installer)
-* Für macOS: `QMK.Toolbox.app.zip` (portable) oder `QMK.Toolbox.pkg` (installer)
-
-## Die Entwicklungsumgebung aufsetzen
-
-
-Wir haben versucht, die Installation der Entwicklungsumgebung für QMK so einfach wie möglich zu gestalten. Alles, was Du tun musst, ist eine Linux oder Unix Umgebung aufzusetzen, danach macht QMK den Rest.
-
-?> Wenn Du das erste Mal mit der Linux/Unix Befehlszeile arbeitest, schadet es nicht, sich mit ein paar Grundlagen und Befehlen vertraut zu machen. Diese Ressourcen sollten ausreichen, um sich das Nötigste anzueignen um mit QMK arbeiten zu können:<br>
-[Erforderliche Linux Grundlagen](https://www.guru99.com/must-know-linux-commands.html)<br>
-[Noch ein paar Linux Befehle](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
-
-### Windows
-
-Du wirst MSYS2 (o.Ä.) und Git benötigen.
-
-* Befolge die Installationsanleitung auf der [MSYS2 Homepage](https://www.msys2.org)
-* Schließe alle offenen MSYS2 Fenster und öffne ein neues MSYS2 MinGW 64-bit Terminal
-* Installiere Git mit dem Kommando: `pacman -S git`
-
-### macOS
-
-Du wirst Homebrew benötigen. Folge dafür den Anweisungen auf der [Homebrew homepage](https://brew.sh).
-
-Nachdem Homebrew erfolgreich installiert ist, kannst Du mit _QMK aufsetzen_ fortfahren.
-
-### Linux
-
-Du benötigst Git, aber es ist ziemlich wahrscheinlich, dass es bereits installiert ist. Sollte dies nicht der Fall sein, kannst Du es mit dem folgenden Aufruf installieren:
-
-* Debian / Ubuntu / Devuan: `apt-get install git`
-* Fedora / Red Hat / CentOS: `yum install git`
-* Arch Linux: `pacman -S git`
-
-?> Docker ist ebenfalls eine Option für alle Plattformen. [Hier](de/getting_started_build_tools.md#docker) kannst Du dazu weitere Informationen finden.
-
-## QMK aufsetzen
-Wenn Du damit fertig bist, deine Linux/Unix Umgebung zu installieren, kannst Du damit fortfahren QMK herunterzuladen. Dafür werden wir mit Git das QMK Repository "klonen". Öffne ein Terminal oder ein MSYS2 MinGW Fenster, dies wirst Du für den Rest der Anleitung benötigen. In diesem Fenster rufst Du nun die beiden folgenden Kommandos auf:
-
-```shell
-git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
-cd qmk_firmware
-```
-?> Wenn Du bereits weißt, [wie man GitHub benutzt](de/getting_started_github.md), empfehlen wir, dass Du Dir ein eigenen Fork erstellst. Wenn Du nicht weißt, was das bedeuten soll, kannst Du diesen Ratschlag getrost ignorieren.
-
-QMK liefert ein Script mit, das helfen soll, Dir alles Weitere abzunehmen. Du kannst es mit dem folgenden Befehl aufrufen:
-
- util/qmk_install.sh
-
-## Die Build-Umgebung testen
-
-Nun sollte hoffentlich alles Nötige für eine funktionierende QMK Build-Umgebung installiert sein und Du solltest in der Lage sein, die QMK-Firmware zu kompilieren. Um dies mit einer `default` Tastaturbelegung zu testen, kannst Du den folgenden Befehl ausprobieren:
-
- make <keyboard>:default
-
-Der Befehl um z.B. die Firmware für ein _Clueboard 66%_ zu erzeugen lautet:
-
- make clueboard/66/rev3:default
-
-Wenn es fertig ist, sollte der Output ungefähr so ähnlich wie das Folgende aussehen:
-
-```
-Linking: .build/clueboard_66_rev3_default.elf [OK]
-Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
-Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
-Checking file size of clueboard_66_rev3_default.hex [OK]
- * The firmware size is fine - 26356/28672 (2316 bytes free)
-```
-
-# Eine eigene Tastaturbelegung erstellen
-Du bist nun fertig mit dem Setup der Entwicklungsumgebung und solltest somit in der Lage sein, deine eigenen Tastaturbelegungen zu erstellen. Um fortzufahren, folge bitte der nächsten Anleitung unter [Die erste Firmware](de/newbs_building_firmware.md).
diff --git a/docs/de/newbs_learn_more_resources.md b/docs/de/newbs_learn_more_resources.md
deleted file mode 100644
index ac5adb0c12..0000000000
--- a/docs/de/newbs_learn_more_resources.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Lernmaterial
-
-Diese weiterführenden Ressourcen sind darauf ausgerichtet, Neulingen der QMK Commmunity mehr Informationen und ein besseres Verständnis zu einzelnen Themen zu bieten.
-
-Git Ressourcen:
-
-* [Gutes allgemeines Tutorial](https://www.codecademy.com/learn/learn-git) (auf Englisch)
-* [Git spielerisch anhand von Beispielen lernen](https://learngitbranching.js.org/) (auf Englisch)
-* [Mehr über den allgemeinen Umgang mit GitHub](getting_started_github.md)
-* [Mehr über Git im Bezug zu QMK](contributing.md)
-
-Mehr über die Arbeit mit der Befehlszeile:
-
-* [Gutes allgemeines Tutorial über die Arbeit mit der Befehlszeile](https://www.codecademy.com/learn/learn-the-command-line) (auf Englisch)
diff --git a/docs/de/newbs_testing_debugging.md b/docs/de/newbs_testing_debugging.md
deleted file mode 100644
index 4d4e7cfee6..0000000000
--- a/docs/de/newbs_testing_debugging.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# Testen und Debuggen
-
-Nachdem Du deine Tastatur mit deiner angepassten Firmware geflasht hast, ist es nun an der Zeit sie auszuprobieren. Mit ein bisschen Glück sollte alles ohne Probleme funktionieren, wenn dies nicht der Fall ist, soll dieses Dokument dir dabei helfen, herauszufinden wo das Problem liegt.
-
-## Testen
-
-Die Tastatur zu testen ist relativ selbsterklärend. Drücke jede der Tasten um dich zu versichern, dass der gesendete Keyode der ist, den du erwarten würdest. Dafür gibt es sogar ein paar Programme die helfen sollen, dass keine Taste ausgelassen wurde.
-
-Anmerkung: Diese Programme werden weder von QMK bereitgestellt oder gutgeheißen.
-
-* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (Nur für Windows)
-* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Nur für Mac)
-* [Keyboard Tester](https://www.keyboardtester.com) (Web basiert)
-* [Keyboard Checker](https://keyboardchecker.com) (Web basiert)
-
-## Debuggen
-
-Deine Tastatur wird Debug Informationen liefern wenn Du `CONSOLE_ENABLE = yes` in deiner `rules.mk` gesetzt hast. Die default-Ausgabe ist sehr beschränkt und kann wenn nötig durch die Aktivierung des Debug-Modes erhöht werden. Benutze dafür entweder den `DEBUG` Keycode in deiner Tastaturbelegung, das [Command](de/feature_command.md)-Feature oder füge den folgenden Code zu deiner Tastaturbelegung hinzu.
-
-```c
-void keyboard_post_init_user(void) {
- // Customise these values to desired behaviour
- debug_enable=true;
- debug_matrix=true;
- //debug_keyboard=true;
- //debug_mouse=true;
-}
-```
-
-### Debuggen mit der QMK Toolbox
-
-Für kompatible Plattformen kann die [QMK Toolbox](https://github.com/qmk/qmk_toolbox) benutzt werden um Debug-Nachrichten deiner Tastatur anzuzeigen.
-
-### Debuggen mit hid_listen
-
-Bevorzugst Du es lieber auf der Befehlszeile zu debuggen? Dafür eignet sich das Programm [hid_listen](https://www.pjrc.com/teensy/hid_listen.html) von PJRC. Binaries sind für Windows, Linux und MacOS verfügbar.
-
-<!-- FIXME: Describe the debugging messages here. -->
-
-## Eigene Debug-Nachrichten senden
-
-Manchmal ist es hilfreich Debug-Nachrichten innerhalb deines eigenen [Custom Codes](de/custom_quantum_functions.md) zu drucken. Das ist ziemlich einfach. Beginne damit `print.h` am Anfang deiner Datei zu inkludieren:
-
-```c
-#include "print.h"
-```
-
-Danach stehen dir verschiedene Druck-Funktionen zur Verfügung:
-
-* `print("string")`: Druckt einen simplen String
-* `uprintf("%s string", var)`: Druckt einen formatierten String
-* `dprint("string")` Druckt einen simplen String, aber nur wenn der Debug-Mode aktiviert ist
-* `dprintf("%s string", var)`: Druckt einen formatierten String, aber nur wenn der Debug-Mode aktiviert ist
-
-## Debug Beispiele
-
-Anbei findest Du eine Sammlung von hilfreichen Beispielen. Für weitere Informationen Informationen sei an dieser Stelle auf [Debugging/Troubleshooting QMK](de/faq_debug.md) verwiesen.
-
-### Which matrix position is this keypress?
-### Welche Matrix Position hat dieser Tastenanschlag
-
-Beim Portieren, oder bei der Fehlerdiagnose von PCB Problemen, ist es nützlich sich anzeigen zu lassen ob ein Tastenanschlag richtig erkannt wurde. Um die Protokollierung für diesen Fall zu aktivieren, füge bitte folgenden Code zu deiner Tastaturbelegung `keymap.c` hinzu.
-
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // Wenn 'console' aktiviert ist wird die Matrix-Position und der Status jedes Tastenanschlags ausgegeben
-#ifdef CONSOLE_ENABLE
- uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
-#endif
- return true;
-}
-```
-
-Beispiel Ausgabe:
-```text
-Waiting for device:.......
-Listening:
-KL: kc: 169, col: 0, row: 0, pressed: 1
-KL: kc: 169, col: 0, row: 0, pressed: 0
-KL: kc: 174, col: 1, row: 0, pressed: 1
-KL: kc: 174, col: 1, row: 0, pressed: 0
-KL: kc: 172, col: 2, row: 0, pressed: 1
-KL: kc: 172, col: 2, row: 0, pressed: 0
-```
-
-### Wieviel Zeit wurde benötigt um einen Tastenanschlag zu detektieren?
-
-Wenn Performance-Probleme auftreten ist es hilfreich die Frequenz, mit der die Matrix gescannt wird, zu wissen. Um dies in diesem Fall zu aktiveren füge, den folgenden Code zu deiner Tastaturbelegung in `config.h` hinzu.
-
-```c
-#define DEBUG_MATRIX_SCAN_RATE
-```
-
-Beispiel Ausgabe
-```text
- > matrix scan frequency: 315
- > matrix scan frequency: 313
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
-```
diff --git a/docs/easy_maker.md b/docs/easy_maker.md
index dc97272333..6af6473815 100644
--- a/docs/easy_maker.md
+++ b/docs/easy_maker.md
@@ -7,7 +7,7 @@ There are different styles of Easy Maker available depending on your needs:
* [Direct Pin](https://config.qmk.fm/#/?filter=ez_maker/direct) - Connect a single switch to a single pin
* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](feature_backlight.md) control
* Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
-* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
+* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Capslock LED
* Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder
## Quickstart
diff --git a/docs/es/README.md b/docs/es/README.md
deleted file mode 100644
index 0d504fad05..0000000000
--- a/docs/es/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Firmware Quantum Mechanical Keyboard
-
-[![Versión actual](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Estado de la documentación](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![Contribuyentes en GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![Forks en GitHub](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## ¿Qué es el firmware QMK?
-
-QMK (*Quantum Mechanical Keyboard*) es una comunidad open source que mantiene el firmware QMK, QMK Toolbox, qmk.fm, y estos documentos. El firmware QMK es un firmware para teclados basado en [tmk\_keyboard](https://github.com/tmk/tmk_keyboard) con algunas características útiles para controladores Atmel AVR, y más específicamente, la [línea de productos OLKB](https://olkb.com), el teclado [ErgoDox EZ](https://www.ergodox-ez.com), y la [línea de productos Clueboard](https://clueboard.co/). También ha sido portado a chips ARM chips usando ChibiOS. Lo puedes utilizar para manejar tu propio teclado ya sea cableado a mano o basado en una PCB personalizada.
-
-## Cómo conseguirlo
-
-Si estás pensando en contribuir con un keymap, teclado, or característica a QMK, la manera más sencilla es hacer un [fork del repositorio en GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), y clonar tu repositorio localmente para hacer los cambios, subirlos, y abir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) desde tu fork.
-
-De cualquier manera, también puedes descargarlo directamente en formatos ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), o clonarlo via git (`git@github.com:qmk/qmk_firmware.git`), o https (`https://github.com/qmk/qmk_firmware.git`).
-
-## Cómo compilar
-
-Antes de poder compilar, necesitarás [instalar un entorno](es/getting_started_build_tools.md) para el desarrollo de AVR y/o ARM. Una vez hayas completado este paso, usarás el comando `make` para compilar un teclado y keymap con la siguiente notación:
-
- make planck/rev4:default
-
-Este ejemplo compilaría la revisión `rev4` del teclado `planck` con el keymap `default`. No todos los teclados tienen revisiones (también llamados subproyectos o carpetas), en ese caso, se puede omitir:
-
- make preonic:default
-
-## Cómo personalizar
-
-QMK tiene montones de [características](es/features.md) para explorar, y una buena cantidad de [documentación de referencia](https://docs.qmk.fm) en la que sumergirse. Se pueden sacar provecho de la mayoría de las características modificando tu [keymap](es/keymap.md), y cambiando los [keycodes](es/keycodes.md).
diff --git a/docs/es/_summary.md b/docs/es/_summary.md
deleted file mode 100644
index aa2a0ca5d9..0000000000
--- a/docs/es/_summary.md
+++ /dev/null
@@ -1,122 +0,0 @@
-* [Guía completa para novatos](es/newbs.md)
- * [Empezando](es/newbs_getting_started.md)
- * [Construyendo tu primer firmare](es/newbs_building_firmware.md)
- * [Flasheando el firmware](es/newbs_flashing.md)
- * [Testeando y depurando ](es/newbs_testing_debugging.md)
- * [Mejores práticas](es/newbs_best_practices.md)
- * [Recursos de aprendizaje](es/newbs_learn_more_resources.md)
-
-* [QMK Basics](es/README.md)
- * [Introducción a QMK](es/getting_started_introduction.md)
- * [QMK CLI](es/cli.md)
- * [Configuración de QMK CLI](es/cli_configuration.md)
- * [Contribuyendo a QMK](es/contributing.md)
- * [Cómo usar GitHub](es/getting_started_github.md)
- * [Obtener ayuda](es/getting_started_getting_help.md)
-
-* [Cambios incompatibles](es/breaking_changes.md)
- * [30 Ago 2019](es/ChangeLog/20190830.md)
-
-* [Preguntas frecuentes](es/faq.md)
- * [General](es/faq_general.md)
- * [Construir/Compilar QMK](es/faq_build.md)
- * [Depurando/Encontrando problemas en QMK](es/faq_debug.md)
- * [Keymap](es/faq_keymap.md)
- * [Instalación de drivers con Zadig](es/driver_installation_zadig.md)
-
-* Guías detalladas
- * [Instalar herramientas construcción](es/getting_started_build_tools.md)
- * [Guía Vagrant](es/getting_started_vagrant.md)
- * [Instrucciones de Construcción/Compilado](es/getting_started_make_guide.md)
- * [Flasheando Firmware](es/flashing.md)
- * [Personalizando funcionalidad](es/custom_quantum_functions.md)
- * [Visión general del Keymap](es/keymap.md)
-
-* [Hardware](es/hardware.md)
- * [Procesadores AVR](es/hardware_avr.md)
- * [Drivers](es/hardware_drivers.md)
-
-* Referencia
- * [Pautas de teclados](es/hardware_keyboard_guidelines.md)
- * [Opciones de configuración](es/config_options.md)
- * [Keycodes](es/keycodes.md)
- * [Convenciones de código - C](es/coding_conventions_c.md)
- * [Convenciones de código - Python](es/coding_conventions_python.md)
- * [Mejores prácticas de documentación](es/documentation_best_practices.md)
- * [Plantillas de documentación](es/documentation_templates.md)
- * [Glosario](es/reference_glossary.md)
- * [Tests unitarios](es/unit_testing.md)
- * [Funciones útiles](es/ref_functions.md)
- * [Sporte configurador](es/reference_configurator_support.md)
- * [Formato info.json](es/reference_info_json.md)
- * [Desarrollo Python CLI](es/cli_development.md)
-
-* [Características](es/features.md)
- * [Keycodes Básicos](es/keycodes_basic.md)
- * [Teclas US ANSI Shifted](es/keycodes_us_ansi_shifted.md)
- * [Keycodes Quantum](es/quantum_keycodes.md)
- * [Keycodes Avanzados](es/feature_advanced_keycodes.md)
- * [Audio](es/feature_audio.md)
- * [Auto Shift](es/feature_auto_shift.md)
- * [Retroiluminación](es/feature_backlight.md)
- * [Bluetooth](es/feature_bluetooth.md)
- * [Bootmagic](es/feature_bootmagic.md)
- * [Combos](es/feature_combo.md)
- * [Comando](es/feature_command.md)
- * [API Debounce](es/feature_debounce_type.md)
- * [Switch DIP](es/feature_dip_switch.md)
- * [Macros Dinámicas](es/feature_dynamic_macros.md)
- * [Encoders](es/feature_encoders.md)
- * [Grave Escape](es/feature_grave_esc.md)
- * [Feedback Háptico](es/feature_haptic_feedback.md)
- * [Controlador LCD HD44780](es/feature_hd44780.md)
- * [Key Lock](es/feature_key_lock.md)
- * [Layouts](es/feature_layouts.md)
- * [Tecla Leader](es/feature_leader_key.md)
- * [Matriz LED](es/feature_led_matrix.md)
- * [Macros](es/feature_macros.md)
- * [Teclas del ratón](es/feature_mouse_keys.md)
- * [Driver OLED](es/feature_oled_driver.md)
- * [Teclas One Shot](es/one_shot_keys.md)
- * [Dispositivo de apuntado](es/feature_pointing_device.md)
- * [Ratón PS/2](es/feature_ps2_mouse.md)
- * [Iluminación RGB](es/feature_rgblight.md)
- * [Matriz RGB](es/feature_rgb_matrix.md)
- * [Cadete espacial](es/feature_space_cadet.md)
- * [Teclado dividido](es/feature_split_keyboard.md)
- * [Stenografía](es/feature_stenography.md)
- * [Swap Hands](es/feature_swap_hands.md)
- * [Tap Dance](es/feature_tap_dance.md)
- * [Terminal](es/feature_terminal.md)
- * [Impresora Térmica](es/feature_thermal_printer.md)
- * [Unicode](es/feature_unicode.md)
- * [Userspace](es/feature_userspace.md)
- * [Velocikey](es/feature_velocikey.md)
-
-* Para Makers y Modders
- * [Guía de cableado a mano](es/hand_wire.md)
- * [Guía de flasheado de ISP](es/isp_flashing_guide.md)
- * [Guía de depuración de ARM](es/arm_debugging.md)
- * [Driver I2C](es/i2c_driver.md)
- * [Driver SPI](es/spi_driver.md)
- * [Controles GPIO](es/internals_gpio_control.md)
- * [Conversión Proton C](es/proton_c_conversion.md)
-
-* Para entender en profundidad
- * [Cómo funcionan los teclados](es/how_keyboards_work.md)
- * [Entendiendo QMK](es/understanding_qmk.md)
-
-* Otros temas
- * [Usando Eclipse con QMK](es/other_eclipse.md)
- * [Usando VSCode con QMK](es/other_vscode.md)
- * [Soporte](es/getting_started_getting_help.md)
- * [Cómo añadir traducciones](es/translating.md)
-
-* QMK Internals (En progreso)
- * [Defines](es/internals_defines.md)
- * [Input Callback Reg](es/internals_input_callback_reg.md)
- * [Dispositivo Midi](es/internals_midi_device.md)
- * [Proceso de configuración de un dispositivo Midi](es/internals_midi_device_setup_process.md)
- * [Utilidad Midi](es/internals_midi_util.md)
- * [Funciones Send](es/internals_send_functions.md)
- * [Herramientas Sysex](es/internals_sysex_tools.md)
diff --git a/docs/es/hardware.md b/docs/es/hardware.md
deleted file mode 100644
index 085c7e6745..0000000000
--- a/docs/es/hardware.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Hardware
-
-QMK es compatible con una variedad de hardware. Si tu procesador puede ser dirigido por [LUFA](https://www.fourwalledcubicle.com/LUFA.php) o [ChibiOS](https://www.chibios.org), probablemente puedes hacer que QMK se ejecute en él. Esta sección explora cómo hacer que QMK se ejecute y se comunique con hardware de todo tipo.
-
-* [Pautas de teclados](hardware_keyboard_guidelines.md)
-* [Procesadores AVR](hardware_avr.md)
-* Procesadores ARM (TBD)
-* [Drivers](hardware_drivers.md)
diff --git a/docs/es/hardware_avr.md b/docs/es/hardware_avr.md
deleted file mode 100644
index ac6a715658..0000000000
--- a/docs/es/hardware_avr.md
+++ /dev/null
@@ -1,182 +0,0 @@
-# Teclados con Procesadores AVR
-
-Esta página describe el soporte para procesadores AVR en QMK. Los procesadores AVR incluyen el atmega32u4, atmega32u2, at90usb1286, y otros procesadores de la Corporación Atmel. Los procesadores AVR son MCUs de 8-bit que son diseñados para ser fáciles de trabajar. Los procesadores AVR más comunes en los teclados tienen USB y un montón de GPIO para permitir grandes matrices de teclado. Son los MCUs más populares para el uso en los teclados hoy en día.
-
-Si aún no lo has hecho, debes leer las [Pautas de teclados](hardware_keyboard_guidelines.md) para tener una idea de cómo los teclados encajan en QMK.
-
-## Añadir tu Teclado AVR a QMK
-
-QMK tiene varias características para simplificar el trabajo con teclados AVR. Para la mayoría de los teclados no tienes que escribir ni una sola línea de código. Para empezar, ejecuta `qmk new-keyboard`:
-
-```
-$ qmk new-keyboard
-Ψ Generating a new QMK keyboard directory
-
-Keyboard Name: mycoolkeeb
-Keyboard Type:
- 1. avr
- 2. ps2avrgb
-Please enter your choice: [1]
-Your Name: [John Smith]
-Ψ Copying base template files...
-Ψ Copying avr template files...
-Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]...
-Ψ Replacing %YEAR% with 2021...
-Ψ Replacing %KEYBOARD% with mycoolkeeb...
-Ψ Replacing %YOUR_NAME% with John Smith...
-
-Ψ Created a new keyboard called mycoolkeeb.
-Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
-Ψ or open the directory in your preferred text editor.
-```
-
-Esto creará todos los archivos necesarios para tu nuevo teclado, y rellenará la configuración con valores predeterminados. Ahora sólo tienes que personalizarlo para tu teclado.
-
-## `readme.md`
-
-Aquí es donde describirás tu teclado. Por favor sigue la [Plantilla del readme de teclados](documentation_templates.md#keyboard-readmemd-template) al escribir tu `readme.md`. Te animamos a colocar una imagen en la parte superior de tu `readme.md`. Por favor, utiliza un servicio externo como [Imgur](https://imgur.com) para alojar las imágenes.
-
-## `<keyboard>.c`
-
-Aquí es donde pondrás toda la lógica personalizada para tu teclado. Muchos teclados no necesitan nada aquí. Puedes aprender más sobre cómo escribir lógica personalizada en [Funciones Quantum Personalizadas](custom_quantum_functions.md).
-
-## `<keyboard>.h`
-
-Este es el archivo en el que defines tu(s) [Macro(s) de Layout](feature_layouts.md). Por lo menos deberías tener un `#define LAYOUT` para tu teclado que se ve algo así:
-
-```c
-#define LAYOUT( \
- k00, k01, k02, \
- k10, k11 \
-) { \
- { k00, k01, k02 }, \
- { k10, KC_NO, k11 }, \
-}
-```
-
-La primera mitad de la macro pre-procesador `LAYOUT` define la disposición física de las llaves. La segunda mitad de la macro define la matriz a la que están conectados los interruptores. Esto te permite tener una disposición física de las llaves que difiere de la matriz de cableado.
-
-Cada una de las variables `k__` tiene que ser única, y normalmente sigue el formato `k<row><col>`.
-
-La matriz física (la segunda mitad) debe tener un número de filas igualando `MATRIX_ROWS`, y cada fila debe tener exactamente `MATRIX_COLS` elementos. Si no tienes tantas teclas físicas puedes usar `KC_NO` para rellenar los espacios en blanco.
-
-## `config.h`
-
-El archivo `config.h` es donde configuras el hardware y el conjunto de características para tu teclado. Hay un montón de opciones que se pueden colocar en ese archivo, demasiadas para listar allí. Para obtener una visión de conjunto completa de las opciones disponibles consulta la página de [Opciones de Configuración](config_options.md).
-
-### Configuración de hardware
-
-
-En la parte superior de `config.h` encontrarás ajustes relacionados con USB. Estos controlan la apariencia de tu teclado en el Sistema Operativo. Si no tienes una buena razón para cambiar debes dejar el `VENDOR_ID` como `0xFEED`. Para el `PRODUCT_ID` debes seleccionar un número que todavía no esté en uso.
-
-Cambia las líneas de `MANUFACTURER` y `PRODUCT` para reflejar con precisión tu teclado.
-
-```c
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Tú
-#define PRODUCT mi_teclado_fantastico
-```
-
-?> Windows y macOS mostrarán el `MANUFACTURER` y `PRODUCT` en la lista de dispositivos USB. `lsusb` en Linux toma estos de la lista mantenida por el [Repositorio de ID USB](http://www.linux-usb.org/usb-ids.html) por defecto. `lsusb -v` mostrará los valores reportados por el dispositivo, y también están presentes en los registros del núcleo después de conectarlo.
-
-### Configuración de la matriz del teclado
-
-La siguiente sección del archivo `config.h` trata de la matriz de tu teclado. Lo primero que debes establecer es el tamaño de la matriz. Esto es generalmente, pero no siempre, el mismo número de filas y columnas como la disposición física de las teclas.
-
-```c
-#define MATRIX_ROWS 2
-#define MATRIX_COLS 3
-```
-
-Una vez que hayas definido el tamaño de tu matriz, necesitas definir qué pines en tu MCU están conectados a filas y columnas. Para hacerlo simplemente especifica los nombres de esos pines:
-
-```c
-#define MATRIX_ROW_PINS { D0, D5 }
-#define MATRIX_COL_PINS { F1, F0, B0 }
-#define UNUSED_PINS
-```
-
-El número de entradas debe ser el mismo que el número que asignaste a `MATRIX_ROWS`, y del mismo modo para `MATRIX_COL_PINS` y `MATRIX_COLS`. No tienes que especificar `UNUSED_PINS`, pero puedes si deseas documentar qué pines están abiertos.
-
-Finalmente, puedes especificar la dirección en la que apuntan tus diodos. Esto puede ser `COL2ROW` o `ROW2COL`.
-
-```c
-#define DIODE_DIRECTION COL2ROW
-```
-
-#### Matriz de patas directas
-Para configurar un teclado en el que cada interruptor está conectado a un pin y tierra separados en lugar de compartir los pines de fila y columna, usa `DIRECT_PINS`. La asignación define los pines de cada interruptor en filas y columnas, de izquierda a derecha. Debe ajustarse a los tamaños dentro de `MATRIX_ROWS` y `MATRIX_COLS`. Usa `NO_PIN` para rellenar espacios en blanco. Sobreescribe el comportamiento de `DIODE_DIRECTION`, `MATRIX_ROW_PINS` y `MATRIX_COL_PINS`.
-
-```c
-// #define MATRIX_ROW_PINS { D0, D5 }
-// #define MATRIX_COL_PINS { F1, F0, B0 }
-#define DIRECT_PINS { \
- { F1, E6, B0, B2, B3 }, \
- { F5, F0, B1, B7, D2 }, \
- { F6, F7, C7, D5, D3 }, \
- { B5, C6, B6, NO_PIN, NO_PIN } \
-}
-#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL */
-//#define DIODE_DIRECTION
-```
-
-### Configuración de retroiluminación
-
-QMK soporta retroiluminación en la mayoría de los pines GPIO. Algunos de ellos pueden ser manejados por el MCU en hardware. Para más detalles, consulta la [Documentación de Retroiluminación](feature_backlight.md).
-
-```c
-#define BACKLIGHT_PIN B7
-#define BACKLIGHT_LEVELS 3
-#define BACKLIGHT_BREATHING
-#define BREATHING_PERIOD 6
-```
-
-### Otras opciones de configuración
-
-Hay un montón de características que se pueden configurar o ajustar en `config.h`. Debes consultar la página de [Opciones de Configuración](config_options.md) para más detalles.
-
-## `rules.mk`
-
-Usa el archivo `rules.mk` para decirle a QMK qué archivos construir y qué características habilitar. Si estás construyendo sobre un atmega32u4 deberías poder dejar mayormente los valores predeterminados. Si estás usando otro MCU es posible que tengas que ajustar algunos parámetros.
-
-### Opciones MCU
-
-Estas opciones le indican al sistema de compilación para qué CPU construir. Ten mucho cuidado si cambias cualquiera de estos ajustes. Puedes inutilizar tu teclado.
-
-```make
-MCU = atmega32u4
-F_CPU = 16000000
-ARCH = AVR8
-F_USB = $(F_CPU)
-OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
-```
-
-### Gestores de arranque
-
-El gestor de arranque es una sección especial de tu MCU que te permite actualizar el código almacenado en el MCU. Piensa en ello como una partición de rescate para tu teclado.
-
-#### Ejemplo de gestor de arranque
-
-```make
-BOOTLOADER = halfkay
-```
-
-#### Ejemplo de cargador DFU Atmel
-
-```make
-BOOTLOADER = atmel-dfu
-```
-
-#### Ejemplo de gestor de arranque Pro Micro
-
-```make
-BOOTLOADER = caterina
-```
-
-### Opciones de construcción
-
-Hay un serie de características que se pueden activar o desactivar en `rules.mk`. Consulta la página de [Opciones de Configuración](config_options.md#feature-options) para obtener una lista detallada y una descripción.
diff --git a/docs/es/hardware_drivers.md b/docs/es/hardware_drivers.md
deleted file mode 100644
index 788de2c5ef..0000000000
--- a/docs/es/hardware_drivers.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Controladores de hardware QMK
-
-QMK se utiliza en un montón de hardware diferente. Mientras que el soporte para los MCUs y las configuraciones de matriz más comunes está integrado, hay una serie de controladores que se pueden añadir para soportar hardware adicional al teclado. Los ejemplos incluyen ratones y otros dispositivos de apuntamiento, extensores de i/o para teclados divididos, modúlos Bluetooth, y pantallas LCD, OLED y TFT.
-
-<!-- FIXME: Esto debe hablar de cómo se integran los controladores en QMK y cómo puedes añadir su propio controlador.
-
-# Descripción del sistema de controladores
-
--->
-
-# Controladores disponibles
-
-## ProMicro (Solo AVR)
-
-Soporte para direccionar pines en el ProMicro por su nombre Arduino en lugar de su nombre AVR. Esto necesita ser mejor documentado. Si estás tratando de hacer esto y leer el código no ayuda por favor [abre una issue](https://github.com/qmk/qmk_firmware/issues/new) y podemos ayudarte por el proceso.
-
-## Controlador OLED SSD1306
-
-Soporte para pantallas OLED basadas en SSD1306. Para obtener más información consulta la página de [Característica de Controlador OLED](feature_oled_driver.md).
-
-## WS2812 (Solo AVR)
-
-Soporte para LEDs WS2811/WS2812{a,b,c}. Para obtener más información consulta la página de [Luz RGB](feature_rgblight.md).
-
-## IS31FL3731
-
-Soporte para hasta 2 controladores. Cada controlador implementa 2 matrices charlieplex para direccionar LEDs individualmente usando I2C. Esto permite hasta 144 LEDs del mismo color o 32 LEDs RGB. Para obtener más información sobre cómo configurar el controlador, consulta la página de [Matriz RGB](feature_rgb_matrix.md).
-
-## IS31FL3733
-
-Soporte para hasta un solo controlador con espacio para expansión. Cada controlador puede controlar 192 LEDs individuales o 64 LEDs RGB. Para obtener más información sobre cómo configurar el controlador, consulta la página de [Matriz RGB](feature_rgb_matrix.md).
diff --git a/docs/es/hardware_keyboard_guidelines.md b/docs/es/hardware_keyboard_guidelines.md
deleted file mode 100644
index 298a3b7ce7..0000000000
--- a/docs/es/hardware_keyboard_guidelines.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# Pautas del teclado QMK
-
-Desde sus inicios, QMK ha crecido a pasos agigantados gracias a personas como tú que contribuyes a la creación y mantenimiento de nuestros teclados comunitarios. A medida que hemos crecido hemos descubierto algunos patrones que funcionan bien, y pedimos que te ajustes a ellos para que sea más fácil para que otras personas se beneficien de tu duro trabajo.
-
-
-## Nombrar tu Teclado/Proyecto
-
-Todos los nombres de teclado están en minúsculas, consistiendo sólo de letras, números y guiones bajos (`_`). Los nombres no pueden comenzar con un guión bajo. La barra de desplazamiento (`/`) se utiliza como un carácter de separación de subcarpetas.
-
-Los nombres `test`, `keyboard`, y `all` están reservados para las órdenes de make y no pueden ser usados como un nombre de teclado o subcarpeta.
-
-Ejemplos Válidos:
-
-* `412_64`
-* `chimera_ortho`
-* `clueboard/66/rev3`
-* `planck`
-* `v60_type_r`
-
-## Subcarpetas
-
-QMK utiliza subcarpetas tanto para organización como para compartir código entre las revisiones del mismo teclado. Puedes anidar carpetas hasta 4 niveles de profundidad:
-
- qmk_firmware/keyboards/top_folder/sub_1/sub_2/sub_3/sub_4
-
-Si una subcarpeta tiene un archivo `rules.mk` será considerado un teclado compilable. Estará disponible en el configurador de QMK y se probará con `make all`. Si estás utilizando una carpeta para organizar varios teclados del mismo fabricante no debes tener un archivo `rules.mk`.
-
-Ejemplo:
-
-Clueboard utiliza subcarpetas para ambos propósitos: organización y revisiones de teclado.
-
-* [`qmk_firmware`](https://github.com/qmk/qmk_firmware/tree/master)
- * [`keyboards`](https://github.com/qmk/qmk_firmware/tree/master/keyboards)
- * [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) &larr; This is the organization folder, there's no `rules.mk` file
- * [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) &larr; This is a compilable keyboard, it has a `rules.mk` file
- * [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) &larr; This is also compilable- it uses `DEFAULT_FOLDER` to specify `rev3` as the default revision
- * [`rev1`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev1) &larr; compilable: `make clueboard/66/rev1`
- * [`rev2`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev2) &larr; compilable: `make clueboard/66/rev2`
- * [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) &larr; compilable: `make clueboard/66/rev3` or `make clueboard/66`
-
-## Estructura de carpetas de teclado
-
-Su teclado debe estar ubicado en `qmk_firm cuidada/keyboards/` y el nombre de la carpeta debe ser el nombre de su teclado como se describe en la sección anterior. Dentro de esta carpeta debe haber varios archivos:
-
-* `readme.md`
-* `info.json`
-* `config.h`
-* `rules.mk`
-* `<keyboard_name>.c`
-* `<keyboard_name>.h`
-
-### `readme.md`
-
-Todos los proyectos necesitan tener un archivo `readme.md` que explica lo que es el teclado, quién lo hizo y dónde está disponible. Si es aplicable, también debe contener enlaces a más información, como el sitio web del fabricante. Por favor, sigue la [plantilla publicada](documentation_templates.md#keyboard-readmemd-template).
-
-### `info.json`
-
-Este archivo es utilizado por la [API de QMK](https://github.com/qmk/qmk_api). Contiene la información que [configurador de QMK](https://config.qmk.fm/) necesita mostrar en una representación de su teclado. También puede establecer metadatos aquí. Para más información, consulta la [página de referencia](reference_info_json.md).
-
-### `config.h`
-
-Todos los proyectos necesitan tener un archivo `config.h` que establece cosas como el tamaño de la matriz, nombre del producto, USB VID/PID, descripción y otros ajustes. En general, usa este archivo para establecer la información esencial y los valores predeterminados para tu teclado que siempre funcionarán.
-
-### `rules.mk`
-
-La presencia de este archivo indica que la carpeta es un destino de teclado y se puede utilizar en las órdenes `make`. Aquí es donde estableces el entorno de compilación para tu teclado y configuras el conjunto predeterminado de características.
-
-### `<keyboard_name.c>`
-
-Aquí es donde escribirás código personalizado para tu teclado. Típicamente escribirás código para inicializar e interactuar con el hardware de tu teclado. Si tu teclado se compone de sólo una matriz de teclas sin LEDs, altavoces u otro hardware auxiliar este archivo puede estar en blanco.
-
-Las funciones siguientes se definen típicamente en este archivo:
-
-* `void matrix_init_kb(void)`
-* `void matrix_scan_kb(void)`
-* `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
-* `void led_set_kb(uint8_t usb_led)`
-
-### `<keyboard_name.h>`
-
-Este archivo se utiliza para definir la matriz para tu teclado. Debes definir al menos un macro de C que traduce una serie en una matriz que representa la matriz de interruptor físico para tu teclado. Si es posible construir tu teclado con múltiples diseños debes definir macros adicionales.
-
-Si solo tienes un diseño debes llamar a esta macro `LAYOUT`.
-
-Al definir diseños múltiples debes tener un diseño base, llamado `LAYOUT_all`, que soporte todas las posibles posiciones de switch en tu matriz, incluso si ese diseño es imposible de construir físicamente. Esta es la macro que deberías usar en tu keymap `predeterminado`. Debes tener keymaps adicionales llamados `default_ término layout>` que usen tus otras macros de diseño. Esto hará que sea más fácil para las personas utilizar los diseños que defines.
-
-Los nombres de las macros de diseño son completamente minúsculas, excepto por la palabra `LAYOUT` en el frente.
-
-Por ejemplo, si tienes un PCB de 60% que soporta ANSI e ISO podría definir los siguientes diseños y keymaps:
-
-| Nombre de diseño | Nombre de keymap | Descripción |
-|-------------|-------------|-------------|
-| LAYOUT_all | default | Un diseño que soporta tanto ISO como ANSI |
-| LAYOUT_ansi | default_ansi | Un diseño ANSI |
-| LAYOUT_iso | default_iso | Un diseño ISO |
-
-## Archivos de Imagen/Hardware
-
-En un esfuerzo por mantener el tamaño de repo abajo ya no estamos aceptando archivos binarios de cualquier formato, con pocas excepciones. Alojarlos en otro lugar (por ejemplo <https://imgur.com>) y enlazarlos en el `readme.md` es preferible.
-
-Para archivos de hardware (tales como placas, casos, pcb) puedes contribuir a [qmk.fm repo](https://github.com/qmk/qmk.fm) y estarán disponibles en [qmk.fm](https://qmk.fm). Archivos descargables se almacenan en `/<teclado>/` (nombre sigue el mismo formato que el anterior), se sirven en `https://qmk.fm/<teclado>/`, y se generan páginas de `/_pages/<teclado>/` que se sirven en la misma ubicación (Los archivos .md se generan en archivos .html mediante Jekyll). Echa un vistazo a la carpeta `lets_split` para ver un ejemplo.
-
-## Predeterminados de teclado
-
-Dada la cantidad de funcionalidad que expone QMK, es muy fácil confundir a los nuevos usuarios. Al armar el firmware predeterminado para tu teclado, te recomendamos limitar tus funciones y opciones habilitadas al conjunto mínimo necesario para soportar tu hardware. A continuación se formulan recomendaciones sobre características específicas.
-
-### Bootmagic y Command
-
-[Bootmagic](feature_bootmagic.md) and [Command](feature_command.md) son dos características relacionadas que permiten a un usuario controlar su teclado de manera no obvia. Te recomendamos que piense largo y tendido acerca de si vas a habilitar cualquiera de las características, y cómo vas a exponer esta funcionalidad. Tengas en cuenta que los usuarios que quieren esta funcionalidad puede habilitarla en sus keymaps personales sin afectar a todos los usuarios novatos que pueden estar usando tu teclado como su primera tarjeta programable.
-
-De lejos el problema más común con el que se encuentran los nuevos usuarios es la activación accidental de Bootmagic mientras están conectando su teclado. Están sosteniendo el teclado por la parte inferior, presionando sin saberlo en alt y barra espaciadora, y luego se dan cuenta de que estas teclas han sido intercambiadas en ellos. Recomendamos dejar esta característica deshabilitada de forma predeterminada, pero si la activas consideres establecer la opción `BOOTMAGIC_KEY_SALT` a una tecla que es difícil de presionar al conectar el teclado.
-
-Si tu teclado no tiene 2 teclas de cambio debes proporcionar un predeterminado de trabajo para `IS_COMMAND`, incluso cuando haya definido `COMMAND_ENABLE = no`. Esto dará a sus usuarios un valor predeterminado para ajustarse a si lo hacen enable Command.
-
-## Programación de teclado personalizado
-
-Como se documenta en [Funcionalidad de Adaptación](custom_quantum_functions.md) puedes definir funciones personalizadas para tu teclado. Por favor, tengas en cuenta que sus usuarios pueden querer personalizar ese comportamiento así, y hacer que sea posible para que puedan hacer eso. Si está proporcionando una función personalizada, por ejemplo `process_record_kb()`, asegúrese de que su función también llame a la versión` `_user()` de la llamada. También debes tener en cuenta el valor de retorno de la versión `_user()`, y ejecutar sólo tu código personalizado si el usuario devuelve `true`.
-
-## Proyectos Sin Producción/Conectados A Mano
-
-Estamos encantados de aceptar cualquier proyecto que utilice QMK, incluidos los prototipos y los cableados de mano, pero tenemos una carpeta `/keyboards/handwired/` separada para ellos, por lo que la carpeta `/keyboards/` principal no se llena. Si un proyecto prototipo se convierte en un proyecto de producción en algún momento en el futuro, ¡estaremos encantados de moverlo a la carpeta `/keyboards/` principal!
-
-## Advertencias como errores
-
-Al desarrollar su teclado, tengas en cuenta que todas las advertencias serán tratadas como errores - estas pequeñas advertencias pueden acumularse y causar errores más grandes en el camino (y pierdan es generalmente una mala práctica).
-
-## Derechos de autor
-
-Si estás adaptando la configuración de tu teclado de otro proyecto, pero no utilizando el mismo código, asegúrese de actualizar la cabecera de derechos de autor en la parte superior de los archivos para mostrar tu nombre, en este formato:
-
- Copyright 2017 Tu nombre <tu@email.com>
-
-Si estás modificando el código de otra persona y sólo ha hecho cambios triviales debes dejar su nombre en la declaración de derechos de autor. Si has hecho un trabajo significativo en el archivo debe agregar tu nombre a la de ellos, así:
-
- Copyright 2017 Su nombre <original_author@ejemplo.com> Tu nombre <tu@ejemplo.com>
-
-El año debe ser el primer año en que se crea el archivo. Si el trabajo se hizo a ese archivo en años posteriores puedes reflejar que mediante la adición del segundo año a la primera, como así:
-
- Copyright 2015-2017 Tu nombre <tu@ejemplo.com>
-
-## Licencia
-
-El núcleo de QMC está licenciado bajo la [GNU General Public License](https://www.gnu.org/licenses/licenses.en.html). Si estás enviando binarios para los procesadores AVR puedes elegir cualquiera [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) o [GPLv3](https://www.gnu.org/licenses/gpl.html). Si estás enviando binarios para ARM procesadores debes elegir [GPL Versión 3](https://www.gnu.org/licenses/gpl.html) para cumplir con los [ChibiOS](https://www.chibios.org) licencia GPLv3.
-
-## Detalles técnicos
-
-Si estás buscando más información sobre cómo hacer que su teclado funcione con QMK, [echa un vistazo a la sección hardware](hardware.md)!
diff --git a/docs/es/newbs.md b/docs/es/newbs.md
deleted file mode 100644
index 7e08b679c3..0000000000
--- a/docs/es/newbs.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# La guía completa de QMK para novatos
-
-QMK es un poderoso firmware Open Source para tu teclado mecánico. Puedes utilizar QMK para personalizar tu teclado en maneras a la vez simples y potentes. Gente de todos los niveles de habilidad, desde completos novatos hasta expertos programadores, han utilizado con éxito QMK para personalizar sus teclados. Esta guía te ayudará a hacer lo mismo, sin importar tu nivel de habilidad.
-
-¿No estás seguro de si tu teclado puede ejecutar QMK? Si es un teclado mecánico construido por ti mismo probablemente puedas. Damos soporte a [gran número de placas de hobbistas](https://qmk.fm/keyboards/), e incluso si tu teclado actual no pudiera ejecutar QMK no deberías tener problemas encontrando uno que cumpliera tus necesidades.
-
-## Visión general
-
-Hay 7 secciones principales en esta guía:
-
-* [Empezando](newbs_getting_started.md)
-* [Construyendo tu primer firmware](newbs_building_firmware.md)
-* [Construyendo tu primer firmware usando la GUI](newbs_building_firmware_configurator.md)
-* [Flasheando el firmware](newbs_flashing.md)
-* [Testeando y depurando](newbs_testing_debugging.md)
-* [Mejores práticas](newbs_best_practices.md)
-* [Recursos de aprendizaje](newbs_learn_more_resources.md)
-
-Esta guía está enfocada en ayudar a alguien que nunca ha compilado software con anterioridad. Toma decisiones y hace recomendaciones teniendo en cuenta este punto de vista. Hay métodos alternativos para muchos de estos procedimientos, y soportamos la mayoría de esas alternativas. Si tienes alguna duda sobre cómo llevar a cabo una tarea nos puedes [preguntar para que te guiemos](getting_started_getting_help.md).
-
-## Recursos adicionales
-
-* [Blog de Básicos de Thomas Baart's QMK](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – Un blog creado por un usuario que cubre lo básico sobre cómo usar el firmware QMK Firmware, visto desde la perspectiva de un usuario nuevo.
diff --git a/docs/es/newbs_best_practices.md b/docs/es/newbs_best_practices.md
deleted file mode 100644
index 2f72eff788..0000000000
--- a/docs/es/newbs_best_practices.md
+++ /dev/null
@@ -1,159 +0,0 @@
-# Mejores prácticas
-
-## O, "Cómo aprendí a dejar de preocuparme y amarle a Git."
-
-Este documento procura instruir a los novatos en las mejores prácticas para tener una experiencia más fácil en contribuir a QMK. Te guiaremos por el proceso de contribuir a QMK, explicando algunas maneras de hacerlo más fácilmente, y luego romperemos algunas cosas para enseñarte cómo arreglarlas.
-
-En este documento suponemos un par de cosas:
-
-1. Tienes una cuenta de GitHub, y has hecho un [fork del repo qmk_firmware](getting_started_github.md) en tu cuenta.
-2. Has [configurado tu entorno de desarrollo](newbs_getting_started.md?id=environment-setup).
-
-
-## La rama master de tu fork: Actualizar a menudo, nunca commit
-
-Se recomienda que para desarrollo con QMK, lo que sea que estés haciendo, mantener tu rama `master` actualizada, pero **nunca** commit en ella. Mejor, haz todos tus cambios en una rama de desarrollo y manda pull requests de tus ramas mientras programas.
-
-Para evitar los conflictos de merge &mdash; cuando dos o más usuarios han editado la misma parte de un archivo al mismo tiempo &mdash; mantén tu rama `master` actualizada, y empieza desarrollo nuevo creando una nueva rama.
-
-### Actualizando tu rama master
-
-Para mantener tu rama `master` actualizada, se recomienda agregar el repository ("repo") de Firmware QMK como un repo remoto en git. Para hacer esto, abre tu interfaz de línea de mandatos y ingresa:
-```
-git remote add upstream https://github.com/qmk/qmk_firmware.git
-```
-
-Para verificar que el repo ha sido agregado, ejecuta `git remote -v`, y lo siguiente debe aparecer:
-
-```
-$ git remote -v
-origin https://github.com/<your_username>/qmk_firmware.git (fetch)
-origin https://github.com/<your_username>/qmk_firmware.git (push)
-upstream https://github.com/qmk/qmk_firmware.git (fetch)
-upstream https://github.com/qmk/qmk_firmware.git (push)
-```
-
-Ya que has hecho esto, puedes buscar actualizaciones del repo ejecutando `git fetch upstream`. Esto busca las ramas y etiquetas &mdash; juntos conocidos como "refs" &mdash; del repo QMK, que ahora tiene el apodo `upstream`. Ahora podemos comparar los archivos en nuestro fork `origin` con los de QMK.
-
-Para actualizar la rama master de tu fork, ejecuta lo siguiente, pulsando Intro después de cada línea:
-
-```
-git checkout master
-git fetch upstream
-git pull upstream master
-git push origin master
-```
-
-Esto te coloca en tu rama master, busca los refs del repo de QMK, descarga la rama `master` actual a tu computadora, y después lo sube a tu fork.
-
-### Hacer cambios
-
-Para hacer cambios, crea una nueva rama ejecutando:
-
-```
-git checkout -b dev_branch
-git push --set-upstream origin dev_branch
-```
-
-Esto crea una nueva rama llamada `dev_branch`, te coloca en ella, y después guarda la nueva rama a tu fork. El parámetro `--set-upstream` le dice a git que use tu fork y la rama `dev_branch` cada vez que uses `git push` o `git pull` en esta rama. Solo necesitas usarlo la primera que que subes cambios; ya después, puedes usar `git push` o `git pull`, sin usar los demás parámetros.
-
-!> Con `git push`, puedes usar `-u` en vez de `--set-upstream` &mdash; `-u` es un alias de `--set-upstream`.
-
-Puedes nombrar tu rama casi cualquier cosa, pero se recomienda ponerle algo con relación a los cambios que vas a hacer.
-
-Por defecto `git checkout -b` se basará tu nueva rama en la rama en la cual estás actualmente. Puedes basar tu rama en otra rama existente agregando el nombre de la rama al comando:
-
-```
-git checkout -b dev_branch master
-```
-
-Ahora que tienes una rama development, abre tu editor de texto y haz los cambios que quieres. Se recomienda hacer varios commits pequeños a tu rama; de este modo cualquier cambio que causa problemas puede ser rastreado y deshecho si fuera necesario. Para hacer tus cambios, edita y guarda los archivos que necesitas actualizar, agrégalos al *staging area* de Git, y luego haz un commit a tu rama:
-
-```
-git add path/to/updated_file
-git commit -m "My commit message."
-```
-`git add` agrega los archivos que han sido cambiados al *staging area* de Git, lo cual es la "zona de preparación"de Git. Este contiene los cambios que vas a *commit* usando `git commit`, que guarda los cambios en el repo. Usa un mensaje de commit descriptivo para que puedas saber que ha cambiado fácilmente.
-
-!> Si has cambiado muchos archivos, pero todos los archivos son parte del mismo cambio, puedes usar `git add .` para agregar todos los archivos cambiados que están en tu directiro actual, en vez de agregar cada archivo manualmente.
-
-### Publicar tus cambios
-
-El útimo paso es subir tus cambios a tu fork. Para hacerlo, ejecuta `git push`. Ahora Git publicará el estado actual de `dev_branch` a tu fork.
-
-
-## Resolver los conflictos del merge
-
-A veces cuando el trabajo en una rama tarda mucho tiempo en completarse, los cambios que han sido hechos por otros chocan con los cambios que has hecho en tu rama cuando abres un pull request. Esto se llama un *merge conflict*, y es algo que ocurre cuando varias personas editan las mismas partes de los mismos archivos.
-
-### Rebase tus cambios
-
-Un *rebase* es la manera de Git de tomar los cambios que se aplicaron en un punto, deshacerlos, y aplicar estos mismos cambios en otro punto. En el caso de un conflicto de merge, puedes hacer un rebase de tu rama para recoger los cambios que has hecho.
-
-Para empezar, ejecuta lo siguiente:
-
-```
-git fetch upstream
-git rev-list --left-right --count HEAD...upstream/master
-```
-
-El comando `git rev-list` ejecutado aquí muestra el número de commits que difieren entre la rama actual y la rama master de QMK. Ejecutamos `git fetch` primero para asegurarnos de que tenemos los refs que representan es estado actual del repo upstream. El output del comando `git rev-list` muestra dos números:
-
-```
-$ git rev-list --left-right --count HEAD...upstream/master
-7 35
-```
-
-El primer número representa el número de commits en la rama actual desde que fue creada, y el segundo número es el número de commits hecho a `upstream/master` desde que la rama actual fue creada, o sea los cambios que no están registrados en la rama actual.
-
-Ahora que sabemos el estado actual de la rama actual y el del repo upstream, podemos empezar una operación rebase:
-
-```
-git rebase upstream/master
-```
-Esto le dice a Git que deshaga los commits en la rama actual, y después los re-aplica en la rama master de QMK.
-
-```
-$ git rebase upstream/master
-First, rewinding head to replay your work on top of it...
-Applying: Commit #1
-Using index info to reconstruct a base tree...
-M conflicting_file_1.txt
-Falling back to patching base and 3-way merge...
-Auto-merging conflicting_file_1.txt
-CONFLICT (content): Merge conflict in conflicting_file_1.txt
-error: Failed to merge in the changes.
-hint: Use 'git am --show-current-patch' to see the failed patch
-Patch failed at 0001 Commit #1
-
-Resolve all conflicts manually, mark them as resolved with
-"git add/rm <conflicted_files>", then run "git rebase --continue".
-You can instead skip this commit: run "git rebase --skip".
-To abort and get back to the state before "git rebase", run "git rebase --abort".
-```
-
-Esto nos dice que tenemos un conflicto de merge, y nos dice el nombre del archivo con el conflict. Abre el archivo en tu editor de texto, y en alguna parte del archivo verás algo así:
-
-```
-<<<<<<< HEAD
-<p>For help with any issues, email us at support@webhost.us.</p>
-=======
-<p>Need help? Email support@webhost.us.</p>
->>>>>>> Commit #1
-```
-La línea `<<<<<<< HEAD` marca el principio de un conflicto de merge, y la línea `>>>>>>> Commit #1` marca el final, con las secciones de conflicto separadas por `=======`. La parte del lado `HEAD` is de la versión de QMK master del archivo, y la parte marcada con el mensaje de commit es de la rama actual.
-
-Ya que Git rastrea *cambios de archivos* en vez del contenido de los archivos directamente, si Git no puede encontrar el texto que estaba en el archivo antes del último commit, no sabrá cómo editar el archivo. El editar el archivo de nuevo resolverá este conflicto. Haz tus cambios, y guarda el archivo.
-
-```
-<p>Need help? Email support@webhost.us.</p>
-```
-
-Ahora ejecuta:
-
-```
-git add conflicting_file_1.txt
-git rebase --continue
-```
-
-Git registra los cambios al archivo con conflictos, y sigue aplicando los commits de nuestra rama hasta llegar al final.
diff --git a/docs/es/newbs_building_firmware.md b/docs/es/newbs_building_firmware.md
deleted file mode 100644
index ff9873c785..0000000000
--- a/docs/es/newbs_building_firmware.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Construyendo tu primer firmware
-
-Ahora que has configurado tu entorno de construcción estas listo para empezar a construir firmwares personalizados. Para esta sección de la guía alternaremos entre 3 programas - tu gestor de ficheros, tu editor de texto , y tu ventana de terminal. Manten los 3 abiertos hasta que hayas acabado y estés contento con el firmware de tu teclado.
-
-Si has cerrado y reabierto la ventana de tu terminal después de seguir el primero paso de esta guía, no olvides hacer `cd qmk_firmware` para que tu terminal esté en el directorio correcto.
-
-## Navega a tu carpeta de keymaps
-
-Comienza navegando a la carpeta `keymaps` correspondiente a tu teclado.
-
-?> Si estás en macOS o Windows hay comandos que puedes utilizar fácilmente para abrir la carpeta keymaps.
-
-?> macOS:
-
- abre keyboards/<keyboard_folder>/keymaps
-
-?> Windows:
-
- inicia .\\keyboards\\<keyboard_folder>\\keymaps
-
-## Crea una copia del keymap `default`
-
-Una vez que tengas la carpeta `keymaps` abierta querrás crear una copia de la carpeta `default`. Recomendamos encarecidamente que nombres la carpeta igual que tu nombre de usuario de GitHub, pero puedes utilizar el nombre que quieras siempre que contenga sólo letras en minúscula, números y el caracter de guión bajo.
-
-Para automatizar el proceso, también tienes la opción de ejecutar el script `new_keymap.sh`.
-
-Navega a la carpeta `qmk_firmware/util` e introduce lo siguiente:
-
-```
-./new_keymap.sh <keyboard path> <username>
-```
-
-Por ejemplo, para un usuario llamado John, intentando hacer un keymap nuevo para el 1up60hse, tendría que teclear
-
-```
-./new_keymap.sh 1upkeyboards/1up60hse john
-```
-
-## Abre `keymap.c` con tu editor de texto favorito
-
-Abre tu `keymap.c`. Dentro de este fichero encontrarás la estructura que controla cómo se comporta tu teclado. En lo alto de `keymap.c` puede haber distintos defines y enums que hacen el keymap más fácil de leer. Continuando por abajo encontrarás una línea con este aspecto:
-
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-Esta línea indica el comienzo del listado de Capas. Debajo encontrarás líneas que contienen o bien `LAYOUT` o `KEYMAP`, y estas líneas indican el comienzo de una capa. Debajo de esa línea está la lista de teclas que pertenecen a esa capa concreta.
-
-!> Cuando estés editando tu fichero de keymap ten cuidado con no añadir ni eliminar ninguna coma. Si lo haces el firmware dejará de compilar y puede no ser fácil averiguar dónde está la coma faltante o sobrante.
-
-## Personaliza el Layout a tu gusto
-
-Cómo completar esta paso depende enteramente de ti. Haz ese pequeño cambio que querías o rehaz completamente todo. Puedes eliminar capas si no las necesitas todas, o añadir nuevas hasta un total de 32. Comprueba la siguiente documentación para descubrir qué es lo que puedes definir aquí:
-
-* [Keycodes](keycodes.md)
-* [Características](features.md)
-* [Preguntas frecuentes](faq.md)
-
-?> Mientras estás descubriendo cómo funcionan los keymaps, haz pequeños cambios. Cambios mayores pueden hacer difícil la depuración de problemas que puedan aparecer.
-
-## Construye tu firmware
-
-Cuando los cambios a tu keymap están completos necesitarás construir el firmware. Para hacerlo vuelve a la ventana de tu terminal y ejecuta el siguiente comando:
-
- make <my_keyboard>:<my_keymap>
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un planck rev5, utilizarás el siguiente comando:
-
- make planck/rev5:xyverz
-
-Mientras compila, recibirás un montón de información de salida en la pantalla informándote de qué ficheros están siendo compilados. Debería acabar con una información similar a esta:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex [OK]
- * File size is fine - 18392/28672
-```
-
-## Flashea tu firmware
-
-Continua con [Flasheando el firmware](newbs_flashing.md) para aprender cómo escribir tu firmware nuevo en tu teclado.
diff --git a/docs/es/newbs_building_firmware_configurator.md b/docs/es/newbs_building_firmware_configurator.md
deleted file mode 100644
index 60d67f5fa4..0000000000
--- a/docs/es/newbs_building_firmware_configurator.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Configurador QMK
-
-El [Configurador QMK](https://config.qmk.fm) es un entorno gráfico online que genera ficheros hexadecimales de Firmware QMK.
-
-?> **Por favor sigue estos pasos en orden.**
-
-Ve el [Video tutorial](https://www.youtube.com/watch?v=-imgglzDMdY)
-
-El Configurador QMK functiona mejor con Chrome/Firefox.
-
-
-!> **Ficheros de otras herramientas como KLE, o kbfirmware no serán compatibles con el Configurador QMK. No las cargues, no las importes. El configurador Configurador QMK es una herramienta DIFERENTE. **
-
-## Seleccionando tu teclado
-
-Haz click en el desplegable y selecciona el teclado para el que quieres crear el keymap.
-
-?> Si tu teclado tiene varias versiones, asegúrate de que seleccionas la correcta.**
-
-Lo diré otra vez porque es importante
-
-!> **ASEGÚRATE DE QUE SELECCIONAS LA VERSIÓN CORRECTA!**
-
-Si se ha anunciado que tu teclado funciona con QMK pero no está en la lista, es probable que un desarrollador no se haya encargado de él aún o que todavía no hemos tenido la oportunidad de incluirlo. Abre un issue en [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) solicitando soportar ese teclado un particular, si no hay un [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) activo para ello. Hay también teclados que funcionan con QMK que están en las cuentas de GitHub de sus manufacturantes. Acuérdate de comprobar esto también.
-
-## Eligiendo el layout de tu teclado
-
-Elige el layout que mejor represente el keymap que quieres crear. Algunos teclados no tienen suficientes layouts o layouts correctos definidos aún. Serán soportados en el futuro.
-
-## Nombre del keymap
-
-Llama a este keymap como quieras.
-
-?> Si estás teniendo problemas para compilar, puede merecer la pena probar un cambio de nombre, ya que puede que ya exista en el repositorio de QMK Firmware.
-
-## Creando Tu keymap
-
-La adición de keycodes se puede hacer de 3 maneras.
-1. Arrastrando y soltando
-2. Clickando en un hueco vacío en el layout y haciendo click en el keycode que deseas
-3. Clickando en un hueco vacío en el layout, presionando la tecla física en tu teclado.
-
-Mueve el puntero de tu ratón sobre una tecla y un pequeño extracto te dirá que es lo que hace la tecla. Para una descripción más detallada por favor, mira
-
-[Referencia básica de keycodes](https://docs.qmk.fm/#/keycodes_basic)
-[Referencia avanzada de keycodes](https://docs.qmk.fm/#/feature_advanced_keycodes)
-
-En el caso de que no puedas encontrar un layout que suporte tu keymap, por ejemplo, tres huecos para la barra espaciadora, dos huecos para el retroceso o dos huecos para shift etc etc, rellènalos TODOS.
-
-### Ejemplo:
-
-3 huecos para barra espaciadora: Rellena TODOS con barra espaciadora
-
-2 huecos para retroceso: Rellena AMBOS con retroceso
-
-2 huecos para el shift derecho: Rellena AMBOS con shift derecho
-
-1 hueco para el shift izquierdo y 1 hueco para soporte iso: Rellena ambos con el shift izquierdo
-
-5 huecos , pero sólo 4 teclas: Intuye y comprueba o pregunta a alguien que lo haya hecho anteriormente.
-
-## Guardando tu keymap para ediciones futuras
-
-Cuando estés satisfecho con un teclado o quieres trabajar en el después, pulsa el botón `Exportar Keymap`. Guardára tu keymap con el nombre que elijas seguido de .json.
-
-Entonces podrás cargar este fichero .json en el futuro pulsando el botón `Importar Keymap`.
-
-!> **PRECAUCIÓN:** No es el mismo tipo de fichero .json usado en kbfirmware.com ni ninguna otra herramienta. Si intentas utilizar un fichero .json de alguna de estas herramientas con el Configurador QMK, existe la posibilidad de que tu teclado **explote**.
-
-## Generando tu fichero de firmware
-
-Pulsa el botón verde `Compilar`.
-
-Cuando la compilación haya acabado, podrás presionar el botón verde `Descargar Firmware`.
-
-## Flasheando tu teclado
-
-Por favor, dirígete a la sección de [Flashear firmware](newbs_flashing.md)
-
-## Problemas comunes
-
-#### Mi fichero .json no funciona
-
-Si el fichero .json fue generado con el Configurador QMK, enhorabuena, has dado con un bug. Abre una issue en [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
-
-Si no....cómo no viste el mensaje en negrita que puse arriba diciendo que no hay que utilizar otros ficheros .json?
-
-#### Hay espacios extra en mi layout ¿Qué hago?
-
-Si te refieres a tener tres espacios para la barra espaciadora, la mejor decisión es rellenar los tres con la barra espaciadora. También se puede hacer lo mismo con las teclas retroceso y las de shift
-
-#### Para qué sirve el keycode.......
-
-Por favor, mira
-
-[Referencia básica de keycodes](https://docs.qmk.fm/#/keycodes_basic)
-[Referencia avanzada de keycodes](https://docs.qmk.fm/#/feature_advanced_keycodes)
-
-#### No compila
-
-Por favor, revisa las otras capas de tu keymap para asegurarte de que no hay teclas aleatorias presentes.
-
-## Problemas y bugs
-
-Siempre aceptamos peticiones de clientes y reportes de bug. Por favor, indícalos en [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
diff --git a/docs/es/newbs_flashing.md b/docs/es/newbs_flashing.md
deleted file mode 100644
index 066715c483..0000000000
--- a/docs/es/newbs_flashing.md
+++ /dev/null
@@ -1,351 +0,0 @@
-# Flasheando tu teclado
-
-Ahora que has construido tu fichero de firmware personalizado querrás flashear tu teclado.
-
-## Flasheando tu teclado con QMK Toolbox
-
-La manera más simple de flashear tu teclado sería con [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
-
-De todos modos, QMK Toolbox actualmente sólo está disponible para Windows y macOS. Si estás usando Linux (o sólo quisieras flashear el firmware desde la línea de comandos), tendrás que utilizar el [método indicado abajo](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
-
-### Cargar el fichero en QMK Toolbox
-
-Empieza abriendo la aplicación QMK Toolbox. Tendrás que buscar el fichero de firmware usando Finder o Explorer. El firmware de teclado puede estar en uno de estos dos formatos- `.hex` o `.bin`. QMK intenta copiar el apropiado para tu teclado en el fichero raíz `qmk_firmware`.
-
-?> Si tu estás on Windows o macOS hay comandos que puedes usar para abrir fácilmente la carpeta del firmware actual en Explorer o Finder.
-
-?> Windows:
-
- start .
-
-?> macOS:
-
- open .
-
-El fichero de firmware sempre sigue el siguiente formato de nombre:
-
- <nombre_teclado>_<nombre_keymap>.{bin,hex}
-
-Por ejemplo, un `plank/rev5` con un keymap `default` tendrá este nombre de fichero:
-
- planck_rev5_default.hex
-
-Una vez que hayas localizado el fichero de tu firmware arrástralo a la caja "Fichero local" en QMK Toolbox, o haz click en "Abrir" y navega allí donde tengas almacenado tu fichero de firmware.
-
-### Pon tu teclado en modo DFU (Bootloader)
-
-Para poder flashear tu firmware personalizado tienes que poner tu teclado en un modo especial que permite flasheado. Cuando está en este modo no podrás teclear o utilizarlo para ninguna otra cosa. Es muy importante que no desconectes tu teclado, de lo contrario interrumpirás el proceso de flasheo mientras el firmware se está escribiendo.
-
-Diferentes teclados tienen diferentes maneras de entrar en este modo especial. Si tu PCB actualmente ejecuta QMK o TMK y no has recibido instrucciones específicas, intenta los siguientes pasos en orden:
-
-* Manten pulsadas ambas teclas shift y pulsa `Pause`
-* Manten pulsadas ambas teclas shift y pulsa `B`
-* Desconecta tu teclado, mantén pulsada la barra espaciadora y `B` al mismo tiempo, conecta tu teclado y espera un segundo antes de dejar de pulsar las teclas
-* Pulsa el botón físico `RESET` situado en el fondo de la PCB
-* Localiza los pines en la PCB etiquetados on `BOOT0` o `RESET`, puentea estos dos juntos cuando enchufes la PCB
-
-Si has tenido éxito verás un mensaje similar a este en QMK Toolbox:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-```
-
-### Flashea tu teclado
-
-Haz click en el botón `Flash` de QMK Toolbox. Verás una información de salida similar a esta:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-
-*** DFU device disconnected
-*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
-```
-
-## Flashea tu teclado desde la línea de comandos
-
-Lo primero que tienes que saber es qué bootloader utiliza tu teclado. Hay cuatro bootloaders pincipales que se usan habitualmente . Pro-Micro y sus clones usan CATERINA, Teensy's usa Halfkay, las placas OLKB usan QMK-DFU, y otros chips atmega32u4 usan DFU.
-
-Puedes encontrar más información sobre bootloaders en la página [Instrucciones de flasheado e información de Bootloader](flashing.md).
-
-Si sabes qué bootloader estás usando, en el momento de compilar el firmware, podrás añadir algún texto extra al comando `make` para automatizar el proceso de flasheado.
-
-### DFU
-
-Para eo bootloader DFU, cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
-
- make <my_keyboard>:<my_keymap>:dfu
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un planck rev5, utilizarás este comando:
-
- make planck/rev5:xyverz:dfu
-
-Una vez que finalice de compilar, deberá aparecer lo siguiente:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex
- * File size is fine - 18574/28672
- ```
-
-Después de llegar a este punto, el script de construcción buscará el bootloader DFU cada 5 segundos. Repetirá lo siguiente hasta que se encuentre el dispositivo o lo canceles:
-
- dfu-programmer: no device present.
- Error: Bootloader not found. Trying again in 5s.
-
-Una vez haya hecho esto, tendrás que reiniciar el controlador. Debería mostrar una información de salida similar a esta:
-
-```
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-```
-
-?> Si tienes problemas con esto- del estilo de `dfu-programmer: no device present` - por favor consulta las [Preguntas frecuentes de construcción](faq_build.md).
-
-#### Comandos DFU
-
-Hay un número de comandos DFU que puedes usar para flashear firmware a un dispositivo DFU:
-
-* `:dfu` - Esta es la opción normal y espera hasta que un dispositivo DFU esté disponible, entonces flashea el firmware. Esperará reintentando cada 5 segundos, para ver si un dispositivo DFU ha aparecido.
-* `:dfu-ee` - Esta flashea un fichero `eep` en vez del hex normal. Esto no es lo común.
-* `:dfu-split-left` - Esta flashea el firmware normal, igual que la opción por defecto (`:dfu`). Sin embargo, también flashea el fichero EEPROM "Lado Izquierdo" para teclados divididos. _Esto es ideal para los ficheros divididos basados en Elite C._
-* `:dfu-split-right` - Esto flashea el firmware normal, igual que la opción por defecto (`:dfu`). Sin embargo, también flashea el fichero EEPROM "Lado Derecho" para teclados divididos. _Esto es ideal para los ficheros divididos basados en Elite C._
-
-
-### Caterina
-
-Para placas Arduino y sus clones (como la SparkFun ProMicro), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
-
- make <my_keyboard>:<my_keymap>:avrdude
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un Lets Split rev2, usarás este comando:
-
- make lets_split/rev2:xyverz:avrdude
-
-Una vez que finalice de compilar, deberá aparecer lo siguiente:
-
-```
-Linking: .build/lets_split_rev2_xyverz.elf [OK]
-Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
-Checking file size of lets_split_rev2_xyverz.hex [OK]
- * File size is fine - 27938/28672
-Detecting USB port, reset your controller now..............
-```
-
-En este punto, reinicia la placa y entonces el script detectará el bootloader y procederá a flashear la placa. La información de salida deber ser algo similar a esto:
-
-```
-Detected controller on USB port at /dev/ttyS15
-
-Connecting to programmer: .
-Found programmer: Id = "CATERIN"; type = S
- Software Version = 1.0; No Hardware Version given.
-Programmer supports auto addr increment.
-Programmer supports buffered memory access with buffersize=128 bytes.
-
-Programmer supports the following devices:
- Device code: 0x44
-
-avrdude.exe: AVR device initialized and ready to accept instructions
-
-Reading | ################################################## | 100% 0.00s
-
-avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
-avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
- To disable this feature, specify the -D option.
-avrdude.exe: erasing chip
-avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: writing flash (27938 bytes):
-
-Writing | ################################################## | 100% 2.40s
-
-avrdude.exe: 27938 bytes of flash written
-avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
-avrdude.exe: reading on-chip flash data:
-
-Reading | ################################################## | 100% 0.43s
-
-avrdude.exe: verifying ...
-avrdude.exe: 27938 bytes of flash verified
-
-avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
-
-avrdude.exe done. Thank you.
-```
-Si tienes problemas con esto, puede ser necesario que hagas esto:
-
- sudo make <my_keyboard>:<my_keymap>:avrdude
-
-
-Adicionalmente, si quisieras flashear múltiples placas, usa el siguiente comando:
-
- make <keyboard>:<keymap>:avrdude-loop
-
-Cuando hayas acabado de flashear placas, necesitarás pulsar Ctrl + C o cualquier combinación que esté definida en tu sistema operativo para finalizar el bucle.
-
-
-### HalfKay
-
-Para dispositivos PJRC (Teensy's), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
-
- make <my_keyboard>:<my_keymap>:teensy
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un Ergodox o un Ergodox EZ, usarás este comando:
-
- make ergodox_ez:xyverz:teensy
-
-Una vez que el firmware acabe de compilar, deberá mostrar una información de salida como esta:
-
-```
-Linking: .build/ergodox_ez_xyverz.elf [OK]
-Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
-Checking file size of ergodox_ez_xyverz.hex [OK]
- * File size is fine - 25584/32256
- Teensy Loader, Command Line, Version 2.1
-Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
-Waiting for Teensy device...
- (hint: press the reset button)
- ```
-
-En este punto, reinicia tu placa. Una vez que lo hayas hecho, deberás ver una información de salida como esta:
-
- ```
- Found HalfKay Bootloader
-Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
-Programming............................................................................................................................................................................
-...................................................
-Booting
-```
-
-### BootloadHID
-
-Para placas basadas en Bootmapper Client(BMC)/bootloadHID/ATmega32A, cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el comando de construcción:
-
- make <my_keyboard>:<my_keymap>:bootloaderHID
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un jj40, usarás esté comando:
-
- make jj40:xyverz:bootloaderHID
-
-Una vez que el firmware acaba de compilar, mostrará una información de salida como esta:
-
-```
-Linking: .build/jj40_default.elf [OK]
-Creating load file for flashing: .build/jj40_default.hex [OK]
-Copying jj40_default.hex to qmk_firmware folder [OK]
-Checking file size of jj40_default.hex [OK]
- * The firmware size is fine - 21920/28672 (6752 bytes free)
-```
-
-Después de llegar a este punto, el script de construcción buscará el bootloader DFU cada 5 segundos. Repetirá lo siguiente hasta que se encuentre el dispositivo o hasta que lo canceles.
-
-```
-Error opening HIDBoot device: The specified device was not found
-Trying again in 5s.
-```
-
-Una vez que lo haga, querrás reinicar el controlador. Debería entonces mostrar una información de salida similar a esta:
-
-```
-Page size = 128 (0x80)
-Device size = 32768 (0x8000); 30720 bytes remaining
-Uploading 22016 (0x5600) bytes starting at 0 (0x0)
-0x05580 ... 0x05600
-```
-
-### STM32 (ARM)
-
-Para la mayoría de placas ARM (incluyendo la Proton C, Planck Rev 6, y Preonic Rev 3), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
-
- make <my_keyboard>:<my_keymap>:dfu-util
-
-Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un teclado Planck Revision 6, utilizarás este comando y a continuación reiniciarás el teclado con el bootloader (antes de que acabe de compilar):
-
- make planck/rev6:xyverz:dfu-util
-
-Una vez que el firmware acaba de compilar, mostrará una información de salida similar a esta:
-
-```
-Linking: .build/planck_rev6_xyverz.elf [OK]
-Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
-Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
-
-Size after:
- text data bss dec hex filename
- 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
-
-Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
-dfu-util 0.9
-
-Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
-Copyright 2010-2016 Tormod Volden and Stefan Schmidt
-This program is Free Software and has ABSOLUTELY NO WARRANTY
-Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
-
-Invalid DFU suffix signature
-A valid DFU suffix will be required in a future dfu-util release!!!
-Opening DFU capable USB device...
-ID 0483:df11
-Run-time device DFU version 011a
-Claiming USB DFU Interface...
-Setting Alternate Setting #0 ...
-Determining device status: state = dfuERROR, status = 10
-dfuERROR, clearing status
-Determining device status: state = dfuIDLE, status = 0
-dfuIDLE, continuing
-DFU mode device DFU version 011a
-Device returned transfer size 2048
-DfuSe interface name: "Internal Flash "
-Downloading to address = 0x08000000, size = 41824
-Download [=========================] 100% 41824 bytes
-Download done.
-File downloaded successfully
-Transitioning to dfuMANIFEST state
-```
-
-#### STM32 Commands
-
-Hay un número de comandos DFU que puedes usar para flashear firmware a un dispositivo DFU:
-
-* `:dfu-util` - El comando por defecto para flashing en dispositivos STM32.
-* `:dfu-util-wait` - Esto funciona como el comando por defecto, pero te da (configurable) 10 segundos de tiempo antes de que intente flashear el firmware. Puedes usar `TIME_DELAY=20` desde la líena de comandos para cambiar este tiempo de retardo.
- * Eg: `make <keyboard>:<keymap>:dfu-util TIME_DELAY=5`
-* `:dfu-util-split-left` - Flashea el firmware normal, igual que la opción por defecto (`:dfu-util`). Sin embargo, también flashea el fichero EEPROM "Lado Izquierdo" para teclados divididos.
-* `:dfu-util-split-right` - Flashea el firmware normal, igual que la opción por defecto (`:dfu-util`). Sin embargo, también flashea el fichero EEPROM "Lado Derecho" para teclados divididos.
-
-## ¡Pruébalo!
-
-¡Felicidades! ¡Tu firmware personalizado ha sido programado en tu teclado!
-
-Pruébalo y asegúrate de que todo funciona de la manera que tu quieres. Hemos escrito [Testeando y depurando](newbs_testing_debugging.md) para redondear esta guía de novatos, así que pásate por allí para aprender cómo resolver problemas con tu funcionalidad personalizada.
diff --git a/docs/es/newbs_getting_started.md b/docs/es/newbs_getting_started.md
deleted file mode 100644
index 046fdee27e..0000000000
--- a/docs/es/newbs_getting_started.md
+++ /dev/null
@@ -1,103 +0,0 @@
-# Introducción
-
-El teclado de tu computador tiene un procesador dentro de él, no muy distinto del que está dentro de tu ordenador. Este procesador ejecuta software que es responsable de detectar la pulsación de las teclas y enviar informes sobre el estado del teclado cuando las teclas son pulsadas y liberadas. QMK ocupa el rol de ese software. Cuando construyes un keymap personalizado , estas creando el equivalente de un programa ejecutable en tu teclado.
-
-QMK intenta poner un montón de poder en tus manos haciendo que las cosas fáciles sean fáciles, y las cosas difíciles posibles. No tienes que saber cómo programar para crear keymaps potentes — sólo tienes que seguir un conjunto simple de reglas sintácticas.
-
-# Comenzando
-
-Antes de que puedas construir keymaps, necesitarás instalar algun software y configurar tu entorno de construcción. Esto sólo hay que hacerlo una vez sin importar en cuántos teclados planeas configurar el software.
-
-Si prefieres hacerlo mediante un interfaz gráfico , por favor, considera utilizar el [Configurador QMK](https://config.qmk.fm). En ese caso dirígete a [Construyendo tu primer firmware usando la GUI](newbs_building_firmware_configurator.md).
-
-
-## Descarga el software
-
-### Editor de texto
-
-Necesitarás un programa con el que puedas editar y guardar archivos de **texto plano**, en windows puedes utilizar Notepad y en tu Linux puedes utilizar gedit. Estos dos programas son editores simples y funcionales. En macOS ten cuidado con la aplicación de edición de texto por defecto TextEdit: no guardará texto plano a menos de que se le seleccione explícitamente _Make Plain Text_ desde el menú _Format_.
-
-También puedes descargar e instalar un editor de texto dedicado como [Sublime Text](https://www.sublimetext.com/) o [VS Code](https://code.visualstudio.com/). Esta es probablemente la mejor manera independientemente de la plataforma, ya que estos programas fueron creados específicamente para editar código.
-
-?> ¿No estás seguro de qué editor de texto utilizar? Laurence Bradford escribió una [estupenda introducción](https://learntocodewith.me/programming/basics/text-editors/) al tema.
-
-### QMK Toolbox
-
-QMK Toolbox is an optional graphical program for Windows and macOS that allows you to both program and debug your custom keyboard. You will likely find it invaluable for easily flashing your keyboard and viewing debug messages that it prints.
-
-[Download the latest release here.](https://github.com/qmk/qmk_toolbox/releases/latest)
-
-* For Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installer)
-* For macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installer)
-
-## Configura tu entorno
-
-Hemos intentado hacer QMK lo más fácil de configurar posible. Sólo tienes que preparar tu entorno Linux o Unix, y luego dejar que QMK
-instale el resto.
-
-?> Si no has trabajado con la línea de comandos de Linux/Unix con anterioridad, hay algunos conceptos y comandos básicos que deberías aprender. Estos recursos te enseñarán lo suficiente para poder trabajar con QMK:<br>
-[Comandos de Linux que debería saber](https://www.guru99.com/must-know-linux-commands.html)<br>
-[Algunos comandos básicos de Unix](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
-
-### Windows
-
-Necesitarás instalar MSYS2 y Git.
-
-* Sigue las instrucciones de instalación en la [página de MSYS2](https://www.msys2.org).
-* Cierra las terminales abiertas de MSYS2 y abre una nueva termial de MSYS2 MinGW 64-bit.
-* Instala Git ejecutando este comando: `pacman -S git`.
-
-### macOS
-
-Necesitarás instalar Homebrew. Sigue las instrucciones que encontrarás en la [página de Homebrew](https://brew.sh).
-
-Despueś de que se haya inastalado Homebrew, continúa con _Set Up QMK_. En ese paso ejecutará un script que instalará el resto de paquetes.
-
-### Linux
-
-Necesitarás instalar Git. Es bastante probable que ya lo tengas, pero si no, uno de los siguientes comandos debería instalarlo:
-
-* Debian / Ubuntu / Devuan: `apt-get install git`
-* Fedora / Red Hat / CentOS: `yum install git`
-* Arch: `pacman -S git`
-
-?> Docker es también una opción en todas las plataformas. [Haz click aquí si quieres detalles.](getting_started_build_tools.md#docker)
-
-## Configura QMK
-
-Una vez que hayas configurado tu entorno Linux/Unix, estarás listo para descargar QMK. Haremos esto utilizando Git para "clonar" el respositorio de QMK. Abre una ventana de Terminal o MSYS2 MinGW y mantenla abierta mientras sigues esta guía. Dentro de esa ventana ejecuta estos dos comandos:
-
-```shell
-git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
-cd qmk_firmware
-```
-
-?> Si ya sabes [cómo usar GitHub](getting_started_github.md), te recomendamos en vez de eso, crees y clones tu propio fork. Si no sabes lo que significa, puedes ignorar este mensaje sin problemas.
-
-QMK viene con un script para ayudarte a configurar el resto de cosas que necesitarás. Deberías ejecutarlo introduciendo este comando:
-
- util/qmk_install.sh
-
-## Prueba tu entorno de construcción
-
-Ahora que tu entorno de construcción de QMK está configurado, puedes construcir un firmware para tu teclado. Comienza intentado construir el keymap por defecto del teclado. Deberías ser capaz de hacerlo con un comando con este formato:
-
- make <keyboard>:default
-
-Por ejemplo, para construir el firmware para un Clueboard 66% deberías usar:
-
- make clueboard/66/rev3:default
-
-Cuando esté hecho, deberías tener un montón de información de salida similar a esta:
-
-```
-Linking: .build/clueboard_66_rev3_default.elf [OK]
-Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
-Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
-Checking file size of clueboard_66_rev3_default.hex [OK]
- * The firmware size is fine - 26356/28672 (2316 bytes free)
-```
-
-# Creando tu keymap
-
-Ya estás listo para crear tu propio keymap personal! Para hacerlo continua con [Construyendo tu primer firmware](newbs_building_firmware.md).
diff --git a/docs/es/newbs_learn_more_resources.md b/docs/es/newbs_learn_more_resources.md
deleted file mode 100644
index 34fd7556bf..0000000000
--- a/docs/es/newbs_learn_more_resources.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Recursos de aprendizaje
-
-Estos recursos procuran dar miembros nuevos en la communidad QMK un mayor entendimiento de la información proporcionada en la documentación para novatos.
-
-Recursos de Git:
-
-* [Excelente tutorial general](https://www.codecademy.com/learn/learn-git)
-* [Juego de Git para aprender usando ejemplos](https://learngitbranching.js.org/)
-* [Recursos de Git para aprender más sobre GitHub](getting_started_github.md)
-* [Recursos de Git dirigidos específicamente a QMK](contributing.md)
-
-
-Recursos para línea de mandatos:
-
-* [Excelente tutorial general sobre la línea de mandatos](https://www.codecademy.com/learn/learn-the-command-line)
diff --git a/docs/es/newbs_testing_debugging.md b/docs/es/newbs_testing_debugging.md
deleted file mode 100644
index 69f6984658..0000000000
--- a/docs/es/newbs_testing_debugging.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Testeando y depurando
-
-Una vez que hayas flasheado tu teclado con un firmware personalizado estarás listo para probarlo. Con un poco de suerte todo funcionará a la primera, pero si no es así, este documento te ayudará a averiguar qué está mal.
-
-## Probando
-
-Probar tu teclado es generalmente bastante sencillo. Persiona cada una de las teclas y asegúrate de que envía la tecla correcta. Existen incluso programas que te ayudarán a asegurarte de que no te dejas ninguna tecla sin comprobar.
-
-Nota: Estos programas no los provée ni están relacionados con QMK.
-
-* [Switch Hitter](https://elitekeyboards.com/switchhitter.php) (Sólo Windows)
-* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Sólo Mac)
-* [Keyboard Tester](https://www.keyboardtester.com) (Aplicación web)
-* [Keyboard Checker](https://keyboardchecker.com) (Aplicación web)
-
-## Depurando
-
-Tu teclado mostrará información de depuración si tienes `CONSOLE_ENABLE = yes` en tu `rules.mk`. Por defecto la información de salida es muy limitada, pero puedes encender el modo de depuración para incrementar la información de salida. Utiliza el keycode `DEBUG` de tu keymap, usa la característica [Comando](feature_command.md) para activar el modo depuración, o añade el siguiente código a tu keymap.
-
-```c
-void keyboard_post_init_user(void) {
- // Customise these values to desired behaviour
- debug_enable=true;
- debug_matrix=true;
- //debug_keyboard=true;
- //debug_mouse=true;
-}
-```
-
-### Depurando con QMK Toolbox
-
-Para plataformas compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) se puede usar para mostrar mensajes de depuración de tu teclado.
-
-### Depurando con hid_listen
-
-¿Prefieres una solución basada en una terminal? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provista por PJRC, se puede usar también para mostrar mensajes de depuración. Hay binarios preconstruídos para Windows,Linux,y MacOS.
-
-<!-- FIXME: Describe the debugging messages here. -->
-
-## Enviando tus propios mensajes de depuración
-
-A veces, es útil imprimir mensajes de depuración desde tu [código personalizado](custom_quantum_functions.md). Hacerlo es bastante simple. Comienza incluyendo `print.h` al principio de tu fichero:
-
-```c
-#include "print.h"
-```
-
-Después de eso puedes utilzar algunas funciones print diferentes:
-
-* `print("string")`: Imprime un string simple
-* `uprintf("%s string", var)`: Imprime un string formateado
-* `dprint("string")` Imprime un string simple, pero sólo cuando el modo de depuración está activo
-* `dprintf("%s string", var)`: Imprime un string formateado, pero sólo cuando el modo de depuración está activo
-
-## Ejemplos de depuración
-
-Debajo hay una colección de ejemplos de depuración del mundo real. Para información adicional, Dirígete a [Depurando/Encontrando problemas en QMK](faq_debug.md).
-
-### ¿Que posición en la matriz tiene esta pulsación de tecla?
-
-Cuando estés portando, o intentando diagnosticar problemas en la pcb, puede ser útil saber si la pulsación de una tecla es escaneada correctamente. Para hablitar la información de registro en este escenario, añade el siguiente código al `keymap.c` de tus keymaps
-
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef CONSOLE_ENABLE
- uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
-#endif
- return true;
-}
-```
-
-Ejemplo de salida
-```text
-Waiting for device:.......
-Listening:
-KL: kc: 169, col: 0, row: 0, pressed: 1
-KL: kc: 169, col: 0, row: 0, pressed: 0
-KL: kc: 174, col: 1, row: 0, pressed: 1
-KL: kc: 174, col: 1, row: 0, pressed: 0
-KL: kc: 172, col: 2, row: 0, pressed: 1
-KL: kc: 172, col: 2, row: 0, pressed: 0
-```
-
-### ¿Cuanto tiempo tardó en escanear la pulsación de una tecla?
-
-Cuando estés probando problemas en el rendimiento, puede ser útil saber la frecuenta a la cual la matríz de pulsadores se está escaneando. Para hablitar la información de registro en este escenario, añade el siguiente código al `config.h` de tus keymaps
-
-```c
-#define DEBUG_MATRIX_SCAN_RATE
-```
-
-Ejemplo de salida
-```text
- > matrix scan frequency: 315
- > matrix scan frequency: 313
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
-```
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
index 28b8c81759..fba27c5f68 100644
--- a/docs/faq_debug.md
+++ b/docs/faq_debug.md
@@ -18,15 +18,19 @@ void keyboard_post_init_user(void) {
## Debugging Tools
-There are two different tools you can use to debug your keyboard.
+Various tools are available to debug your keyboard.
### Debugging With QMK Toolbox
For compatible platforms, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) can be used to display debug messages from your keyboard.
+### Debugging with QMK CLI
+
+Prefer a terminal based solution? The [QMK CLI console command](cli_commands.md#qmk-console) can be used to display debug messages from your keyboard.
+
### Debugging With hid_listen
-Prefer a terminal based solution? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
+Something stand-alone? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), provided by PJRC, can also be used to display debug messages. Prebuilt binaries for Windows,Linux,and MacOS are available.
## Sending Your Own Debug Messages :id=debug-api
diff --git a/docs/feature_bluetooth.md b/docs/feature_bluetooth.md
index fdf19c1077..f6fb02d948 100644
--- a/docs/feature_bluetooth.md
+++ b/docs/feature_bluetooth.md
@@ -16,7 +16,7 @@ Not Supported Yet but possible:
* HM-13 based boards
### Adafruit BLE SPI Friend
-Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF5182 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
+Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
* `#define ADAFRUIT_BLE_RST_PIN D4`
* `#define ADAFRUIT_BLE_CS_PIN B4`
* `#define ADAFRUIT_BLE_IRQ_PIN E6`
diff --git a/docs/feature_combo.md b/docs/feature_combo.md
index 0e7ebd6c3b..47128c431b 100644
--- a/docs/feature_combo.md
+++ b/docs/feature_combo.md
@@ -100,7 +100,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings.
-It is worth noting that `COMBO_ACTION`s are not needed anymore. As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in `process_record_user`, and define a combo with `COMBO(<key_array>, <your_custom_keycode>)`.
+It is worth noting that `COMBO_ACTION`s are not needed anymore. As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in `process_record_user`, and define a combo with `COMBO(<key_array>, <your_custom_keycode>)`. See the first example in [Macros](feature_macros.md).
## Keycodes
You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. The following keycodes are available for use in your `keymap.c`
diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md
index 8e854c1e58..6a1a3750a6 100644
--- a/docs/feature_encoders.md
+++ b/docs/feature_encoders.md
@@ -70,22 +70,61 @@ or `keymap.c`:
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
if (clockwise) {
- tap_code(KC_PGDN);
+ tap_code_delay(KC_VOLU, 10);
} else {
- tap_code(KC_PGUP);
+ tap_code_delay(KC_VOLD, 10);
}
} else if (index == 1) { /* Second encoder */
if (clockwise) {
- tap_code(KC_DOWN);
+ rgb_matrix_increase_hue();
} else {
- tap_code(KC_UP);
+ rgb_matrix_decrease_hue();
}
}
return false;
}
```
-!> If you return `true`, this will allow the keyboard level code to run, as well. Returning `false` will override the keyboard level code. Depending on how the keyboard level function is set up.
+!> If you return `true`, it will allow the keyboard level code to run as well. Returning `false` will override the keyboard level code, depending on how the keyboard function is set up.
+
+Layer conditions can also be used with the callback function like the following:
+
+```c
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (get_highest_layer(layer_state|default_layer_state) > 0) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_WH_D);
+ } else {
+ tap_code(KC_WH_U);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ } else { /* Layer 0 */
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ rgb_matrix_increase_speed();
+ } else {
+ rgb_matrix_decrease_speed();
+ }
+ }
+ }
+ return false;
+}
+```
+
+?> Media and mouse countrol keycodes such as `KC_VOLU` and `KC_WH_D` requires `EXTRAKEY_ENABLE = yes` and `MOUSEKEY_ENABLE = yes` respectively in user's `rules.mk` if they are not enabled as default on keyboard level configuration.
## Hardware
@@ -93,7 +132,10 @@ The A an B lines of the encoders should be wired directly to the MCU, and the C/
## Multiple Encoders
-Multiple encoders may share pins so long as each encoder has a distinct pair of pins.
+Multiple encoders may share pins so long as each encoder has a distinct pair of pins when the following conditions are met:
+- using detent encoders
+- pads must be high at the detent stability point which is called 'default position' in QMK
+- no more than two encoders sharing a pin can be turned at the same time
For example you can support two encoders using only 3 pins like this
```
diff --git a/docs/feature_leader_key.md b/docs/feature_leader_key.md
index f10bca7589..e5b1e7a4d9 100644
--- a/docs/feature_leader_key.md
+++ b/docs/feature_leader_key.md
@@ -37,7 +37,7 @@ void matrix_scan_user(void) {
}
```
-As you can see, you have a few function. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
+As you can see, you have a few functions. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.
@@ -74,9 +74,9 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
## Infinite Leader key timeout
-Sometimes your leader key is not on a comfortable places as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key.
+Sometimes your leader key is not on a comfortable place as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key.
This can make typing the entire sequence on time hard even if you are able to type most of the sequence fast. For example, if your sequence is `Leader + asd` typing `asd` fast is very easy once you have your hands in your home row. However starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not.
-To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This mean that, after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably.
+To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This means that after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably.
This infinite timeout only affects the leader key, so in our previous example of `Leader + asd` you will have an infinite amount of time between `Leader` and `a`, but once you start the sequence the timeout you have configured (global or per key) will work normally.
This way you can configure a very short `LEADER_TIMEOUT` but still have plenty of time to position your hands.
@@ -89,11 +89,11 @@ In order to enable this, place this in your `config.h`:
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_layers.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
-While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This will then disable the filtering, and you'll need to specify the whole keycode.
+While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by adding `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This will then disable the filtering, and you'll need to specify the whole keycode.
## Customization
-The Leader Key feature has some additional customization to how the Leader Key feature works. It has two functions that can be called at certain parts of the process. Namely `leader_start()` and `leader_end()`.
+The Leader Key feature has some additional customization to how the Leader Key feature works. It has two functions that can be called at certain parts of the process. Namely `leader_start()` and `leader_end()`.
The `leader_start()` function is called when you tap the `KC_LEAD` key, and the `leader_end()` function is called when either the leader sequence is completed, or the leader timeout is hit.
diff --git a/docs/feature_led_indicators.md b/docs/feature_led_indicators.md
index 59a9f7accc..95d1cd4752 100644
--- a/docs/feature_led_indicators.md
+++ b/docs/feature_led_indicators.md
@@ -1,6 +1,6 @@
# LED Indicators
-?> This feature requires additional configuration to work on both halves of a split keyboard see [Data sync options](feature_split_keyboard.md#data-sync-options)
+?> LED indicators on split keyboards will require state information synced to the slave half (e.g. `#define SPLIT_LED_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
QMK provides methods to read 5 of the LEDs defined in the HID spec:
diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md
index dfd63503f2..37f38cc6ed 100644
--- a/docs/feature_led_matrix.md
+++ b/docs/feature_led_matrix.md
@@ -333,7 +333,7 @@ Where `28` is an unused index from `eeconfig.h`.
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `led_matrix_indicators_kb` or `led_matrix_indicators_user` function for that:
```c
void led_matrix_indicators_kb(void) {
- led_matrix_set_color(index, value);
+ led_matrix_set_value(index, value);
}
```
diff --git a/docs/feature_macros.md b/docs/feature_macros.md
index 81ade58592..78bc4ba0a5 100644
--- a/docs/feature_macros.md
+++ b/docs/feature_macros.md
@@ -40,13 +40,13 @@ You can define up to 32 macros in a `keymap.json` file, as used by [Configurator
### Selecting Your Host Keyboard Layout
-If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros- you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your keymap.json, like so:
+If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your `keymap.json`, like so:
```json
{
"keyboard": "handwired/my_macropad",
"keymap": "my_keymap",
- "host_layout": "dvorak",
+ "host_language": "dvorak",
"macros": [
["Hello, World!"]
],
@@ -75,7 +75,7 @@ The current list of available languages is:
### Macro Basics
-Each macro is an array consisting of strings and objects (dictionaries.) Strings are typed to your computer while objects allow you to control how your macro is typed out.
+Each macro is an array consisting of strings and objects (dictionaries). Strings are typed to your computer while objects allow you to control how your macro is typed out.
#### Object Format
@@ -144,6 +144,8 @@ If yes, we send the string `"QMK is the best thing ever!"` to the computer via t
We return `true` to indicate to the caller that the key press we just processed should continue to be processed as normal (as we didn't replace or alter the functionality).
Finally, we define the keymap so that the first button activates our macro and the second button is just an escape button.
+?>It is recommended to use the SAFE_RANGE macro as per [Customizing Functionality](custom_quantum_functions.md).
+
You might want to add more than one macro.
You can do that by adding another keycode and adding another case to the switch statement, like so:
@@ -191,6 +193,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
```
+?> An enumerated list of custom keycodes (`enum custom_keycodes`) must be declared before `keymaps[]` array, `process_record_user()` and any other function that use the list for the compiler to recognise it.
+
#### Advanced Macros
In addition to the `process_record_user()` function, is the `post_process_record_user()` function. This runs after `process_record` and can be used to do things after a keystroke has been sent. This is useful if you want to have a key pressed before and released after a normal key, for instance.
diff --git a/docs/feature_mouse_keys.md b/docs/feature_mouse_keys.md
index 8e2a3a4cd1..30f563a95d 100644
--- a/docs/feature_mouse_keys.md
+++ b/docs/feature_mouse_keys.md
@@ -164,7 +164,7 @@ small and detailed movements of the cursor.
* **KC_ACL2:** This acceleration sets your cursor to the maximum (computer defined) speed. This is
useful for moving the cursor large distances without much accuracy.
-To use constant speed mode, you must at least define `MK_COMBINED` in your keymap’s `config.h` file:
+To use combined speed mode, you must at least define `MK_COMBINED` in your keymap’s `config.h` file:
```c
#define MK_COMBINED
diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md
index 0c926f6742..0d04f007f8 100644
--- a/docs/feature_oled_driver.md
+++ b/docs/feature_oled_driver.md
@@ -84,6 +84,8 @@ static void render_logo(void) {
}
```
+?> The default font file is located at `drivers/oled/glcdfont.c` and its location can be overwritten with the `OLED_FONT_H` configuration option. Font file content can be edited with external tools such as [Helix Font Editor](https://helixfonteditor.netlify.app/) and [Logo Editor](https://joric.github.io/qle/).
+
## Buffer Read Example
For some purposes, you may need to read the current state of the OLED display
buffer. The `oled_read_raw` function can be used to safely read bytes from the
@@ -162,7 +164,7 @@ These configuration options should be placed in `config.h`. Example:
|`OLED_FONT_END` |`223` |The ending character index for custom fonts |
|`OLED_FONT_WIDTH` |`6` |The font width |
|`OLED_FONT_HEIGHT` |`8` |The font height (untested) |
-|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
+|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_FADE_OUT` |*Not defined* |Enables fade out animation. Use together with `OLED_TIMEOUT`. |
|`OLED_FADE_OUT_INTERVAL` |`0` |The speed of fade out animation, from 0 to 15. Larger values are slower. |
|`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index 031ee52c1c..fb6936620c 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -30,7 +30,7 @@ The ADNS 5050 sensor uses a serial type protocol for communication, and requires
The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.
-### ADSN 9800 Sensor
+### ADNS 9800 Sensor
To use the ADNS 9800 sensor, add this to your `rules.mk`
@@ -150,6 +150,7 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
@@ -219,9 +220,11 @@ Additionally, by default, `pointing_device_send()` will only send a report when
Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed.
-## Example
+## Examples
-In the following example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function. Listen, this is an example:
+### Custom Mouse Keycode
+
+In this example, a custom key is used to click the mouse and scroll 127 units vertically and horizontally, then undo all of that when released - because that's a totally useful function.
```c
case MS_SPECIAL:
@@ -241,3 +244,33 @@ case MS_SPECIAL:
```
Recall that the mouse report is set to zero (except the buttons) whenever it is sent, so the scrolling would only occur once in each case.
+
+### Drag Scroll or Mouse Scroll
+
+A very common implementation is to use the mouse movement to scroll instead of moving the cursor on the system. This uses the `pointing_device_task_user` callback to intercept and modify the mouse report before it's sent to the host system.
+
+```c
+enum custom_keycodes {
+ DRAG_SCROLL = SAFE_RANGE,
+};
+
+bool set_scrolling = false;
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (set_scrolling) {
+ mouse_report.h = mouse_report.x;
+ mouse_report.v = mouse_report.y;
+ mouse_report.x = mouse_report.y = 0
+ }
+ return mouse_report;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (keycode == DRAG_SCROLL && record->event.pressed) {
+ set_scrolling = !set_scrolling;
+ }
+ return true;
+}
+```
+
+This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index d07c02e184..536609b39a 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -415,7 +415,10 @@ All RGB keycodes are currently shared with the RGBLIGHT system:
* `RGB_MODE_*` keycodes will generally work, but not all of the modes are currently mapped to the correct effects for the RGB Matrix system.
-`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MATRIX_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
+`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MODE_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
+
+?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUD)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions-idfunctions) should be used instead.
+
!> By default, if you have both the [RGB Light](feature_rgblight.md) and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
@@ -554,12 +557,9 @@ In order to change the delay of temperature decrease define
## Custom RGB Matrix Effects :id=custom-rgb-matrix-effects
-By setting `RGB_MATRIX_CUSTOM_USER` (and/or `RGB_MATRIX_CUSTOM_KB`) in `rules.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files.
+By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a `rgb_matrix_user.inc` file in the user keymap directory or userspace folder.
-To declare new effects, create a new `rgb_matrix_user/kb.inc` that looks something like this:
-
-`rgb_matrix_user.inc` should go in the root of the keymap directory.
-`rgb_matrix_kb.inc` should go in the root of the keyboard directory.
+?> Hardware maintainers who want to limit custom effects to a specific keyboard can create a `rgb_matrix_kb.inc` file in the root of the keyboard directory, and add `RGB_MATRIX_CUSTOM_KB = yes` to the keyboard level `rules.mk`.
To use custom effects in your code, simply prepend `RGB_MATRIX_CUSTOM_` to the effect name specified in `RGB_MATRIX_EFFECT()`. For example, an effect declared as `RGB_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
@@ -790,6 +790,28 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
+Layer indicator with only configured keys:
+```c
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (get_highest_layer(layer_state) > 0) {
+ uint8_t layer = get_highest_layer(layer_state);
+
+ for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
+ for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
+ uint8_t index = g_led_config.matrix_co[row][col];
+
+ if (index >= led_min && index <= led_max && index != NO_LED &&
+ keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
+ rgb_matrix_set_color(index, RGB_GREEN);
+ }
+ }
+ }
+ }
+}
+```
+
+?> Split keyboards will require layer state data syncing with `#define SPLIT_LAYER_STATE_ENABLE`. See [Data Sync Options](feature_split_keyboard?id=data-sync-options) for more details.
+
#### Examples :id=indicator-examples
This example sets the modifiers to be a specific color based on the layer state. You can use a switch case here, instead, if you would like. This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver).
@@ -829,6 +851,8 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
+!> RGB indicators on split keyboards will require state information synced to the slave half (e.g. `#define SPLIT_LAYER_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
+
#### Indicators without RGB Matrix Effect
If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index 8484586c05..194daee294 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -76,8 +76,10 @@ Changing the **Value** sets the overall brightness.<br>
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode |
-!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
+?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUI)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
+
+!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
## Configuration
@@ -202,7 +204,7 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
## Lighting Layers
-?> **Note:** Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See [RGB Matrix Indicators](feature_rgb_matrix.md?indicators) for details on how to do so.
+?> **Note:** Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See [RGB Matrix Indicators](feature_rgb_matrix.md#indicators) for details on how to do so.
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
@@ -322,6 +324,8 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
```
would turn the layer 0 (or 1) on and off again three times when `DEBUG` is pressed.
+!> Lighting layers on split keyboards will require layer state synced to the slave half (e.g. `#define SPLIT_LAYER_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
+
### Overriding RGB Lighting on/off status
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
@@ -344,7 +348,7 @@ If you need to change your RGB lighting in code, for example in a macro to chang
### Low level Functions
|Function |Description |
|--------------------------------------------|-------------------------------------------|
-|`rgblight_set()` |Flash out led buffers to LEDs |
+|`rgblight_set()` |Flush out led buffers to LEDs |
|`rgblight_set_clipping_range(pos, num)` |Set clipping Range. see [Clipping Range](#clipping-range) |
Example:
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index c8ba18beeb..dbc7740f98 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -130,14 +130,17 @@ To enable this method, add the following to your `config.h` file:
#define EE_HANDS
```
-However, you'll have to flash the EEPROM files for the correct hand to each controller. You can do this manually, or there are targets for avrdude and dfu to do this, while flashing the firmware:
-
-* `:avrdude-split-left`
-* `:avrdude-split-right`
-* `:dfu-split-left`
-* `:dfu-split-right`
-* `:dfu-util-split-left`
-* `:dfu-util-split-right`
+Next, you will have to flash the EEPROM files once for the correct hand to the controller on each halve. You can do this manually with the following bootloader targets while flashing the firmware:
+
+* AVR controllers with the Caterina bootloader (e.g. Pro Micro):
+ * `:avrdude-split-left`
+ * `:avrdude-split-right`
+* AVR controllers with the stock Amtel DFU or DFU compatible bootloader (e.g. Elite-C):
+ * `:dfu-split-left`
+ * `:dfu-split-right`
+* ARM controllers with a DFU compatible bootloader (e.g. Proton-C):
+ * `:dfu-util-split-left`
+ * `:dfu-util-split-right`
Example:
@@ -145,9 +148,13 @@ Example:
make crkbd:default:avrdude-split-left
```
+?> ARM controllers using `dfu-util` will require an EEPROM reset after setting handedness. This can be done using the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md). Controllers using emulated EEPROM will always require handedness parameter when flashing the firmware.
+
+?> [QMK Toolbox]() can also be used to flash EEPROM handedness files. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand
+
This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files.
-You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common).
+You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common).
#### Handedness by `#define`
diff --git a/docs/feature_swap_hands.md b/docs/feature_swap_hands.md
index b0239bb802..654108ae70 100644
--- a/docs/feature_swap_hands.md
+++ b/docs/feature_swap_hands.md
@@ -27,5 +27,7 @@ Note that the array indices are reversed same as the matrix and the values are o
|`SH_MON` |Swaps hands when pressed, returns to normal when released (momentary). |
|`SH_MOFF` |Momentarily turns off swap. |
|`SH_TG` |Toggles swap on and off with every key press. |
-|`SH_TT` |Toggles with a tap; momentary when held. |
+|`SH_TT` |Momentary swap when held, toggles with repeated taps (see below). |
|`SH_OS` |One shot swap hands: toggles while pressed or until next key press. |
+
+`SH_TT` swap-hands tap-toggle key is similar to [layer tap-toggle](feature_layers.md?id=switching-and-toggling-layers). Tapping repeatedly (5 taps by default) will toggle swap-hands on or off, like `SH_TG`. Tap-toggle count can be changed by defining a value for `TAPPING_TOGGLE`.
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index 40f9802db3..c055a9989a 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -10,7 +10,7 @@ With this feature one can specify keys that behave differently, based on the amo
First, you will need `TAP_DANCE_ENABLE = yes` in your `rules.mk`, because the feature is disabled by default. This adds a little less than 1k to the firmware size.
-Optionally, you might want to set a custom `TAPPING_TERM` time by adding something like this in you `config.h`:
+Optionally, you might want to set a custom `TAPPING_TERM` time by adding something like this in your `config.h` file:
```c
#define TAPPING_TERM 175
@@ -243,7 +243,7 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following:
*
* How to figure out tap dance state: interrupted and pressed.
*
- * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
+ * Interrupted: If the state of a dance is "interrupted", that means that another key has been hit
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
*
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
diff --git a/docs/flashing.md b/docs/flashing.md
index 2e69f246aa..f6b5ff78b2 100644
--- a/docs/flashing.md
+++ b/docs/flashing.md
@@ -290,7 +290,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode (this may only enter the MCU into a "secure" bootloader mode; see https://github.com/qmk/qmk_firmware/issues/6112)
+ * Tap the `RESET` keycode
* Press the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .bin file
diff --git a/docs/fr-fr/ChangeLog/20190830.md b/docs/fr-fr/ChangeLog/20190830.md
deleted file mode 100644
index cb223be31a..0000000000
--- a/docs/fr-fr/ChangeLog/20190830.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# QMK Breaking Change - 30 août 2019
-
-Quatre fois par an, QMK lance un processus pour fusionner les Breaking Changes. Un Breaking Change est un changement qui modifie la manière dont QMK fonctionne introduisant des incompatibilités ou des comportements dangereux. Nous n'effectuons ces changements que 4 fois par an afin que les utilisateurs n'aient pas peur de casser leurs keymaps en mettant à jour leur version de QMK.
-
-Ce document présente les fusions de Breaking Change. Voici la liste des changements.
-
-## Formattage de code Core avec clang-format
-
-* Tous les fichiers core (`drivers/`, `quantum/`, `tests/`, et `tmk_core/`) seront formatés avec clang-format
-* Un processus travis pour reformatter les PRs lors de la fusion a été mis en place
-* Vous pouvez utiliser la nouvelle commande CLI `qmk cformat` afin de formater avant de soumettre votre PR si vous le souhaitez.
-
-## Nettoyage des descripteurs LUFA USB
-
-* Nettoyage du code lié aux descripteurs USB HID sur les claviers AVR, afin de les rendre plus simple à lire et compréhensibles
-* Plus d'information: https://github.com/qmk/qmk_firmware/pull/4871
-* Normalement pas de changement de fonctionnement et aucune keymap modifiée.
-
-## Migration des entrées de `ACTION_LAYER_MOMENTARY()` dans `fn_actions` vers des keycodes `MO()`
-
-* `fn_actions` est déprécié, et ses fonctionnalités ont été remplacées par des keycodes directs et `process_record_user()`
-* Supprimer cette fonctionnalité obsolète devrait aboutir à une réduction importante de la taille du firmware et de la complexité du code
-* Il est recommandé que toutes les keymaps affectées remplacent `fn_actions` vers les fonctionnalités de [keycode custom](https://docs.qmk.fm/#/custom_quantum_functions) et [macro](https://docs.qmk.fm/#/feature_macros)
-
-## Mise à jour Atreus vers les conventions de codage courantes
-
-* Les doublons include guards ont contourné le comportement de traitement des headers attendu
-* Il est recommandé pour toutes les keymaps affectées de supprimer le doublon de `<keyboard>/config.h` et `<keyboard>/keymaps/<user>/config.h` et de ne garder que des surcharges au niveau keymap
-
-## Récupération des changements de fichier keymap langage de la fork ZSA
-
-* Corrige une issue dans le fichier `keymap_br_abnt2.h` qui inclut la mauvaise souce (`keymap_common.h` au lieu de `keymap.h`)
-* Met à jour le fichier `keymap_swedish.h` afin d'être spécifique au suédois et plus "nordique" en général.
-* Toutes les keymaps qui utilisent ceci devront supprimer `NO_*` et le remplacer par `SE_*`.
-
-## Mise à jour du repo afin d'utiliser LUFA comme un sous-module git
-
-* `/lib/LUFA` supprimé du dépôt
-* LUFA, définis comme un sous-module, pointe vers qmk/lufa
-* Ceci devrait ajouter plus de flexibilité vers LUFA, et nous permet de garder le sous-module à jour bien plus facilement. Il avait environ 2 ans de retard, sans manière simple de corriger. Ce changement devrait simplifier la mise à jour dans le futur.
-
-## Migration des entrées `ACTION_BACKLIGHT_*()` dans `fn_actions` vers des keycodes `BL_`
-
-* `fn_actions` est déprécié, et ses fonctionnalités ont été remplacées par des keycodes directs et `process_record_user()`
-* Toutes les keymaps utilisant ces actions doivent avoir les clés `KC_FN*` remplacées par les clés `BL_*` équivalentes
-* Si vous utilisez actuellement `KC_FN*` vous devrez remplacer `fn_actions` avec les fonctionnalités de [keycode custom](https://docs.qmk.fm/#/custom_quantum_functions) et [macro](https://docs.qmk.fm/#/feature_macros)
-
-## Remplacer l'alias `KC_DELT` par `KC_DEL`
-
-* `KC_DELT` était un alias redondant et non documenté pour `KC_DELETE`
-* Il a été supprimé et toutes ses utilisations ont été remplacées par l'alias plus courant `KC_DEL`
-* Environ 90 keymaps (surtout des boards ErgoDox) ont été modifiées à cette fin
diff --git a/docs/fr-fr/README.md b/docs/fr-fr/README.md
deleted file mode 100644
index 3d1f740abb..0000000000
--- a/docs/fr-fr/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Quantum Mechanical Keyboard Firmware
-
-[![Version courante](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Statut de la doc](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![Contributeurs GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![Forks GitHub](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## Qu'est-ce que QMK Firmware?
-
-QMK (*Quantum Mechanical Keyboard*) est une communauté open source qui maintient le firmware QMK, la QMK Toolbox (*Boite à outil*), qmk.fm et leurs documentations. QMK Firmware est un firmware dédié aux claviers qui est basé sur [tmk\_keyboard](https://github.com/tmk/tmk_keyboard). Il offre des fonctionnalités très utiles pour les contrôleurs Atmel AVR, et, plus spécifiquement pour [les produits d'OLKB](https://olkb.com), le clavier [ErgoDox EZ](https://www.ergodox-ez.com), et pour les [produits Clueboard](https://clueboard.co/). Il prend désormais aussi en charge les processeurs ARM qui utilisent ChibiOS. Vous pouvez l'utiliser pour contrôler un clavier personnalisé soudé à la main ou alors sur un clavier avec un PCB personnalisé.
-
-## Comment l'obtenir
-
-Si vous souhaitez contribuer à une disposition de clavier (keymap), ou à des fonctionnalités de QMK alors le plus simple est de [forker le dépôt avec GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) puis cloner le dépôt localement pour y faire des changements. Vous pourrez pousser vos changements sur GitHub puis ouvrir un [Pull Request](https://github.com/qmk/qmk_firmware/pulls) depuis votre fork GitHub.
-
-Sinon, vous pouvez aussi le télécharger directement en ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), ou le cloner avec git en ssh (`git@github.com:qmk/qmk_firmware.git`), ou https (`https://github.com/qmk/qmk_firmware.git`).
-
-## Comment le compiler
-
-Avant d'être prêt à compiler vous allez devoir [installer un environnement](fr-fr/getting_started_build_tools.md) pour les développements AVR et/ou ARM. Une fois ceci fait, vous pourrez utiliser la commande `make` pour compiler le clavier et la disposition avec une commande de ce type :
-
- make planck/rev4:default
-
-Cette commande compilera la révision `rev4` du clavier `planck` avec la disposition `default`. Notez que tous les claviers n'ont pas forcément de révisions (aussi appelées sous-projects ou dossiers, ou en anglais «subprojects» ou «folder»). Cette option peut donc être omise:
-
- make preonic:default
-
-## Comment le personnaliser
-
-QMK a beaucoup de [fonctionnalités](fr-fr/features.md) à explorer, et [une documentation](https://docs.qmk.fm) très abondante que vous pourrez parcourir. La plupart des fonctionnalités vous permettrons de modifier vos [dispositions](fr-fr/keymap.md) (keymaps) et de changer [les codes de caractères](fr-fr/keycodes.md) (keycodes).
diff --git a/docs/fr-fr/_summary.md b/docs/fr-fr/_summary.md
deleted file mode 100644
index 25a593b2ec..0000000000
--- a/docs/fr-fr/_summary.md
+++ /dev/null
@@ -1,126 +0,0 @@
-**En Français**
-
-* [Guide pour débutant complet](fr-fr/newbs.md)
- * [Pour débuter](fr-fr/newbs_getting_started.md)
- * [Compiler son premier firmware](fr-fr/newbs_building_firmware.md)
- * [Flasher le Firmware](fr-fr/newbs_flashing.md)
- * [Test et Débuggage](fr-fr/newbs_testing_debugging.md)
- * [Bonnes pratiques Git](fr-fr/newbs_best_practices.md)
- * [Ressources d'apprentissage](fr-fr/newbs_learn_more_resources.md)
-
-* [Les bases de QMK](fr-fr/README.md)
- * [Indroduction à QMK](fr-fr/getting_started_introduction.md)
- * [QMK CLI](fr-fr/cli.md)
- * [Configuration de la CLI QMK](fr-fr/cli_configuration.md)
- * [Contribuer à QMK](fr-fr/contributing.md)
- * [Comment utiliser GitHub](fr-fr/getting_started_github.md)
- * [Trouver de l'aide](fr-fr/getting_started_getting_help.md)
-
-* [Breaking changes](fr-fr/breaking_changes.md)
- * [30 août 2019](fr-fr/ChangeLog/20190830.md)
-
-* [FAQ](fr-fr/faq.md)
- * [FAQ Générale](fr-fr/faq_general.md)
- * [Compiler QMK](fr-fr/faq_build.md)
- * [Débugguer / Dépanner QMK](fr-fr/faq_debug.md)
- * [Keymap / Disposition](fr-fr/faq_keymap.md)
- * [Installer les drivers avec Zadig](fr-fr/driver_installation_zadig.md)
-
-**En Anglais**
-
-* Guides détaillés
- * [Installation des outils de compilation](fr-fr/getting_started_build_tools.md)
- * [Guide Vagrant](fr-fr/getting_started_vagrant.md)
- * [Commandes de compilations](fr-fr/getting_started_make_guide.md)
- * [Flasher les firmwares](fr-fr/flashing.md)
- * [Personnaliser les fonctionnalités](fr-fr/custom_quantum_functions.md)
- * [Aperçu des fonctionnalités des dispositions](fr-fr/keymap.md)
-
-* [Hardware](fr-fr/hardware.md)
- * [Processeurs AVR](fr-fr/hardware_avr.md)
- * [Pilotes / Drivers](fr-fr/hardware_drivers.md)
-
-* Réferences
- * [Lignes de conduite des claviers](fr-fr/hardware_keyboard_guidelines.md)
- * [Options de configurations](fr-fr/config_options.md)
- * [Keycodes / Codes des caractères](fr-fr/keycodes.md)
- * [Conventions de codage - C](fr-fr/coding_conventions_c.md)
- * [Conventions de codage - Python](fr-fr/coding_conventions_python.md)
- * [Meilleurs pratiques sur la documentation](fr-fr/documentation_best_practices.md)
- * [Modèles de documentation](fr-fr/documentation_templates.md)
- * [Glossaire](fr-fr/reference_glossary.md)
- * [Tests unitaires](fr-fr/unit_testing.md)
- * [Fonctions utiles](fr-fr/ref_functions.md)
- * [Support de configuration](fr-fr/reference_configurator_support.md)
- * [Format du fichier info.json](fr-fr/reference_info_json.md)
- * [Développer la CLI en Python](fr-fr/cli_development.md)
-
-* [Fonctionnalités](fr-fr/features.md)
- * [Keycodes basiques](fr-fr/keycodes_basic.md)
- * [Touches utilisées avec Shift (US ANSI)](fr-fr/keycodes_us_ansi_shifted.md)
- * [Keycodes quantiques](fr-fr/quantum_keycodes.md)
- * [Keycodes avancés](fr-fr/feature_advanced_keycodes.md)
- * [Fonctionnalités audio](fr-fr/feature_audio.md)
- * [Majuscule automatique](fr-fr/feature_auto_shift.md)
- * [Rétroéclairage](fr-fr/feature_backlight.md)
- * [Bluetooth](fr-fr/feature_bluetooth.md)
- * [Bootmagic](fr-fr/feature_bootmagic.md)
- * [Combos](fr-fr/feature_combo.md)
- * [Commande](fr-fr/feature_command.md)
- * [API anti-rebond](fr-fr/feature_debounce_type.md)
- * [DIP Switch](fr-fr/feature_dip_switch.md)
- * [Macros dynamiques](fr-fr/feature_dynamic_macros.md)
- * [Interrupteurs rotatifs](fr-fr/feature_encoders.md)
- * [Grave Escape](fr-fr/feature_grave_esc.md)
- * [Retour haptique](fr-fr/feature_haptic_feedback.md)
- * [Contrôleur LCD HD44780](fr-fr/feature_hd44780.md)
- * [Touche à verrou / Lock-key](fr-fr/feature_key_lock.md)
- * [Dispositions / layouts](fr-fr/feature_layouts.md)
- * [Touche leader](fr-fr/feature_leader_key.md)
- * [Matrice LED](fr-fr/feature_led_matrix.md)
- * [Macros](fr-fr/feature_macros.md)
- * [Boutons de souris](fr-fr/feature_mouse_keys.md)
- * [Pilotes / Drivers OLED](fr-fr/feature_oled_driver.md)
- * [Touche one-shot](fr-fr/one_shot_keys.md)
- * [Périphériques de pointage](fr-fr/feature_pointing_device.md)
- * [Souris PS/2](fr-fr/feature_ps2_mouse.md)
- * [Éclairage RGB](fr-fr/feature_rgblight.md)
- * [Matrice RGB](fr-fr/feature_rgb_matrix.md)
- * [Space Cadet](fr-fr/feature_space_cadet.md)
- * [Claviers scindés / splittés](fr-fr/feature_split_keyboard.md)
- * [Stenographie](fr-fr/feature_stenography.md)
- * [Inversion des mains](fr-fr/feature_swap_hands.md)
- * [Tap Dance](fr-fr/feature_tap_dance.md)
- * [Terminale](fr-fr/feature_terminal.md)
- * [Imprimante thermique](fr-fr/feature_thermal_printer.md)
- * [Caractères unicodes](fr-fr/feature_unicode.md)
- * [Dossier utilisateur](fr-fr/feature_userspace.md)
- * [Velocikey](fr-fr/feature_velocikey.md)
-
-* Pour les makers et les bricoleurs
- * [Guide des claviers soudés à la main](fr-fr/hand_wire.md)
- * [Guide de flash de l’ISP](fr-fr/isp_flashing_guide.md)
- * [Guide du débogage ARM](fr-fr/arm_debugging.md)
- * [Drivers I2C](fr-fr/i2c_driver.md)
- * [Drivers SPI](fr-fr/spi_driver.md)
- * [Contrôles des GPIO](fr-fr/internals_gpio_control.md)
- * [Conversion en Proton C](fr-fr/proton_c_conversion.md)
-
-* Pour aller plus loin
- * [Comment fonctionnent les claviers](fr-fr/how_keyboards_work.md)
- * [Comprendre QMK](fr-fr/understanding_qmk.md)
-
-* Autres sujets
- * [Utiliser Eclipse avec QMK](fr-fr/other_eclipse.md)
- * [Utiliser VSCode avec QMK](fr-fr/other_vscode.md)
- * [Support](fr-fr/getting_started_getting_help.md)
- * [Comment ajouter des traductions](fr-fr/translating.md)
-
-* À l’intérieur de QMK (En cours de documentation)
- * [Définitions](fr-fr/internals_defines.md)
- * [Input Callback Reg](fr-fr/internals_input_callback_reg.md)
- * [Appareils Midi](fr-fr/internals_midi_device.md)
- * [Installation d’un appareil Midi](fr-fr/internals_midi_device_setup_process.md)
- * [Utilitaires Midi](fr-fr/internals_midi_util.md)
- * [Fonctions Midi](fr-fr/internals_send_functions.md)
- * [Outils Sysex](fr-fr/internals_sysex_tools.md)
diff --git a/docs/fr-fr/breaking_changes.md b/docs/fr-fr/breaking_changes.md
deleted file mode 100644
index 4c3817d2ef..0000000000
--- a/docs/fr-fr/breaking_changes.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# Breaking changes
-
-Ce document décrit le processus de QMK pour la gestion des breaking changes. Un breaking change est un changement qui modifie la manière dont QMK fonctionne introduisant des incompatibilités ou des comportements dangereux. Nous limitons ces changements afin que les utilisateurs n'aient pas peur de casser leurs keymaps en mettant à jour leur version de QMK.
-
-La période de breaking change est quand nous allons fusionner un PR qui change QMK d'une manière dangereuse ou inattendue. Il y a une période interne de test afin de nous assurer que les problèmes résiduels sont rares ou impossible à prévoir.
-
-## Qu'est-ce qui a été inclus dans des Breaking Changes précédents?
-
-* [30 août 2019](ChangeLog/20190830.md)
-
-## Quand va être le prochain Breaking Change?
-
-Le prochain Breaking Change est planifié pour le 29 novembre.
-
-### Dates importantes
-
-* [x] 21 septembre 2019 - `future` est créé. Il va être rebasé de manière hebdomadaire.
-* [ ] 01 novembre 2019 - `future` fermé aux nouveaux PRs.
-* [ ] 01 novembre 2019 - Appel aux testeurs.
-* [ ] 27 novembre 2019 - `master` est bloqué, pas de PRs fusionnés.
-* [ ] 29 novembre 2019 - `future` est fusionné dans `master`.
-* [ ] 30 novembre 2019 - `master` est débloqué. Les PRs peuvent à nouveau être fusionnés.
-
-## Quels changements seront inclus?
-
-Pour voir une liste de candidats de breaking changes, vous pouvez regarder la liste des [labels `breaking_change`](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr). De nouveaux changements peuvent être ajoutés entre maintenant et lorsque `future` est fermée, et un PR avec ce label n'est pas garanti d'être fusionné.
-
-Si vous souhaitez que votre breaking change soit inclus dans ce tour, vous devez créer un PR avec le label `breaking_change` et faire en sorte qu'il soit accepté avant que `future` ne soit fermé. Une fois `future` fermé, aucun nouveau breaking change sera accepté.
-
-Critère d'acceptation:
-
-* Le PR est complété et prêt à fusionner
-* Le PR a un ChangeLog
-
-# Checklists
-
-Cette section documente plusieurs processus que nous utilisons en lançant le processus de Breaking Change.
-
-## Rebase `future` de `master`
-
-Ceci est lancé chaque vendredi tant que `future` est ouvert.
-
-Processus:
-
-```
-cd qmk_firmware
-git checkout master
-git pull --ff-only
-git checkout future
-git rebase master
-git push --force
-```
-
-## Créer la branche `future`
-
-Ceci est fait immédiatement après la fusion de la branche `future` précédente.
-
-* `qmk_firmware` git commands
- * [ ] `git checkout master`
- * [ ] `git pull --ff-only`
- * [ ] `git checkout -b future`
- * [ ] Modifie `readme.md`
- * [ ] Ajoute un message en haut qui indique que c'est une branche de test.
- * [ ] Ajoute un lien vers ce document
- * [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
- * [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
- * [ ] `git tag <next_version>` # Evite que le label point d'arrêt soit confondu par un incrément de version
- * [ ] `git push origin future`
- * [ ] `git push --tags`
-
-## 4 Semaines Avant la Fusion
-
-* `future` est maintenant fermé aux nouveaux PRs, seul des correctifs pour les PRs courants peuvent être mergés
-* Envoi de l'appel aux testeurs
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
-
-## 1 Semaine Avant la Fusion
-
-* Annonce que master sera fermée entre <2 jours avant> à <Jour de la fusion>
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
-
-## 2 Jours Avant la Fusion
-
-* Annonce que master est fermé pour 2 jours
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
-
-## Jour de la fusion
-
-* `qmk_firmware` git commands
- * [ ] `git checkout future`
- * [ ] `git pull --ff-only`
- * [ ] `git rebase origin/master`
- * [ ] Modifie `readme.md`
- * [ ] Supprimer les notes à propos de `future`
- * [ ] Regroupe ChangeLog dans un fichier.
- * [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
- * [ ] `git push origin future`
-* Actions sur GitHub
- * [ ] Crée un PR pour `future`
- * [ ] Fusion le PR `future`
diff --git a/docs/fr-fr/cli.md b/docs/fr-fr/cli.md
deleted file mode 100644
index 917a9315bc..0000000000
--- a/docs/fr-fr/cli.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# La CLI de QMK
-
-Cette page décrit comment configurer et utiliser la CLI QMK.
-
-# Vue d'ensemble
-
-La CLI de QMK permet de simplifier la compilation et l'interaction avec les claviers QMK. Nous avons défini plusieurs commandes pour simplifier et rationaliser les tâches telles qu'obtenir et compiler le firmware QMK, créer de nouvelles keymaps, et plus.
-
-* [CLI globale](#global-cli)
-* [CLI locale](#local-cli)
-* [Les commandes CLI](#cli-commands)
-
-# Pré-requis
-
-La CLI nécessite Python 3.5 ou plus récent. Nous essayons de limiter le nombre de pré-requis, mais vous allez aussi devoir installer les paquets listés dans le fichier [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt).
-
-# CLI globale
-
-QMK met à disposition une CLI installable qui peut être utilisée pour configurer votre environnement de compilation QMK, fonctionne avec QMK, et qui rend l'utilisation de plusieurs copies de `qmk_firmware` plus simple. Nous recommandons d'installer et de mettre à jour ceci régulièrement.
-
-## Installer en utilisant Homebrew (macOS, quelques Linux)
-
-Si vous avez installé [Homebrew](https://brew.sh) vous pouvez entrer ce qui suit et installer QMK:
-
-```
-brew tap qmk/qmk
-brew install qmk
-export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
-qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
-```
-
-## Installer en utilisant easy_install ou pip
-
-Si votre système n'est pas listé ci-dessus, vous pouvez installer QMK manuellement. Premièrement, vérifiez que vous avez bien installé Python 3.5 (ou plus récent) et pip. Ensuite, installez QMK avec cette commande:
-
-```
-pip3 install qmk
-export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
-qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
-```
-
-## Paquets pour d'autres systèmes d'exploitation
-
-Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de systèmes d'exploitation. Si vous voulez créer un paquet pour votre système d'exploitation, suivez ces directives:
-
-* Suivez les bonnes pratiques pour votre système d'exploitation lorsqu'elles entrent en conflit avec ces directives
- * Documentez pourquoi dans un commentaire lorsque vous ne les suivez pas
-* Installez en utilisant un virtualenv
-* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
-
-# Les commandes CLI
-
-## `qmk compile`
-
-Cette commande permet de compiler le firmware de n'importe quel répertoire. Vous pouvez compiler des exports JSON de <https://config.qmk.fm> ou compiler des keymaps du dépôt.
-
-**Utilisation pour les exports de configuration**:
-
-```
-qmk compile <configuratorExport.json>
-```
-
-**Utilisation pour les Keymaps**:
-
-```
-qmk compile -kb <keyboard_name> -km <keymap_name>
-```
-
-## `qmk format-c`
-
-Cette commande formatte le code C en utilisant clang-format. Lancez-la sans arguments pour formatter tout le code core, ou passez les noms de fichiers à la ligne de commande pour la lancer sur des fichiers spécifiques.
-
-**Utilisation**:
-
-```
-qmk format-c [file1] [file2] [...] [fileN]
-```
-
-## `qmk config`
-
-Cette commande vous permet de configurer le comportement de QMK. Pour la documentation complète de `qmk config`, regardez [Configuration de CLI](cli_configuration.md).
-
-**Utilisation**:
-
-```
-qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
-```
-
-## `qmk doctor`
-
-Cette commande examine votre environnement et vous alertes des potentiels problèmes de compilation ou de flash.
-
-**Utilisation**:
-
-```
-qmk doctor
-```
-
-## `qmk new-keymap`
-
-Cette commande crée une nouvelle keymap basée sur une keymap par défaut d'un clavier existant.
-
-**Utilisation**:
-
-```
-qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
-```
-
-## `qmk format-py`
-
-Cette commande formate le code python dans `qmk_firmware`.
-
-**Utilisation**:
-
-```
-qmk format-py
-```
-
-## `qmk pytest`
-
-Cette commande démarre la suite de test python. Si vous faites des changements dans le code Python, assurez-vous que les tests se lancent avec succès.
-
-**Utilisation**:
-
-```
-qmk pytest
-```
diff --git a/docs/fr-fr/cli_configuration.md b/docs/fr-fr/cli_configuration.md
deleted file mode 100644
index 3eed1e0e95..0000000000
--- a/docs/fr-fr/cli_configuration.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# Configuration de QMK CLI
-
-Ce document explique comment fonctionne la commande `qmk config`.
-
-# Introduction
-
-La configuration pour QMK CLI est un système clé/valeur. Chaque clé est composée d'une sous-commande et d'un argument séparé par une virgule. Cela permet une traduction simple et directe entre les clés de configuration et l'argument qu'elle définit.
-
-## Exemple simple
-
-Comme exemple, regardons la commande `qmk compile --keyboard clueboard/66/rev4 --keymap default`.
-
-Il y a deux arguments de ligne de commande qui peuvent être lu de la configuration:
-
-* `compile.keyboard`
-* `compile.keymap`
-
-Essayons de les définir:
-
-```shell
-$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
-compile.keyboard: None -> clueboard/66/rev4
-compile.keymap: None -> default
-Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
-```
-
-Maintenant, je peux lancer la commande `qmk compile` sans avoir à spécifier mon clavier et keymap à chaque fois.
-
-## Définir les options par défaut
-
-Parfois, il est utile de partager une configuration entre plusieurs commandes. Par exemple, plusieurs commandes prennent un argument `--keyboard`. Plutôt que de devoir définir cette valeur pour chaque commande, vous pouvez définir une valeur d'utilisateur qui sera utilisée par toutes les commandes qui prennent cet argument.
-
-Exemple:
-
-```
-$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
-user.keyboard: None -> clueboard/66/rev4
-user.keymap: None -> default
-Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
-```
-
-# CLI Documentation (`qmk config`)
-
-La commande `qmk config` est utilisée pour interagir avec la configuration sous-jacente. Lancée sans argument, elle affiche la configuration courante. Lorsque des arguments sont définis, ils sont considérés comme étant des jetons de configuration, qui sont des chaînes de caractère ne contenant aucun espace avec le format suivant:
-
- <subcommand|general|default>[.<key>][=<value>]
-
-## Définir des valeurs de configuration
-
-Vous pouvez définir des valeurs de configuration en mettant le caractère égal (=) dans votre clé de configuration. La clé doit toujours être dans le format complet `<section>.<key>`.
-
-Exemple:
-
-```
-$ qmk config default.keymap=default
-default.keymap: None -> default
-Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
-```
-
-## Lire des valeurs de configuration
-
-Vous pouvez lire les valeurs de configuration pour la totalité de la configuration, une seule clé, ou une section entière. Vous pouvez aussi spécifier plusieurs clés pour afficher plus d'une valeur.
-
-### Exemple avec la totalité de la configuration
-
- qmk config
-
-### Exemple avec une section entière
-
- qmk config compile
-
-### Exemple avec une clé unique
-
- qmk config compile.keyboard
-
-### Exemple avec plusieurs clés
-
- qmk config user compile.keyboard compile.keymap
-
-## Supprimer des valeurs de configuration
-
-Vous pouvez supprimer une valeur de configuration en la définissant avec la chaîne spéciale `None`.
-
-Exemple:
-
-```
-$ qmk config default.keymap=None
-default.keymap: default -> None
-Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
-```
-
-## Plusieurs opérations
-
-Vous pouvez combiner plusieurs opérations d'écriture et de lecture en une seule commande. Elles seront exécutées et affichées dans l'ordre:
-
-```
-$ qmk config compile default.keymap=default compile.keymap=None
-compile.keymap=skully
-compile.keyboard=clueboard/66_hotswap/gen1
-default.keymap: None -> default
-compile.keymap: skully -> None
-Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
-```
-
-# Options de configuration utilisateur
-
-| Clé | Valeur par défaut | Description |
-|-----|---------------|-------------|
-| user.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
-| user.keymap | None | Le nom de la keymap (Exemple: `default`) |
-| user.name | None | Le nom d'utilisateur GitHub de l'utilisateur. |
-
-# Toutes les options de configuration
-
-| Clé | Valeur par défaut | Description |
-|-----|---------------|-------------|
-| compile.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
-| compile.keymap | None | Le nom de la keymap (Exemple: `default`) |
-| hello.name | None | Le nom à saluer lorsque démarré. |
-| new_keyboard.keyboard | None | Le chemin d'accès vers le clavier (Exemple: `clueboard/66/rev4`) |
-| new_keyboard.keymap | None | Le nom de la keymap (Example: `default`) |
diff --git a/docs/fr-fr/contributing.md b/docs/fr-fr/contributing.md
deleted file mode 100644
index d135871055..0000000000
--- a/docs/fr-fr/contributing.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# Comment contribuer
-
-👍🎉 Premièrement, merci de prendre le temps de lire ceci et de contribuer! 🎉👍
-
-Les contributions de tiers nous aide à améliorer et faire grandir QMK. Nous voulons rendre les pull requests et le processus de contribution utile et simple à la fois pour les contributeurs et les mainteneurs. C'est pourquoi nous avons mis en places des directives pour les contributeurs afin que votre pull request puisse être accepté sans changement majeur.
-
-* [Aperçu du projet](#project-overview)
-* [Conventions de codage](#coding-conventions)
-* [Directives générales](#general-guidelines)
-* [Que veut dire le code de conduite pour moi?](#what-does-the-code-of-conduct-mean-for-me)
-
-## Je ne veux pas lire tout ce pavé! J'ai juste une question!
-
-Si vous voulez poser une question sur QMK, vous pouvez le faire sur le [sous-reddit OLKB](https://reddit.com/r/olkb) ou sur [Discord](https://discord.gg/Uq7gcHh).
-
-Merci de garder ceci en tête:
-
-* Cela peut prendre plusieurs heures pour que quelqu'un réponde à votre question. Merci d'être patient!
-* Tous ceux impliqués avec QMK fait don de son temps et de son énergie. Nous ne sommes pas payés pour travailler sur ou répondre aux questions concernant QMK.
-* Essayez de poser vos questions de manière à ce qu'elles soient le plus simple à répondre possible. Si vous n'êtes pas sûrs de savoir comment faire, voici quelques bon guides (en anglais):
- * https://opensource.com/life/16/10/how-ask-technical-questions
- * http://www.catb.org/esr/faqs/smart-questions.html
-
-# Aperçu du projet
-
-QMK est majoritairement écrit en C, avec quelques fonctions et parties spécifiques écrites en C++. Il est destiné aux processeurs intégrés que l'on trouve dans des clavier, particulièrement AVR ([LUFA](https://www.fourwalledcubicle.com/LUFA.php)) et ARM ([ChibiOS](https://www.chibios.org)). Si vous maîtrisez déjà la programmation sur Arduino, vous trouverez beaucoup de concepts et de limitations familiers. Une expérience préalable avec les Arduino n'est pas nécessaire à contribuer avec succès à QMK.
-
-<!-- FIXME: We should include a list of resources for learning C here. -->
-
-# Où trouver de l'aide?
-
-Si vous avez besoin d'aide, vous pouvez [ouvrir une issue](https://github.com/qmk/qmk_firmware/issues) ou [un chat sur Discord](https://discord.gg/Uq7gcHh).
-
-# Comment contribuer?
-
-Vous n'avez encore jamais contribué à un projet open source? Vous vous demandez comment les contributions dans QMK fonctionnent? Voici un aperçu rapide!
-
-0. Enregistrez-vous sur [GitHub](https://github.com).
-1. Définissez une keymap à contribuer, [trouvez une issue](https://github.com/qmk/qmk_firmware/issues) que vous souhaitez corriger, ou [une fonction](https://github.com/qmk/qmk_firmware/issues?q=is%3Aopen+is%3Aissue+label%3Afeature) que vous voulez ajouter.
-2. Créez un fork sur le dépôt associé avec une issue sur votre compte GitHub. Cela veut dire que vous allez avoir une copie du dépôt sous `votre-login-GitHub/qmk_firmware`.
-3. Clonez le dépôt sur votre machine locale en utilisant `git clone https://github.com/login-github/repository-name.git`.
-4. Si vous travaillez sur une nouvelle fonctionnalité, pensez à ouvrir une issue pour parler avec nous du travail que vous souhaitez démarrer.
-5. Créez une nouvelle branche pour votre correctif en utilisant `git checkout -b nom-de-branche`.
-6. Faites les changements nécessaires pour corriger le problème ou ajouter la fonctionnalité.
-7. Utilisez `git add chemin-de-fichier` pour ajouter les contenus des fichiers modifiés au "snapshot" que git utilise pour gérer l'état du projet, appelé aussi l'index.
-8. Utilisez `git commit -m "Insérez une description courte des changements (en anglais)"` pour enregistrer le contenu de l'index avec un message descriptif.
-9. Poussez les changements vers votre dépôt sur GitHub en utilisant `git push origin nom-de-branche`.
-10. Créez un pull request sur [QMK Firmware](https://github.com/qmk/qmk_firmware/pull/new/master).
-11. Donnez un titre à votre pull request en utilisant une description courte des changements que vous avez fait et ajoutez le numéro de l'issue ou du bug associé avec votre changement. Les commentaires de PR devraient se faire en anglais de préférence. Par exemple, vous pouvez utiliser un titre tel que celui-là: "Added more log outputting to resolve #4352".
-12. Dans la description du pull request, expliquez les changements que vous avez fait et tous les problèmes qui existent, selon vous, sur le pull request que vous avez fait. Vous pouvez aussi utiliser la description pour poser des questions au mainteneur. Il n'est pas nécessaire que votre pull request soit parfait (aucun pull request ne l'est), le reviewer sera là pour vous aider à résoudre les problèmes et l'améliorer!
-13. Attendez que le pull request soit revu par un mainteneur.
-14. Faites des changements au pull request si le mainteneur le recommande.
-15. Célébrez votre succès une fois votre pull request fusionné!
-
-# Conventions de codage
-
-La grande majorité de notre style est plutôt simple à comprendre. Si vous connaissez C ou Python, vous ne devriez pas avoir trop de difficulté avec notre style.
-
-* [Conventions de codage - C](coding_conventions_c.md)
-* [Conventions de codage - Python](coding_conventions_python.md)
-
-# Directives générales
-
-Nous avons un certain nombre de type de changements dans QMK, chacun nécessitant un niveau de rigueur différent. Nous voulons que vous gardiez les directives suivantes en tête quel que soit le changement que vous êtes en train de faire.
-
-* Séparez les PR dans des unités logiques. Par exemple, ne soumettez pas un PR qui couvre deux fonctionnalités séparées, soumettez plutôt un PR pour chaque fonctionnalité.
-* Vérifiez les espaces blancs non nécessaires avec `git diff --check` avant de commit.
-* Assurez-vous que votre code compile.
- * Keymaps: Assurez-vous que `make keyboard:your_new_keymap` ne renvoie pas d'erreur.
- * Claviers: Assurez-vous que `make keyboard:all` ne renvoie pas d'erreur.
- * Core: Assurez-vous que `make all` ne renvoie pas d'erreur.
-* Assurez-vous que les messages de commit soient compréhensibles d'eux-mêmes. Vous devriez écrire une description simple (pas plus de 70 caractères) sur la première ligne, suivi d'une ligne vide, suivi d'un détail de votre commit, si nécessaire. Exemple:
-
-```
-Adjust the fronzlebop for the kerpleplork
-
-The kerpleplork was intermittently failing with error code 23. The root cause was the fronzlebop setting, which causes the kerpleplork to activate every N iterations.
-
-Limited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.
-```
-
-## Documentation
-
-La documentation est l'une des manières les plus simples de démarrer la contribution sur QMK. Il est simple de trouver des endroits où la documentation est fausse ou incomplète, et il est tout aussi simple de la corriger! Nous avons aussi grandement besoin de quelqu'un pour éditer notre documentation, donc si vous avez des compétences en édition mais que vous n'êtes pas sûr de savoir où aller, n'hésitez pas [demandez de l'aide](#where-can-i-go-for-help)!
-
-Vous trouverez toute notre documentation dans le répertoire `qmk_firmware/docs`, ou si vous préférez utiliser des outils web, vous pouvez cliquer sur le bouton "Suggest An Edit" en haut de chaque page sur https://docs.qmk.fm/.
-
-Lorsque vous donnez des exemples de code dans la documentation, essayez de suivre les conventions de nommage utilisées ailleurs dans la documentation. Par exemple, standardisez les enums en utilisant `my_layers` ou `my_keycodes` afin de garder une consistance:
-
-```c
-enum my_layers {
- _FIRST_LAYER,
- _SECOND_LAYER
-};
-
-enum my_keycodes {
- FIRST_LAYER = SAFE_RANGE,
- SECOND_LAYER
-};
-```
-
-## Keymaps
-
-La plupart des contributeurs débutants démarrent avec leurs keymaps personnelles. Nous essayons de garder les standards pour les keymaps pluôt simple (les keymaps reflètent, après tout, la personnalité de leurs créateurs) mais nous demandons que vous suiviez les directives suivantes afin que d'autres puissent découvrir et apprendre de votre keymap.
-
-* Ecrivez un fichier `readme.md` en utilisant [la template](documentation_templates.md).
-* Tous les PR de keymaps doivent être "squashés", donc si la manière dont vos commits sont squashés vous est important, vous devez le faire vous-même.
-* Ne regroupez pas des fonctionnalités avec votre PR de keymap. Envoyez d'abord votre fonctionnalité, puis créez un second PR pour la keymap.
-* N'incluez pas de fichier `Makefile` dans votre dossier de keymap (ils ne sont plus utilisés)
-* Mettez à jour les copyrights dans les en-têtes de fichiers (cherchez `%YOUR_NAME%`)
-
-## Claviers
-
-Les claviers sont la raison d'être de QMK. Certains claviers sont maintenus par la communauté, alors que d'autre sont maintenus par les gens responsables de la création du clavier. Le fichier `readme.md` devrait vous informer de qui maintient le clavier. Si vous avez des questions concernant un clavier en particulier, vous pouvez [Ouvrir une issue](https://github.com/qmk/qmk_firmware/issues) et tagger le mainteneur dans votre question.
-
-Nous vous demandons aussi que vous suiviez ces directives:
-
-* Ecrivez un fichier `readme.md` en utilisant [le template](documentation_templates.md).
-* Gardez un nombre de commits raisonnable, ou nous squasherons votre PR.
-* Ne regroupez pas des fonctionnalités avec le PR pour votre clavier. Envoyez d'abord votre fonctionnalité, puis créez un second PR pour le clavier.
-* Appelez les fichiers `.c`/`.h` du nom du dossier parent, par exemple `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
-* N'incluez pas de fichier `Makefile` dans votre dossier de keymap (ils ne sont plus utilisés)
-* Mettez à jour les copyrights dans les en-têtes de fichiers (cherchez `%YOUR_NAME%`)
-
-## Quantum/TMK Core
-
-Faites attention d'être sûr d'implémenter votre nouvelle fonctionnalité de la meilleure manière qu'il soit avant d'investir beaucoup de travail à son développement. Vous pouvez apprendre les bases de QMK en lisant [Comprendre QMK](understanding_qmk.md), qui vous donnera une idée du flux du programme QMK. A partir de là, parlez nous afin de définir la meilleure façon d'implémenter votre idée. Il y a deux façons principale de le faire:
-
-* [Chat sur Discord](https://discord.gg/Uq7gcHh)
-* [Ouvrir une Issue](https://github.com/qmk/qmk_firmware/issues/new)
-
-Les PR de nouvelles fonctionnalités de de correction de bug affectent tous les claviers. Nous sommes aussi dans un processus de restructuration de QMK. Pour cette raison, il est absolument nécessaire que tout changement important ou significatif soit discuté avant que l'implémentation soit faite. Si vous ouvrez un PR sans nous avoir parlé, préparez-vous à faire des refontes significatives si vos changements ne sont pas compatibles avec ce que nous avons planifié.
-
-Voici quelques choses à garder en tête lorsque vous travaillez sur une fonctionnalité ou un bug fix.
-
-* **Désactivé par défaut** - la mémoire est plutôt limitée sur la plupart des puces que QMK supporte, et il est important que les keymaps courantes ne soient pas cassées. S'il vous plaît faites que vos features doivent être **activées** plutôt que désactivées. Si vous pensez qu'elle devrait être activée par défaut, ou que cela réduit la taille du code, parlez-nous-en.
-* **Compilez localement avant de soumettre** - Cela devrait aller sans dire, mais votre code doit compiler! Vous devriez toujours faire gaffe à ce que vos changements compilent avant d'ouvrir une pull request.
-* **Faites attention aux révisions et différentes bases de puces** - beaucoup de claviers ont des révisions qui permettent des changements de configuration mineurs, voir des bases de chip différentes. Essayez de faire que votre fonctionnalité soit supportée à la fois sur ARM et AVR, ou désactivez-là automatiquement sur les plateformes non supportées.
-* **Expliquez votre fonctionnalité** - Documentez-là dans `docs/`, soit dans un nouveau fichier, ou dans une partie d'un fichier existant. Si vous ne la documentez pas, personne ne pourra bénéficier de votre dur labeur.
-
-Nous vous demandons aussi de suivre ces directives:
-
-* Gardez un nombre de commits raisonnable, ou nous squasherons votre PR.
-* Ne regroupez pas des claviers ou des keymaps avec des changements core. Soumettez vos changements core en premier.
-* Ecrivez des [Tests Unitaires](unit_testing.md) pour votre fonctionnalité.
-* Suivez le style du fichier que vous modifiez. Si le style n'est pas clair ou qu'il y a un mélange de fichiers, vous devriez vous conformer aux [conventions de codage](#coding-conventions) au dessus.
-
-## Refactoriser
-
-Afin de maintenir une vision claire sur comment les choses sont architectuées dans QMK, nous essayons de planifier des refactorisations en profondeur et qu'un collaborateur fasse le changement. Si vous avez une idée de refactorisation, ou une suggestion, [ouvrez une issue] [open an issue](https://github.com/qmk/qmk_firmware/issues), nous adorons discuter de comment améliorer QMK.
-
-# Que veut dire le code de conduite pour moi?
-
-Note [Code De Conduite](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) veut dire que vous avez la responsabilité de traiter tout le monde dans le projet avec respect et courtoisie, peu importe leur identité. Si vous êtes victime d'une attitude ou de commentaires inappropriés, tels que décrit dans notre Code de Conduite, nous sommes là pour vous et nous ferons de notre mieux pour nous assurer que le fautif soit réprimandé, tel que décrit dans notre code.
diff --git a/docs/fr-fr/driver_installation_zadig.md b/docs/fr-fr/driver_installation_zadig.md
deleted file mode 100644
index 35beefa3c9..0000000000
--- a/docs/fr-fr/driver_installation_zadig.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Installation du driver du bootloader avec Zadig
-
-Vous n’aurez pas besoin de pilote particulier pour utiliser un clavier QMK. En effet, QMK se présente à l'ordinateur hôte comme un clavier HID standard et sera reconnu sans problème. Cependant vous aurez peut-être besoin d'un pilote pour flasher votre clavier avec Windows. En effet, quand vous redémarrerez votre clavier en mode bootloader, le périphérique que détectera Windows ne sera pas un clavier mais un périphérique bootloader.
-
-Il existe deux exceptions : le bootloader Caterina, qui se trouve en général sur les Pro Micros, et le bootloader Halfkay, livré avec les Teensy de PJRC. Ils apparaissent respectivement sous la forme d'un port série et d'un périphérique HID générique, ne nécessitant pas de pilote particulier.
-
-Nous vous recommandons d'utiliser l'utilitaire [Zadig](https://zadig.akeo.ie/). Si vous avez configuré votre environnement de développement avec Msys2 ou WSL, le script `qmk_install.sh` vous aura proposé l'installation des pilotes durant le processus.
-
-## Installation
-
-Passez votre clavier en mode bootloader, soit en appuyant sur le keycode `RESET` (qui peut se trouver dans un calque différent) ou en appuyant sur le bouton reset qui se trouve en général sous la board. Si votre clavier n'a aucune de ces options, essayez de le brancher en maintenant Escape ou Espace+`B` appuyés (voir la documentation de [Bootmagic](feature_bootmagic.md) pour plus de détails). Certaines boards utilisent [Command](feature_command.md) à la place de Bootmagic. Dans ce cas, vous pouvez entrer en mode bootloader en appuyant, à n'importe quel moment lorsque le clavier est branché, sur les combinaisons de touches Shift Gauche+Shift Droit+`B` ou Shift Gauche+Shift Droit+Escape.
-Certains claviers ont des instructions spécifiques pour passer en mode bootloader. Par exemple, la touche [Bootmagic Lite]](feature_bootmagic.md#bootmagic-lite) (défaut: Échap) peut être sur une touche différente telle que Contrôle Gauche. La combinaison pour la Command (défaut: Shift Gauche+Shift Droit) peut être différente, par exemple Contrôle Gauche+Contrôle Droit. Référez-vous au fichier README de votre clavier.
-
-Pour mettre un clavier en mode bootloader avec USBaspLoader, appuyez sur le bouton `RESET` tout en maintenant le bouton `BOOT`. Vous pouvez aussi maintenir le bouton `BOOT` en branchant le câble USB.
-
-Zadig détectera automatiquement les périphériques en mode bootloader. Il se peut toutefois que vous deviez vérifier en passant par **Options → List All Devices**.
-
-
- - Pour les claviers avec des MCUs Atmel AVR, le bootloader aura un nom similaire à `ATm32U4DFU`, et un Vendor ID `03EB`.
- - Les bootloaders USBasp s'appelleront `USBasp`, avec un VID/PID `16C0:05DC`.
- - Les claviers AVR flashé avec le bootloader QMK-DFU s'appelleront `<nom du clavier> Bootloader` et auront aussi le VID `03EB`.
- - Pour la plupart des claviers ARM, ils s'appelleront `STM32 BOOTLOADER`, et auront un VID/PID `0483:DF11`.
-
-!> Si Zadig affiche certains de vos périphériques avec le driver `HidUsb`, votre clavier n'est probablement pas en mode bootloader. La flèche aura une couleur orange et vous aurez un message de confirmation vous demandant de modifier un pilote système. **Ne continuez pas!**
-
-Si la flèche apparaît en vert, sélectionnez le driver et appuyez sur le bouton **Install Driver**. Le driver `libusb-win32` devrait normalement fonctionner pour AVR, et `WinUSB` pour ARM. Si vous avez des problèmes pour flasher la board, essayez d'installer un pilote différent de la liste. Pour flasher un périphérique USBaspLoader en ligne de commande avec msys2, le driver `libusbk` est recommandé, sinon `libusb-win32` devrait fonctionner correctement si vous utilisez QMK Toolbox pour flasher.
-
-![Zadig montrant un driver de bootloader installé correctement](https://i.imgur.com/b8VgXzx.png)
-
-Finalement, débranchez et rebranchez le clavier afin de vous assurer que le nouveau pilote a bien été chargé. Si vous utilisez QMK Toolbox pour flasher, redémarrez-le aussi, il arrive qu'il n'arrive pas à détecter le changement de driver.
-
-## Récupérer l'installation du mauvais périphérique
-
-Si vous n'arrivez plus à saisir de texte avec le clavier, il est possible que vous ayez installé le driver sur le clavier au lieu du bootloader. Vous pouvez facilement vérifier ceci dans Zadig. Un clavier fonctionnel a le pilote `HidUsb` installé sur toutes ses interfaces :
-
-![Un clavier fonctionnel vu par Zadig](https://i.imgur.com/Hx0E5kC.png)
-
-Ouvrez le Gestionnaire de périphériques et cherchez un périphérique qui ressemble à votre clavier.
-
-![La board avec le mauvais driver installé, dans le Gestionnaire de périphériques](https://i.imgur.com/L3wvX8f.png)
-
-Cliquez dessus avec le bouton droit et sélectionner **Désinstaller le périphérique**. Faites bien attention à sélectionner **Supprimer le pilote pour ce périphérique** avant de valider.
-
-![Le dialogue Suppression de périphérique, avec la boîte "suppression de pilote" cochée](https://i.imgur.com/aEs2RuA.png)
-
-Appuyez sur **Action → Analyser les changements de hardware**. A ce stade, vous devriez pouvoir saisir à nouveau. Vérifiez dans Zadig que les périphériques utilisent bien le pilote `HidUsb`. Si c'est le cas, vous avez corrigé le problème, votre clavier devrait fonctionner à nouveau!
diff --git a/docs/fr-fr/faq.md b/docs/fr-fr/faq.md
deleted file mode 100644
index 89576b3cc2..0000000000
--- a/docs/fr-fr/faq.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Foire Aux Questions
-
-* [FAQ Générale](faq_general.md)
-* [Construire ou Compiler QMK](faq_build.md)
-* [Débuguer et Dépanner QMK](faq_debug.md)
-* [Keymap (disposition)](faq_keymap.md)
diff --git a/docs/fr-fr/faq_build.md b/docs/fr-fr/faq_build.md
deleted file mode 100644
index c6a3253530..0000000000
--- a/docs/fr-fr/faq_build.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# Foire aux questions sur la compilation
-
-Cette page couvre les questions concernant la compilation de QMK. Si vous ne l'avez pas encore fait, vous devriez lire les guides [Configuration de l'environnement de build](getting_started_build_tools.md) et [Instructions pour Make](getting_started_make_guide.md).
-
-## Je ne peux pas programmer sous Linux
-
-Vous aurez besoin des permissions appropriées pour utiliser un périphérique. Pour les utilisateurs de Linux, référez-vous aux instructions concernant les règles `udev` ci-dessous. Si `udev` vous pose des problèmes, une alternative est d'utiliser la commande `sudo`. Si vous ne connaissez pas cette commande, référez-vous à son manuel d'utilisation en utilisant `man sudo` ou [regardez cette page](https://linux.die.net/man/8/sudo).
-
-Un exemple utilisant `sudo`, lorsque votre contrôleur est un ATMega32u4 :
-
- $ sudo dfu-programmer atmega32u4 erase --force
- $ sudo dfu-programmer atmega32u4 flash your.hex
- $ sudo dfu-programmer atmega32u4 reset
-
-ou simplement :
-
- $ sudo make <keyboard>:<keymap>:dfu
-
-Veuillez noter que lancer `make` avec `sudo` est généralement une **mauvaise** idée, et vous devriez préférer une des méthodes précédente, si possible.
-
-### Règles `udev` pour Linux
-
-Sous Linux, vous aurez besoin des permissions appropriées pour accéder au MCU (le micro-contrôleur). Vous avez le choix d'utiliser `sudo` en flashant le firmware, ou placer ces fichiers dans `/etc/udev/rules.d`. Une fois ajouté, lancez les commandes suivantes:
-
-```console
-sudo udevadm control --reload-rules
-sudo udevadm trigger
-```
-
-**/etc/udev/rules.d/50-atmel-dfu.rules:**
-```
-# Atmel ATMega32U4
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"
-# Atmel USBKEY AT90USB1287
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"
-# Atmel ATMega32U2
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"
-```
-
-**/etc/udev/rules.d/52-tmk-keyboard.rules:**
-```
-# tmk keyboard products https://github.com/tmk/tmk_keyboard
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
-```
-
-**/etc/udev/rules.d/54-input-club-keyboard.rules:**
-
-```
-# Input Club keyboard bootloader
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"
-```
-
-**/etc/udev/rules.d/55-catalina.rules:**
-```
-# ModemManager should ignore the following devices
-ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
-ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
-```
-
-**Note:** Le filtrage utilisant ModemManager fonctionnera uniquement si vous n'êtes pas en mode strict. Les commandes suivantes peuvent changer cette option :
-
-```console
-sudo sed -i 's/--filter-policy=strict/--filter-policy=default/' /lib/systemd/system/ModemManager.service
-sudo systemctl daemon-reload
-sudo systemctl restart ModemManager
-```
-
-**/etc/udev/rules.d/56-dfu-util.rules:**
-
-```
-# stm32duino
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", MODE:="0666"
-# Generic stm32
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666"
-```
-
-### Le périphérique sériel n'est pas détecté en mode bootloader sous Linux
-
-Assurez-vous que votre kernel ait un support approprié pour votre périphérique. Si votre périphérique utilise USB ACM, par exemple pour les Pro Micro (AtMega32u4), assurez-vous d'inclure `CONFIG_USB_ACM=y`. D'autres périphériques peuvent avoir besoin de `USB_SERIAL` et de ses sous-options.
-
-## Périphérique inconnu pour le bootloader DFU
-
-Les problèmes rencontrés lorsque l'on flash des claviers sous Windows sont, la plupart du temps, dus à une installation du mauvais pilote, ou un pilote manquant.
-
-Relancer le script d'installation de QMK (`./util/qmk_install.sh` situé dans répertoire `qmk_firmware`sous MSYS2 ou WSL) ou réinstaller la QMK Toolbox peut résoudre le problème. Une alternative est de télécharger et lancer manuellement le package [`qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer).
-
-Si vous rencontrez toujours des problèmes, essayez de télécharger et lancer Zadig. Voir [Installation du driver du bootloader avec Zadig](driver_installation_zadig.md) pour plus d'informations.
-
-## USB VID et PID
-
-Vous pouvez utiliser l'ID de votre choix en modifier `config.h`. Il y a peu de chance de conflit avec d'autres produits.
-
-La plupart des boards QMK utilisent `0xFEED` comme vendor ID. Vérifiez les autres claviers pour être sûr de choisir un Product ID unique.
-
-Étudiez aussi ce ticket
-https://github.com/tmk/tmk_keyboard/issues/150
-
-Vous pouvez acheter un VID:PID unique ici. Je ne pense pas que ce soit nécessaire pour un usage personnel.
-- https://www.obdev.at/products/vusb/license.html
-- https://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
-
-## BOOTLOADER_SIZE pour AVR
-
-Notez que la taille du bootloader pour les Teensy2.0++ est de 2048bytes. Quelques Makefiles peuvent contenir une erreur et avoir le mauvais commentaire.
-
-```
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 2048
-# Atmel DFU loader 4096 (TMK Alt Controller)
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=2048
-```
-
-## `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)` sous MacOS
-
-C'est un problème de mise à jour avec brew, causée par des liens symboliques (symlinks) dont dépend avr-gcc qui sont détruits.
-
-La solution est de supprimer et réinstaller tous les modules affectés.
-
-```
-brew rm avr-gcc
-brew rm dfu-programmer
-brew rm dfu-util
-brew rm gcc-arm-none-eabi
-brew rm avrdude
-brew install avr-gcc
-brew install dfu-programmer
-brew install dfu-util
-brew install gcc-arm-none-eabi
-brew install avrdude
-```
-
-### avr-gcc 8.1 et LUFA
-
-Si vous avez mis à jour votre avr-gcc au-dessus de la version 7, vous risquez de voir des erreurs impliquant LUA. Par exemple :
-
-`lib/lufa/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h:380:5: error: 'const' attribute on function returning 'void'`
-
-Pour le moment, vous devrez revenir à la version 7 de avr-gcc dans brew.
-
-```
-brew uninstall --force avr-gcc
-brew install avr-gcc@8
-brew link --force avr-gcc@8
-```
-
-### Je viens de flasher mon clavier et il ne fait rien/l'appui des touches n'est pas enregistré - c'est aussi un ARM(rev6 plank, clueboard 60, hs60v2, etc.) (Février 2019)
-
-A cause de la manière dont les EEPROM fonctionnent sur les puces ARM, les options sauvegardées peuvent ne plus être valides. Ceci affecte les calques par défaut et *peut*, sous certaines conditions que nous essayons encore de déterminer, rendre le clavier inutilisable. Réinitialiser l'EEPROM corrigera le problème.
-
-[Réinitialiser EEPROM sur Planck rev6](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) peut être utilisé pour forcer une réinitialisation d'EEPROM. Une fois cette image flashée, flashez à nouveau votre firmware standard. Cela devrait rétablir le fonctionnement de votre clavier.
-Si bootmagic est activé dans n'importe quel forme, vous devriez être capable de faire aussi ceci (regardez [Documentation Bootmagic](feature_bootmagic.md) et les informations spécifiques à votre clavier).
diff --git a/docs/fr-fr/faq_debug.md b/docs/fr-fr/faq_debug.md
deleted file mode 100644
index 8868744f73..0000000000
--- a/docs/fr-fr/faq_debug.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# FAQ Débugage
-
-Cette page détaille diverses questions fréquemment posées par les utilisateurs sur le dépannage de leurs claviers.
-
-# Console de débugage
-
-## `hid_listen` ne reconnaît pas de périphérique
-
-Lorsque la console de débugage sur votre périphérique n'est pas prêt, vous obtiendrez un message similaire:
-
-```
-Waiting for device:.........
-```
-
-Une fois le périphérique connecté, *hid_listen* le trouve et vous obtiendrez ce message:
-
-```
-Waiting for new device:.........................
-Listening:
-```
-
-Si vous ne recevez pas ce message `Listening:`, essayez de compiler avec `CONSOLE_ENABLE=yes` dans le [Makefile]
-
-Il se peut que vous ayez besoin de certains privilèges avancés pour accéder à des périphériques sur des OS comme Linux.
-
-- Essayez `sudo hid_listen`
-
-## Ne reçoit pas de messages sur la console
-
-Vérifiez :
-
-- *hid_listen* trouve votre périphérique. Voir ci-dessus.
-- Activez le débugage en appuyant sur **Magic**+d. Voir [Commandes Magic](https://github.com/tmk/tmk_keyboard#magic-commands).
-- Définissez `debug_enable=true` en général dans `matrix_init()` du fichier **matrix.c**.
-- Essayez d'utiliser la fonction `print` à la place du debug print. Voir **common/print.h**.
-- Déconnectez tous les autres périphériques qui utilisent la fonction console. Voir [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
-
-## Linux ou les systèmes UNIX nécessitent des privilèges super utilisateur
-
-Utilisez `sudo` pour exécuter *hid_listen* avec des privilèges étendus.
-
-```
-$ sudo hid_listen
-```
-
-Ou ajoutez une *udev rule* pour les périphériques TMK en plaçant un fichier dans le répertoire rules. Le chemin vers ce répertoire peut varier en fonction du système.
-
-Fichier: /etc/udev/rules.d/52-tmk-keyboard.rules(sous Ubuntu)
-```
-# tmk keyboard products https://github.com/tmk/tmk_keyboard
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
-```
-
-***
-
-# Divers
-
-## Considérations de sécurité
-
-Vous ne voulez probablement pas "briquer" votre clavier, rendre impossible d'écrire un firmware dessus. Il y a quelques paramètres qui montrent ce qui est (et n'est probablement pas) trop risqué.
-
-- Si votre map de clavier n'inclut pas de RESET, pour entrer en mode DFU, vous devrez appuyer sur le bouton reset du PCB. Cela implique que vous devrez certainement dévisser certaines pièces de votre clavier pour y accéder.
-- Modifier les fichiers tmk_core / common peut rendre le clavier inutilisable
-- Si un fichier .hex trop large est la cause du problème: `make dfu` supprime le bloc puis teste la taille (il ne fait pas les choses dans le bon ordre), ce qui provoque une erreur. En résultat, le flash n’aura pas été fait et le clavier restera en mode DFU.
-- Pour finir, notez que la taille maximale d'un fichier .hex sur un Plank est de 7000h (28672 decimal)
-
-```
-Linking: .build/planck_rev4_cbbrowne.elf [OK]
-Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
-
-Size after:
- text data bss dec hex filename
- 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
-```
-
-- La taille du fichier ci-dessus est de 22396/577ch, ce qui est en dessous de 28672/7000h
-- Tant que vous avez un fichier .hex alternatif correct, vous pouvez réessayer en le chargeant
-- Certaines options que vous pouvez spécifier dans votre Makefile consomme de la mémoire supplémentaire. Faites attention aux options BOOTMAGIC_ENABLE, MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE.
-- Les outils DFU **ne** vous permettent **pas** d'écrire dans le bootloader (à moins que vous n'ajoutiez des options spéciales), il n'y a donc peu de risque.
-- Les EEPROM ont environ 100000 cycles d'écriture. Ne réécrivez pas le firmware de manière continue et répétée. Vous allez détruire définitivement l'EEPROM.
-
-## NKRO ne fonctionne pas
-
-Premièrement, vous devez compiler le firmware avec l'option de compilation `NKRO_ENABLE` dans le **Makefile**.
-
-Essayez la commande `Magic` **N** (`LShift+RShift+N` par défaut) si **NKRO** ne fonctionne toujours pas. Vous pouvez utiliser cette commande pour basculer temporairement entre le mode **NKRO** et **6KRO**. Sous certaines conditions, **NKRO** ne fonctionnera pas et vous devrez basculer en **6KRO**, en particulier lorsque vous êtes dans le BIOS.
-
-## Le TrackPoint a besoin Circuit de réinitialisation (Support de souris PS/2)
-
-Sans circuit de réinitialisation vous allez avoir des résultats inconsistants à cause de la mauvaise initialisation du matériel. Regardez le schéma du circuit du TPM754.
-
-- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
-- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf
-
-## Impossible de lire la colonne de la matrice après 16
-
-Utilisez `1UL<<16` à la place de `1<<16` dans `read_cols()` du fichier [matrix.h] lorsque le nombre de vos colonnes dépassent 16.
-
-En C, `1` implique un type [int] qui est [16 bits] pour les AVR, ce qui implique que vous ne pouvez pas décaler à gauche de plus de 15. Si vous utilisez `1<<16`, vous aurez un résultat non attendu de zéro. Vous devez donc utiliser un type [unsigned long] en utilisant `1UL`.
-
-https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
-
-## Les touches spéciales ne fonctionnent pas (Touche Système, Touches de contrôle du son)
-
-Vous devez définir `EXTRAKEY_ENABLE` dans le fichier `rules.mk` pour les utiliser dans QMK.
-
-```
-EXTRAKEY_ENABLE = yes # Audio control and System control
-```
-
-## Réveiller du mode veille ne fonctionne pas
-
-Sous Windows, activez l'option `Permettre au périphérique de sortir l'ordinateur de veille` dans les paramètres des **Options d'alimentations** du **Gestionnaire de périphériques**. Vérifiez aussi les paramètres du BIOS.
-
-Appuyer sur n'importe quelle touche en mode veille devrait sortir l'ordinateur de veille.
-
-## Vous utilisez un Arduino?
-
-**Faites attention au fait que le nommage des pin d'un Arduino diffère de la puce**. Par exemple, la pin `D0` n'est pas `PD0`. Vérifiez le circuit avec la fiche technique.
-
-- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
-- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
-
-Les Arduino Leonardo et micro ont des **ATMega32U4** et peuvent être utilisés avec TMK, mais le bootloader Arduino peut causer des problèmes.
-
-## Activer JTAG
-
-Par défaut, le débugage des interfaces JTAG est désactivé dès que le clavier démarre. Les MCUs compatible JTAG viennent d'usine avec le fusible `JTAGEN` activé, et il prend certaines pins du MCU que la board pourrait utiliser pour la matrice, les LEDs, etc.
-
-Si vous voulez garder JTAG activé, ajoutez la ligne suivante à votre fichier `config.h` :
-
-```c
-#define NO_JTAG_DISABLE
-```
-
-## Compatibilité USB 3
-
-Il semble que certaines personnes ont eu des problèmes avec les ports USB 3, essayez un port USB 2.
-
-## Compatibilité Mac
-
-### OS X 10.11 et Hub
-
-https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
-
-## Problème sur BIOS (UEFI) / Resume (Mise en veille et réveil) / Redémarrage
-
-Certaines personnes ont eu des problèmes de fonctionnement de leur clavier dans le BIOS et/ou après des redémarrages.
-
-Pour le moment, l'origine du problème n'est pas comprise, mais certaines options de compilation semble liées. Dans le Makefile, essayez de désactiver les options comme `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` et/ou d'autres.
-
-https://github.com/tmk/tmk_keyboard/issues/266
-https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
diff --git a/docs/fr-fr/faq_general.md b/docs/fr-fr/faq_general.md
deleted file mode 100644
index b1eae6df16..0000000000
--- a/docs/fr-fr/faq_general.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Questions fréquemment posées
-
-## Qu'est-ce que QMK ?
-
-[QMK](https://github.com/qmk), acronyme pour Quantum Mechanical Keyboard, est un groupe de personnes qui construisent des outils pour des claviers personnalisés. Nous avons commencé par le [firmware QMK](https://github.com/qmk/qmk_firmware), un fork très modifié du firmware [TMK](https://github.com/tmk/tmk_keyboard).
-
-## Quelles sont les différences entre QMK et TMK ?
-
-TMK a été conçu et développé à l'origine par [Jun Wako](https://github.com/tmk). QMK a démarré comme étant le fork de [Jack Humbert](https://github.com/jackhumbert) pour le Planck. Au bout d'un moment, le fork de Jack a divergé de manière significative de TMK et, en 2015, Jack a décidé de le renommer QMK.
-
-D'un point de vue technique, QMK se base sur TMK en lui ajoutant plusieurs nouvelles fonctionnalités.
-QMK a notamment augmenté le nombre de keycodes disponibles et les a utilisé pour implémenter des fonctionnalités avancées telles que `S()`, `LCTL()` et `MO()`. Vous pouvez voir une liste complète de ces keycodes dans [Keycodes] (keycodes.md).
-
-D'un point de vue management de projet et communauté, Hasu, sur TMK maintient tous les claviers supportés officiellement par lui-même, avec un peu de support de la communauté. Il existe ou peuvent être créées d'autres communautés maintenant des fork pour d'autres claviers. Peu de keymaps sont définies par défaut, les utilisateurs ne se partagent donc pas leurs keymaps en général. QMK encourage le partage des claviers et des keymaps à l'aide d'un dépôt géré de manière centrale, acceptant les pull requests qui suivent les standards de qualité. Ceux-ci sont surtout maitenus par la communauté, mais l'équipe de QMK aide aussi lorsque c'est nécessaire.
-
-Les deux approches ont leurs avantages et leurs inconvénients, et le développements de fonctionnalités intéressantes sont partagées entre TMK et QMK lorsque fait sens.
diff --git a/docs/fr-fr/faq_keymap.md b/docs/fr-fr/faq_keymap.md
deleted file mode 100644
index cc0700ab8e..0000000000
--- a/docs/fr-fr/faq_keymap.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# FAQ Keymap
-
-Cette page couvre les questions souvent posées à propos des keymaps. Si vous ne l'avez pas encore fait, vous devriez commencer par là [Aperçu des Keymap](keymap.md).
-
-## Quels Keycodes puis-je utiliser ?
-
-Regardez [Keycodes](keycodes.md) pour une liste des keycodes disponibles. Certains keycodes spécifiques ont des documentations plus complètes de disponible.
-
-Les keycodes sont définies dans [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
-
-## Quels sont les keycodes par défaut ?
-
-Il existe 3 configurations de clavier standard utilisées dans le monde: ANSI, ISO et JIS. L'Amérique du Nord utilise principalement l'ANSI, l'Europe et l'Afrique l'ISO et le Japon utilise JIS. Les autres régions utilisent généralement ANSI ou ISO. Les keycodes correspondant à ces dispositions spécifiques sont affichés ici :
-
-<!-- Source for this image: https://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
-![Keyboard Layout Image](https://i.imgur.com/5wsh5wM.png)
-
-## Certaines de mes touches sont permutées ou ne fonctionnent pas
-
-QMK possède deux fonctionnalités, Bootmagic et Command, qui vous permettent de modifier le comportement de votre clavier à la volée. Cela inclut, sans toutefois s'y limiter, l'échange de Ctrl / Majuscules, la désactivation de l'interface graphique, le basculement de Alt/Gui, le basculement de barre d'espacement arrière/barre oblique inversée, la désactivation de toutes les touches et d'autres modifications comportementales.
-
-Pour résoudre rapidement le problème, essayez de maintenir les touches Espace + Retour arrière enfoncées pendant que vous branchez votre clavier. Cela réinitialisera les paramètres stockés sur votre clavier, ramenant ces touches à un fonctionnement normal. Si cela ne fonctionne pas, regardez ici:
-
-* [Bootmagic](feature_bootmagic.md)
-* [Command](feature_command.md)
-
-## La touche de menu ne fonctionne pas
-
-La touche trouvée sur la plupart des claviers modernes située entre `KC_RGUI` et` KC_RCTL` est en réalité appelée `KC_APP`. En effet, lorsque cette touche a été inventée, il existait déjà une clé nommée `MENU` dans les normes correspondantes. MS a donc choisi de l'appeler la touche` APP`.
-
-## `KC_SYSREQ` ne fonctionne pas
-
-Utilisez le keycode pour Print Screen (`KC_PSCREEN` or `KC_PSCR`) à la place de `KC_SYSREQ`. La combinaison de touche 'Alt + Print Screen' est reconnue comme 'System request'.
-
-Voir [issue #168](https://github.com/tmk/tmk_keyboard/issues/168) et
-* https://en.wikipedia.org/wiki/Magic_SysRq_key
-* https://en.wikipedia.org/wiki/System_request
-
-## Les touches alimentation ne fonctionnent pas
-
-Un peu déroutant, il y a deux codes de touche "Alimentation" dans QMK: `KC_POWER` dans la page d'utilisation du clavier / keypad, et `KC_SYSTEM_POWER` (ou `KC_PWR`) dans la page Consumer.
-
-Le premier n'est reconnu que sur macOS, alors que le dernier, `KC_SLEP` et `KC_WAKE` sont supportés par les trois principaux systèmes d'exploitation. Il est donc recommandé de les utiliser à la place. Sous Windows, ces touches prennent effet immédiatement, mais sur macOS, elles doivent être maintenues enfoncées jusqu'à ce qu'une boîte de dialogue apparaisse.
-
-## Modificateur "One Shot"
-
-Cette fonctionnalité permet de corriger un problème avec la touche Shift. En effet, il arrive de saisir plusieurs majuscules en ne voulant en saisir qu'une sur un mot. Ex: `CEtte` à la place de `Cette`. La fonctionnalité «One shot» shift permet de corriger ça.
-
-https://github.com/tmk/tmk_keyboard/issues/67
-
-## Le modificateur d'un calque reste bloqué
-
-Les touches de modification ou les calques peuvent être bloquées si la commutation de calque n'est pas configurée correctement.
-Pour les touches de modification et les actions de calque, vous devez placer `KC_TRANS` sur la même position du calque de destination afin de désenregistrer la clé de modificateur ou de revenir au calque précédent lors de la libération.
-
-* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
-* https://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
-* https://github.com/tmk/tmk_keyboard/issues/248
-
-## Support de touche à verrouillage mécanique
-
-Cette fonctionnalité permet l'usage de *touches à verrouillage mécanique* comme [ces interrupteurs Alps](https://deskthority.net/wiki/Alps_SKCL_Lock). Vous pouvez l'activer en ajoutant ceci à votre `config.h`:
-
-```
-#define LOCKING_SUPPORT_ENABLE
-#define LOCKING_RESYNC_ENABLE
-```
-
-Une fois la fonction activée, utilisez les keycodes `KC_LCAP`, `KC_LNUM` et `KC_LSCR` dans votre keymap.
-
-Des vieux claviers mécaniques ont parfois des touches à verrouillage, mais les claviers modernes n'en sont pas équipés. ***Vous n'avez pas besoin de cette fonction dans la majorité des cas et devez utiliser les keycodes `KC_CAPS`, `KC_NLCK` et `KC_SLCK`.***
-
-## Ajouter des caractères spéciaux autres que ASCII comme la cédille 'Ç'
-
-Voir la fonctionnalité [Unicode](feature_unicode.md).
-
-## Touche `Fn` sur macOS
-
-Contrairement à la plupart des touches Fn, celle des claviers Apple a son propre code d'activation... en quelque sorte. Il remplace le sixième code d'activation dans un rapport de base 6KRO HID - de sorte qu'un clavier Apple ne contient en réalité que 5KRO.
-
-Il est techniquement possible de demander à QMK d’envoyer ce keycode. Cependant, cela nécessite une modification du format du rapport pour ajouter l'état de la touche Fn.
-Pire encore, ce keycode n'est reconnu que si les identifiants du clavier VID et PID correspondent à ceux d'un vrai clavier Apple. Malheureusement QMK ne peut juridiquement prendre en charge cette fonctionnalité et il y a peu de chance que la situation s'améliore.
-
-Voir [cette issue](https://github.com/qmk/qmk_firmware/issues/2179) pour des informations détaillées.
-
-## Touches Media sous Mac OSX
-
-#### KC_MNXT et KC_MPRV ne fonctionnent pas sous Mac
-
-Utilisez `KC_MFFD`(`KC_MEDIA_FAST_FORWARD`) et `KC_MRWD`(`KC_MEDIA_REWIND`) à la place de `KC_MNXT` et `KC_MPRV`.
-Voir https://github.com/tmk/tmk_keyboard/issues/195
-
-## Touches supportées sous Mac OSX?
-
-Vous pouvez connaître les keycodes supportés par OSX en lisant ce code source.
-
-`usb_2_adb_keymap` contient les tableaux des pages Keyboard/Keypad vers les scancodes ADB (keycodes interne à OSX).
-
-https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c
-
-Et `IOHIDConsumer::dispatchConsumerEvent` s'occupe des utilisations Consumer page.
-
-https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp
-
-## Touches JIS dans Mac OSX
-
-Les touches de clavier spécifiques JIS comme `無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)` ne sont pas reconnues par OSX. Vous pouvez utiliser **Seil** pour les activer, esssayez les options suivantes.
-
-* Activer la touche NFER sur clavier PC
-* Activer la touche XFER sur clavier PC
-* Activer la touche KATAKANA sur clavier PC
-
-https://pqrs.org/osx/karabiner/seil.html
-
-## RN-42 Bluetooth ne fonctionne pas avec Karabiner
-
-Karabiner - Outil de Keymapping sous Mac OSX - Ignore les entrées du module RN-42. Vous devez activer cette option pour rendre Karabiner compatible avec votre clavier.
-https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237
-
-Plus de détails sur ce problème sur les liens suivants.
-https://github.com/tmk/tmk_keyboard/issues/213
-https://github.com/tekezo/Karabiner/issues/403
-
-## Esc et <code>&#96;</code> sur une touche simple.
-
-Cette fonctionnalité permet d'utiliser une touche à la fois comme touche Échap ou une touche `§` (En Azerty) selon le cas d’utilisation. Cela est très utile sur un clavier de petite taille.
-
-Voir la fonctionnalité [Grave Escape](feature_grave_esc.md).
-
-## Eject sur Mac OSX
-
-Le keycode`KC_EJCT` fonctionne sous OSX. https://github.com/tmk/tmk_keyboard/issues/250
-
-Il semble que Windows 10 ignore le code et Linux/Xorg le reconnaît mais n'a pas de mapping par défaut.
-
-Nous ne sommes pas sûr quel keycode est utilisé pour la touche Eject sur les claviers Apple officiels. HHKB utilise `F20` pour la touche Eject (`Fn+f`) lorsqu'il est en mode Mac, mais ce n'est probablement pas la même chose que le keycode Eject d'Apple.
-
-## Qu'est-ce que `weak_mods` et `real_mods` dans `action_util.c`
-
-___TO BE IMPROVED___
-
-real_mods est prévu pour retenir l'état des touches modificateur réelles/physiques, alors que weak_mods ne retient l'état que des modificateurs temporaires ou virtuels qui ne devraient pas affecter l'état des touches modificaterus réelles.
-
-Par exemple, disons que vous maintenez la touche physique "shift gauche" et tapez ACTION_MODS_KEY(LSHIFT, KC_A),
-
-en weak_mods,
-
-* (1) maintenir shift gauche : real_mods |= MOD_BIT(LSHIFT)
-* (2) appuyer ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods |= MOD_BIT(LSHIFT)
-* (3) lâcher ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods &= ~MOD_BIT(LSHIFT)
-real_mods garde sur état modificateur.
-
-sans weak_mods,
-
-* (1) maintenir shift gauche : real_mods |= MOD_BIT(LSHIFT)
-* (2) appuyer ACTION_MODS_KEY(LSHIFT, KC_A): real_mods |= MOD_BIT(LSHIFT)
-* (3) lâcher ACTION_MODS_KEY(LSHIFT, KC_A): real_mods &= ~MOD_BIT(LSHIFT)
-ici real_mods a perdu son état pour 'shift gauche physique'.
-
-weak_mods est ORed avec real_mods lorsque le rapport du clavier est envoyé.
-https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
diff --git a/docs/fr-fr/flashing.md b/docs/fr-fr/flashing.md
deleted file mode 100644
index 9f5493194a..0000000000
--- a/docs/fr-fr/flashing.md
+++ /dev/null
@@ -1,238 +0,0 @@
-# Instructions pour flasher et informations sur les bootloader
-
-Les claviers utilisent différents types de bootloaders et certains doivent être flashés différement. Heureusement, certains projets comme la [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) ont pour objectifs de permettre de flasher les différents bootloader sans trop se faire de soucis et ça peu importe les manières de les flasher.
-
-Si vous avez un bootloader sélectionné avec la variable `BOOTLOADER` dans votre fichier `rules.mk` alors QMK vas automatiquement calculer si votre fichier .hex n'est pas trop grand pour être flashé sur votre appareil, et il affichera la taille finale du firmware. Pour vérifier la taille manuellement, vous pouvez aussi compiler le firmware avec l'option `check-size`. Exemple : `make planck/rev4:default:check-size`.
-
-## DFU
-
-Le bootloader pour les processeurs Atmel DFU est fourni par défaut sur tous les processeurs atmega32u4. Celui-ci est utilisé par beaucoup de claviers plus vieux que les OLKB et Clueboard qui ont leur propre ICs sur leurs PCBs. D'autres claviers utilisent le bootloader DFU de LUFA (ou son fork QMK), notamment les nouveaux claviers OLKB. Ce dernier ajoute des fonctionnalités spécifiques sur le matériel.
-
-Pour vérifier la compatibilité avec le bootloader DFU, vérifiez que ce bloc de code est présent dans votre fichier `rules.mk`. Parfois il peut être inscrit `lufa-dfu` ou `qmk-dfu` à la place.
-
-```make
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = atmel-dfu
-```
-
-Méthodes de flash compatibles :
-
-* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
-* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` avec QMK (outil en ligne de commande recommandé)
-
-Ordre des actions:
-
-1. Pressez le keycode `RESET`, ou appuyez sur le bouton physique RESET ou alors créez un contact entre RST et GND.
-2. Attendez que l'OS detecte l'appareil.
-3. Éffacez la mémoire, cela peut être fait automatiquement.
-4. Flasher le fichier .hex.
-5. Redémarrez l'appareil en mode «application», cela peut être fait automatiquement.
-
-Alternativement:
-
- make <keyboard>:<keymap>:dfu
-
-### DFU QMK
-
-QMK a un fork du bootloader LUFA DFU qui vous permet de faire un simple scan de la matrice pour quitter le bootloader et retourner à l'application. En même temps que le flash se produira, il est possible de faire flasher un led ou de produire un son via un haut parleur. Pour activer ces fonctionnalités, vous pouvez utiliser ce bloc dans votre fichier `config.h` (La touche permettant de quitter le bootloader a besoin d'être reliée entre les ports définis en INPUT et OUTPUT ici):
-
- #define QMK_ESC_OUTPUT F1 // usually COL
- #define QMK_ESC_INPUT D5 // usually ROW
- #define QMK_LED E6
- #define QMK_SPEAKER C6
-
-Le fabricant et le nom du produit proviennent de vos définitions dans fichier `config.h`, et la chaîne de caractère «bootloader» est ajoutée au nom du produit.
-
-Pour génerer le bootloader, utilisez la cible `bootloader`. Exemple: `make planck/rev4:default:bootloader`.
-
-Pour génerer un fichier .hex prêt pour la production qui contiendra tant l'application que le bootloader, utilisez la cible `production`. Exemple: `make planck/rev4:default:production`.
-
-### Commandes DFU
-
-Il y a plusieurs commandes DFU que vous pouvez utiliser pour flasher le firmware sur un appareil DFU.
-
-* `:dfu` - C'est l'option normale qui attend qu'un appareil DFU soit disponible et qui flashe le firmware dès que c'est le cas. La vérification sera faite toutes les 5 secondes.
-* `:dfu-ee` - Cette option flash un fichier `.eep` à la place d'un fichier `.hex`. Ce cas est plutôt rare.
-* `:dfu-split-left` - Cette option flashe le firmware normal comme avec l'option (`:dfu`). Mais cela aussi flash le coté gauche du fichier EEPROM pour les claviers scindés. _C'est l'option idéale pour un clavier scindé basé sur le Elite C_
-* `:dfu-split-right` - Cette option flashe le firmware normal comme avec l'option (`:dfu`). Mais cela aussi flash le coté droite du fichier EEPROM pour les claviers scindés. _C'est l'option idéale pour un clavier scindé basé sur le Elite C_
-
-## Caterina
-
-Les cartes arduinos et leurs clones utilisent le [bootloader Caterina](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (tous les claviers utilisant un Pro Micro, ou un clone). Ils utilisent aussi le protocole avr109 pour communiquer en virtuellement en série (serial en anglais). Les bootloaders comme le [A-Star](https://www.pololu.com/docs/0J61/9) sont basés sur Caterina.
-
-Pour vérifier la compatibilité avec un bootloader Caterina, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
-
-```make
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = caterina
-```
-
-Flashers compatibles:
-
-* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandée)
-* [avrdude](https://www.nongnu.org/avrdude/) avec avr109 / `:avrdude` (Outil en ligne de commande recommandé)
-* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
-
-Séquence de flash :
-
-1. Pressez la touche avec le keycode `RESET`, ou reliez les ports GND et RST. Vous n'avez que 7 secondes pour flasher une fois que l'opération a été faite.
-2. Attendez que l'OS détecte l'appareil.
-3. Flasher le fichier .hex.
-4. Attendez que l'appareil redémarre automatiquement.
-
-ou, utilisez:
-
- make <keyboard>:<keymap>:avrdude
-
-#### Commandes Caterina
-
-Il existe un certain nombre de commandes DFU que vous pouvez utiliser pour mettre à jour le firmware sur un périphérique DFU:
-
-* `: avrdude` - Il s’agit de l’option normale. Le script va attendre qu’un appareil Caterina soit disponible. Dès que c’est le cas, il flash le firmware. Il attendra de détecter un nouveau port COM pour le flasher.
-* `: avrdude-loop` - Cela fonctionne de la même manière que`: avrdude`, mais une fois que chaque périphérique est flashé, il tentera de flasher à nouveau. Cela peut être utile pour flasher plusieurs claviers à la suite. _Cela implique de sortir manuellement de la boucle en appuyant sur Ctrl + C, Cmd + C ou un raccourci équivalent selon votre OS_
-* `: avrdude-split-left` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté gauche de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
-* `: avrdude-split-right` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté droite de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
-
-## Halfkay
-
-Halfkay est un protocole ultra-simple développé par PJRC qui utilise HID et qui est fourni avec tous les Teensys après le modèle 2.0.
-
-Pour vérifier la compatibilité avec le booloader Halfkay, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
-
-```make
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = halfkay
-```
-
-Flasher compatibles:
-
-* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recomandée)
-* [Teensy Loader](https://www.pjrc.com/teensy/loader.html) (petit utilitaire ultra simple)
- [Teensy Loader en ligne de commande](https://www.pjrc.com/teensy/loader_cli.html) (Outil en ligne de commande recommandé)
-
-Séquence de flash:
-
-1. Pressez la touche du keycode `RESET`, ou reliez les ports RST et GND rapidement. Vous avez ensuite 7 secondes pour réaliser le flash.
-2. Attendez que l'OS détecte l'appareil.
-3. Flasher le fichier .hex.
-4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
-
-## USBasploader
-
-USBasploader est un bootloader développé par matrixstorm. Il est utilisé sur des processeurs AVR non-USB comme le ATmega328P, qui fonctionne grâce à V-USB.
-
-Pour vérifier la compatibilité avec le booloader USBasploader, vérifiez que ce bloc est présent dans votre fichier `rules.mk`:
-
-```make
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = USBasp
-```
-
-Flashers compatibles:
-
-* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (Interface graphique recommandé)
-* [avrdude](https://www.nongnu.org/avrdude/) avec le programmeur `usbasp`.
-* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
-
-Séquence de flash:
-
-1. Pressez la touche du keycode `RESET`, ou reliez le port de boot pendant que RST et GND snt reliés. Cela doit être fait très rapidement.
-2. Attendez que l'OS détecte l'appareil.
-3. Flasher le fichier .hex.
-4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
-
-## BootloadHID
-
-BootloadHID est un bootloader pour les microcontrôleurs AVR. L'utilitaire de téleversement ne demande pas de drivers au niveau du kernel et peut être lancé sans installer aucune DLLs.
-
-Pour vérifier la compatibilité avec le bootloader bootloadHID, vérifiez que ce bloc existe dans votre fichier `rules.mk` :
-
-```make
-# Bootloader selection
-# Teensy halfkay
-# Pro Micro caterina
-# Atmel DFU atmel-dfu
-# LUFA DFU lufa-dfu
-# QMK DFU qmk-dfu
-# ATmega32A bootloadHID
-# ATmega328P USBasp
-BOOTLOADER = bootloadHID
-```
-
-Utilitaires de flash compatibles:
-
-* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (Utilitaire avec interface graphique recommandé)
-* [bootloadhid Command Line](https://www.obdev.at/products/vusb/bootloadhid.html) / `:BootloadHID` avec QMK (utilitaire en ligne de commande recommandé)
-
-Séquence de flash
-
-1. Entrez dans le bootloader en utilisant l'une de ces méthodes:
- * Pressez la touche du keycode `RESET` (Cela ne fonctionnera pas sur certains appareils).
- * Verrouillez la touche «Salt» tout en branchant le clavier (Généralement ce principe est documenté dans le fichier readme du clavier)
-2. Attendez que l'OS détecte l'appareil.
-3. Flasher le fichier .hex.
-4. Redémarrez l'appareil en mode «application». Cela peut être fait automatiquement.
-
-Ou alors:
-
- make <keyboard>:<keymap>:bootloadHID
-
-## STM32
-
-Tous les processeurs STM32 contiennent un bootloader installé en usine qui ne peut pas être modifié ou supprimé. Certains processeurs STM32 ont des bootloaders qui ne peuvent pas être programmés par USB (ex: STM32F103) mais le processus reste le même.
-
-Pour le moment, aucune variable `BOOTLOADER` n'est nécessaire dans le fichier `rules.mk`.
-
-Flashers compatibles:
-
-* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (interface graphique recommandé)
-* [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (utilitaire en ligne de commande recommandé)
-
-Séquence pour flasher:
-
-1. Entrez dans le bootloader en utilisant l'une de ces méthodes:
- * Utilisez une touche sur laquelle le keycode `RESET` (Cela peut ne pas fonctionner sur les appareils STM32F042)
- * Si un circuit de réinitialisation (Reset) est présent alors utilisé le bouton qui lui est dédié.
- * Autrement, vous devez réaliser une liaison entre BOOT0 et VCC (en appuyant sur le bouton ou à l'aide d'un pont) puis faire un pont entre RESET et GND et enfin relacher le pont BOOT0.
-2. Attendre que l'os détecte l'appareil.
-3. Flasher un fichier `.bin`.h
- * Vous allez recevoir un avertissement à propos de la signature DFU. Ignorez-la.
-4. Réinitialisez l'appareil en mode «application». Cela peut être fait automatiquement.
- * Si vous êtes en train de travailler en ligne de commande, par exemple avec un `make planck/rev6:default:dfu-util` alors soyez bien sur que l'argument `:leave` est passé aux arguments DFU grâce à la variable `DFU_ARGS` à l'intérieur de votre fichier `rules.mk` (Ex: `DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`) afin que votre appareil redémarre après avoir été flashé.
-
-### Commandes STM32
-
-Il y a différentes commandes que vous pouvez utiliser pour flasher un firmware dans un appareil STM32:
-
-* `:dfu-util` - C'est l'option standard pour flasher un appareil STM32. Le script attendra qu'un bootloader STM32 soit présent.
-* `:dfu-util-split-left` - Permet de flasher un firmware normalement, tout comme l'option précédente mais permet de configurer le côté gauche des paramètres EEPROM sur un clavier scindé.
-* `:dfu-util-split-right` - Permet de flasher un firmware normalement, tout comme l'option précédente mais permet de configurer le côté droit des paramètres EEPROM sur un clavier scindé.
-* `:st-link-cli` - Cela permet de flasher le firmware avec l'utilitaire en ligne de commande ST-LINK's plutôt que d'utiliser dfu-util.
diff --git a/docs/fr-fr/getting_started_getting_help.md b/docs/fr-fr/getting_started_getting_help.md
deleted file mode 100644
index fedb18c76c..0000000000
--- a/docs/fr-fr/getting_started_getting_help.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Trouver de l'aide
-
-Il y a beaucoup de ressources pour trouver de l'aide avec QMK.
-
-## Chat temps-réel
-
-Vous trouverez des développeurs QMK et des utilisateurs sur notre [Serveur Discord](https://discord.gg/Uq7gcHh) principal. Il y a des canaux spécifiques dans le serveur pour discuter des firmwares, toolbox, hardware et configurateurs.
-
-## Sous-Reddit OLKB
-
-Le forum officiel de QMK est [/r/olkb](https://reddit.com/r/olkb) sur [reddit.com](https://reddit.com).
-
-## Tickets GitHub
-
-Vous pouvez ouvrir un [ticket sur GitHub](https://github.com/qmk/qmk_firmware/issues). Ceci est spécialement pratique lorsque votre problème demande une discussion sur le long terme ou un débugage.
diff --git a/docs/fr-fr/getting_started_github.md b/docs/fr-fr/getting_started_github.md
deleted file mode 100644
index 522b09a03e..0000000000
--- a/docs/fr-fr/getting_started_github.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# Comment utiliser GitHub avec QMK
-
-GitHub peut être un peu compliqué pour ceux qui n'y sont pas familier. Ce guide va vous expliquer chaque étape de "fork", clone et envoi d'un pull request avec QMK.
-
-?> Ce guide part du principe que vous êtes suffisamment à l'aise pour envoyer commandes sur la ligne de commande et que vous avez Git installé sur votre système.
-
-Commencez par la [page GitHub de QMK](https://github.com/qmk/qmk_firmware), et vous verrez un bouton dans le coin en haut à droite qui indique "Fork":
-
-![Fork on GitHub](https://i.imgur.com/8Toomz4.jpg)
-
-Si vous faites partie d'une organisation, vous aurez besoin de savoir quel compte utiliser pour le fork. Dans la plupart des cas, vous voudrez créer le fork dans votre compte personnel. Une fois le fork complet (cela peut quelques fois prendre un peu de temps), appuyez sur le bouton "Clone or download":
-
-![Download from GitHub](https://i.imgur.com/N1NYcSz.jpg)
-
-Faites attention à sélectionner "HTTPS", et sélectionnez le lien et copiez-le:
-
-![HTTPS link](https://i.imgur.com/eGO0ohO.jpg)
-
-Ensuite, entrez `git clone --recurse-submodules ` dans la ligne de commande, et collez votre lien:
-
-```
-user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
-Cloning into 'qmk_firmware'...
-remote: Enumerating objects: 9, done.
-remote: Counting objects: 100% (9/9), done.
-remote: Compressing objects: 100% (5/5), done.
-remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
-Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
-Resolving deltas: 100% (119972/119972), done.
-...
-Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
-Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
-Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
-Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-```
-
-Vous avez maintenant votre fork QMK sur votre machine locale, vous pouvez ajouter votre keymap, la compiler et la flasher sur votre board. Une fois heureux avec vos changements, vous pouvez les ajouter, commit, et pousser vers votre fork comme suit:
-
-```
-user@computer:~$ git add .
-user@computer:~$ git commit -m "adding my keymap"
-[master cccb1608] adding my keymap
- 1 file changed, 1 insertion(+)
- create mode 100644 keyboards/planck/keymaps/mine/keymap.c
-user@computer:~$ git push
-Counting objects: 1, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (1/1), done.
-Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
-Total 1 (delta 1), reused 0 (delta 0)
-remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
-To https://github.com/whoeveryouare/qmk_firmware.git
- + 20043e64...7da94ac5 master -> master
-```
-
-Vos changements existent maintenant dans votre fork sur GitHub. Si vous allez à cette adresse (`https://github.com/<whoeveryouare>/qmk_firmware`), vous pouvez créer un nouveau "Pull Request" en cliquant sur ce bouton:
-
-![New Pull Request](https://i.imgur.com/DxMHpJ8.jpg)
-
-Maintenant, vous pourrez voir exactement ce que vous avez commité. Si ça vous semble bien, vous pouvez le finaliser en cliquant sur "Create Pull Request":
-
-![Create Pull Request](https://i.imgur.com/Ojydlaj.jpg)
-
-Une fois transmis, nous pourrons vous parler de vos changements, vous demander de faire des changements, et éventuellement de les accepter!
-
-Merci de contribuer à QMK :)
diff --git a/docs/fr-fr/getting_started_introduction.md b/docs/fr-fr/getting_started_introduction.md
deleted file mode 100644
index b2711a1671..0000000000
--- a/docs/fr-fr/getting_started_introduction.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# Introduction
-
-Le but de cette page est d'expliquer les informations de base qui vous serons nécessaire pour travailler sur le projet QMK. Il a pour pré-requis que vous soyez familier à la navigation à l'aide d'un shell Unix, mais ne s'attend pas à ce que vous soyez familier avec C ou la compilation en utilisant make.
-
-## Structure de base de QMK
-
-QMK est un fork du projet [tmk_keyboard](https://github.com/tmk/tmk_keyboard) créé par [Jun Wako](https://github.com/tmk). Le code originel de TMK, avec quelques modifications, se trouve dans le dossier `tmk_core`. Les additions que QMK amène au projet se trouvent dans le dossier `quantum`. Les projets de clavier se trouvent dans les dossiers `handwired` et `keyboard`.
-
-### Structure du Userspace
-
-Dans le dossier `users` se trouve un répertoire pour chaque utilisateur. C'est un endroit où les utilisateurs peuvent mettre du code qui serait partagé entre plusieurs claviers. Merci de lire la documentation [Fonctionnalité Userspace](feature_userspace.md) pour plus d'information.
-
-### Structure du projet clavier
-
-Dans le dossier `keyboards`, son sous-dossier `handwired` et ses sous-dossiers pour les revendeurs et fabriquants (par exemple `clueboard`) se trouve un répertoire pour chaque projet clavier. Par exemple `qmk_firmware/keyboards/clueboard/2x1800`.
-
-A l'intérieur, vous trouverez la structure suivante:
-
-* `keymaps/`: différentes keymaps qui peuvent être compilées
-* `rules.mk`: Ce fichier définit les options "make" par défaut. Ne modifiez pas ce fichier directement, utilisez à la place un `rules.mk` spécifique à la keymap.
-* `config.h`: Ce fichier définit les options de compilation par défaut. Ne modifiez pas ce fichier directement, utilisez à la place un `config.h` spécifique à la keymap.
-* `info.json`: Le fichier utilisé pour définir les options de layout de QMK Configurator. Voyez [Support Configurator](reference_configurator_support.md) pour plus d'information.
-* `readme.md`: une brève description du clavier.
-* `<keyboardName>.h`: Ce fichier définit le layout du fichier par rapport à la matrice de commutation.
-* `<keyboardName>.c`: Ce fichier définit du code custom pour le clavier.
-
-Pour plus d'information sur la structure du projet, voyez [Directives clavier QMK](hardware_keyboard_guidelines.md).
-
-### Structure d'une Keymap
-
-Dans chaque dossier keymap, vous allez trouver les fichiers suivants. Seul le fichier `keymap.c` est nécessaire, et si le reste des fichiers n'existent pas, les options par défaut seront choisies.
-
-* `config.h`: les options de configuration de votre keymap
-* `keymap.c`: tout le code de votre keymap, requis
-* `rules.mk`: les features de QMK qui sont activées
-* `readme.md`: une description de votre keymap, comment d'autres l'utiliseront, et des explications des fonctionnalités. Uploadez les images vers un service comme imgur.
-
-# Le fichier `config.h`
-
-Le fichier `config.h` peut être mis à 3 endroits:
-
-* keyboard (`/keyboards/<keyboard>/config.h`)
-* userspace (`/users/<user>/config.h`)
-* keymap (`/keyboards/<keyboard>/keymaps/<keymap>/config.h`)
-
-Le système de compilation cherche automatiquement les fichiers de configuration dans l'ordre au-dessus. Si vous souhaitez surcharger une configuration définie par un `config.h` précédent, vous devrez d'abord ajouter le code suivant.
-
-```
-#pragma once
-```
-
-Ensuite, pour surcharger l'option du fichier `config.h` précédent, vous devez `#undef` puis `#define` l'option à nouveau.
-
-Voici à quoi l'ensemble du code ressemble une fois regroupé:
-
-```
-#pragma once
-
-// overrides go here!
-#undef MY_SETTING
-#define MY_SETTING 4
-```
diff --git a/docs/fr-fr/newbs.md b/docs/fr-fr/newbs.md
deleted file mode 100644
index 6d848b11f8..0000000000
--- a/docs/fr-fr/newbs.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Le Guide pour débutant complet à QMK
-
-QMK est un firmware Open Source pour votre clavier mécanique. Vous pouvez utiliser QMK pour customiser votre clavier de manière simple et puissante. Tout le monde, du débutant complet au développeur avancé, ont utilisé avec succès QMK pour customiser leur clavier. Ce guide vous aidera à faire de même, quelles que soient vos compétences.
-
-Vous voulez savoir si votre clavier peut utiliser QMK? Si c'est un clavier mécanique que vous avez vous-même construit, il y a de bonnes chances que vous pouvez. Nous supportons un [grand nombre de "hobbyist boards"](https://qmk.fm/keyboards), donc même si votre clavier ne peut pas utiliser QMK, vous ne devriez pas avoir trop de problème pour en trouver un qui vous convienne.
-
-## Vue d'ensemble
-
-Il y a 7 sections principales dans ce guide:
-
-* [Pour débuter](fr-FR/newbs_getting_started.md)
-* [Compiler votre premier firmware en utilisant la ligne de commande](fr-FR/newbs_building_firmware.md)
-* [Compiler votre premier firmware en utilisant l'interface graphique en ligne](fr-FR/newbs_building_firmware_configurator.md)
-* [Flasher le Firmware](fr-FR/newbs_flashing.md)
-* [Test et Débuggage](fr-FR/newbs_testing_debugging.md)
-* [Bonnes pratiques Git](fr-FR/newbs_best_practices.md)
-* [Ressources d'apprentissage](fr-FR/newbs_learn_more_resources.md)
-
-Ce guide a pour but principal d'aider quelqu'un qui n'a jamais compilé de logiciel avant. Les recommandations et les choix qu'il contient vont donc dans ce sens. Il y a des méthodes alternatives pour beaucoup de ces procédures, et nous supportons la plupart de ces alternatives. Si vous avez un doute sur comment accomplir une tâche, vous pouvez [nous demander de l'aide](fr-FR/getting_started_getting_help.md).
-
-## Ressources additionnelles
-
-* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – Un blog créé par un utilisateur qui couvre les bases de l'utilisation du Firmware QMK, vue d'un point de vue d'un nouvel utilisateur (anglais).
diff --git a/docs/fr-fr/newbs_best_practices.md b/docs/fr-fr/newbs_best_practices.md
deleted file mode 100644
index ec68a5e3e5..0000000000
--- a/docs/fr-fr/newbs_best_practices.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# Bonnes Pratiques
-
-## Ou, "Comment j'ai appris à ne plus m'en faire et aimer Git."
-
-Ce document a pour but d'apprendre aux novices les meilleures solutions pour faciliter la contribution à QMK. Nous allons étudier le processus de contribution à QMK, détaillant quelques moyens de rendre cette tâche plus simple. Nous allons faire quelques erreurs afin de vous apprendre à les résoudre.
-
-Ce document suppose les choses suivantes:
-
-1. Vous avez un compte GitHub, et avez [créé un "fork" pour le dépôt qmk_firmware](fr-FR/getting_started_github.md) avec votre compte.
-2. Vous avez [configuré votre environnement de compilation](fr-FR/newbs_getting_started.md?id=environment-setup).
-
-## La branche master de votre fork: Mettre à jour souvent, ne jamais commit
-
-Il est hautement recommandé pour le développement de QMK, peu importe ce qui est fait ou où, de garder votre branche `master` à jour, mais de ne ***jamais*** commit dessus. A la place, faites tous vos changements dans une branche de développement et crééz des "pull requests" de votre branche lorsque vous développez.
-
-Pour réduire les chances de conflits de fusion (merge) &mdash; des cas où deux ou plus d'utilisateurs ont édité la même section d'un fichier en parallèle &mdash; gardez votre branche `master` relativement à jour et démarrez chaque nouveau développement en créant une nouvelle branche.
-
-### Mettre à jour votre branche master
-
-Pour garder votre branche `master` à jour, il est recommandé d'ajouter le dépôt du firmware QMK comme un dépôt distant (remote) dans git. pour se faire, ouvrez votre interface de ligne de commande Git et entrez:
-
-```bash
-git remote add upstream https://github.com/qmk/qmk_firmware.git
-```
-
-Pour vérifier que le dépôt a bien été ajouté, lancez la commande `git remote -v`, qui devrait retourner le résultat suivant:
-
-```bash
-$ git remote -v
-origin https://github.com/<your_username>/qmk_firmware.git (fetch)
-origin https://github.com/<your_username>/qmk_firmware.git (push)
-upstream https://github.com/qmk/qmk_firmware.git (fetch)
-upstream https://github.com/qmk/qmk_firmware.git (push)
-```
-
-Maintenant que c'est fait, vous pouvez vérifier les mises à jour au dépôt en lançant `git fetch upstream`. Cela récupère les branches et les tags &mdash; appelé de manière générale "refs" &mdash; du dépôt QMK, qui a maintenant le surnom `upstream`. Nous pouvons maintenant comparer les données sur notre "fork" `origin` à celles contenues par QMK.
-
-Pour mettre à jour la branche master de votre "fork", lancez les commandes suivantes (en appuyant sur Enter après chaque ligne):
-
-```bash
-git checkout master
-git fetch upstream
-git pull upstream master
-git push origin master
-```
-
-Cela vous change la branche courante en master, synchronise les données de références du dépôt QMK vers votre ordinateur. La commande pull tire les données de références vers votre branche courante puis les y téleverse. La commande push permet de pousser la branche courante (master) vers votre fork GitHub.
-
-### Faire des changements
-
-Pour faire des changements, créez une nouvelle branche en entrant:
-
-```bash
-git checkout -b dev_branch
-git push --set-upstream origin dev_branch
-```
-
-Ceci crée une branche nommée `dev_branch`, bascule vers cette branche, et ensuite sauvegarde cette nouvelle branche vers votre fork. L'argument `--set-upstream` demande à git d'utiliser votre fork et la branche `dev_branch` à chaque fois que vous utilisez `git push` ou `git pull` depuis cette branche. Vous ne devez l'utiliser que pour le premier "push", après cela, vous pouvez utiliser simplement `git push` ou `git pull`, sans le reste des arguments.
-
-!> Avec `git push`, vous pouvez utiliser `-u` à la place de `--set-upstream` &mdash; `-u` est un alias pour `--set-upstream`.
-
-Vous pouvez appeler votre branche à peu près comme vous voulez, toutefois il est recommandé d'utiliser un nom qui est lié aux changements que vous allez faire.
-
-Par défaut, `git checkout -b` va faire de la branche actuelle la branche de base de votre nouvelle branche. Vous pouvez définir la base de votre nouvelle branche comme étant n'importe quelle branche existante qui n'est pas la courante en utilisant la commande:
-
-```bash
-git checkout -b dev_branch master
-```
-
-Maintenant que vous avez une branche de développement, ouvrez votre éditeur de texte et faites vos changements. Il est recommandé de faire beaucoup de petits commits dans votre branche. Ainsi, un changement qui crée un problème peut être plus facilement retracé et annulé si nécessaire. Pour faire un changement, éditez et sauvez n'importe quel fichier qui doit être mis à jour, ajoutez les à la *zone de staging* de Git, et commitez les vers votre branche:
-
-```bash
-git add path/to/updated_file
-git commit -m "My commit message."
-```
-
-`git add` ajoute les fichiers qui ont été changés dans la *zone de staging* de Git, qui est sa "zone de chargement". Elle contient tous les changements qui vont être *validés* (committed) par `git commit`, qui sauvegarde les changements vers le dépôt. Utilisez des messages de validation descriptifs afin que vous puissiez savoir ce qui a changé d'un coup d'oeil.
-
-!> Si vous changez beaucoup de fichiers, mais tous les fichiers font partie du même changement, vous pouvez utiliser `git add .` pour ajouter tous les fichiers changés dans le répertoire courant, plutôt que d'avoir à ajouter chaque fichier individuellement.
-
-### Publier Vos Changements
-
-La dernière étape est de pousser vos changements vers votre fork. Pour ce faire, entrez `git push`. Git publie maintenant l'état courant de `dev_branch` vers votre fork.
-
-## Résoudre Les Conflits De Merge
-
-Parfois, lorsque votre travail sur une branche met beaucoup de temps à se compléter, des changements réalisés par d'autres peuvent entrer en conflit avec les changements que vous avez fait sur votre branche au moment où vous avez ouvert un pull request. Ceci est appelé un *conflit de merge*, et c'est ce qui arrive lorsque plusieurs personnes modifient les mêmes parties de mêmes fichiers.
-
-### Rebaser Vos Changements
-
-Un *rebase* est la manière pour Git de prendre les changements qui ont été faits à un point, les annuler, et les réappliquer sur un autre point. Dans le cas d'un conflit de merge, vous pouvez rebaser votre branche pour récupérer les changements qui ont été faits entre le moment où vous avez créé votre branche et le présent.
-
-Pour démarrer, lancez les commandes suivantes:
-
-```bash
-git fetch upstream
-git rev-list --left-right --count HEAD...upstream/master
-```
-
-La commande `git rev-list` retourne le nombre de commits qui diffère entre la branche courante et la branche master de QMK. Nous lançons `git fetch` en premier afin d'être sûr que les refs qui représentent l'état courant du dépôt upstream soient à jour. Le résultat de la commande `git rev-list` retourne deux nombres:
-
-```bash
-$ git rev-list --left-right --count HEAD...upstream/master
-7 35
-```
-
-Le premier nombre représente combien il y a eu de commits sur la branche courante depuis qu'elle a été créée, et le second nombre est combien de commits ont été faits sur la branche `upstream/master` depuis que la branche a été créée et, ainsi, les changements qui ne sont pas enregistrés sur la branche courante.
-
-Maintenant que l'état actuel de la branche courante et la branche upstream sont connus, nous pouvons maintenant démarrer une opération de rebase:
-
-```bash
-git rebase upstream/master
-```
-
-Ceci dit à Git d'annuler les commits de la branche courante puis de les réappliquer sur la branche master de QMK.
-
-```bash
-$ git rebase upstream/master
-First, rewinding head to replay your work on top of it...
-Applying: Commit #1
-Using index info to reconstruct a base tree...
-M conflicting_file_1.txt
-Falling back to patching base and 3-way merge...
-Auto-merging conflicting_file_1.txt
-CONFLICT (content): Merge conflict in conflicting_file_1.txt
-error: Failed to merge in the changes.
-hint: Use 'git am --show-current-patch' to see the failed patch
-Patch failed at 0001 Commit #1
-
-Resolve all conflicts manually, mark them as resolved with
-"git add/rm <conflicted_files>", then run "git rebase --continue".
-You can instead skip this commit: run "git rebase --skip".
-To abort and get back to the state before "git rebase", run "git rebase --abort".
-```
-
-Ceci nous dit que nous avons un conflit de merge, et nous donne le nom du fichier en conflit. Ouvrez le fichier conflictuel dans votre éditeur de texte et, quelque part dans le fichier, vous trouverez quelque chose comme ça:
-
-```bash
-<<<<<<< HEAD
-<p>For help with any issues, email us at support@webhost.us.</p>
-=======
-<p>Need help? Email support@webhost.us.</p>
->>>>>>> Commit #1
-```
-
-La ligne `<<<<<<< HEAD` montre le début d'un conflit de merge et la ligne `>>>>>>> Commit #1` indique la fin, avec les sections conflictuelles séparées par `=======`. La partie du côté `HEAD` vient de la version du fichier provenant de la branche master de QMK, et la partie marquée avec le numéro du commit provient de la branche courrante.
-
-Parce que Git suis *les changements des fichiers*, plutôt que les contenus des fichiers directement, si Git ne peut pas trouver le texte qu'il y avait dans le fichier avant que le commit soit fait, il ne saura pas comment modifier le fichier. Modifier le fichier à nouveau va résoudre le conflit. Faites votre changement, et sauvez le fichier.
-
-```bash
-<p>Need help? Email support@webhost.us.</p>
-```
-
-Maintenant, lancez:
-
-```bash
-git add conflicting_file_1.txt
-git rebase --continue
-```
-
-Git enregistre le changement dans le fichier conflictuel, et continue à appliquer les commits depuis votre branche jusqu'à ce qu'il arrive à la fin.
diff --git a/docs/fr-fr/newbs_building_firmware.md b/docs/fr-fr/newbs_building_firmware.md
deleted file mode 100644
index 81870d31e4..0000000000
--- a/docs/fr-fr/newbs_building_firmware.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Compiler Votre Premier Firmware
-
-Maintenant que vous avez configuré votre environnement de build, vous être prêts à compiler un firmware customisé. Pour cette section, nous allons utiliser trois programmes différents: votre explorateur de fichier, votre éditeur de texte et votre fenêtre de terminal. Gardez les 3 ouverts jusqu'à ce que vous ayez terminé et soyez content de votre firmware de clavier.
-
-Si vous avez fermé et rouvert votre fenêtre de terminal depuis le démarrage de ce guide, n'oubliez pas de `cd qmk_firmware` afin que votre terminal soit dans le bon répertoire.
-
-## Naviguez vers votre répertoire keymaps
-
-Démarrez par naviguer dans le répertoire `keymaps` de votre clavier.
-
-?> Si vous êtes sous macOS ou Windows, il y a des commandes que vous pouvez utiliser pour facilement ouvrir le dossier keymaps.
-
-?> macOS:
-
- open keyboards/<keyboard_folder>/keymaps
-
-?> Windows:
-
- start .\\keyboards\\<keyboard_folder>\\keymaps
-
-## Créez une copie de la keymap `default`
-
-Une fois le dossier `keymaps` ouvert, créez une copie du répertoire `default`. Nous vous recommandons de nommer ce répertoire de la même manière que votre nom d'utilisateur GitHub. Vous pouvez aussi utiliser le nom que vous voulez, tant qu'il contient uniquement des lettres minuscules, des nombres et le caractère souligné (_).
-
-Afin d'automatiser ce processus, vous avez aussi l'option de lancer le script `new_keymap.sh`.
-
-Naviguez vers le répertoire `qmk_firmware/util` et tapez ce qui suit:
-
-```
-./new_keymap.sh <keyboard path> <username>
-```
-
-Par exemple, pour un utilisateur s'appeleant John, essayant de créer une nouvelle keymap pour le 1up60hse, il taperait:
-
-```
-./new_keymap.sh 1upkeyboards/1up60hse john
-```
-
-## Ouvrez `keymap.c` dans votre éditeur de texte préféré
-
-Ouvrez votre fichier `keymap.c`. Dans ce fichier, vous trouverez la structure qui contrôle comment votre clavier se comporte. En haut du fichier `keymap.c` il peut y avoir quelques `defines` et `enums` qui rendent la keymap plus simple à lire. Plus bas, vous trouverez une ligne telle que celle-ci:
-
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-Cette ligne indique le début d'une liste de calques (layers). En dessous, vous trouverez des lignes contenant soit `LAYOUT`, soit `KEYMAP` et ces lignes indiquent le début d'un calque. En dessous de cette ligne se trouve la liste des touches qui comprennent ce calque particulier.
-
-!> Lorsque vous éditez votre fichier keymap, faites attention à ne pas ajouter ou enlever une virgule. Si vous le faites, vous aller empêcher votre firmware de compiler et il ne sera pas facile de trouver où la virgule est manquante ou en trop.
-
-## Customisez le layout à votre goût
-
-Libre à vous de choisir comment compléter cette étape. Faites le petit changement qui vous dérange ou retravaillez tout de zéro. Vous pouvez supprimer des calques si vous ne les utilisez pas tous, ou ajouter des calques jusqu'à un maximum de 32. Vérifiez la documentation suivante pour trouver ce que vous pouvez définir ici:
-
-* [Keycodes](keycodes.md)
-* [Fonctionnalités](features.md)
-* [FAQ](faq.md)
-
-?> Lorsque vous découvrez comment des keymaps fonctionnent, faites de petits changements. De gros changements rendent le débuggage des problèmes éventuels plus difficile.
-
-## Compilez votre firmware
-
-Lorsque les changements de votre keymap sont complets, vous allez devoir compiler le firmware. Pour ce faire, retournez à votre terminal et lancez la commande de compilation:
-
- make <my_keyboard>:<my_keymap>
-
-Par exemple, si votre keymap s'appelle "xyverz" et vous compilez une keymap pour une plank rev5, vous allez utiliser cette commande:
-
- make planck/rev5:xyverz
-
-Durant la compilation, vous allez avoir beaucoup de messages sur l'écran vous informant de quels fichiers sont en train d'être compilés. Il devrait se terminer avec des messages qui ressemblent comme suit:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex [OK]
- * File size is fine - 18392/28672
-```
-
-## Flasher votre firmware
-
-Allez sur la page [Flasher le firmware](fr-FR/newbs_flashing.md) pour apprendre comment écrire votre nouveau firmware sur votre clavier.
diff --git a/docs/fr-fr/newbs_building_firmware_configurator.md b/docs/fr-fr/newbs_building_firmware_configurator.md
deleted file mode 100644
index d06242f392..0000000000
--- a/docs/fr-fr/newbs_building_firmware_configurator.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Configurateur de QMK
-
-Le [Configurateur de QMK](https://config.qmk.fm) est une interface graphique en ligne permettant de générer des fichiers "hex" du firmware de QMK.
-
-?> **S'il vous plaît, suivez les étapes suivantes dans l'ordre.**
-
-Regardez le [Tutoriel vidéo](https://youtu.be/tx54jkRC9ZY)https://www.youtube.com/watch?v=-imgglzDMdY)
-
-Le configurateur de QMK fonctionne mieux avec Chrome et Firefox.
-
-!> **Les fichiers d'autres outils, tels que KLE ou kbfirmware ne seront pas compatibles avec le configurateur QMK. Ne les chargez pas, ne les importez pas. Le configurateur QMK est un outil DIFFERENT.**
-
-## Sélectionner votre clavier
-
-Cliquez la boîte déroulante et sélectionnez le clavier pour lequel vous voulez créer une keymap.
-
-?> Si votre clavier a plusieurs versions, faites attention à utiliser la bonne.
-
-Je vais le répéter, parce que c'est important
-
-!> **FAITES ATTENTION A UTILISER LA BONNE VERSION !**
-
-Si votre clavier est annoncé comme fonctionnant grâce à QMK mais n'est pas dans la liste, il y a des chances que le développeur ne l'ait pas encore fait, ou que nous n'avons pas encore eu le temps de le merger. Ajoutez un problème (issue) sur [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) demandant le support de votre clavier, s'il n'y a pas de [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) ouvert pour lui. Il y a aussi des claviers alimentés par QMK qui sont sur le compte GitHub du fabricant, il est bon de le vérifier aussi.
-
-## Sélectionner la disposition de votre clavier
-
-Choisissez la disposition (layout) qui représente le mieux la keymap que vous voulez créer. Certains claviers n'ont pas encore assez de dispositions ou des dispositions incorrectes. Ils seront supportés dans le future.
-
-## Nom de la Keymap
-
-Appelez cette keymap comme vous voulez.
-
-?> Si vous rencontrez des problèmes lors de la compilation, il peut être utile de changer ce nom, il peut déjà exister dans le dépôt du firmware QMK.
-
-## Créer votre keymap
-
-Entrer un keycode peut s'accomplir de 3 façons différentes.
-
-1. Glisser déposer
-2. Cliquer sur un endroit vide sur le layout et cliquer sur le keycode souhaité
-3. Cliquer sur un endroit vide sur le layout et appuyer sur une touche physique de votre clavier.
-
-Passez votre souris au dessus d'une touche et un affichage vous dira quel est le rôle du keycode. Pour une version plus verbeuse suivre:
-
-[Référence Keycode basique](https://docs.qmk.fm/#/keycodes_basic)
-[Référence Keycode avancé](https://docs.qmk.fm/#/feature_advanced_keycodes)
-
-Dans le cas où vous ne trouvez pas une disposition qui supporte votre keymap, par exemple trois places pour une barre d'espace, ou deux places pour retour clavier, ou deux places pour shift, etc. etc. remplissez les TOUTES.
-
-### Exemples
-
-3 places pour la barre d'espace: Remplissez les TOUTES avec la barre d'espace
-
-2 places pour un retour clavier: Remplissez les DEUX avec un retour clavier
-
-2 places pour un shift droit: Remplissez les DEUX avec un shift droit
-
-1 place pour un shift gauche et 1 place pour le support ISO: Remplissez les deux avec un shift gauche
-
-5 places, mais seulement 4 touches: Deviner et vérifier, ou demander à quelqu'un qui l'a déjà fait.
-
-## Sauvez votre keymap pour des éditions futures
-
-Une fois satisfait de votre keymap, ou si vous souhaitez revenir travailler dessus plus tard, appuyez sur le bouton `Export Keymap`. Il vous permettra de sauvegarder votre keymap avec le nom choisi au dessus suivi de .json.
-
-Vous pouvez ensuite charger ce fichier .json à nouveau en appuxant sur le bouton `Import Keymap`.
-
-!> **ATTENTION** Ce n'est pas le même type de fichier .json utilisé pour kbfirmware.com ou n'importe quel autre outil. Si vous essayez d'utiliser ce fichier pour d'autres outil, ou le fichier .json d'autres outils avec le configurateur QMK, il y a des chances que votre clavier **explose**.
-
-## Générer votre fichier firmware
-
-Appuyez sur le bouton `Compile`.
-
-Une fois la compilation terminée, vous pourrez appuyer sur le bouton vert `Download Firmware`.
-
-## Ecrire votre firmware sur votre clavier
-
-Merci de vous référer à [Flasher le Firmware](fr-FR/newbs_flashing.md)
-
-## Dépannage
-
-#### Mon fichier json ne fonctionne pas
-
-Si le fichier .json a été généré par le configurateur QMK, bravo vous avez trouvé un bug. Merci d'ouvrir une issue sur [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
-
-Sinon... vous avez raté mon message écris en gras qui dit de ne pas utiliser d'autres fichiers .json?
-
-#### Il y a des espaces en trop dans mon alyout? Qu'est-ce que je fais?
-
-Si vous voulez dire que vous avez trois places pour une barre d'espace, le mieux est de les remplir tous avec une barre d'espace. Vous pouvez faire de même avec les retour clavier et les shift.
-
-#### C'est quoi le keycode pour .......
-
-Merci de regarder
-
-[Référence keycode basique](https://docs.qmk.fm/#/keycodes_basic)
-[Référence keycode avancé](https://docs.qmk.fm/#/feature_advanced_keycodes)
-
-#### Ca ne compile pas?
-
-Merci de vérifier les autres dispositions de votre keymap afin d'être sûr qu'il n'y a pas de touches aléatoires.
-
-## Problèmes et Bugs
-
-Nous acceptons toujours les demandes des clients et les rapports de bugs. Merci de les remplirs sur [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
diff --git a/docs/fr-fr/newbs_flashing.md b/docs/fr-fr/newbs_flashing.md
deleted file mode 100644
index f1f6b1131f..0000000000
--- a/docs/fr-fr/newbs_flashing.md
+++ /dev/null
@@ -1,367 +0,0 @@
-# Flasher votre clavier
-
-Maintenant que vous avez compilé un firmware custom, vous allez vouloir le flasher dans votre clavier.
-
-## Flasher votre clavier avec QMK Toolbox
-
-La manière la plus simple de flasher votre clavier est avec [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
-
-Toutefois, la QMK Toolbox n'est actuellement disponible que pour Windows et macOS. Si vous utilisez Linux (ou préférez flasher le firmware depuis la ligne de commande), vous devrez utiliser [la métode décrite ci-dessous](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
-
-### Charger le fichier dans QMK Toolbox
-
-Démarrez en ouvrant l'application QMK Toolbox. Cherchez le fichier de firmware dans Finder ou Explorer. Vore firmware de clavier peut être dans un de deux formats `.hex` ou `.bin`. QMK essaye de copier le bon format pour votre clavier du répertoire racine `qmk_firmware`.
-
-?> Si vous êtes sous Windows ou macOS il y a des commandes que vous pouvez utiliser pour facilement ouvrir le répertoire firmware dans Explorer ou Finder.
-
-?> Windows:
-
- start .
-
-?> macOS:
-
- open .
-
-Le fichier firmware suit toujours ce format de nommage:
-
- <keyboard_name>_<keymap_name>.{bin,hex}
-
-Par exemple, le `plank/rev5` avec une keymap `default` aura ce nom de fichier:
-
- planck_rev5_default.hex
-
-Une fois que vous aurez trouvé votre fichier de firmware, glissez le dans la boîte "Local file" sur QMK Toolbox, ou cliquez sur "Open" et naviguez où votre firmware est enregistré.
-
-### Mettez votre clavier en mode DFU (Bootloader)
-
-Afin de flasher votre firmware custom, vous devez mettre votre clavier dans un mode spécial. Lorsqu'il sera dans ce mode, vous ne pourrez pas taper ou utiliser votre clavier. Il est très important que vous ne débranchiez pas votre clavier ou n'arrêtiez pas le processus d'écriture du firmware.
-
-Chaque clavier a une manière différente d'entrer dans ce mode spécial. Si votre clavier tourne actuellement QMK ou TMK et vous n'avez pas reçu d'instruction spécifiques, essayez, dans cet ordre:
-
-* Enfoncez les deux touches shift et appuyez sur `Pause`
-* Enfoncez les deux touches shift et appuyez sur `B`
-* Débranchez votre clavier, gardez shift la barre d'espace et `B` en même temps, branchez votre clavier et attendez une seconde avant de relâcher les touches.
-* Appuyez la touche physique `RESET` en bas du PCB
-* Trouvez les pins sur le PCB marquées `BOOT0` ou `RESET`, court circuitez ces pins en branchant votre PCB
-
-Lorsque vous aurez réussi, vous verrez le message suivant dans QMK Toolbox:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-```
-
-### Flasher votre clavier
-
-Appuyez sur le boutton `Flash` dans QMK Toolbox. Vous verrez un résultat similaire à ce qui suit:
-
-```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-
-*** DFU device disconnected
-*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
-```
-
-## Flashez votre clavier à l'aide de la ligne de commande
-
-C'est désormais relativement simple. Lorsque vous êtes prêt à compiler et à flasher votre firmware, ouvrez la fenêtre de votre terminal et exécutez la commande de build :
-
- make <my_keyboard>:<my_keymap>:flash
-
-Par exemple, si votre keymap s'appelle "xyverz" et que vous fabriquez une keymap pour un clavier `planck` de version `rev5` vous devrez utiliser cette commande:
-
- make planck/rev5:xyverz:flash
-
-La commande va vérifier la configuration du clavier, puis tentera de le flasher en fonction du bootloader (chargeur d’amorçage) spécifié. Cela signifie que vous n'avez pas besoin de savoir quel bootloader votre clavier utilise. Exécutez simplement la commande et laissez-le faire le gros du travail.
-
-Cependant, tout dépend du bootloader qui est installé sur le clavier. Si cette information n’est pas configurée ou si vous tentez de flasher un clavier qui ne permet pas d’être flashé alors vous obtiendrez cette erreur:
-
- WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
-
-Dans ce cas, vous devrez choisir le bootloader.
-
-Il y a cinq bootloaders principaux. Les Pro-Micro et les clones utilisent Caterina, les Teensy utilisent Halfkay, les claviers AVR d’OLKB utilisent QMK-DFU, certains controleurs atmega32u4 utilisent DFU et la plupart des controlleurs ARM utilisent ARM DFU.
-
-Vous pouvez trouver plus d'information à propos des bootloaders sur la page [Instructions de flash et information sur le Bootloader](flashing.md).
-
-Si vous savez quel bootloader vous utilisez, lorsque vous compilez le firmware, vous pouvez ajouter quelques options à la commande `make` pour automatiser le processus de flash.
-
-### DFU
-
-Pour le bootloader DFU, lorsque vous êtes prêts à compiler et flasher votre firmware, ouvrez votre fenêtre de terminal et lancez la commande de compilation:
-
- make <my_keyboard>:<my_keymap>:dfu
-
-Par exemple, si vous keymap s'appelle "xyverz" et vous compilez une keymap pour une plank rev5, vous utiliserez cette commande:
-
- make planck/rev5:xyverz:dfu
-
-Une fois la compilation terminée, le résultat devrait être le suivant:
-
-```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex
- * File size is fine - 18574/28672
- ```
-
-Une fois arrivé à ce stade, le script de compilation va chercher le bootloader DFU toutes les 5 secondes. Il va répéter les messages suivants jusqu'à ce que l'appareil soit trouvé ou que vous l'annuliez.
-
- dfu-programmer: no device present.
- Error: Bootloader not found. Trying again in 5s.
-
-Une fois terminé, vous devrez mettre à zéro le contrôleur. Vous allez voir un résultat similaire à ceci:
-
-```
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-```
-
-?> Si vous avez des soucis concernant ceci - par exemple `dfu-programmer: no device present` - merci de regarder [Foires Aux Questions de Compilation](faq_build.md).
-
-#### Commandes DFU
-
-Il y aun certain nombre de commandes du DFU que vous pouvez utiliser pour flasher un firmware sur un device DFU:
-
-* `:dfu` - C'est l'option standard qui attends jusqu'à e qu'un appareil DFU soit disponible, puis flash le firmware. Il va vérifier toutes les 5 secondes, afin de voir si un appareil DFU est apparu.
-* `:dfu-ee` - Ceci flash un fichier `eep` à la place du standard hex, peu commun.
-* `:dfu-split-left` - Ceci flash le firmware standard, comme la commande standard (`:dfu`). Toutefois, elle flash aussi les fichiers EEPROM du "côté gauche" pour les claviers scindés. _C'est l'option idéale pour les claviers scindés basés sur Elite C._
-* `:dfu-split-right` - Ceci flash le firmware standard, comme la commande standard (`:dfu`). Toutefois, elle flash aussi les fichiers EEPROM du "côté droit" pour les claviers scindés. _C'est l'option idéale pour les claviers scindés basés sur Elite C._
-
-### Caterina
-
-Pour les boards Arduino et leurs clones (tel que le SparkFun ProMicro), lorsque vous êtes prêt à compiler et flasher votre firmware, ouvrez votre terminal et lancer la commande de compilation:
-
- make <my_keyboard>:<my_keymap>:avrdude
-
-Par exemple, si votre keymap se nomme "xyverz" et que vous compilez une keymap pour un Lets Split rev2, vous utiliserez la commande suivante:
-
- make lets_split/rev2:xyverz:avrdude
-
-Une fois le firmware compilé, vous aurez le résultat suivant:
-
-```
-Linking: .build/lets_split_rev2_xyverz.elf [OK]
-Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
-Checking file size of lets_split_rev2_xyverz.hex [OK]
- * File size is fine - 27938/28672
-Detecting USB port, reset your controller now..............
-```
-
-Une fois ceci fait, réinitialisez votre board et le script va détecter et flasher le firmware. La sortie devrait ressembler à quelque chose comme ça:
-
-```
-Detected controller on USB port at /dev/ttyS15
-
-Connecting to programmer: .
-Found programmer: Id = "CATERIN"; type = S
- Software Version = 1.0; No Hardware Version given.
-Programmer supports auto addr increment.
-Programmer supports buffered memory access with buffersize=128 bytes.
-
-Programmer supports the following devices:
- Device code: 0x44
-
-avrdude.exe: AVR device initialized and ready to accept instructions
-
-Reading | ################################################## | 100% 0.00s
-
-avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
-avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
- To disable this feature, specify the -D option.
-avrdude.exe: erasing chip
-avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: writing flash (27938 bytes):
-
-Writing | ################################################## | 100% 2.40s
-
-avrdude.exe: 27938 bytes of flash written
-avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
-avrdude.exe: reading on-chip flash data:
-
-Reading | ################################################## | 100% 0.43s
-
-avrdude.exe: verifying ...
-avrdude.exe: 27938 bytes of flash verified
-
-avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
-
-avrdude.exe done. Thank you.
-```
-
-Si vous avez un souci, essayez de faire ceci:
-
- sudo make <my_keyboard>:<my_keymap>:avrdude
-
-#### Commandes Caterina
-
-Il existe un certain nombre de commandes DFU que vous pouvez utiliser pour mettre à jour le firmware sur un périphérique DFU:
-
-* `: avrdude` - Il s’agit de l’option normale. Elle attend qu’un appareil Caterina soit disponible, puis tente de flasher le firmware. Il attendra de détecter un autre port COM, puis il flashera à nouveau.
-* `: avrdude-loop` - Cela fonctionne de la même manière que `: avrdude`, mais une fois que chaque périphérique est flashé, il tentera de flasher à nouveau. Cela peut être utile pour flasher plusieurs claviers à la suite. _Cela implique de sortir manuellement de la boucle en appuyant sur Ctrl + C, Cmd + C ou un raccourci équivalent selon votre OS_
-* `: avrdude-split-left` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté gauche de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
-* `: avrdude-split-right` - Cela fonctionne de la même manière que la fonction (`: avrdude`). Toutefois, cela permet aussi de flasher le coté droite de l'EEPROM des claviers splittés / divisés. C'est donc la méthode recommandée pour les claviers splittés avec Pro Micro.
-
-### HalfKay
-
-Pour les composants PJRC (les Teensy), lorsque vous êtes prêts à compiler et flasher votre firmware, ouvrez votre fenêtre de terminal et lancez la commande de compilation suivante:
-
- make <my_keyboard>:<my_keymap>:teensy
-
-Par exemple, si vous keymap s'appelle "xyverz" et vous compilez une keymap pour un Ergodox ou un Ergodox EZ, vous utiliserez cette commande:
-
- make ergodox_ez:xyverz:teensy
-
-Une fois la compilation du firmware terminée, votre sortie devrait ressembler à ça:
-
-```
-Linking: .build/ergodox_ez_xyverz.elf [OK]
-Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
-Checking file size of ergodox_ez_xyverz.hex [OK]
- * File size is fine - 25584/32256
- Teensy Loader, Command Line, Version 2.1
-Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
-Waiting for Teensy device...
- (hint: press the reset button)
- ```
-
-Une fois terminé, réinitialisez votre board. Une fois fait, vous verrez une sortie comme ça:
-
- ```
- Found HalfKay Bootloader
-Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
-Programming............................................................................................................................................................................
-...................................................
-Booting
-```
-
-### STM32 (ARM)
-
-Pour la majorité des boards ARM (incluant les Proton C, Planck Rev 6, et Preonic Rev 3), lorsque vous êtes prêt à compiler et flasher votre firmware, ouvrez la fenêtre de terminal et lancez la commande de compilation:
-
- make <my_keyboard>:<my_keymap>:dfu-util
-
-Par exemple, si votre keymap s'appelle "xyverz" et vous compilez une keymap pour le clavier Plank Revision 6, vous utiliserez cette commande et redémarrerez le clavier vers le bootloader (avant que la compilation soit terminée):
-
- make planck/rev6:xyverz:dfu-util
-
-Une fois le firmware compilé, il va afficher quelque chose comme ça:
-
-```
-Linking: .build/planck_rev6_xyverz.elf [OK]
-Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
-Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
-
-Size after:
- text data bss dec hex filename
- 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
-
-Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
-dfu-util 0.9
-
-Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
-Copyright 2010-2016 Tormod Volden and Stefan Schmidt
-This program is Free Software and has ABSOLUTELY NO WARRANTY
-Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
-
-Invalid DFU suffix signature
-A valid DFU suffix will be required in a future dfu-util release!!!
-Opening DFU capable USB device...
-ID 0483:df11
-Run-time device DFU version 011a
-Claiming USB DFU Interface...
-Setting Alternate Setting #0 ...
-Determining device status: state = dfuERROR, status = 10
-dfuERROR, clearing status
-Determining device status: state = dfuIDLE, status = 0
-dfuIDLE, continuing
-DFU mode device DFU version 011a
-Device returned transfer size 2048
-DfuSe interface name: "Internal Flash "
-Downloading to address = 0x08000000, size = 41824
-Download [=========================] 100% 41824 bytes
-Download done.
-File downloaded successfully
-Transitioning to dfuMANIFEST state
-```
-
-#### Commandes STM32
-
-Il y aun certain nombre de commandes du DFU que vous pouvez utiliser pour flasher un firmware sur un device STM32:
-
-* `:dfu-util` - C'est l'option standard pour flasher un appareil STM32. Elle attendra qu'un bootloader STM32 soit présent et tentera de l’utiliser.
-* `:dfu-util-left` - Ceci flasher le firmware standard, comme la commande standard (`:dfu-util`). Toutefois, elle flasher aussi les fichiers EEPROM du "côté gauche" pour les claviers scindés.
-* `:dfu-util-right` - Ceci flash le firmware standard, comme la commande standard (`:dfu-util`). Toutefois, elle flash aussi les fichiers EEPROM du "côté droit" pour les claviers scindés.
-* `:st-link-cli` - Cela permet de flasher le firmware avec l'utilitaire en ligne de commande ST-LINK's plutôt que d'utiliser dfu-util.
-
-### BootloadHID
-
-Pour les claviers basés sur Bootmapper Client(BMC)/bootloadHID/ATmega32A, si vous êtes prêts à compiler et flasher le firmware, ouvrez votre fenêtre de terminal et lancez la commande suivante:
-
- make <my_keyboard>:<my_keymap>:bootloaderHID
-
-Par exemple, si votre keymap s'appelle "xyverz" et que vous compilez une keymap pour un jj40, utilisez cette commande:
-
- make jj40:xyverz:bootloaderHID
-
-Une fois le firmware compilé, vous aurez cette sortie:
-
-```
-Linking: .build/jj40_default.elf [OK]
-Creating load file for flashing: .build/jj40_default.hex [OK]
-Copying jj40_default.hex to qmk_firmware folder [OK]
-Checking file size of jj40_default.hex [OK]
- * The firmware size is fine - 21920/28672 (6752 bytes free)
-```
-
-A ce stade, le script de build va chercher le bootloader DFU toutes les 5 secondes. Il répétera l ’affichage de ce message jusqu'à ce que l’appareil soit trouvé ou que vous annuliez l'opération```
-
-```
-Error opening HIDBoot device: The specified device was not found
-Trying again in 5s.
-```
-
-Une fois ce résultat obtenu, réinitialisez le contrôleur. Le résultat suivant devrait s’afficher:
-
-```
-Page size = 128 (0x80)
-Device size = 32768 (0x8000); 30720 bytes remaining
-Uploading 22016 (0x5600) bytes starting at 0 (0x0)
-0x05580 ... 0x05600
-```
-
-## Faites l'essai!
-
-Bravo! Votre firmware customisé a été programmé sur votre clavier!
-
-Essayez-le et vérifiez qu'il fonctionne comme vous le souhaitez. Nous avons écrit [Tester et débugger](newbs_testing_debugging.md) pour compléter le guide du débutant, alors allez voir là-bas pour apprendre comment dépanner vos fonctionnalités custom.
diff --git a/docs/fr-fr/newbs_getting_started.md b/docs/fr-fr/newbs_getting_started.md
deleted file mode 100644
index 1a5740185c..0000000000
--- a/docs/fr-fr/newbs_getting_started.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# Introduction
-
-Votre clavier d'ordinateur contient un processeur, proche de celui dans votre ordinateur. Ce processeur exécute un logiciel responsable de détecter les touches appuyées et envoie des rapports à propos de l'état du clavier lorsque les touches sont appuyées et relâchées. QMK prend le rôle de ce logiciel, détectant les appuis des boutons et passant cette information à l'ordinateur hôte. Lorsque vous construisez votre keymap customisée, vous créez l'équivalent d'un programme exécutable pour votre clavier.
-
-QMK essaie de rendre les choses simples faciles, et les choses difficiles possibles. Vous n'avez pas à savoir programmer pour créer des keymaps puissantes - vous devez seulement suivre quelques règles de syntaxe simples.
-
-# Guide de démarrage
-
-Avant de pouvoir construire des keymaps, vous devez installer quelques logiciels et configurer votre environnement de compilation. Ceci n'a besoin d'être fait seulement une fois, peu importe le nombre de clavier pour lesquels vous compter compiler un firmware.
-
-Si vous préférez une approche plus proche d'une interface graphique, considérez utiliser l'outil en ligne [QMK Configurator](https://config.qmk.fm). Référez-vous à [Construire votre premier firmware en utilisant l'interface graphique en ligne](newbs_building_firmware_configurator.md).
-
-## Logiciels à télécharger
-
-### Editeur de texte
-
-Vous allez avoir besoin d'un programme qui peut éditer et sauvegarder des fichiers **plain text**. Si vous êtes sur Windows, vous pouvez utiliser notepad et sur Linux vous pouvez utiliser gedit. Ces deux options sont des éditeurs de texte simples mais fonctionnels. Sur macOS, faites attention avec l'application par défaut TextEdit: elle ne sauvegardera pas les fichiers en mode "plain text" sauf si vous sélectionnez explicitement _Make Plain Text_ à partir du menu _Format_.
-
-Vous pouvez aussi télécharger et installer un éditeur de texte dédié comme [Sublime Text](https://www.sublimetext.com/) ou [VS Code](https://code.visualstudio.com/). C'est probablement la meilleure solution peu importe la plateforme car ce sont des programmes conçus spécifiquement pour éditer du code.
-
-?> Pas sûr de quel éditeur de texte utiliser? Laurence Bradford a écrit une [excellente introduction](https://learntocodewith.me/programming/basics/text-editors/) au sujet.
-
-### QMK Toolbox
-
-QMK Toolbox est un programme graphique optionnel pour Windows et macOS qui permet à la fois de programmer et débugger votre clavier customisé. Il vous sera probablement très utile pour facilement flasher votre clavier et analyser ses messages de débugage.
-
-[Télécharger la dernière version ici.](https://github.com/qmk/qmk_toolbox/releases/latest)
-
-* Pour Windows: `qmk_toolbox.exe` (portable) or `qmk_toolbox_install.exe` (installeur)
-* Pour macOS: `QMK.Toolbox.app.zip` (portable) or `QMK.Toolbox.pkg` (installeur)
-
-## Configurez votre environnement
-
-Nous avons essayé de rendre QMK aussi simple que possible à configurer. Vous avez uniquement à préparer votre environnment Linux ou Unix et laisser QMK installer le reste.
-
-?> Si vous n'avez jamais travaillé avec la ligne de commande Linux/Unix, il y a un certain nombre de concepts basiques et de commandes que vous devriez apprendre. Ces ressources vous apprendrons suffisemment pour travailler avec QMK:<br>
-[Commandes Linux à savoir](https://www.guru99.com/must-know-linux-commands.html)<br>
-[Commandes Unix de base](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
-
-### Windows
-
-Vous devez installer MSYS2 et Git.
-
-* Suivez les instructions d'installation sur la [page de MSYS2](https://www.msys2.org).
-* Fermez tous les terminaux MSYS2 éventuellement ouverts et ouvrez un nouveau terminal MSYS2 MinGW 64-bit.
-* Installez Git en lançant la commande: `pacman -S git`.
-
-### macOS
-
-Vous devez installer Homebew. Suivez les instructions sur la [page de Homebrew](https://brew.sh).
-
-Une fois Homebrew installé, continuez avec _Configurer QMK_. Dans cette étape, nous lancerons un script qui va installer d'autres paquets.
-
-### Linux
-
-Vous devez installer Git. Il est très probable que vous l'ayez déjà installé, mais sinon, une des commandes suivantes devrait l'installer:
-
-* Debian / Ubuntu / Devuan: `apt-get install git`
-* Fedora / Red Hat / CentOS: `yum install git`
-* Arch: `pacman -S git`
-
-?> Docker est aussi une option sur toutes les plateformes. [Appuyez ici pour plus de détail.](getting_started_build_tools.md#docker)
-
-## Configurer QMK
-
-Une fois votre environnement Linux/Unix configuré, vous êtes prêt à télécharger QMK. Nous allons le faire en utilisant Git pour "cloner" le dépôt de QMK. Ouvrez un terminal ou une fenêtre MSYS2 MinGW et gardez le ouvert pour le reste de ce guide. Dans ce terminal, lancez ces deux commandes:
-
-```shell
-git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
-cd qmk_firmware
-```
-
-?> Si vous savez déjà [comment utiliser GitHub](getting_started_github.md), nous recommandons que vous créez et clonez votre propre fork. Si vous ne savez pas ce que cela veut dire, vous pouvez sans problème ignorer ce message.
-
-QMK vient avec un script pour vous aider à configurer le reste de ce que vous aurez besoin. Vous devez le lancer en tapant la ligne de commande suivante:
-
- util/qmk_install.sh
-
-## Testez votre environnement de compilation
-
-Maintenant que votre environnement de compilation de QMK est configuré, vous pouvez compiler un firmware pour votre clavier. Démarrez en compilant la keymap par défaut du clavier. Vous devriez pouvoir le faire avec une commande de ce format:
-
- make <keyboard>:default
-
-Par exemple, pour compiler un firmware pour une Clueboard 66%, vous utiliserez:
-
- make clueboard/66/rev3:default
-
-Une fois ceci fait, vous devriez avoir beaucoup d'information dans votre sortie qui devrait se terminer par quelque chose de similaire à ça:
-
-```
-Linking: .build/clueboard_66_rev3_default.elf [OK]
-Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
-Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
-Checking file size of clueboard_66_rev3_default.hex [OK]
- * The firmware size is fine - 26356/28672 (2316 bytes free)
-```
-
-# Créer votre Keymap
-
-Vous êtes maintenant prêt à créer votre propre keymap! Passez à l'étape [Compiler votre premier firmware](newbs_building_firmware.md) pour ce faire.
diff --git a/docs/fr-fr/newbs_learn_more_resources.md b/docs/fr-fr/newbs_learn_more_resources.md
deleted file mode 100644
index 01b1c9e8eb..0000000000
--- a/docs/fr-fr/newbs_learn_more_resources.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Ressources d'apprentissage
-
-Ces ressources permettent de donner aux nouveaux membres de la communauté QMK plus de compréhension aux informations données dans la documentation Newbs.
-
-Ressources Git:
-
-* [Tutoriel général](https://www.codecademy.com/learn/learn-git)
-* [Jeu Git pour apprendre avec des exemples](https://learngitbranching.js.org/)
-* [Des ressources Git pour en savoir plus à propos de GitHub](getting_started_github.md)
-* [Des ressources Git spécifiques à QMK](contributing.md)
-
-Ressources sur les lignes de commande:
-
-* [Bon tutoriel général sur la ligne de commande](https://www.codecademy.com/learn/learn-the-command-line)
diff --git a/docs/fr-fr/newbs_testing_debugging.md b/docs/fr-fr/newbs_testing_debugging.md
deleted file mode 100644
index 85a7fb9f13..0000000000
--- a/docs/fr-fr/newbs_testing_debugging.md
+++ /dev/null
@@ -1,104 +0,0 @@
-# Test et débugage
-
-Une fois votre clavier configuré avec un firmware custom, vous êtes prêt à le tester. Avec un peu de chance, tout fonctionne parfaitement bien, dans le cas contraire, ce document vous aidera à trouver où se trouve le problème.
-
-## Tester
-
-Tester votre clavier est normalement assez simple. Appuyez chaque touche de votre clavier et assurez-vous qu'il envoie les touches auquel vous vous attendiez. Il existe même des programmes qui vous aideront à vérifier qu'aucune touche ne soit oubliée.
-
-Note: ces programmes ne sont ni fournis ni approuvés par QMK.
-
-* [QMK Configurator](https://config.qmk.fm/#/test/) (Web)
-* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows seulement)
-* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac seulement)
-* [Keyboard Tester](https://www.keyboardtester.com) (Web)
-* [Keyboard Checker](https://keyboardchecker.com) (Web)
-
-## Débuguer
-
-Votre clavier va envoyer des informations de débugage si vous avez `CONSOLE_ENABLE = yes` dans votre fichier `rules.mk`. Par défaut, la sortie est très limitée, mais vous pouvez activer le mode debug pour augmenter la quantité de sortie de débugage. Utilisez le keycode `DEBUG` dans votre keymap, utilisez la fonction [Commande](feature_command.md) pour activer le mode debug ou ajoutez le code suivant à votre keymap.
-
-```c
-void keyboard_post_init_user(void) {
- // Customise these values to desired behaviour
- debug_enable=true;
- debug_matrix=true;
- //debug_keyboard=true;
- //debug_mouse=true;
-}
-```
-
-### Débuguer avec QMK Toolbox
-
-Pour les plateformes compatibles, [QMK Toolbox](https://github.com/qmk/qmk_toolbox) peut être utilisé pour afficher les messages de débugage pour votre clavier.
-
-### Débuguer avec hid_listen
-
-Vous préférez une solution basée sur le terminal? [hid_listen](https://www.pjrc.com/teensy/hid_listen.html), fourni par PJRC, peut aussi être utilisé pour afficher des messages de débugage. Des versions compilées pour Windows, Linux et MacOS sont disponibles.
-
-<!-- FIXME: Describe the debugging messages here. -->
-
-## Envoyer vos propres messages de débugage
-
-Parfois, il est utile d'afficher des messages de débugage depuis votre [code custom](custom_quantum_functions.md). Le faire est assez simple. Commencez par ajouter `print.h` au début de votre fichier:
-
-```c
-#include "print.h"
-```
-
-Une fois fait, vous pouvez utiliser les fonctions print suivantes:
-
-* `print("string")`: Affiche une simple chaîne de caractères.
-* `uprintf("%s string", var)`: Affiche une chaîne de caractères formatée.
-* `dprint("string")` Affiche une chaîne de caractère simple, mais uniquement lorsque le mode debug est activé.
-* `dprintf("%s string", var)`: Affiche une chaîne de caractère formatée, mais uniquement lorsque le mode debug est activé.
-
-## Exemples de debugage
-
-Si dessous se trouve une liste d'exemples réels de débugage. Pour plus d'information, référez-vous à [Débuguer/Dépanner QMK](faq_debug.md).
-
-### A quelle position de la matrice se trouve cette activation de touche?
-
-Lors du portage ou lorsque vous essayez de diagnostiquer un problème de PCB, il est utile de savoir si une activation de touche est enregistrée correctement. Pour activer le log de ce scénario, ajoutez le code suivant à votre fichier keymaps `keymap.c`.
-
-```c
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef CONSOLE_ENABLE
- uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
-#endif
- return true;
-}
-```
-
-Exemple de sortie
-
-```text
-Waiting for device:.......
-Listening:
-KL: kc: 169, col: 0, row: 0, pressed: 1
-KL: kc: 169, col: 0, row: 0, pressed: 0
-KL: kc: 174, col: 1, row: 0, pressed: 1
-KL: kc: 174, col: 1, row: 0, pressed: 0
-KL: kc: 172, col: 2, row: 0, pressed: 1
-KL: kc: 172, col: 2, row: 0, pressed: 0
-```
-
-### Combien de temps cela a pris pour une activation de touche?
-
-Lorsque vous testez des problèmes de performance, il peut être utile de savoir à quelle fréquence la matrice est scannée. Pour activer le log dans ce scénario, ajoutez la ligne suivante à votre fichier `config.h` de votre keymaps.
-
-```c
-#define DEBUG_MATRIX_SCAN_RATE
-```
-
-Exemple de sortie
-
-```text
- > matrix scan frequency: 315
- > matrix scan frequency: 313
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
- > matrix scan frequency: 316
-```
diff --git a/docs/hardware_avr.md b/docs/hardware_avr.md
index 3d58cdc055..69aca2cf34 100644
--- a/docs/hardware_avr.md
+++ b/docs/hardware_avr.md
@@ -1,6 +1,6 @@
# Keyboards with AVR Processors
-This page describes the support for for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCUs that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
+This page describes the support for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCUs that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK.
diff --git a/docs/hardware_keyboard_guidelines.md b/docs/hardware_keyboard_guidelines.md
index be55356b17..6df86fb0fb 100644
--- a/docs/hardware_keyboard_guidelines.md
+++ b/docs/hardware_keyboard_guidelines.md
@@ -87,6 +87,7 @@ The `config.h` files can also be placed in sub-folders, and the order in which t
* `keyboards/top_folder/sub_1/sub_2/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/config.h`
+ * [`.build/objs_<keyboard>/src/info_config.h`](data_driven_config.md#add-code-to-generate-it) see [Data Driven Configuration](data_driven_config.md)
* `users/a_user_folder/config.h`
* `keyboards/top_folder/keymaps/a_keymap/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_config.h`
diff --git a/docs/he-il/README.md b/docs/he-il/README.md
deleted file mode 100644
index 5c113eb498..0000000000
--- a/docs/he-il/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-<div dir="rtl" markdown="1">
-# קושחה עבור Quantum Mechanical Keyboard
-
-[![גירסה נוכחית](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![ערוץ דיסקורד](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![מצב מסמכים](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![תומכי GitHub](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![מזלגות GitHub](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## מה היא קושחת QMK?
-
-QMK (*Quantum Mechanical Keyboard*) היא קהילת קוד פתוח (open source) שמתחזקת את קושחת QMK, QMK Toolbox, qmk.fm, והמסמכים המתאימים. קושחת QMK היא קושחה עבור מקלדות המבוססת על [tmk\_keyboard](https://github.com/tmk/tmk_keyboard) עם כמה תוספות עבור בקרי Atmel AVR ובאופן ספציפי יותר - [מוצרי OLKB](https://olkb.com), מקלדת [ErgoDox EZ](https://www.ergodox-ez.com), וגם [מוצרי Clueboard](https://clueboard.co/). בנוסף, הקושחה עברה פורט עבור שבבי ARM באמצעות ChibiOS. ניתן להשתמש בה על מנת להפעיל את מקלדות ה PCB המקוסטמות שלך.
-
-## איך להשיג אותה
-
-אם אתם מתכננים לתרום מיפוי מקשים, מקלדת או יכולת ל QMK, הדבר הקל ביותר הוא [לעשות פורק לריפו בGitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), ולעשות קלון לריפו בסביבה המקומית ושם לבצע את השינויים שלכם, לדחוף אותם ולפתוח [Pull Request](https://github.com/qmk/qmk_firmware/pulls) מהפורק שלך.
-
-אחרת, אפשר להוריד את הקושחה באופן ישיר ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), או לשכפל אותה באמצעות git (`git@github.com:qmk/qmk_firmware.git`), או https (`https://github.com/qmk/qmk_firmware.git`).
-
-## איך לקמפל
-
-לפני שתצליחו לקמפל, תדרשו [להתקין סביבה](he-il/getting_started_build_tools.md) עבור פיתוח AVR ו/או ARM. ברגע שהדבר בוצע, תוכלו להריץ פקודת `make` כדי לבנות מקלדת ומיפוי עם התחביר הבא:
-
- make planck/rev4:default
-
-כך תוכלו לבנות את גרסא `rev4` של ה `planck` עם מיפוי ברירת המחדל (`default`). לא כל המקלדות בעלות גרסאות (נקרא גם תת-פרוייקט או תיקייה), במקרה כזה, אפשר להריץ את הפקודה הבאה:
-
- make preonic:default
-
-## איך להתאים
-
-לQMK יש המון [יכולות](he-il/features.md) שאפשר לנווט בהן, וכמות נכבדת של [תיעוד ודוקומנטציה](https://docs.qmk.fm) בה אפשר לנבור. רוב הפיצ׳רים באים לידי ביטוי על ידי שינוי [מיפוי המקלדת](he-il/keymap.md) ושינוי [קודי המקשים](he-il/keycodes.md).
-</div>
diff --git a/docs/he-il/_summary.md b/docs/he-il/_summary.md
deleted file mode 100644
index 148eb6400d..0000000000
--- a/docs/he-il/_summary.md
+++ /dev/null
@@ -1,140 +0,0 @@
-<div dir="rtl" markdown="1">
-
-**בשפה העברית**
-* [המדריך המלא למתחילים](he-il/newbs.md)
- * [מקורות ללמידה](he-il/newbs_learn_more_resources.md)
-* [בסיס QMK](he-il/README.md)
- * [מבוא לQMK](he-il/getting_started_introduction.md)
- * [איך להשתמש בGitHub](he-il/getting_started_github.md)
- * [קבלת עזרה](he-il/getting_started_getting_help.md)
-* [שאלות נפוצות](he-il/faq.md)
- * [שאלות נפוצות כלליות](he-il/faq_general.md)
-* [חומרה](he-il/hardware.md)
-* התייחסויות
- * [איך לתעד נכון](he-il/documentation_best_practices.md)
-
-**בשפה האנגלית**
-* [המדריך המלא למתחילים](he-il/newbs.md)
- * [התחלה](he-il/newbs_getting_started.md)
- * [בנייה של הקושחה הראשונה שלך](he-il/newbs_building_firmware.md)
- * [צריבה של הקושחה](he-il/newbs_flashing.md)
- * [בדיקות ודיבאגינג](he-il/newbs_testing_debugging.md)
- * [עבודה נכונה ב GIT](he-il/newbs_best_practices.md)
- * [מקורות ללמידה](he-il/newbs_learn_more_resources.md)
-
-* [בסיס QMK](he-il/README.md)
- * [מבוא לQMK](he-il/getting_started_introduction.md)
- * [QMK CLI](he-il/cli.md)
- * [QMK CLI Config](he-il/cli_configuration.md)
- * [תרומה ל QMK](he-il/contributing.md)
- * [איך להשתמש בGitHub](he-il/getting_started_github.md)
- * [קבלת עזרה](he-il/getting_started_getting_help.md)
-
-* [שינויים משמעותיים](he-il/breaking_changes.md)
- * [2019 Aug 30](he-il/ChangeLog/20190830.md)
-
-* [שאלות נפוצות](he-il/faq.md)
- * [שאלות נפוצות כלליות](he-il/faq_general.md)
- * [בנייה/קומפילציה של QMK](he-il/faq_build.md)
- * [דיבאגינג ופתרון תקלות של QMK](he-il/faq_debug.md)
- * [מיפוי מקשים](he-il/faq_keymap.md)
- * [התקנת דרייברים עם Zadig](he-il/driver_installation_zadig.md)
-
-* מדריכים מפורטים
- * [התקנת כלי Build](he-il/getting_started_build_tools.md)
- * [מדריך Vagrant](he-il/getting_started_vagrant.md)
- * [הוראות בנייה/קומפילציה](he-il/getting_started_make_guide.md)
- * [צריבת קושחה](he-il/flashing.md)
- * [התאמה אישית של הפונקציונאליות](he-il/custom_quantum_functions.md)
- * [מיפוי מקשים](he-il/keymap.md)
-
-* [חומרה](he-il/hardware.md)
- * [מעבדי AVR](he-il/hardware_avr.md)
- * [דרייברים](he-il/hardware_drivers.md)
-
-* התייחסויות
- * [מדריך למקלדות](he-il/hardware_keyboard_guidelines.md)
- * [אפשרויות הגדרות](he-il/config_options.md)
- * [קודי מקשים](he-il/keycodes.md)
- * [קונבנציות קוד - C](he-il/coding_conventions_c.md)
- * [קונבנציות קוד - Python](he-il/coding_conventions_python.md)
- * [איך לתעד נכון](he-il/documentation_best_practices.md)
- * [טמפלטים לדוקומנטציה](he-il/documentation_templates.md)
- * [מילון](he-il/reference_glossary.md)
- * [בדיקות יחידה](he-il/unit_testing.md)
- * [פונקציות שימושיות](he-il/ref_functions.md)
- * [תמיכה בConfigurator](he-il/reference_configurator_support.md)
- * [פורמט info.json](he-il/reference_info_json.md)
- * [פיתוח בPython CLI](he-il/cli_development.md)
-
-* [תכונות](he-il/features.md)
- * [Basic Keycodes](he-il/keycodes_basic.md)
- * [US ANSI Shifted Keys](he-il/keycodes_us_ansi_shifted.md)
- * [Quantum Keycodes](he-il/quantum_keycodes.md)
- * [Advanced Keycodes](he-il/feature_advanced_keycodes.md)
- * [Audio](he-il/feature_audio.md)
- * [Auto Shift](he-il/feature_auto_shift.md)
- * [Backlight](he-il/feature_backlight.md)
- * [Bluetooth](he-il/feature_bluetooth.md)
- * [Bootmagic](he-il/feature_bootmagic.md)
- * [Combos](he-il/feature_combo.md)
- * [Command](he-il/feature_command.md)
- * [Debounce API](he-il/feature_debounce_type.md)
- * [DIP Switch](he-il/feature_dip_switch.md)
- * [Dynamic Macros](he-il/feature_dynamic_macros.md)
- * [Encoders](he-il/feature_encoders.md)
- * [Grave Escape](he-il/feature_grave_esc.md)
- * [Haptic Feedback](he-il/feature_haptic_feedback.md)
- * [HD44780 LCD Controller](he-il/feature_hd44780.md)
- * [Key Lock](he-il/feature_key_lock.md)
- * [Layouts](he-il/feature_layouts.md)
- * [Leader Key](he-il/feature_leader_key.md)
- * [LED Matrix](he-il/feature_led_matrix.md)
- * [Macros](he-il/feature_macros.md)
- * [Mouse Keys](he-il/feature_mouse_keys.md)
- * [OLED Driver](he-il/feature_oled_driver.md)
- * [One Shot Keys](he-il/one_shot_keys.md)
- * [Pointing Device](he-il/feature_pointing_device.md)
- * [PS/2 Mouse](he-il/feature_ps2_mouse.md)
- * [RGB Lighting](he-il/feature_rgblight.md)
- * [RGB Matrix](he-il/feature_rgb_matrix.md)
- * [Space Cadet](he-il/feature_space_cadet.md)
- * [Split Keyboard](he-il/feature_split_keyboard.md)
- * [Stenography](he-il/feature_stenography.md)
- * [Swap Hands](he-il/feature_swap_hands.md)
- * [Tap Dance](he-il/feature_tap_dance.md)
- * [Terminal](he-il/feature_terminal.md)
- * [Thermal Printer](he-il/feature_thermal_printer.md)
- * [Unicode](he-il/feature_unicode.md)
- * [Userspace](he-il/feature_userspace.md)
- * [Velocikey](he-il/feature_velocikey.md)
-
-* למייקרים ומודרים
- * [מדריך לכתיבה ידנית](he-il/hand_wire.md)
- * [מדריך לצריבת ISP](he-il/isp_flashing_guide.md)
- * [מדריך לדיבאגינג ARM](he-il/arm_debugging.md)
- * [מנהל התקן I2C](he-il/i2c_driver.md)
- * [מנהל התקן SPI](he-il/spi_driver.md)
- * [בקרת GPIO](he-il/internals_gpio_control.md)
- * [המרת Proton C](he-il/proton_c_conversion.md)
-
-* להבנה עמוקה יותר
- * [איך עובדות מקלדות](he-il/how_keyboards_work.md)
- * [להבין את QMK](he-il/understanding_qmk.md)
-
-* נושאים נוספים
- * [שימוש ב - Eclipse עם QMK](he-il/other_eclipse.md)
- * [שימוש ב - VSCode עם QMK](he-il/other_vscode.md)
- * [תמיכה](he-il/getting_started_getting_help.md)
- * [כיצד להוסיף תרגום](he-il/translating.md)
-
-* QMK מבפנים (בתהליך)
- * [Defines](he-il/internals_defines.md)
- * [Input Callback Reg](he-il/internals_input_callback_reg.md)
- * [Midi Device](he-il/internals_midi_device.md)
- * [Midi Device Setup Process](he-il/internals_midi_device_setup_process.md)
- * [Midi Util](he-il/internals_midi_util.md)
- * [Send Functions](he-il/internals_send_functions.md)
- * [Sysex Tools](he-il/internals_sysex_tools.md)
-
-</div>
diff --git a/docs/he-il/documentation_best_practices.md b/docs/he-il/documentation_best_practices.md
deleted file mode 100644
index bba9d886ab..0000000000
--- a/docs/he-il/documentation_best_practices.md
+++ /dev/null
@@ -1,67 +0,0 @@
-<div dir="rtl" markdown="1">
-# איך לתעד נכון
-
-עמוד זה קיים כדי לתעד את השיטות הטובות ביותר כאשר כותבים תיעוד עבור QMK. מעקב אחר הוראות אלה יעזור לשמור על סגנון וטון עקביים, אשר בתורם יעזרו לאנשים אחרים להבין טוב יותר את QMK.
-
-# פתיחת עמוד
-
-התיעוד שלך צריך בד״כ להפתח עם כותרת בגודל H1, אחריה פסקה אחת של תיאור של מה המשתמש ימצא בעמוד זה.
-זכור כי כותרת זו והפסקה ימוקמו ליד תוכן העניינים, אז חשוב לשמור על כותרת קצרה ולהמנע ממשפטים ארוכים ללא פיסוק.
-
-לדוגמה:
-
-```
-# הכותרת שלי
-
-עמוד זה מדבר על היכולת הסופר-מגניבה שלי. אתה יכול להשתמש ביכולת זו כדי להכין קפה, לסחוט תפוזים ולקבל משלוח של ביצים ועוגות מהסופר הקרוב באמצעות רחפן.
-```
-
-# כותרות
-
-עמוד התיעוד צריך לאופן כללי לכלול מס׳ כותרות בגודל "H1". רק כותרות מגודל H1 ו- H2 יכללו בתוכן העניינים, אז חשוב לתכנן אותם בהתאם. הכותרות לא להיות רחבות מידי כדי למנוע מתוכן העניינים להפוך להיות רחב מידי
-
-# בלוקי רמיזה מעוצבים
-
-ניתן להוסיף בלוקי רמיזה מעוצבים שמצויירים מסביב לטקסט כדי למשוך תשומת לב אליו.
-
-### חשוב
-
-```
-!> זה חשוב
-```
-
-יתרנדר כ:
-
-!> זה חשוב
-
-### טיפים כלליים
-
-```
-?> זהו טיפ שימושי.
-```
-
-יתרנדר כ:
-
-?> זהו טיפ שימושי.
-
-
-# תיעוד יכולות ופיצ׳ריםDocumenting Features
-
-אם יוצרים יכולת חדשה ב QMK, צרו עמוד תיעוד עבורה. העמוד לא צריך להיות ארוך במיוחד, מספר משפטים המתארים את היכולת (פיצ׳ר) וטבלה המתארת קודי מקשים רלוונטיים זה מספיק. הנה דוגמה בסיסית:
-
-```markdown
-# הפיצ׳ר המגניב שלי
-
-עמוד זה מדבר על היכולת הסופר-מגניבה שלי. אתה יכול להשתמש ביכולת זו כדי להכין קפה, לסחוט תפוזים ולקבל משלוח של ביצים ועוגות מהסופר הקרוב באמצעות רחפן.
-
-## קודי המקשים המגניבים של היכולת שלי
-
-|Long Name|Short Name|Description|
-|---------|----------|-----------|
-|KC_COFFEE||Make Coffee|
-|KC_CREAM||Order Cream|
-|KC_SUGAR||Order Sugar|
-```
-
-מקמו את התיעוד שלכם בתוך `docs/feature_<my_cool_feature>.md`, והוסיפו קישור לקובץ זה במקום המתאים ב `docs/_sidebar.md`. אם הוספתם קודי מקשים נוספים, תקפידו להוסיף אותם ל- `docs/keycodes.md` עם לינק לעמוד היכולת שלכם.
-</div>
diff --git a/docs/he-il/faq.md b/docs/he-il/faq.md
deleted file mode 100644
index 0a783eb8ca..0000000000
--- a/docs/he-il/faq.md
+++ /dev/null
@@ -1,8 +0,0 @@
-<div dir="rtl" markdown="1">
-# שאלות נפוצות
-
-* [כללי](faq_general.md)
-* [בנייה או קומפילציה של QMK](faq_build.md)
-* [דיבאגינג ופתרון בעיות של QMK](faq_debug.md)
-* [מיפוי מקשים](faq_keymap.md)
-</div>
diff --git a/docs/he-il/faq_general.md b/docs/he-il/faq_general.md
deleted file mode 100644
index fc102d6c6a..0000000000
--- a/docs/he-il/faq_general.md
+++ /dev/null
@@ -1,17 +0,0 @@
-<div dir="rtl" markdown="1">
-# שאלות נפוצות
-
-## מה זה QMK?
-
-[QMK](https://github.com/qmk), קיצור עבור Quantum Mechanical Keyboard, הוא קבוצה של אנשים הבונים כלים עבור מקלדות מותאמות אישית. התחלנו עם [קושחת QMK](https://github.com/qmk/qmk_firmware), פורק של [TMK](https://github.com/tmk/tmk_keyboard) אשר שונה באופן ניכר.
-
-## מה ההבדלים העיקריים בין QMK ו-Keymap TMK?
-
-TMK עוצב ומומש במקור ע״י [Jun Wako](https://github.com/tmk). QMK התחיל כפורק של [Jack Humbert](https://github.com/jackhumbert) של הפרוייקט של TMK עבור Planck. אחרי כמה זמן הפורק של ג׳ק השתנה מזה של TMK וב- 2015 ג׳ק החליט לשנות את שמו של הפורק ל- QMK.
-
-מנק׳ מבט טכנית, QMK נבנה על גבי TMK ע״י הוספת יכולות ופיצ׳רים חדשים. ראוי לציון ש- QMK הרחיב את מס׳ קודי המקלדת האפשריים ומשתמש בהם למימוש יכולות מתקדמות כמו `S()`, `LCTL()`, ו- `MO()`. ניתן לראות רשימה מלאה של קודי המקלדת האלה ב - [קודי מקלדת](keycodes.md).
-
-מנק׳ מבט של הפרוייקט וניהול הקהילה, TMK מנהל את כל המקלדות הנתמכות בעצמו, עם מעט תמיכה מהקהילה. כל אחד יכול לעשות פורק מהפרוייקט עבור מקלדות אחרות. רק מס׳ מיפויי מקשים נמצאים בברירת המחדל כך שאנשים בד״כ לא משתפים מיפויי מקשים זה עם זה. QMK מעודד את השיתוף של המקלדות וקודי המקשים דרך רפוזיטורי בניהול מרכזי, אשר מקבל את כל בקשות ה- Pull Requests שעומדות בסטנדרט האיכות. רובם מנוהלות ע״י הקהילה, אבל הצוות של QMK עוזר כשנדרש.
-
-לשתי הגישות יש יתרונות וחסרונות וקוד עובר בחופשיות בין TMK ל- QMK כשצריך.
-</div>
diff --git a/docs/he-il/getting_started_getting_help.md b/docs/he-il/getting_started_getting_help.md
deleted file mode 100644
index 7dec3e87d6..0000000000
--- a/docs/he-il/getting_started_getting_help.md
+++ /dev/null
@@ -1,17 +0,0 @@
-<div dir="rtl" markdown="1">
-# קבלת עזרה
-
-ישנם משאבים רבים לצורך קבלת עזרה עם QMK.
-
-## צ׳אט בזמן אמת
-
-אפשר למצוא מפתחי QMK ומשתמשים [בשרת ה-Discord הראשי שלנו](https://discord.gg/Uq7gcHh). ישנם ערוצים ספציפיים בשרת לצורך שיחות על הקושחה, ארגז הכלים, חומרה והמגדיר.
-
-## סאב-רדיט OLKB
-
-הפורום הרשמי של QMK נמצא ב - [/r/olkb](https://reddit.com/r/olkb) באתר [reddit.com](https://reddit.com).
-
-## סוגיות GitHub
-
-ניתן לפתוח [סוגייה ב-GitHub](https://github.com/qmk/qmk_firmware/issues). הדבר שימושי במיוחד כאשר הסוגיה דורשת דיון עמוק וארוך או דיבאגינג.
-</div>
diff --git a/docs/he-il/getting_started_github.md b/docs/he-il/getting_started_github.md
deleted file mode 100644
index ca79e40f9a..0000000000
--- a/docs/he-il/getting_started_github.md
+++ /dev/null
@@ -1,74 +0,0 @@
-<div dir="rtl" markdown="1">
-# איך להשתמש ב-GitHub עם QMK
-
-GitHub עלול להיות קצת טריקי למי שלא מכיר את העבודה איתו - מדריך זה ילווה אתכם שלב אחר שלב דרך ביצוע פעולות fork, clone ו-pull request עם QMK.
-
-?> מדריך זה מניח שאתם מרגישים בנוח עם הרצה של פקודות בסביבת command line (שורת הפקודה) ו-git מותקן במערכת שלכם.
-
-התחילו ב- [עמוד של QMK ב-GitHub](https://github.com/qmk/qmk_firmware), ותצמאו כפתור בחלק העליון מימין עם התיכוב "Fork":
-
-![Fork ב-GitHub](https://i.imgur.com/8Toomz4.jpg)
-
-אם אתם חלק מארגון, תצטרכו לבחור לאיזה חשבון לבצע פעולת fork. ברוב המבקרים, תרצו לבצע fork לתוך החשבון הפרטי שלכם. ברגע שה-fork הסתיים (לפעמים זה יכול לקחת קצת זמן) הקליקו על כפתור ה-"Clone or Download":
-
-![הורדה מ-GitHub](https://i.imgur.com/N1NYcSz.jpg)
-
-תוודאו שאתם בוחרים באופצייה של "HTTPS", בחרו את הקישור והעתיקו אותו:
-
-![קישור HTTPS](https://i.imgur.com/eGO0ohO.jpg)
-
-מכאן והלאה, הקיש `git clone --recurse-submodules ` בשורת הפקודה והדביקו את הלינק שלכם:
-
-<div dir="ltr" markdown="1">
-
-```
-user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
-Cloning into 'qmk_firmware'...
-remote: Enumerating objects: 9, done.
-remote: Counting objects: 100% (9/9), done.
-remote: Compressing objects: 100% (5/5), done.
-remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
-Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
-Resolving deltas: 100% (119972/119972), done.
-...
-Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
-Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
-Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
-Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-```
-
-</div>
-
-כעת, יש לכם את ה-fork של QMK על המכונה המקומית שלכם ואתם יכולים להוסיף את מיפויי המקשים שלכם, לקמפל את הפרוייקט ולצרוב אותו על הלוח שלכם. כשאתם שלמים עם השינוי שעשיתם, תוכלו להוסיף, לבצע פעולת commit ולדחוף את השינויים ל-fork שלכם באופן הבא:
-
-<div dir="ltr" markdown="1">
-
-```
-user@computer:~$ git add .
-user@computer:~$ git commit -m "adding my keymap"
-[master cccb1608] adding my keymap
- 1 file changed, 1 insertion(+)
- create mode 100644 keyboards/planck/keymaps/mine/keymap.c
-user@computer:~$ git push
-Counting objects: 1, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (1/1), done.
-Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
-Total 1 (delta 1), reused 0 (delta 0)
-remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
-To https://github.com/whoeveryouare/qmk_firmware.git
- + 20043e64...7da94ac5 master -> master
-```
-
-</div>
-
-השינויים שלכם יופיעו ב-fork שלכם ב-GitHub - אם תחזרו לשם (`https://github.com/<whoeveryouare>/qmk_firmware`), תוכלו ליצור "Pull Request חדש" ע״י הקשה על הכפתור הבא:
-
-![Pull Request חדש](https://i.imgur.com/DxMHpJ8.jpg)
-
-כאן תוכלו לראות בדיוק למה עשיתם commit - אם הכל נראה תקין, תוכלו להשלים את הפעולה ע״י הקשה על "Create Pull Request":
-
-![צרו Pull Request](https://i.imgur.com/Ojydlaj.jpg)
-
-אחרי שהגשתם, אנו עלולים לפנות אליכם לגבי השינויים שהצעתם, נבקש שתבצעו שינויים ובסופו של דבר נקבל את השינויים! תודה שתרמתם לפרוייקט QMK :)
-</div>
diff --git a/docs/he-il/getting_started_introduction.md b/docs/he-il/getting_started_introduction.md
deleted file mode 100644
index fca86bdaaf..0000000000
--- a/docs/he-il/getting_started_introduction.md
+++ /dev/null
@@ -1,72 +0,0 @@
-<div dir="rtl" markdown="1">
-# מבוא
-
-עמוד זה מנסה להסביר את המידע הבסיסי אותו תדרשו לדעת כדי לעבוד עם פרוייקט QMK. הוא מניח שאתם יודעים איך לנווט בסביבת Unix Shell, אבל לא מניח שאתם מכירים את שפת C או קומפילציה באמצעות make.
-
-## מבנה QMK בסיסי
-
-QMK הוא פורק של הפרוייקט [tmk_keyboard](https://github.com/tmk/tmk_keyboard) של [Jun Wako](https://github.com/tmk). קוד הTMK המקורי, עם התאמות, יכול להמצא בתיקיית `tmk_core`. התוספות של QMK לפרוייקט יכולות להמצא בתיקיית `quantum`. פרוייקטי מקלדות יכולות להמצא בתיקיות `handwired` ו- `keyboard`.
-
-### מבנה אחסון המשתמש
-
-בתוך תיקיית `users` יש תיקייה לכל משתמש. זה המקום למשתמשים להוסיף קוד שהם רוצים להשתמש בו במקלדות שונות. מומלץ לעיין במסמך [תכונות אחסון המשתמש](feature_userspace.md) לקבלת מידע נוסף.
-
-### מבנה פרוייקט המקלדת
-
-בתוך תיקיית `keyboards`, תת התיקייה `handwired` ותת התיקיות של היצרן והמוכר, לדוגמה `clueboard` היא תיקייה לכל פרוייקט מקלדת - `qmk_firmware/keyboards/clueboard/2x1800` בתוך התיקייה הזאת תמצאו את המבנה הבא:
-
-
-* `keymaps/`: מיפויי מקשים שונים היכולים להבנות
-* `rules.mk`: קובץ המגדיר את הגדרות ברירת המחדל של `make`. נא לא לערוך את הקובץ ישירות, במקום זאת, השתמשו בקובץ מיפוי המקשים ספציפי `rules.mk`.
-* `config.h`: הקובץ מכיל הגדרות לזמן הקומפילציה. נא לא לערוך את הקובץ ישירות אלא להשתמש בקובץ `config.h` לכל מיפויי מקשים.
-* `info.json`: הקובץ מכיל הגדרות פריסה עבור QMK Configurator. צפו ב [תמיכת Configurator](reference_configurator_support.md) למידע נוסף.
-* `readme.md`: סקירה כללית של המקלדת.
-* `<keyboardName>.h`: הקובץ בו פריסת המקלדת מוגדרת אל מול מטריצת המתגים של המקלדת.
-* `<keyboardName>.c`: הקובץ בו ניתן למצוא קוד מותאם למקלדת.
-
-למידע נוסף - אנא הכנסו ל [QMK](hardware_keyboard_guidelines.md).
-For more information on project structure, see [QMK מדריך למקלדת](hardware_keyboard_guidelines.md).
-
-### מבנה מפיוי המקשים
-
-בכל ספריית מיפוי מקשים, הקבצים הבאים עלולים להמצא. רק הקובץ `keymap.c` הוא חובה, אם השאר לא נמצאים, אפשרויות ברירת המחדל יבחרו.
-In every keymap folder, the following files may be found. Only `keymap.c` is required, and if the rest of the files are not found the default options will be chosen.
-
-* `config.h`: ההגדרות השונות עבור מיפוי המקשים.
-* `keymap.c`: כל הקודים של מיפוי המקשים, קובץ חובה
-* `rules.mk`: אילו יכולות של QMK מאופשרות.
-* `readme.md`: הסבר על מיפוי המקשים, איך אחרים ישתמשו בו והסבר על היכולות. נא להעלות תמונות לשירותים כמו imgur.
-
-# קובץ `config.h`
-
-לקובץ `config.h` יש 3 מיקומים אפשריים:
-
-* keyboard (`/keyboards/<keyboard>/config.h`)
-* userspace (`/users/<user>/config.h`)
-* keymap (`/keyboards/<keyboard>/keymaps/<keymap>/config.h`)
-
-מערכת הבילד אוטומטית בוחרת את קובץ ההגדרות לפי הסדר הנ״ל. אם רוצים לדרוס הגדרה מסויימת שהוגדרה בקובץ `config.h` קודם, ראשית תצטרכו להשתמש בקוד מוכן עבור ההגדרות שאתם רוצים לשנות.
-
-<div dir="ltr" markdown="1">
-
-```
-#pragma once
-```
-
-</div>
-
-כדי לדרוס הגדרות מקובץ `config.h` קודם, אתם מוכרחים להשתמש בפקודת `#undef` ואז שוב `#define`.
-
-דוגמה לקוד כזה נראית כך:
-<div dir="ltr" markdown="1">
-
-```
-#pragma once
-
-// overrides go here!
-#undef MY_SETTING
-#define MY_SETTING 4
-```
-
-</div>
-</div>
diff --git a/docs/he-il/hardware.md b/docs/he-il/hardware.md
deleted file mode 100644
index fca03bd64b..0000000000
--- a/docs/he-il/hardware.md
+++ /dev/null
@@ -1,10 +0,0 @@
-<div dir="rtl" markdown="1">
-# חומרה
-
-QMK רצה על מגוון של חומרות. אם המעבד שלך יכול להיות ממוקד (מטורגט) ע״י [LUFA](https://www.fourwalledcubicle.com/LUFA.php) או [ChibiOS](https://www.chibios.org) כנראה שתוכל לגרום ל QMK לרוץ על המעבד. קטע זה מדבר על הרצת QMK, ותקשורת עם, סוגים שונים של חומרות.
-
-* [מדריך למקלדת](hardware_keyboard_guidelines.md)
-* [מעבדי AVR](hardware_avr.md)
-* מעבדי ARM (TBD)
-* [מנהלי התקנים](hardware_drivers.md)
-</div>
diff --git a/docs/he-il/newbs_learn_more_resources.md b/docs/he-il/newbs_learn_more_resources.md
deleted file mode 100644
index 4127c387ff..0000000000
--- a/docs/he-il/newbs_learn_more_resources.md
+++ /dev/null
@@ -1,16 +0,0 @@
-<div dir="rtl" markdown="1">
-# מקורות ללמידה
-
-המקורות הבאים מטרתם היא לתת למשתמשים חדשים בקהילת QMK כדי להבין לעומק את המידע שמגיע במסמכי המתחילים.
-
-מקורות גיט:
-
-* [מדריך כללי מעולה](https://www.codecademy.com/learn/learn-git)
-* [משחק גיט כדי ללמוד מדוגמאות](https://learngitbranching.js.org/)
-* [מקורות גיט כדי ללמוד עוד על GitHub](getting_started_github.md)
-* [מקור גיט כדי ללמוד במפורש על QMK](contributing.md)
-
-מקורות לפקודות שורה (Command Line):
-
-* [מדריך טוב על Command Line](https://www.codecademy.com/learn/learn-the-command-line)
-</div>
diff --git a/docs/he-il/proton_c_conversion.md b/docs/he-il/proton_c_conversion.md
deleted file mode 100644
index 9642ca3090..0000000000
--- a/docs/he-il/proton_c_conversion.md
+++ /dev/null
@@ -1,36 +0,0 @@
-<div dir="rtl" markdown="1">
-# המרה של לוח להשתמש ב-Proton C
-
-אם לוח נתמך ב-QMK משתמש בלוח Pro Micro (או כל לוח נתמך) ואתם רוצים להשתמש ב-Proton C, ניתן לייצר את החומרה ע"י הוספה של הפקודה `CONVERT_TO_PROTON_C=yes` (או `CTPC=yes`) לפקודת make, כמו כאן:
-<div dir="ltr" markdown="1">
-
-```
- make 40percentclub/mf68:default CTPC=yes
-```
-
-</div>
-ניתן להוסיף את אותו ארגומנט לקובץ `rules.mk` במיפוי המקשים שלכם, שתיצור את אותה התוצאה.
-
-הדבר חושף את דגל `CONVERT_TO_PROTON_C` שניתן להשתמש בו בקוד שלכם באמצעות פקודת `#ifdef`, כמו כאן:
-<div dir="ltr" markdown="1">
-
-```
- #ifdef CONVERT_TO_PROTON_C
- // Proton C code
- #else
- // Pro Micro code
- #endif
-```
-
-</div>
-לפני שתצליחו לקמפל, יכול להיות שתקבלו שגיאות שונות לגבי `PORTB/DDRB`, וכו' שלא הוגדרו, אם כך, תצטרכו להמיר את קודי המקלדת להשתמש ב - [בקרי GPIO](internals_gpio_control.md) שיעבדו עבור ARM וגם AVR. הדבר לא אמור להשפיע על הבילדים של AVR בכלל.
-
-ל-Proton C יש רק מנורת LED אחת על הלוח (C13), וכברירת מחדל, TXLED (D5) ממופה אליו. אם תרצו במקום, למפות אליו את RXLED (B0), הוסיפו את השורה הבא לקובץ `config.h`:
-<div dir="ltr" markdown="1">
-
-```
- #define CONVERT_TO_PROTON_C_RXLED
-```
-
-</div>
-</div>
diff --git a/docs/he-il/quantum_keycodes.md b/docs/he-il/quantum_keycodes.md
deleted file mode 100644
index 5374fd47ad..0000000000
--- a/docs/he-il/quantum_keycodes.md
+++ /dev/null
@@ -1,25 +0,0 @@
-<div dir="rtl" markdown="1">
-# קודי מקלדת Quantum
-
-קודי מקלדת Quantum מאפשרים התאמה נוחה יותר של מיפוי המקשים שלך מעבר למה שהבסיסי מאפשר, ללא צורך בהגדרת של פעולות מותאמות אישית.
-
-כל קודי המקלדת בתוך quantum הם מספרים בין `0x0000` ֿֿֿ ל-`0xFFFF`. בתוך הקובץ `keymap.c` זה עלול להראות כאילו יש לך פונקציות ומקרים יחודיים נוספים, אבל בסופו של דבר הקדם-מעבד של שפת C יתרגם אלה לתוך מספר יחיד בין 4 בתים. QMK שמרה את מרחב הכתובות בין `0x0000` עד ל- `0x00FF` עבור קודי מקשים סטנדרטיים. קודי מקשים אלה, כגון `KC_A`, `KC_1`, ו- `KC_LCTL`, אשר מתארים מקשים בסיסיים מוגדרים בתוך USB HID specification.
-
-בעמודו זה יש לנו את קודי המקשים מתועדים בין `0x00FF` ֿֿ ל- `0xFFFF` אשר משומשים בשביל לממש יכולות מתקדמות של quantum. אם תגדירו קודי מקשים משלכם, הם יתווספו לתוך המרחב הזה גם כן.
-
-## קודי מקשים של QMK
-<div dir="ltr" markdown="1">
-
-```
-|Key |Aliases |Description |
-|---------------|-----------|---------------------------------------------------------------------|
-|`RESET` | |Put the keyboard into DFU mode for flashing |
-|`DEBUG` | |Toggle debug mode |
-|`EEPROM_RESET` |`EEP_RST` |Resets EEPROM state by reinitializing it |
-|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>&#96;</code> when pressed with Shift or GUI|
-|`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
-|`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
-```
-
-</div>
-</div>
diff --git a/docs/index.html b/docs/index.html
index 5312b9105d..f5a8dbbf12 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -51,13 +51,7 @@
basePath: '/',
name: 'QMK Firmware',
nameLink: {
- '/de/': '/#/de/',
- '/es/': '/#/es/',
- '/fr-fr/': '/#/fr-fr/',
- '/he-il/': '/#/he-il/',
'/ja/': '/#/ja/',
- '/pt-br/': '/#/pt-br/',
- '/ru-ru/': '/#/ru-ru/',
'/zh-cn/': '/#/zh-cn/',
'/': '/#/'
},
@@ -68,30 +62,20 @@
auto2top: true,
autoHeader: true,
fallbackLanguages: [
- 'de',
- 'es',
- 'fr-fr',
- 'he-il',
'ja',
- 'pt-br',
- 'ru-ru',
'zh-cn'
],
formatUpdated: '{YYYY}/{MM}/{DD} {HH}:{mm}',
search: {
paths: 'auto',
placeholder: {
- '/es/': 'Buscar',
'/zh-cn/': '搜索',
'/ja/': '検索',
- '/pt-br/': 'Busca',
'/': 'Search'
},
noData: {
- '/es/': '¡Ningún resultado!',
'/zh-cn/': '没有结果!',
'/ja/': '見つかりません!',
- '/pt-br/': 'Nenhum resultado!',
'/': 'No results!'
},
depth: 6
@@ -103,21 +87,14 @@
copyCode: {
buttonText: {
'/zh-cn/': '点击复制',
- '/ru/' : 'Скопировать в буфер обмена',
- '/de-de/': 'Klicken Sie zum Kopieren',
- '/es/' : 'Haga clic para copiar',
'/' : 'Copy to clipboard'
},
errorText: {
'/zh-cn/': '错误',
- '/ru/' : 'ошибка',
'/' : 'Error'
},
successText: {
'/zh-cn/': '复制',
- '/ru/' : 'Скопировано',
- '/de-de/': 'Kopiert',
- '/es/' : 'Copiado',
'/' : 'Copied'
}
},
diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md
index 384aaf7229..febb34c574 100644
--- a/docs/isp_flashing_guide.md
+++ b/docs/isp_flashing_guide.md
@@ -57,13 +57,33 @@ To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [spec
!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
-### SparkFun PocketAVR / USBtinyISP / USBasp
+### SparkFun PocketAVR / USBtinyISP
[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)
[Adafruit USBtinyISP](https://www.adafruit.com/product/46)
+
+!> SparkFun PocketAVR and USBtinyISP **DO NOT support** AVR chips with more than 64 KiB of flash (e.g., the AT90USB128 series). This limitation is mentioned on the [shop page for SparkFun PocketAVR](https://www.sparkfun.com/products/9825) and in the [FAQ for USBtinyISP](https://learn.adafruit.com/usbtinyisp/f-a-q#faq-2270879). If you try to use one of these programmers with AT90USB128 chips, you will get verification errors from `avrdude`, and the bootloader won't be flashed properly (e.g., see the [issue #3286](https://github.com/qmk/qmk_firmware/issues/3286)).
+
+**AVRDUDE Programmer**: `usbtiny`
+**AVRDUDE Port**: `usb`
+
+#### Wiring
+
+|ISP |Keyboard|
+|---------|--------|
+|`VCC` |`VCC` |
+|`GND` |`GND` |
+|`RST` |`RESET` |
+|`SCLK` |`SCLK` |
+|`MOSI` |`MOSI` |
+|`MISO` |`MISO` |
+
+
+### USBasp
+
[Thomas Fischl's USBasp](https://www.fischl.de/usbasp/)
-**AVRDUDE Programmer**: `usbtiny` / `usbasp`
+**AVRDUDE Programmer**: `usbasp`
**AVRDUDE Port**: `usb`
#### Wiring
diff --git a/docs/ja/cli_commands.md b/docs/ja/cli_commands.md
index 35937dbbcb..8a661d56ee 100644
--- a/docs/ja/cli_commands.md
+++ b/docs/ja/cli_commands.md
@@ -59,7 +59,7 @@ $ qmk compile -km 66_iso
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
-Ψ Compiling keymap with make make gh60/satan:colemak
+Ψ Compiling keymap with make gh60/satan:colemak
...
```
diff --git a/docs/keycodes.md b/docs/keycodes.md
index ba06e1b8b6..84a6d456ba 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -763,7 +763,7 @@ See also: [Unicode Support](feature_unicode.md)
|Key |Aliases |Description |
|----------------------|---------|----------------------------------------------------------------|
-|`UC(c)` | |Send Unicode code point `c` |
+|`UC(c)` | |Send Unicode code point `c`, up to `0x7FFF` |
|`X(i)` | |Send Unicode code point at index `i` in `unicode_map` |
|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes |
diff --git a/docs/keycodes_us_ansi_shifted.md b/docs/keycodes_us_ansi_shifted.md
index 85dd61759f..e9749b7b17 100644
--- a/docs/keycodes_us_ansi_shifted.md
+++ b/docs/keycodes_us_ansi_shifted.md
@@ -8,7 +8,7 @@ Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since an
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
-To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
+To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
## Keycodes
diff --git a/docs/ko-kr/README.md b/docs/ko-kr/README.md
deleted file mode 100644
index a3b5b91011..0000000000
--- a/docs/ko-kr/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Quantum Mechanical Keyboard Firmware
-
-[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## QMK Firmware 란?
-
-QMK(*Quantum Mechanical Keyboard 양자 기계식 키보드*)란 QMK 컴워어, QMK 툴박스, qmk.fm 를 관리하고 있는 오픈소스 커뮤니티 입니다. QMK펌웨어는 [tmk\_keyboard](https://github.com/tmk/tmk_keyboard)를 바탕으로 만들어진 키보드펌웨어이며, Atmel AVR컨트롤러와 [OLKB 제품군](https://olkb.com) [ErgoDox EZ](https://www.ergodox-ez.com), 그리고 [Clueboard 제품군](https://clueboard.co/) 이용할때 매우 편리합니다. 또한 QMK는 ChibiOS를 사용하여 ARM기반의 컨트롤러로도 사용할수 있습니다. 마지막으로 QMK는 커스텀회로와 핸드와이어드 키보드을 작동시키는데에도 사용가능합니다.
-
-
-## 설치하기
-
-만약 당신이 QMK에 키보드, 키맵, 또는 새로운 기능을 추가하고싶다면, 가장쉬운 방법은 Github를 통해 [저장소(REPO)를 추가하고]((https://github.com/qmk/qmk_firmware#fork-destination-box)) 로컬에서 변화 또는 수정하고, [PULL REQUEST](https://github.com/qmk/qmk_firmware/pulls)을 통해 업로드 할수 있습니다.
-
-또다른 방법으로는, 직접 파일들 로컬로 다운로드 하거나([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), git (`git@github.com:qmk/qmk_firmware.git`), https (`https://github.com/qmk/qmk_firmware.git`)을 통해 클론을 만들수 있습니다.
-
-## 컴파일
-
-먼저 컴파일을 하기전 AVR 이나 ARM [개발환경](getting_started_build_tools.md)을 구축해야 합니다. 모든준비가 끝났다면 `make`를 다음과 같이 키보드와 키맵을 선택하여 컴파일 할 수 있습니다.
-
- make planck/rev4:default
-
-이 커맨드는 `rev4`버전의 `planck`를 `default`키맵으로 컴파일 할것입니다. 다만 모든 키보드는 파일, 수정본 또는 세부프로젝트를 가지고있지 않음으로 수정본 부분을 생략될수 있습니다.
-
- make preonic:default
-
-## 커스터마이징
-
-QMK는 사용할 수 있는 매우 다양한 [기능](features.md)과 체계화된 [참고자료](https://docs.qmk.fm)들이 있습니다. 그중 대부분은 [키맵](keymap.md)을 수정하거나 [키코드](keycodes.md)를 변경하는데에 특화되어 있습니다.
diff --git a/docs/ko-kr/getting_started_build_tools.md b/docs/ko-kr/getting_started_build_tools.md
deleted file mode 100644
index c5aa8d0c03..0000000000
--- a/docs/ko-kr/getting_started_build_tools.md
+++ /dev/null
@@ -1,156 +0,0 @@
-# 컴파일 도구 설치
-
-이 페이지는 QMK 컴파일 환경을 설치하는 방법을 설명합니다. 이 페이지는 AVR 프로세서들(예를 들면 atmega32u4와 비슷한)을 위한 가이드를 제공합니다
-
-<!-- FIXME: We should have ARM instructions somewhere. -->
-
-
-**노트:** 만약 당신이 처음 시작한다면 [입문자를 위한 가이드](newbs.md)페이지를 확인하세요.
-
-계속하기전에 당신의 서브모듈(외부라이브러리)이 최신인지 `make git-submodule`을 사용하여 확인하세요.
-
-## 리눅스
-
-당신이 항상 최신 파일을 가지고 있는지는 `sudo util/qmk_install.sh`을 이용하여 간단히 확인할 수 있습니다. 이 명령어는 당신이 필요한 모든 속성물(dependencies)를 설치할 것입니다. **이 명령어는 `apt-get upgrade`를 사용합니다**
-
-또한 당신의 직접 필요한 것들을 설치할 수도 있습니다. 하지만 이 자료는 항상 최신의 자료을 가지고 있지 않습니다.
-
-현재로써 필요한 것은 다음과 같습니다. 하지만 당신이 하는 작업에 따라 당신은 다음 패키지를 다 쓰지 않을 수도 있습니다. 또한 환경에 따라 모든 다음 패키지는 다른이름으로 존재하거나, 없을 수도 있습니다.
-
-```
-build-essential
-gcc
-unzip
-wget
-zip
-gcc-avr
-binutils-avr
-avr-libc
-dfu-programmer
-dfu-util
-gcc-arm-none-eabi
-binutils-arm-none-eabi
-libnewlib-arm-none-eabi
-git
-```
-
-당신이 사용하는 패키지 매니져에서 이러한 방법으로 설치하십시요.
-
-데비안 / 우분투 예시:
-
- sudo apt-get update
- sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
-
-페도라 / 레드햇 예시:
-
- sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
-
-아치 / 맨자로(Manjaro) 예시:
-
- pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
-
-## 닉스 (NIX)
-
-만약 당신이 [NixOS](https://nixos.org/)를 사용중이거나 NIX를 리눅스 또는 맥에서 사용중이라면 `nix-shell`를 root 디렉토리에서 사용하여 컴파일 환경의 구축할 수 있습니다.
-
-기본적으로 다음 커맨드는 AVR과 ARM 컴파일러를 설치할것입니다. 만약 필요 없다면 `avr` 또는 `arm`을 인수에서 해제할 수 있습니다.
-
- nix-shell --arg arm false
-
-## 맥
-당신이 홈브루([homebrew](https://brew.sh/))를 사용한다면, 다음을 입력하세요.
-
- brew tap osx-cross/avr
- brew tap PX4/homebrew-px4
- brew update
- brew install avr-gcc@7
- brew link --force avr-gcc@7
- brew install dfu-programmer
- brew install dfu-util
- brew install gcc-arm-none-eabi
- brew install avrdude
-
-이 방법을 가장 추천합니다. 만약 홈브루가 없다면 커맨드라인 환경에서 매우 편한 [Homebrew](https://brew.sh/)를 다운받는 것을 추천합니다. 참고로 `avr-gcc@7`를 설치하는 중 `make`과 `make install`는 대개 20분 넘게 걸리고 CPU 사용량이 높아집니다.
-
-## msys2를 사용하는 윈도우 (추천)
-윈도우 비스타 부터 최신버젼까지 가장추천되는 환경은 [msys2](https://www.msys2.org)를 이용하는 것입니다. (윈도우 7과 윈도우 10에서 모두 테스트되었음)
-
-* 이 사이트에 있는 설명을 이용해 msys2를 설치하세요: https://www.msys2.org
-* ``MSYS2 MingGW 64-bit`` 를 여세요
-* QMK폴더로 이동하세요. c드라이브 루트에 있는경우:
- * `$ cd /c/qmk_firmware`
-* `util/qmk_install.sh`을 실행시키고 나오는데요 따라하세요
-
-### 크리에이터 업데이트
-만약 당신의 윈도우 10이 크리에이터 업데이트 버전 또는 더 높은 버전이라면 바로 컴파일과 프로그램 업로드(flashing)를 할 수 있습니다. 크리에이터 업데이트 전 버전이라면 컴파일만 가능합니다. 만약 당신이 잘 모르겠거나 업데이트된 버전이 아니라면 [이 링크](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update)를 확인해 보십시오.
-
-### 리눅스용 윈도우 하위 시스템 사용 (Windows10 Subsystem for Linux)
-크리에이터 업데이트에 추가로 만약 당신이 리눅스용 윈도우 하위 시스템이 필요하다면 이 링크에서 다운받으십시오: [설명](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/)
-
-만약 당신이 이미 리눅스용 윈도우 하위 시스템을 Anniversary업데이트를 통해 받았다면 이 링크에서 16.04LTS로 업데이트 하는것을 추천합니다. 왜냐하면 업데이트 없이는 일부키보드가 14.04LTS에 포함되있는 도구들로 컴파일되지 않을수 있기때문입니다 : [WSL 업데이트](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/)
-
-
-### Git
-만약 당신이 이미 파일을 로컬로 복제하였다면 이 섹션을 무시하십시요.
-
-당신은 파일을 기본적인 git을 사용하여 로컬로 복제해야 합니다. **주의, WSL Git을 사용하면 안됩니다** [Git](https://git-scm.com/download/win) 이 링크에서 git을 다운받고 설치하십시오.
-그리고 [기본설정](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup), 유저네임과 이메일을 설정하는 것은 만약 당신이 온라인에 기여할 계획이라면 매우 중요합니다.
-
-Git의 설치가 완료되었다면 Git Bash커맨드을 열고 당신의 복제 QMK파일이 있는 위치로 이동하고 `git clone --recurse-submodules https://github.com/qmk/qmk_firmware`를 실행 시키십니오. 이 커맨드는 새로운 `qmk_firmware`폴더를 이미 존재하는 것의 하위 폴더설정으로 생성할 것입니다.
-
-### 도구(Toolchain) 설정
-기본적으로 도구설정은 리눅스용 윈도우 하위 시스템이 설치될때 자동으로 설정됩니다. 하지만 수동적으로 하고 싶다면 여기 설명이 있습니다. (If you want to do everything manually, there are no other instructions than the scripts themselves, but you can always open issues and ask for more information. )
-
-1. "Bash On Ubuntu On Windows" 을 실행시키십시오.
-2. 당신이 `qmk_firmware`를 복제한 위치로 가십시오. WSL(리눅스용 윈도우 하위 시스템 사용)에서 `/mnt/`로 시작되는 패스를 찾으십시오. 즉 당신은 다음과 같은 형식으로 입력해야 합니다. `cd /mnt/c/path/to/qmk_firmware` (Note that the paths start with `/mnt/`in the WSL, so you have to write for example `cd /mnt/c/path/to/qmk_firmware`.)
-3. `util/wsl_install.sh`를 실행시키고 화면에 나오는 지시를 따르십니오.
-4. Bash command window를 재실행 시키십시오.
-5. 이로써 당신은 컴파일과 프로그램 업로드(flashing)을 위한 준비가 모두 끝났습니다.
-
-### 중요한 참고사항
-*`util/wsl_install.sh` 명령어를 다시 실행시켜 최신 업데이트를 다운받을 수 있습니다.
-* QMK 폴더의 위치는 윈도우 파일시스템을 기반으로 해야 됩니다. WSL는 외부실행파일를 작동 시킬수 없기 때문이죠.
-* WSL의 Git은 윈도우용 Git과 **호환되지 않습니다**
-* 파일을 수정하는 것은 WSL안과 밖에서 모두 가능합니다 하지만 만약 .makefile 혹은 .sh를 수정한다면 유닉스 라인엔딩(Unix line endings)을 지원하는 에디터를 사용하는지 확인하십이오. 그렇지 않다면 컴파일이 되지않을 수도 있습니다.
-
-## 윈두우 (비스타 혹은 더 최신) (비추천)
-
-이 섹션은 윈도우 비스타 혹은 더 최신버젼을 위한 오래된 설명입니다. [MSYS2](#windows-with-msys2-recommended)를 사용하는 것을 더 추천합니다.
-
-1. WinAVR을 설치하였다면 먼저 삭제하십시오.
-2. [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe)을 설치하십시오. (Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**)
-3. 만약 당신이 Infinity을 기반으로 하는 키보드에 프로그램 업로드를(flashing) 할거라면 dfu-util을 설치해야 합니다, [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware) 를 참고 하십시오.
-4. [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download)를 설치하십시오. 설치중 윈도우화면에서 GUI 추가 설치 옵션을 해재하십니오. **기본 설치 위치를 바꾸지 마십시오.** 이 명령어는 기본위치를 기반으로 하고 있습니다.
-5. 레파지토리를 복제하십시오. [이 링크로 압축파일을 받고 앞축해제 하십시오.](https://github.com/qmk/qmk_firmware/archive/master.zip) 윈도우 탐색기에서 다운받은 파일을 여십시오.
-6. `\util` 폴더를 여십시오.
-7. `1-setup-path-win` .bat파일을 더블클릭해서 실행시키시오. 유저 계정 설정 변경을 허용해야될 수도 있습니다. 스페이스바를 눌러 설치가 성공적으로 완료되었다는 메세지를 닫을 수 있습니다.
-8. `2-setup-environment-win` .bat파일에 우클릭해서 '관리자 권한으로 실행'으로 실행시키십시오. 이 작업을 꽤 오래 걸릴 수도 있습니다. 또한 드라이버 설정을 승인해야 될 수도 있습니다. 하지만 이 모든것이 끝나면 당신의 시스템의 설정이 모두 끝났습니다.
-
-만약 이 작업을 하는데에 문제가 있어 도움받고 싶다면 *Win_Check_Output.txt*을 생성하는 것이 도움이 될것입니다. 이 파일은 `Win_Check.bat`을 `\util`폴더에서 실행시켜 생성할 수 있습니다.
-
-## 도커(Docker)
-만약 위작업들이 당신에게 좀 어렵게 느껴졌다면 도커(Docker)가 당신을 위한 최선일 수도 있습니다(의역). [Docker CE](https://docs.docker.com/install/#supported-platforms)를 설치한뒤 아래 커맨드를 `qmk_firmware` 디랙토리에서 실행시켜 키보드 또는 키맵을 생성시킵니다.
-```bash
-util/docker_build.sh keyboard:keymap
-# 예: util/docker_build.sh ergodox_ez:steno
-```
-이 커맨드는 원하는 키보드 또는 키맵을 컴파일하고 `.hex`또는 `.bin`파일을 프로그램 업로드를(flashing) 위해 QMK디랙토리에 생성할것입니다. 만약 `:keymap`이 생략된다면 `default`이 기본을로 사용됩니다. 참고로 여기서 사용되는 인수는 `make` 커맨드를 사용하여 컴파일할때와 동일합니다.
-
-
-또한 스크립트를 그냥 아무 인수 없이도 사용가능합니다. 그렇게 된다면 프로그램은 하나씩 자동으로 인수입력을 요구 할것입니다. 어쩌면 이방법이 더 쉬울 수도 있습니다.
-```bash
-util/docker_build.sh
-# 인수을 입력받습니다.(아무것도 쓰지 않고 놔두는면 기본값으로 설정됩니다)
-```
-
-다음과 같이 `target`를 사용하여 컴파일과 프로그램 업로드(flashing)을 동시에 할수도 있습니다.
-```bash
-util/docker_build.sh keyboard:keymap:target
-# 예: util/docker_build.sh planck/rev6:default:dfu-util
-```
-만약 당시이 리눅스를 사용한다면 이 커맨드들은 추가 설정 없이 바로 작동할 것입니다. 하지만 위도우 또는 맥 환경에서는 [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/)를 사용하여야 이 커맨드들을 사용가능합니다. Docker Machine설정은 꽤 지루하고 짜증남으로 추천하지 않고 [QMK Toolbox](https://github.com/qmk/qmk_toolbox)를 사용하는 것을 추천합니다.
-
-!> 윈도우에서 독커는 [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)을 활성화 설정하여야 사용가능합니다. 즉, 도커는 Hyper-V를 지원하지 않는 윈도우 7, 윈도우 8, 그리고 **윈도우 10 홈**과 같은 윈도우 버전에서 사용할수 없다는 것을 의미합니다.
-
-## Vagrant
-만약 컴웨어를 사용하는데 문제가 있다면 Vagrant라는 이름의 툴을 사용해 볼 수 있습니다. 이 툴은 가상환경을 세팅해줌과 동시에 컴웨어를 사용하는데에 필요한 모든 설정을 해줄 것입니다. OLKB는 가상환경에 파일을 호스팅하지 않습니다. [Vagrant 가이드](getting_started_vagrant.md)에서 더 많은 정보를 확인할 수 있습니다.
diff --git a/docs/ko-kr/getting_started_getting_help.md b/docs/ko-kr/getting_started_getting_help.md
deleted file mode 100644
index 2ae7917a01..0000000000
--- a/docs/ko-kr/getting_started_getting_help.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# 도움 받기
-
-QMK에서 도움을 받는 방법은 다양합니다.
-
-**주의, 아래 링크들은 영어로 이루어져 있으며 영어 사용이 가능해야 편리하게 이용할 수 있습니다.**
-
-## 디스코드 실시간 채팅
-
-[QMK 디스코드 서버](https://discord.gg/Uq7gcHh)에서 QMK 개발자들과 실시간으로 대화를 나눌수있습니다. 이 디스코드에는 펌웨어, 툴박스, 하드웨어, 그리고 컨피겨레이터(configurator)에 관한 특별화된 채널이 운영되고 있습니다.
-
-## OLKB 서브레딧
-
-공식 QMK 포럼은 [reddit.com](https://reddit.com) 에 [/r/olkb](https://reddit.com/r/olkb)입니다.
-
-## Github 이슈
-
-[issue on GitHub](https://github.com/qmk/qmk_firmware/issues)에서 문제를 보고 할 수 있습니다. 이 링크는 문제가 오랜 시간을 필요로하거나 디버깅를 요구 할때 매우 유용합니다.
diff --git a/docs/ko-kr/getting_started_github.md b/docs/ko-kr/getting_started_github.md
deleted file mode 100644
index 4fd8fda6b8..0000000000
--- a/docs/ko-kr/getting_started_github.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# QMK와 함께 Github를 사용하는 방법
-
-Github can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
-
-Github는 자주 사용하는 사람이 아니면 좀 여려울수도 있습니다. 이 문서는 Github를 사용하는데 필요한 forking, cloning 그리고 submitting a pull request with QMK를 설명할 것입니다.
-
-?> 이 가이드는 당신이 git커맨드를 사용하는데 익숙하고 git환경을 당신의 시스템이 설치하였다는 전제하에 작성되었습니다.
-
-아래와 같이 [QMK Github 페이지](https://github.com/qmk/qmk_firmware)에서 당신은 "Fork"라고 쓰여있는 버튼을 볼 수 있습니다
-
-![Fork on Github](https://i.imgur.com/8Toomz4.jpg)
-
-만약 당신이 어느기관 소속이고, 무슨 계정을 사용할것인지 골라야 한다면 개인 계정을 사용하는 것을 추천합니다.
-"Fork"가 성공적으로 끝났다면 아래 보이는 "Clone or Download"를 눌러야 합니다.
-
-![Download from Github](https://i.imgur.com/N1NYcSz.jpg)
-
-"HTTPS"채크 했는지 확인하고 나와 있는 링크를 복사하세요.
-
-![HTTPS link](https://i.imgur.com/eGO0ohO.jpg)
-
-여기거 부터 커맨드라인을 사용합니다. 커맨드 라인에서 `git clone `을 치고 복사한 링크를 붙여넣은후 실행시키세요.
-
-```
-user@computer:~$ git clone https://github.com/whoeveryouare/qmk_firmware.git
-Cloning into 'qmk_firmware'...
-remote: Counting objects: 46625, done.
-remote: Compressing objects: 100% (2/2), done.
-remote: Total 46625 (delta 0), reused 0 (delta 0), pack-reused 46623
-Receiving objects: 100% (46625/46625), 84.47 MiB | 3.14 MiB/s, done.
-Resolving deltas: 100% (29362/29362), done.
-Checking out files: 100% (2799/2799), done.
-```
-
-당신은 이제 모든파일이 로컬시스템이 추가 되었습니다 그리고 이제 키맵을 추가하거나 컴파일, 프로그램 업로드(flashing)를 할 수 있습니다.
-모든 추가 변경을 만든 뒤에는 add, commit, and push를 사용하여 당신의 Folk에 추가 할 수 있습니다.
-
-```
-user@computer:~$ git add .
-user@computer:~$ git commit -m "adding my keymap"
-[master cccb1608] adding my keymap
- 1 file changed, 1 insertion(+)
- create mode 100644 keyboards/planck/keymaps/mine/keymap.c
-user@computer:~$ git push
-Counting objects: 1, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (1/1), done.
-Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
-Total 1 (delta 1), reused 0 (delta 0)
-remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
-To https://github.com/whoeveryouare/qmk_firmware.git
- + 20043e64...7da94ac5 master -> master
-```
-
-이로써 당신이 만든 모든 변경들이 당신의 Github의 Folk에 추가 되었습니다. (`https://github.com/<whoeveryouare>/qmk_firmware`)에서 확인하고 "New Pull Request"를 눌러 변경사항을 QMK에 업로드할수 있습니다.
-
-![New Pull Request](https://i.imgur.com/DxMHpJ8.jpg)
-
-이 버튼을 누르면 당신이 만든 모든 변경사항들이 보여질 것입니다. 만약 모든 변경사항이 맘에 든다면 "Create Pull Request"를 눌러 요청을 확정할수 있습니다.
-
-**요청사항이 확정된다고 변경사항이 바로 적용되는 것은 아닙니다.**
-
-![Create Pull Request](https://i.imgur.com/Ojydlaj.jpg)
-
-요청을 한뒤 QMK개발자들은 댓글로 무엇이 변경되었는지 등을 물어 볼수있지만 끝에는 매인 디랙토리로 업로드 될것입니다.
-
-**"Thanks for contributing to QMK :)"**
diff --git a/docs/mod_tap.md b/docs/mod_tap.md
index dc11b0dea9..ca3a2752c7 100644
--- a/docs/mod_tap.md
+++ b/docs/mod_tap.md
@@ -58,7 +58,7 @@ Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](key
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
-To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
+To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
## Intercepting Mod-Taps
diff --git a/docs/newbs_building_firmware.md b/docs/newbs_building_firmware.md
index ed94a1460d..c4ce9fd9f3 100644
--- a/docs/newbs_building_firmware.md
+++ b/docs/newbs_building_firmware.md
@@ -1,6 +1,20 @@
# Building Your First Firmware
-Now that you have setup your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
+Now that you have set up your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
+
+## Configure Your Build Environment Defaults (Optional)
+
+You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
+
+Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
+
+ qmk config user.keyboard=clueboard/66/rev4
+
+?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev4`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
+
+You can also set your default keymap name. Most people use their GitHub username like the keymap name from the previous steps:
+
+ qmk config user.keymap=<github_username>
## Create a New Keymap
@@ -45,7 +59,7 @@ When your changes to the keymap are complete you will need to build the firmware
qmk compile
-If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
+If you did not configure defaults for your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
qmk compile -kb <keyboard> -km <keymap>
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index c17ff4c956..6e90af9d10 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -96,7 +96,7 @@ This has been made pretty simple compared to what it used to be. When you are re
qmk flash
-If you have not configured your keyboard/keymap name in the CLI, or you have multiple keyboards, you can specify the keyboard and keymap:
+If you did not configure your keyboard/keymap name in the CLI according to the [Configure your build environment](newbs_getting_started.md) section, or you have multiple keyboards, you can specify the keyboard and keymap:
qmk flash -kb <my_keyboard> -km <my_keymap>
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index 5dbaa56169..d6c080173c 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -182,22 +182,6 @@ Checking file size of clueboard_66_rev3_default.hex
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
-## 5. Configure Your Build Environment (Optional)
-
-You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
-
-Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
-
- qmk config user.keyboard=clueboard/66/rev4
-
-You can also set your default keymap name. Most people use their GitHub username here, and we recommend that you do too.
-
- qmk config user.keymap=<github_username>
-
-The keyboard can now be compiled without arguments using the following command after creating your keymap in the next section:
-
- qmk compile
-
# Creating Your Keymap
You are now ready to create your own personal keymap! Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.
diff --git a/docs/newbs_learn_more_resources.md b/docs/newbs_learn_more_resources.md
index 1afdc206bd..a66ee4ab26 100644
--- a/docs/newbs_learn_more_resources.md
+++ b/docs/newbs_learn_more_resources.md
@@ -20,6 +20,7 @@ Not sure which text editor to use?
Editors specifically made for code:
* [Sublime Text](https://www.sublimetext.com/)
* [VS Code](https://code.visualstudio.com/)
+* [Atom](https://atom.io/)
### Git resources
diff --git a/docs/other_eclipse.md b/docs/other_eclipse.md
index 91557d07d7..de8cdf9b8c 100644
--- a/docs/other_eclipse.md
+++ b/docs/other_eclipse.md
@@ -11,7 +11,7 @@ Using an IDE such as Eclipse provides many advantages over a plain text editor,
* static code analysis
* many other tools such as debugging, code formatting, showing call hierarchies etc.
-The purpose of the is page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
+The purpose of this page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
@@ -74,7 +74,7 @@ Once both plugins are installed, restart Eclipse as prompted.
## Build Your Keyboard
-We will now change the default make target of the the project from `all` to the
+We will now change the default make target of the project from `all` to the
specific keyboard and keymap combination we are working on,
e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning
and building the project will complete quickly, instead of taking a long time or
diff --git a/docs/other_vscode.md b/docs/other_vscode.md
index 6af0a6f7b4..aac46c1829 100644
--- a/docs/other_vscode.md
+++ b/docs/other_vscode.md
@@ -15,7 +15,7 @@ The purpose of this page is to document how to set up VS Code for developing QMK
This guide covers how to configure everything needed on Windows and Ubuntu 18.04
# Set up VS Code
-Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the the [Newbs Getting Started Guide](newbs_getting_started.md) to get things set up, if you haven't already.
+Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the [Newbs Getting Started Guide](newbs_getting_started.md) to get things set up, if you haven't already.
## Windows
diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md
index 25f3d7662e..e4564746b4 100644
--- a/docs/pr_checklist.md
+++ b/docs/pr_checklist.md
@@ -8,7 +8,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr
- PR should be submitted using a non-`master` branch on the source repository
- this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch
- - if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](https://docs.qmk.fm/#/newbs_git_using_your_master_branch) page after merging -- (end of this document will contain the contents of the message)
+ - if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](newbs_git_using_your_master_branch.md) page after merging -- (end of this document will contain the contents of the message)
- newly-added directories and filenames must be lowercase
- this rule may be relaxed if upstream sources originally had uppercase characters (e.g. LUFA, ChibiOS, or imported files from other repositories etc.)
- if there is valid justification (i.e. consistency with existing core files etc.) this can be relaxed
@@ -76,9 +76,9 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `<keyboard>.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
- commented-out functions removed too
- - `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](https://docs.qmk.fm/#/custom_quantum_functions?id=keyboard_pre_init_-function-documentation)
- - prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](https://docs.qmk.fm/#/custom_matrix?id=lite)
- - prefer LED indicator [Configuration Options](https://docs.qmk.fm/#/feature_led_indicators?id=configuration-options) to custom `led_update_*()` implementations where possible
+ - `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](custom_quantum_functions.md?id=keyboard_pre_init_-function-documentation)
+ - prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](custom_matrix.md?id=lite)
+ - prefer LED indicator [Configuration Options](feature_led_indicators.md?id=configuration-options) to custom `led_update_*()` implementations where possible
- `<keyboard>.h`
- `#include "quantum.h"` appears at the top
- `LAYOUT` macros should use standard definitions if applicable
@@ -110,15 +110,17 @@ Also, specific to ChibiOS:
- a lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
- example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use `BOARD = ST_NUCLEO64_L073RZ` in rules.mk
- QMK is migrating to not having custom board definitions if at all possible, due to the ongoing maintenance burden when upgrading ChibiOS
+- New board definitions must not be embedded in a keyboard PR
+ - See [Core PRs](#core-pr) below for the procedure for adding a new board to QMK
- if a board definition is unavoidable, `board.c` must have a standard `__early_init()` (as per normal ChibiOS board defs) and an empty `boardInit()`:
- - see Arm/ChibiOS [early initialization](https://docs.qmk.fm/#/platformdev_chibios_earlyinit?id=board-init)
+ - see Arm/ChibiOS [early initialization](platformdev_chibios_earlyinit.md?id=board-init)
- `__early_init()` should be replaced by either `early_hardware_init_pre()` or `early_hardware_init_post()` as appropriate
- `boardInit()` should be migrated to `board_init()`
-## Core PRs
+## Core PRs :id=core-pr
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
-- any support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
+- any new boards adding support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
- for new MCUs, a new "child" keyboard should be added that targets your newly-added MCU, so that builds can be verified
- for new hardware support such as display panels, core-side matrix implementations, or other peripherals, an associated keymap should be provided
- if an existing keymap exists that can leverage this functionality this may not be required (e.g. a new RGB driver chip, supported by the `rgb` keymap) -- consult with the QMK Collaborators on Discord to determine if there is sufficient overlap already
diff --git a/docs/pt-br/README.md b/docs/pt-br/README.md
deleted file mode 100644
index bf8ec974eb..0000000000
--- a/docs/pt-br/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Quantum Mechanical Keyboard Firmware
-
-[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## O que é o firmware QMK?
-QMK (*Quantum Mechanical Keyboard*) é uma comunidade de código aberto que mantém o QMK Firmware, o QMK Toolbox, qmk.fm e suas documentações. O QMK Firmware é um software embarcado ("firmware") de teclado baseado no [tmk\_keyboard](https://github.com/tmk/tmk_keyboard) com alguns recursos úteis para os controladores Atmel AVR e, mais especificamente, na [linha de produtos OLKB](https://olkb.com), o teclado [ErgoDox EZ](https://www.ergodox-ez.com) e a [linha de produtos Clueboard](https://clueboard.co/). Também foi portado para chips ARM usando o ChibiOS. Você pode usá-lo no seu próprio teclado com fio ou personalizado.
-
-## Como obter e usar o QMK
-
-Se você planeja contribuir com um _keymap_ ("mapa de teclas"), teclado ou recursos para o QMK, o jeito mais fácil é [percorrer o repositório através do GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box) e clonar seu repositório localmente para fazer suas alterações, dê um _push_ nelas e abra uma [_Pull request_](https://github.com/qmk/qmk_firmware/pulls) no seu fork.
-
-Caso contrário, você pode cloná-lo diretamente com `git clone https://github.com/qmk/qmk_firmware`. Não faça o download dos arquivos zip ou tar; é necessário um repositório git para baixar os submódulos para compilar.
-
-## Como compilar
-
-Antes de compilar, você precisará [instalar um ambiente específico](getting_started_build_tools.md) para o desenvolvimento em plataforma AVR e/ou ARM; vez que isto for feito, você usará o comando `make` para criar um teclado e um mapa de teclas com a seguinte notação:
-
- make planck/rev4:default
-
-Isso compilaria a revisão `rev4` do teclado ` planck` com o mapa de teclas `default`. Nem todos os teclados têm revisões (também chamadas de _subprojects_ ou _folders_); nesse caso, a revisão pode ser omitida:
-
- make preonic:default
-
-## Como personalizar
-
-O QMK tem muitos [recursos](features.md) para explorar e uma boa quantidade de [documentação de referência](https://docs.qmk.fm) para explorar. A maioria dos recursos é aproveitada modificando seu [keymap](keymap.md) e alterando os [keycodes](keycodes.md).
diff --git a/docs/pt-br/_summary.md b/docs/pt-br/_summary.md
deleted file mode 100644
index e0a1b45b33..0000000000
--- a/docs/pt-br/_summary.md
+++ /dev/null
@@ -1,122 +0,0 @@
-* [Complete Newbs Guide](pt-br/newbs.md)
- * [Getting Started](pt-br/newbs_getting_started.md)
- * [Building Your First Firmware](pt-br/newbs_building_firmware.md)
- * [Flashing Firmware](pt-br/newbs_flashing.md)
- * [Testing and Debugging](pt-br/newbs_testing_debugging.md)
- * [Git Best Practices](pt-br/newbs_best_practices.md)
- * [Learning Resources](pt-br/newbs_learn_more_resources.md)
-
-* [QMK Basics](pt-br/README.md)
- * [QMK Introduction](pt-br/getting_started_introduction.md)
- * [QMK CLI](pt-br/cli.md)
- * [QMK CLI Config](pt-br/cli_configuration.md)
- * [Contributing to QMK](pt-br/contributing.md)
- * [How to Use GitHub](pt-br/getting_started_github.md)
- * [Getting Help](pt-br/getting_started_getting_help.md)
-
-* [Breaking Changes](pt-br/breaking_changes.md)
- * [2019 Aug 30](pt-br/ChangeLog/20190830.md)
-
-* [FAQ](faq.md)
- * [General FAQ](pt-br/faq_general.md)
- * [Build/Compile QMK](pt-br/faq_build.md)
- * [Debugging/Troubleshooting QMK](pt-br/faq_debug.md)
- * [Keymap](pt-br/faq_keymap.md)
- * [Driver Installation with Zadig](pt-br/driver_installation_zadig.md)
-
-* Detailed Guides
- * [Install Build Tools](pt-br/getting_started_build_tools.md)
- * [Vagrant Guide](pt-br/getting_started_vagrant.md)
- * [Build/Compile Instructions](pt-br/getting_started_make_guide.md)
- * [Flashing Firmware](pt-br/flashing.md)
- * [Customizing Functionality](pt-br/custom_quantum_functions.md)
- * [Keymap Overview](pt-br/keymap.md)
-
-* [Hardware](hardware.md)
- * [AVR Processors](pt-br/hardware_avr.md)
- * [Drivers](pt-br/hardware_drivers.md)
-
-* Reference
- * [Keyboard Guidelines](pt-br/hardware_keyboard_guidelines.md)
- * [Config Options](pt-br/config_options.md)
- * [Keycodes](pt-br/keycodes.md)
- * [Coding Conventions - C](pt-br/coding_conventions_c.md)
- * [Coding Conventions - Python](pt-br/coding_conventions_python.md)
- * [Documentation Best Practices](pt-br/documentation_best_practices.md)
- * [Documentation Templates](pt-br/documentation_templates.md)
- * [Glossary](pt-br/reference_glossary.md)
- * [Unit Testing](pt-br/unit_testing.md)
- * [Useful Functions](pt-br/ref_functions.md)
- * [Configurator Support](pt-br/reference_configurator_support.md)
- * [info.json Format](pt-br/reference_info_json.md)
- * [Python CLI Development](pt-br/cli_development.md)
-
-* [Features](pt-br/features.md)
- * [Basic Keycodes](pt-br/keycodes_basic.md)
- * [US ANSI Shifted Keys](pt-br/keycodes_us_ansi_shifted.md)
- * [Quantum Keycodes](pt-br/quantum_keycodes.md)
- * [Advanced Keycodes](pt-br/feature_advanced_keycodes.md)
- * [Audio](pt-br/feature_audio.md)
- * [Auto Shift](pt-br/feature_auto_shift.md)
- * [Backlight](pt-br/feature_backlight.md)
- * [Bluetooth](pt-br/feature_bluetooth.md)
- * [Bootmagic](pt-br/feature_bootmagic.md)
- * [Combos](pt-br/feature_combo.md)
- * [Command](pt-br/feature_command.md)
- * [Debounce API](pt-br/feature_debounce_type.md)
- * [DIP Switch](pt-br/feature_dip_switch.md)
- * [Dynamic Macros](pt-br/feature_dynamic_macros.md)
- * [Encoders](pt-br/feature_encoders.md)
- * [Grave Escape](pt-br/feature_grave_esc.md)
- * [Haptic Feedback](pt-br/feature_haptic_feedback.md)
- * [HD44780 LCD Controller](pt-br/feature_hd44780.md)
- * [Key Lock](pt-br/feature_key_lock.md)
- * [Layouts](pt-br/feature_layouts.md)
- * [Leader Key](pt-br/feature_leader_key.md)
- * [LED Matrix](pt-br/feature_led_matrix.md)
- * [Macros](pt-br/feature_macros.md)
- * [Mouse Keys](pt-br/feature_mouse_keys.md)
- * [OLED Driver](pt-br/feature_oled_driver.md)
- * [One Shot Keys](pt-br/one_shot_keys.md)
- * [Pointing Device](pt-br/feature_pointing_device.md)
- * [PS/2 Mouse](pt-br/feature_ps2_mouse.md)
- * [RGB Lighting](pt-br/feature_rgblight.md)
- * [RGB Matrix](pt-br/feature_rgb_matrix.md)
- * [Space Cadet](pt-br/feature_space_cadet.md)
- * [Split Keyboard](pt-br/feature_split_keyboard.md)
- * [Stenography](pt-br/feature_stenography.md)
- * [Swap Hands](pt-br/feature_swap_hands.md)
- * [Tap Dance](pt-br/feature_tap_dance.md)
- * [Terminal](pt-br/feature_terminal.md)
- * [Thermal Printer](pt-br/feature_thermal_printer.md)
- * [Unicode](pt-br/feature_unicode.md)
- * [Userspace](pt-br/feature_userspace.md)
- * [Velocikey](pt-br/feature_velocikey.md)
-
-* For Makers and Modders
- * [Hand Wiring Guide](pt-br/hand_wire.md)
- * [ISP Flashing Guide](pt-br/isp_flashing_guide.md)
- * [ARM Debugging Guide](pt-br/arm_debugging.md)
- * [I2C Driver](pt-br/i2c_driver.md)
- * [SPI Driver](pt-br/spi_driver.md)
- * [GPIO Controls](pt-br/internals_gpio_control.md)
- * [Proton C Conversion](pt-br/proton_c_conversion.md)
-
-* For a Deeper Understanding
- * [How Keyboards Work](pt-br/how_keyboards_work.md)
- * [Understanding QMK](pt-br/understanding_qmk.md)
-
-* Other Topics
- * [Using Eclipse with QMK](pt-br/other_eclipse.md)
- * [Using VSCode with QMK](pt-br/other_vscode.md)
- * [Support](pt-br/getting_started_getting_help.md)
- * [How to add translations](pt-br/translating.md)
-
-* QMK Internals (In Progress)
- * [Defines](pt-br/internals_defines.md)
- * [Input Callback Reg](pt-br/internals_input_callback_reg.md)
- * [Midi Device](pt-br/internals_midi_device.md)
- * [Midi Device Setup Process](pt-br/internals_midi_device_setup_process.md)
- * [Midi Util](pt-br/internals_midi_util.md)
- * [Send Functions](pt-br/internals_send_functions.md)
- * [Sysex Tools](pt-br/internals_sysex_tools.md)
diff --git a/docs/ref_functions.md b/docs/ref_functions.md
index c6185c8703..209dcef722 100644
--- a/docs/ref_functions.md
+++ b/docs/ref_functions.md
@@ -85,7 +85,7 @@ To configure the default layer sounds, you would want to define this in your `co
?> There are a large number of predefined songs in [quantum/audio/song_list.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/song_list.h) that you can use.
-## Reseting the keyboard
+## Resetting the keyboard
There is the `RESET` quantum keycode that you can use. But if you want to reset the board as part of a macro, rather than hitting a key separately, you can do that.
diff --git a/docs/ru-ru/README.md b/docs/ru-ru/README.md
deleted file mode 100644
index 7218781540..0000000000
--- a/docs/ru-ru/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Quantum Mechanical Keyboard Firmware
-
-[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![Discord](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![GitHub contributors](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![GitHub forks](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
-
-## Что такое QMK Firmware?
-
-QMK (*Quantum Mechanical Keyboard*) — это сообщество, работающее над ПО с открытым исходным кодом, которое разрабатывает QMK Firmware, QMK Toolbox, qmk.fm и эту документацию. QMK Firmware — это прошивка для клавиатур, основанная на [tmk\_keyboard](https://github.com/tmk/tmk_keyboard) с множеством полезных функций для микроконтроллеров Atmel AVR, а именно, для продуктов компаний [OLKB](https://olkb.com), [ErgoDox EZ](https://www.ergodox-ez.com) и [Clueboard](https://clueboard.co/). Она также была портирована на чипы ARM при помощи ChibiOS. Вы можете использовать ее для клавиатуры, собранной вручную или имеющей нестандартную печатную плату.
-
-## Как скачать
-
-Если вы собираетесь добавить раскладку, клавиатуру или новые функции в QMK, то самый простой путь реализации — это [сделать форк репозитория на GitHub](https://github.com/qmk/qmk_firmware#fork-destination-box), клонировать ваш репозиторий локально для дальнейшего внесения изменений, сделать пуш изменений, а затем открыть [пулреквест](https://github.com/qmk/qmk_firmware/pulls) из вашего форка.
-
-Также вы можете либо скачать репозиторий ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), либо клонировать его через git (`git@github.com:qmk/qmk_firmware.git`) или https (`https://github.com/qmk/qmk_firmware.git`).
-
-## Как скомпилировать
-
-Перед компиляцией вам необходимо [настроить окружение](ru-ru/getting_started_build_tools.md) разработчика для AVR или/и ARM. После этого используйте команду `make` со следующим синтаксисом, чтобы собрать клавиатуру и раскладку:
-
- make planck/rev4:default
-
-Данная команда соберет ревизию `rev4` клавиатуры `planck` с раскладкой `default`. Не все клавиатуры имеют ревизии (они также называются subprojects или folders), в этом случае она может быть опущена:
-
- make preonic:default
-
-## Как настроить
-
-QMK обладает множеством [функций](ru-ru/features.md) для исследования, и [справочная документация](https://docs.qmk.fm) может стать хорошей отправной точкой для знакомства с ними. Большинством функций можно воспользоваться модифицируя [раскладку](ru-ru/keymap.md) и изменяя [коды клавиш](ru-ru/keycodes.md).
diff --git a/docs/ru-ru/_summary.md b/docs/ru-ru/_summary.md
deleted file mode 100644
index 09273172b6..0000000000
--- a/docs/ru-ru/_summary.md
+++ /dev/null
@@ -1,124 +0,0 @@
-* [Complete Newbs Guide](ru-ru/newbs.md)
- * [Getting Started](ru-ru/newbs_getting_started.md)
- * [Building Your First Firmware](ru-ru/newbs_building_firmware.md)
- * [Flashing Firmware](ru-ru/newbs_flashing.md)
- * [Testing and Debugging](ru-ru/newbs_testing_debugging.md)
- * [Git Best Practices](ru-ru/newbs_best_practices.md)
- * [Learning Resources](ru-ru/newbs_learn_more_resources.md)
-
-* [QMK Basics](ru-ru/README.md)
- * [QMK Introduction](ru-ru/getting_started_introduction.md)
- * [QMK CLI](ru-ru/cli.md)
- * [QMK CLI Config](ru-ru/cli_configuration.md)
- * [Contributing to QMK](ru-ru/contributing.md)
- * [How to Use GitHub](ru-ru/getting_started_github.md)
- * [Getting Help](ru-ru/getting_started_getting_help.md)
-
-* [Breaking Changes](ru-ru/breaking_changes.md)
- * [2019 Aug 30](ru-ru/ChangeLog/20190830.md)
-
-* [FAQ](ru-ru/faq.md)
- * [General FAQ](ru-ru/faq_general.md)
- * [Build/Compile QMK](ru-ru/faq_build.md)
- * [Debugging/Troubleshooting QMK](ru-ru/faq_debug.md)
- * [Keymap](ru-ru/faq_keymap.md)
- * [Driver Installation with Zadig](ru-ru/driver_installation_zadig.md)
-
-* Detailed Guides
- * [Install Build Tools](ru-ru/getting_started_build_tools.md)
- * [Vagrant Guide](ru-ru/getting_started_vagrant.md)
- * [Build/Compile Instructions](ru-ru/getting_started_make_guide.md)
- * [Flashing Firmware](ru-ru/flashing.md)
- * [Customizing Functionality](ru-ru/custom_quantum_functions.md)
- * [Keymap Overview](ru-ru/keymap.md)
-
-* [Hardware](ru-ru/hardware.md)
- * [Compatible Microcontrollers](ru-ru/compatible_microcontrollers.md)
- * [AVR Processors](ru-ru/hardware_avr.md)
- * [Drivers](ru-ru/hardware_drivers.md)
-
-* Reference
- * [Keyboard Guidelines](ru-ru/hardware_keyboard_guidelines.md)
- * [Config Options](ru-ru/config_options.md)
- * [Keycodes](ru-ru/keycodes.md)
- * [Coding Conventions - C](ru-ru/coding_conventions_c.md)
- * [Coding Conventions - Python](ru-ru/coding_conventions_python.md)
- * [Documentation Best Practices](ru-ru/documentation_best_practices.md)
- * [Documentation Templates](ru-ru/documentation_templates.md)
- * [Glossary](ru-ru/reference_glossary.md)
- * [Unit Testing](ru-ru/unit_testing.md)
- * [Useful Functions](ru-ru/ref_functions.md)
- * [Configurator Support](ru-ru/reference_configurator_support.md)
- * [info.json Format](ru-ru/reference_info_json.md)
- * [Python CLI Development](ru-ru/cli_development.md)
-
-* [Features](ru-ru/features.md)
- * [Basic Keycodes](ru-ru/keycodes_basic.md)
- * [US ANSI Shifted Keys](ru-ru/keycodes_us_ansi_shifted.md)
- * [Quantum Keycodes](ru-ru/quantum_keycodes.md)
- * [Advanced Keycodes](ru-ru/feature_advanced_keycodes.md)
- * [Audio](ru-ru/feature_audio.md)
- * [Auto Shift](ru-ru/feature_auto_shift.md)
- * [Backlight](ru-ru/feature_backlight.md)
- * [Bluetooth](ru-ru/feature_bluetooth.md)
- * [Bootmagic](ru-ru/feature_bootmagic.md)
- * [Combos](ru-ru/feature_combo.md)
- * [Command](ru-ru/feature_command.md)
- * [Debounce API](ru-ru/feature_debounce_type.md)
- * [DIP Switch](ru-ru/feature_dip_switch.md)
- * [Dynamic Macros](ru-ru/feature_dynamic_macros.md)
- * [Encoders](ru-ru/feature_encoders.md)
- * [Grave Escape](ru-ru/feature_grave_esc.md)
- * [Haptic Feedback](ru-ru/feature_haptic_feedback.md)
- * [HD44780 LCD Controller](ru-ru/feature_hd44780.md)
- * [Key Lock](ru-ru/feature_key_lock.md)
- * [Layouts](ru-ru/feature_layouts.md)
- * [Leader Key](ru-ru/feature_leader_key.md)
- * [LED Matrix](ru-ru/feature_led_matrix.md)
- * [Macros](ru-ru/feature_macros.md)
- * [Mouse Keys](ru-ru/feature_mouse_keys.md)
- * [OLED Driver](ru-ru/feature_oled_driver.md)
- * [One Shot Keys](ru-ru/one_shot_keys.md)
- * [Pointing Device](ru-ru/feature_pointing_device.md)
- * [PS/2 Mouse](ru-ru/feature_ps2_mouse.md)
- * [RGB Lighting](ru-ru/feature_rgblight.md)
- * [RGB Matrix](ru-ru/feature_rgb_matrix.md)
- * [Space Cadet](ru-ru/feature_space_cadet.md)
- * [Split Keyboard](ru-ru/feature_split_keyboard.md)
- * [Stenography](ru-ru/feature_stenography.md)
- * [Swap Hands](ru-ru/feature_swap_hands.md)
- * [Tap Dance](ru-ru/feature_tap_dance.md)
- * [Terminal](ru-ru/feature_terminal.md)
- * [Thermal Printer](ru-ru/feature_thermal_printer.md)
- * [Unicode](ru-ru/feature_unicode.md)
- * [Userspace](ru-ru/feature_userspace.md)
- * [Velocikey](ru-ru/feature_velocikey.md)
-
-* For Makers and Modders
- * [Hand Wiring Guide](ru-ru/hand_wire.md)
- * [ISP Flashing Guide](ru-ru/isp_flashing_guide.md)
- * [ARM Debugging Guide](ru-ru/arm_debugging.md)
- * [I2C Driver](ru-ru/i2c_driver.md)
- * [SPI Driver](ru-ru/spi_driver.md)
- * [WS2812 Driver](ru-ru/ws2812_driver.md)
- * [GPIO Controls](ru-ru/internals_gpio_control.md)
- * [Proton C Conversion](ru-ru/proton_c_conversion.md)
-
-* For a Deeper Understanding
- * [How Keyboards Work](ru-ru/how_keyboards_work.md)
- * [Understanding QMK](ru-ru/understanding_qmk.md)
-
-* Other Topics
- * [Using Eclipse with QMK](ru-ru/other_eclipse.md)
- * [Using VSCode with QMK](ru-ru/other_vscode.md)
- * [Support](ru-ru/getting_started_getting_help.md)
- * [Translating the QMK Docs](ru-ru/translating.md)
-
-* QMK Internals (In Progress)
- * [Defines](ru-ru/internals_defines.md)
- * [Input Callback Reg](ru-ru/internals_input_callback_reg.md)
- * [Midi Device](ru-ru/internals_midi_device.md)
- * [Midi Device Setup Process](ru-ru/internals_midi_device_setup_process.md)
- * [Midi Util](ru-ru/internals_midi_util.md)
- * [Send Functions](ru-ru/internals_send_functions.md)
- * [Sysex Tools](ru-ru/internals_sysex_tools.md)
diff --git a/docs/ru-ru/getting_started_build_tools.md b/docs/ru-ru/getting_started_build_tools.md
deleted file mode 100644
index 322f9a9e59..0000000000
--- a/docs/ru-ru/getting_started_build_tools.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# Установка инструментов для сборки
-
-Данная страница описывает процесс установки окружения для сборки QMK. Эти инструкции относятся к процессорам AVR (таким как atmega32u4).
-
-<!-- FIXME: Нужно написать и добавить куда-нибудь инструкции для ARM. -->
-
-**Примечание:** Если вы здесь впервые, ознакомьтесь с [Руководством для полных новичков](ru-ru/newbs.md).
-
-Прежде, чем продолжить, убедитесь, что у вас обновлены подмодули (сторонние библиотеки), выполнив `make git-submodule`.
-
-## Linux
-
-Чтобы всегда быть уверенными, что у вас установлены последние версии ПО, можно просто выполнить команду `sudo util/qmk_install.sh`. Она должна установить все необходимые зависимости. **Это выполнит `apt-get upgrade`.**
-
-Вы также можете устанавливать все вручную, но в данной документации список требований может не всегда быть актуальным.
-
-Текущие требования представлены ниже, но не все они могут быть необходимы, так как зависят от того, что вы делаете. Также стоит отметить, что в некоторых системах не все зависимости доступны в виде пакетов, или они могут называться по-другому.
-
-```
-build-essential
-gcc
-unzip
-wget
-zip
-gcc-avr
-binutils-avr
-avr-libc
-dfu-programmer
-dfu-util
-gcc-arm-none-eabi
-binutils-arm-none-eabi
-libnewlib-arm-none-eabi
-git
-```
-
-Установите все зависимости при помощи вашего любимого менеджера пакетов.
-
-Пример для Debian / Ubuntu:
-
- sudo apt-get update
- sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
-
-Пример для Fedora / Red Hat:
-
- sudo dnf install gcc unzip wget zip dfu-util dfu-programmer avr-gcc avr-libc binutils-avr32-linux-gnu arm-none-eabi-gcc-cs arm-none-eabi-binutils-cs arm-none-eabi-newlib
-
-Пример для Arch / Manjaro:
-
- pacman -S base-devel gcc unzip wget zip avr-gcc avr-binutils avr-libc dfu-util arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib git dfu-programmer dfu-util
-
-## Nix
-
-Если вы используете [NixOS](https://nixos.org/), или у вас установлена Nix в Linux или macOS, выполните `nix-shell` из корня репозитория, чтобы настроить окружение для сборки.
-
-По умолчанию, это скачает компиляторы для AVR и ARM. Если вам не нужны они оба, отключите `avr` или `arm` с помощью аргумента, например:
-
- nix-shell --arg arm false
-
-## macOS
-
-Если вы пользуетесь [Homebrew](https://brew.sh/), вы можете использовать следующие команды:
-
- brew tap osx-cross/avr
- brew tap PX4/homebrew-px4
- brew update
- brew install avr-gcc@8
- brew link --force avr-gcc@8
- brew install dfu-programmer
- brew install dfu-util
- brew install gcc-arm-none-eabi
- brew install avrdude
-
-Данный метод является рекомендуемым. Если у вас нет Homebrew, [установите его!](https://brew.sh/) Он очень сильно пригодится тем, кто работает с командной строкой. Стоит отметить, что часть с `make` и `make install` во время установки `avr-gcc@8` из Homebrew может занимать более 20 минут и сильно нагружать CPU.
-
-## Windows с MSYS2 (рекомендуется)
-
-Наилучшим окружение для Windows Vista и всех последующих версий (тестировалось с 7 и 10) является [MSYS2](https://www.msys2.org).
-
-* Для установки MSYS2, скачайте его и следуйте дальнейшим указаниям отсюда: https://www.msys2.org
-* Откройте ``MSYS2 MingGW 64-bit`` ярлык
-* Перейдите в свой репозиторий QMK. Например, если он находится в корне вашего диска C:
- * `$ cd /c/qmk_firmware`
-* Запустите `util/qmk_install.sh` и следуйте подсказкам
-
-## Windows 10 (устарело)
-
-Это устаревшие инструкции для Windows 10. Мы рекомендуем использовать [MSYS2, как сказано выше](#windows-с-msys2-рекомендуется).
-
-### Обновление для дизайнеров (Creators Update)
-
-Если у вас Windows 10 с Обновлением для дизайнеров или новее, вы можете собрать прошивку и прошить ей напрямую. До Обновления для дизайнеров было возможно только собрать прошивку. Если у вас его еще нет, или вы не уверены, следуйте [этим инструкциям](https://support.microsoft.com/en-us/instantanswers/d4efb316-79f0-1aa1-9ef3-dcada78f3fa0/get-the-windows-10-creators-update).
-
-### Подсистема Windows для Linux (Windows Subsystem for Linux, WSL)
-
-В дополнение к Обновлению для дизайнеров вам необходима подсистема Windows для Linux, поэтому установите ее, следуя [иснтрукциям здесь](https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). Если у вас уже есть подсистема Windows для Linux из Юбилейного обновления (Anniversary update), рекомендуется ее [обновить](https://betanews.com/2017/04/14/upgrade-windows-subsystem-for-linux/) до 16.04LTS, потому что некоторые клавиатуры не компилируются с набором инструментов из 14.04LTS. Стоит отметить, что вы четко должны понимать, что вы делаете, если выбрали метод `sudo do-release-upgrade`.
-
-### Git
-
-Если вы уже клонировали репозиторий в файловую систему Windows, вы можете пропустить данную секцию.
-
-Вам нужно клонировать репозиторий в файловую систему Windows при помощи обычного Git для Windows, а **не** WSL Git. Так что, если вы ещё не установили Git, [скачайте](https://git-scm.com/download/win) и установите его. Затем [настройте его](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup). Важно указать свой адрес электронной почты и имя пользователя, особенно если вы планируете вносить свой вклад в проект.
-
-Как только Git будет установлен, откройте командную строку Git Bash и поменяйте директорию на ту, в которую хотите клонировать QMK; обратите внимание, что вы должны использовать косую черту, и что доступ к вашему диску C осуществляется примерно так: `/c/path/to/where/you/want/to/go`. Затем выполните `git clone --recurse-submodules https://github.com/qmk/qmk_firmware`, это создаст новую папку `qmk_firmware` в текущей директории.
-
-### Установка инструментов (Toolchain)
-
-Установка инструментов (Toolchain) осуществляется через подсистему Windows для Linux, и процесс полностью автоматизирован. Если вы хотите выполнить установку вручную, то не существует никакой другой инструкции помимо самого скрипта. Однако, вы всегда можете открыть ишью и запросить дополнительную информацию.
-
-1. Откройте "Bash On Ubuntu On Windows" в меню Пуск.
-2. Перейдите в папку, в которую клонирована `qmk_firmware`. Обратите внимание, что пути начинаются с `/mnt/` в WSL, так что вы должны написать, например, `cd /mnt/c/path/to/qmk_firmware`.
-3. Запустите `util/wsl_install.sh` и следуйте инструкциям на экране.
-4. Закройте окно командной строки Bash, и откройте его снова.
-5. Все готово, чтобы скомпилировать прошивку и прошить ей!
-
-### Несколько важных вещей, которые надо запомнить
-
-* Вы можете запустить `util/wsl_install.sh` еще раз, чтобы установить все последние обновления.
-* Ваш репозиторий QMK должен находиться в файловой системе Windows, поскольку WSL не может запускать выполняемые файлы извне.
-* WSL Git **не** совместим с Windows Git, поэтому используйте Windows Git Bash или Windows Git GUI для всех операций с Git.
-* Вы можете изменять файлы как внутри WSL, так и просто через Windows. Но обратите внимание, что если вы изменяете makefiles или сценарии командной строки, вы должны убедиться, что используете текстовый редактор, который сохраняет файлы с переводом строки в стиле Unix (Unix line endings). В противном случае компиляция может не работать.
-
-## Docker
-
-Если это немного сложновато для вас, Docker может стать готовым решением, которое вы ищите. После установки [Docker CE](https://docs.docker.com/install/#supported-platforms) выполните следующую команду из директории `qmk_firmware`, чтобы собрать клавиатуру/раскладку:
-
-```bash
-util/docker_build.sh keyboard:keymap
-# Например: util/docker_build.sh ergodox_ez:steno
-```
-
-Это скомпилирует указанную клавиатуру/раскладку и создаст для вас `.hex` или `.bin` файл с результатом, готовым к процессу прошивки, в директории QMK. Если опустить `:keymap`, будет использована раскладка `default`. Заметьте, что формат параметров такой же, как и в случае сборки командой `make`.
-
-Вы также можете запустить скрипт без параметров. Тогда он попросит вас ввести поочередно параметры сборки. Возможно, вам это покажется более удобным:
-
-```bash
-util/docker_build.sh
-# Читает параметры из пользовательского ввода (оставьте пустым для значений по умолчанию)
-```
-
-Также имеется поддержка сборки _и_ прошивки клавиатуры прямо из Docker. Для этого укажите еще один параметр `target`:
-
-```bash
-util/docker_build.sh keyboard:keymap:target
-# Например: util/docker_build.sh planck/rev6:default:dfu-util
-```
-
-Если вы используете Linux, это должно работать прямо из коробки. На Windows и macOS это требует запуска [Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/). Ее довольно утомительно настраивать, поэтому мы не рекомендуем это; используйте вместо этого [QMK Toolbox](https://github.com/qmk/qmk_toolbox).
-
-!> Docker для Windows требует включения [Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v). Это означает, что он не работает на версиях Windows без Hyper-V, например, на Windows 7, Windows 8 и **Windows 10 Home**.
-
-## Vagrant
-
-Если у вас возникли проблемы при сборке прошивки, вы можете попробовать установить инструмент под названием Vagrant. Он сконфигурирует виртуальный компьютер с такими параметрами, которые подходят для сборки прошивки. У OLKB НЕТ файлов такого виртуально компьютера. Подробности о том, как настроить Vagrant, можно найти в [Руководстве по Vagrant](ru-ru/getting_started_vagrant.md).
diff --git a/docs/ru-ru/getting_started_getting_help.md b/docs/ru-ru/getting_started_getting_help.md
deleted file mode 100644
index 75be44310e..0000000000
--- a/docs/ru-ru/getting_started_getting_help.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Получение помощи
-
-Существует много ресурсов для получения помощи по работе с QMK.
-
-## Чат в реальном времени
-
-Вы можете найти разработчиков и пользователей QMK на нашем главном [сервере Discord](https://discord.gg/Uq7gcHh). На сервере есть специальные каналы для разговоров о прошивке, Toolbox, оборудовании и конфигураторе.
-
-## OLKB Сабреддит
-
-Официальный форум QMK [/r/olkb](https://reddit.com/r/olkb) на [reddit.com](https://reddit.com).
-
-## GitHub ишью
-
-Вы можете открыть [ишью на GitHub](https://github.com/qmk/qmk_firmware/issues). Это особенно удобно, когда ваша проблема потребует длительного обсуждения или отладки.
diff --git a/docs/ru-ru/getting_started_github.md b/docs/ru-ru/getting_started_github.md
deleted file mode 100644
index 7a70926f50..0000000000
--- a/docs/ru-ru/getting_started_github.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Как использовать GitHub с QMK
-
-GitHub может показаться несколько сложным для тех, кто никогда с ним не работал. В данном руководстве будет разобран каждый шаг создания форка, клонирования и отправки пулреквеста в QMK.
-
-?> В этом руководстве предполагается, что вы в какой-то степени знакомы с работой в командной строке, и в вашей системе установлен git.
-
-Откройте [страницу QMK на GitHub] (https://github.com/qmk/qmk_firmware), и в правом верхнем углу вы увидите кнопку с надписью "Fork":
-
-![Fork on GitHub](https://i.imgur.com/8Toomz4.jpg)
-
-Если вы состоите в какой-либо организации, вам нужно выбрать учетную запись, к которой будет привязан форк. В большинстве случаев это будет личной аккаунт. Как только ваш форк будет завершен (иногда это занимает немного времени), нажмите кнопку "Clone or Download":
-![Download from GitHub](https://i.imgur.com/N1NYcSz.jpg)
-
-И обязательно выберите "HTTPS", затем выделите ссылку и скопируйте ее:
-
-![HTTPS link](https://i.imgur.com/eGO0ohO.jpg)
-
-Теперь введите `git clone --recurse-submodules ` в командную строку, а затем вставьте ссылку:
-
-```
-user@computer:~$ git clone --recurse-submodules https://github.com/whoeveryouare/qmk_firmware.git
-Cloning into 'qmk_firmware'...
-remote: Enumerating objects: 9, done.
-remote: Counting objects: 100% (9/9), done.
-remote: Compressing objects: 100% (5/5), done.
-remote: Total 183883 (delta 5), reused 4 (delta 4), pack-reused 183874
-Receiving objects: 100% (183883/183883), 132.90 MiB | 9.57 MiB/s, done.
-Resolving deltas: 100% (119972/119972), done.
-...
-Submodule path 'lib/chibios': checked out '587968d6cbc2b0e1c7147540872f2a67e59ca18b'
-Submodule path 'lib/chibios-contrib': checked out 'ede48346eee4b8d6847c19bc01420bee76a5e486'
-Submodule path 'lib/googletest': checked out 'ec44c6c1675c25b9827aacd08c02433cccde7780'
-Submodule path 'lib/lufa': checked out 'ce10f7642b0459e409839b23cc91498945119b4d'
-```
-
-Теперь у вас есть форк QMK на вашем локальном компьютере, и вы можете добавить свою раскладку, скомпилировать ее и прошить ей свою клавиатуру. Как только вы будете довольны своими изменениями, есть возможность добавить, зафиксировать их и сделать коммит в свой форк следующим образом:
-
-```
-user@computer:~$ git add .
-user@computer:~$ git commit -m "adding my keymap"
-[master cccb1608] adding my keymap
- 1 file changed, 1 insertion(+)
- create mode 100644 keyboards/planck/keymaps/mine/keymap.c
-user@computer:~$ git push
-Counting objects: 1, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (1/1), done.
-Writing objects: 100% (1/1), 1.64 KiB | 0 bytes/s, done.
-Total 1 (delta 1), reused 0 (delta 0)
-remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
-To https://github.com/whoeveryouare/qmk_firmware.git
- + 20043e64...7da94ac5 master -> master
-```
-
-Ваши изменения теперь существуют в вашем форке на GitHub - если вернуться туда (`https://github.com/<whoeveryouare>/qmk_firmware`), вы сможете создать "New Pull Request" нажатием на кнопку:
-
-![New Pull Request](https://i.imgur.com/DxMHpJ8.jpg)
-
-Здесь вы сможете увидеть, какие именно изменения были внесены, - если все выглядит хорошо, вы можете завершить его, нажав "Create Pull Request":
-
-![Create Pull Request](https://i.imgur.com/Ojydlaj.jpg)
-
-После отправки мы можем расспросить вас о ваших изменениях, попросить внести корректировки и в конечном итоге принять их! Спасибо за ваш вклад в QMK :)
diff --git a/docs/ru-ru/getting_started_introduction.md b/docs/ru-ru/getting_started_introduction.md
deleted file mode 100644
index ccc4418068..0000000000
--- a/docs/ru-ru/getting_started_introduction.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# Введение
-
-Эта страница пытается объяснить основную информацию, которую вы должны знать, чтобы работать с проектом QMK. Предполагается, что вы знакомы с навигацией в оболочке Unix, но не предполагается, что вы знакомы с C или с компиляцией с использованием make.
-
-## Базовая структура QMK
-
-QMK - это форк [Джуна Вако (Jun Wako)](https://github.com/tmk) проекта [tmk_keyboard](https://github.com/tmk/tmk_keyboard). Оригинальный код TMK с изменениями можно найти в папке `tmk_core`. Дополнения QMK к проекту можно найти в папке `quantum`. Проекты клавиатур можно найти в папках `handwired` и `keyboard`.
-
-### Структура пространства пользователя
-
-Внутри папки `users` находится каталог для каждого пользователя. Это место для пользователей, куда они могут поместить код, чтобы использовать его с разными клавиатурами. Для получения дополнительной информации обратитесь к документации по [функциям пользовательского пространства](ru-ru/feature_userspace.md).
-
-### Структура проекта клавиатуры
-
-Внутри папки `keyboards` есть подпапки `handwired` и есть подкаталоги поставщиков и производителей, для примера, `clueboard` - это каталог для каждого проекта клавиатуры, например, `qmk_firmware/keyboards/clueboard/2x1800`. В нем вы найдете следующую структуру:
-* `keymaps/`: Различные раскладки клавиш, которые можно собрать.
-* `rules.mk`: Файл, который устанавливает параметры по умолчанию для команды "make". Не редактируйте этот файл напрямую, вместо этого используйте `rules.mk`, относящийся к конкретной раскладке.
-* `config.h`: Файл, который устанавливает параметры времени компиляции по умолчанию. Не редактируйте этот файл напрямую, вместо этого используйте `config.h`, относящийся к конкретной раскладке.
-* `info.json`: Файл настройки раскладки для QMK Configurator. Посмотрите [Поддержку конфигуратора](ru-ru/reference_configurator_support.md) для дополнительной информации.
-* `readme.md`: Краткий обзор клавиатуры.
-* `<keyboardName>.h`: В этом файле определяется раскладка клавиатуры по матрице переключателей клавиатуры.
-* `<keyboardName>.c`: В этом файле вы можете найти пользовательский код для клавиатуры.
-
-Для получения дополнительной информации о структуре проекта обратитесь к [Руководству QMK по клавиатуре](ru-ru/hardware_keyboard_guidelines.md).
-
-### Структура раскладки клавиатуры
-
-В каждой папке раскладки клавиатуры могут быть найдены следующие файлы. Обязательным является только файл `keymap.c`, и если остальные файлы не найдены, то будут выбраны параметры по умолчанию.
-
-* `config.h`: настройки вашей раскладки клавиатуры.
-* `keymap.c`: весь код вашей раскладки клавиатуры (обязателен).
-* `rules.mk`: активированные функции QMK.
-* `readme.md`: описание вашей раскладки клавиш, как ее могут использовать другие, и объяснения функций. Пожалуйста, загрузите изображения на сервис, такой как imgur.
-
-# Файл `config.h`
-
-Существует 3 возможных местоположения `config.h`:
-
-* клавиатура (`/keyboards/<keyboard>/config.h`)
-* пространство пользователя (`/users/<user>/config.h`)
-* раскладка клавиш (`/keyboards/<keyboard>/keymaps/<keymap>/config.h`)
-
-Система сборки автоматически загружает файлы конфигурации в указанном выше порядке. Если вы хотите переопределить любую настройку, заданную предыдущим `config.h`, вам сначала нужно будет включить некоторый шаблонный код для настроек, которые вы хотите изменить.
-
-```
-#pragma once
-```
-
-Затем, чтобы переопределить настройку из предыдущего файла `config.h`, вы должны сделать `#undef` и `#define` для неё снова.
-
-Код и настройка шаблона вместе выглядят так:
-```
-#pragma once
-
-// Переопределения производятся здесь!
-#undef MY_SETTING
-#define MY_SETTING 4
-```
diff --git a/docs/ru-ru/newbs.md b/docs/ru-ru/newbs.md
deleted file mode 100644
index 0e7bd6499c..0000000000
--- a/docs/ru-ru/newbs.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Руководство по QMK для полных новичков
-
-QMK ― это мощная прошивка с открытым исходным кодом для вашей механической клавиатуры. Вы можете использовать QMK для легкой и мощной персонализации своей клавиатуры. Люди с разным уровнем умений, от совсем новичков до крутых программистов, успешно применяли QMK, чтобы персонализировать свои клавиатуры. Данное руководство поможет вам сделать то же самое, независимо от уровня вашего мастерства.
-
-Не уверены, поддерживает ли ваша клавиатура QMK? Если это механическая клавиатура, которую вы собрали сами, шансы достаточно велики. Мы поддерживаем [большое число любительских клавиатур](https://qmk.fm/keyboards/), поэтому, даже если ваша текущая клавиатура не совместима с QMK, у вас не должно возникнуть проблем с нахождением подходящей для ваших нужд.
-
-## Обзор
-
-В данном руководстве 7 основных секций:
-
-* [Первое знакомство](ru-ru/newbs_getting_started.md)
-* [Собираем вашу первую прошивку с помощью командной строки](ru-ru/newbs_building_firmware.md)
-* [Собираем вашу первую прошивку с помощью онлайн GUI](ru-ru/newbs_building_firmware_configurator.md)
-* [Прошиваем файл прошивки](ru-ru/newbs_flashing.md)
-* [Тестируем и отлаживаем](ru-ru/newbs_testing_debugging.md)
-* [Лучшие практики по Git](ru-ru/newbs_best_practices.md)
-* [Узнайте больше на этих ресурсах](ru-ru/newbs_learn_more_resources.md)
-
-Данное руководство сосредоточено на помощи тем, кто никогда раньше не компилировал ПО. Приятие решений и рекомендации делаются с учетом именно этого. Существует много альтернативных методов для описанных процедур, и мы поддерживаем большинство из них. Если у вас есть сомнения о том, как выполнить задачу, вы можете [попросить у нас совета](ru-ru/getting_started_getting_help.md).
-
-## Дополнительные ресурсы
-
-* [Блог Томаса Баарта (Thomas Baart) об основах QMK](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – Созданный пользователем блог, охватывающий основы использования QMK Firmware с точки зрения нового пользователя.
diff --git a/docs/ru-ru/newbs_getting_started.md b/docs/ru-ru/newbs_getting_started.md
deleted file mode 100644
index a301e9adba..0000000000
--- a/docs/ru-ru/newbs_getting_started.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# Введение
-
-У вашей компьютерной клавиатуры внутри есть процессор, похожий на тот, что внутри вашего компьютера. Этот процессор выполняет программное обеспечение, которое отвечает за обнаружение нажатий клавиш и отсылку сигналов состояния клавиатуры, когда клавиши нажимаются и отпускаются. Роль такого ПО выполняет QMK, детектируя нажатия клавиш и отсылая эту информацию главному компьютеру. Сбор собственной раскладки эквивалентен сборке выполняемой программы для вашей клавиатуры.
-
-QMK старается дать вам большую силу, оставляя простые вещи легкими и делай сложные — возможными. Вам не надо уметь программировать, чтобы создавать мощные прошивки — вам только надо следовать нескольким простым синтаксическим правилам.
-
-# Первое знакомство
-
-Перед тем, как вы сможете собирать раскладки, вам необходимо установить некоторое программное обеспечение и настроить ваше окружение для сборки. Это нужно сделать только один раз, вне зависимости от того, для скольких клавиатур вы планируете компилировать прошивки.
-
-Если вы предпочитаете графический пользовательский интерфейс, пожалуйста, рассмотрите возможность использования онлайн [QMK Конфигуратора](https://config.qmk.fm). Пожалуйста, обратитесь к [Собираем вашу первую прошивку с помощью онлайн GUI](ru-ru/newbs_building_firmware_configurator.md).
-
-
-## Загрузка ПО
-
-### Текстовый редактор
-
-Вам понадобится программа, умеющая редактировать и сохранять **обычные текстовые** файлы. Если вы используете Windows, вы можете делать это Блокнотом, а в Linux вы можете использовать gedit. Обе программы являются простыми, но функциональными редакторами. В macOS остерегайтесь стандартного приложения TextEdit: он не будет сохранять обычные текстовые файлы, пока вы явно не выберите _Make Plain Text_ из меню _Format_.
-
-Вы также можете скачать и установить отдельный текстовый редактор наподобие [Sublime Text](https://www.sublimetext.com/) или [VS Code](https://code.visualstudio.com/). Возможно, это наилучший вариант независимо от платформы, поскольку эти программы сделаны специально для редактирования кода.
-
-?> Не уверены, какой выбрать текстовый редактор? Лоуренс Брэдфорд (Laurence Bradford) написал [отличное введение](https://learntocodewith.me/programming/basics/text-editors/) в тему.
-
-### QMK Toolbox
-
-QMK Toolbox является дополнительной графической программой для Windows и macOS, которая позволяет вам разрабатывать и отлаживать вашу клавиатуру. Вы, вероятно, посчитаете ее бесценной для легкого процесса прошивки вашей клавиатуры и просмотра отладочных сообщений, которые она отображает.
-
-[Скачайте последний выпуск здесь.](https://github.com/qmk/qmk_toolbox/releases/latest)
-
-* Для Windows: `qmk_toolbox.exe` (переносимое приложение) или `qmk_toolbox_install.exe` (установщик)
-* Для macOS: `QMK.Toolbox.app.zip` (переносимое приложение) или `QMK.Toolbox.pkg` (установщик)
-
-## Настройте ваше окружение
-
-Мы постарались сделать установку QMK максимально легкой. Вам нужно только подготовить ваше Linux или Unix окружение, после этого позвольте QMK установить все остальное.
-
-?> Если вы никогда раньше не работали с командной строкой Linux/Unix, существует несколько базовых концептов и команд, которые необходимо выучить. Эти ресурсы дадут вам достаточно знаний, чтобы работать с QMK:<br>
-[Обязательные к изучению команды Linux](https://www.guru99.com/must-know-linux-commands.html)<br>
-[Несколько базовых команд Unix](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
-
-### Windows
-
-Вам нужно будет установить MSYS2 и Git.
-
-* Следуйте инструкциям по установки на [домашней странице MSYS2](https://www.msys2.org).
-* Закройте все открытые терминалы MSYS2 и откройте новый терминал MSYS2 MinGW 64-bit.
-* Установите Git, выполнив эту команду: `pacman -S git`.
-
-### macOS
-
-Вам нужно будет установить Homebrew. Следуйте инструкциям на [домашней странице Homebrew](https://brew.sh).
-
-После установки Homebrew продолжите чтение с _Установите QMK_. На этом шаге вам надо будет запустить скрипт, который установит остальные пакеты.
-
-### Linux
-
-Вам нужно будет установить Git. Скорее всего, он у вас уже есть, но если нет, одна из следующих команд должна установить его:
-
-* Debian / Ubuntu / Devuan: `apt-get install git`
-* Fedora / Red Hat / CentOS: `yum install git`
-* Arch: `pacman -S git`
-
-?> Docker также является вариантом для всех платформ. [Нажмите сюда для получения подробностей.](ru-ru/getting_started_build_tools.md#docker)
-
-## Установите QMK
-
-Как только вы настроили ваше Linux/Unix окружение, вы готовы к загрузке QMK. Мы сделаем это при помощи Git, "клонировав" репозиторий QMK. Откройте Терминал или окно MSYS2 MinGW и оставьте его открытым до конца данного руководства. Выполните эти команды внутри него:
-
-```shell
-git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
-cd qmk_firmware
-```
-
-?> Если вы уже знаете, [как пользоваться GitHub](ru-ru/getting_started_github.md), мы рекомендуем вам вместо этого создать и клонировать свой собственный форк. Если вы не понимаете, что это значит, просто проигнорируйте это сообщение.
-
-QMK включает в себя скрипт, который поможет вам установить все оставшееся, что вам понадобится. Вы должны запустить его, набрав эту команду:
-
- util/qmk_install.sh
-
-## Протестируйте ваше окружение для сборки
-
-Теперь, когда ваше окружение QMK для сборки настроено, вы можете собрать прошивку для вашей клавиатуры. Начните с попытки собрать раскладку для клавиатуры по умолчанию. У вас должно это получиться с помощью команды в этом формате:
-
- make <keyboard>:default
-
-Например, чтобы собрать прошивку для Clueboard 66%, вы введете:
-
- make clueboard/66/rev3:default
-
-Когда все закончится, вы должны увидеть большой лог, который заканчивается примерно так:
-
-```
-Linking: .build/clueboard_66_rev3_default.elf [OK]
-Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]
-Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]
-Checking file size of clueboard_66_rev3_default.hex [OK]
- * The firmware size is fine - 26356/28672 (2316 bytes free)
-```
-
-# Создаем вашу раскладку
-
-Теперь вы готовы создать свою персональную раскладку! Для этого перейдите к [Собираем вашу первую прошивку](ru-ru/newbs_building_firmware.md).
diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md
index f48643d1d9..e4d8d7c146 100644
--- a/docs/squeezing_avr.md
+++ b/docs/squeezing_avr.md
@@ -1,16 +1,16 @@
# Squeezing the most out of AVR
-AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
+AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
-However, if you need to reduce the compiled size of your firmware, there are a number of options to do so.
+However, if you need to reduce the compiled size of your firmware, there are a number of options to do so.
## `rules.mk` Settings
-First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
+First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
```make
LTO_ENABLE = yes
```
-This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated.
-This will get you the most savings, in most situations.
+This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated.
+This will get you the most savings, in most situations.
From there, disabling extraneous systems will help -- e.g.:
```make
@@ -19,7 +19,7 @@ COMMAND_ENABLE = no
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
```
-This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
+This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
If that isn't enough to get your firmware down to size, then there are some additional features that you can disable:
```make
@@ -27,19 +27,19 @@ SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
```
-These features are enabled by default, but may not be needed. Double check to make sure, though.
-Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
+These features are enabled by default, but may not be needed. Double check to make sure, though.
+Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
## `config.h` Settings
-If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.
+If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.
-Starting with Lock Key support. If you have an Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your `config.h`:
+Starting with Lock Key support. If you have an Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your `config.h`:
```c
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
```
-Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`:
+Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`:
```c
#define NO_ACTION_ONESHOT
```
@@ -49,7 +49,7 @@ The same with tapping keys (mod tap, layer tap, etc)
```
## Audio Settings
-If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`:
+If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`:
```c
#define NO_MUSIC_MODE
```
@@ -60,7 +60,7 @@ MUSIC_ENABLE = no
## Layers
-There are also some options for layers, that can reduce the firmware size. All of these settngs are for your `config.h`.
+There are also some options for layers, that can reduce the firmware size. All of these settings are for your `config.h`.
You can limit the number of layers that the firmware uses -- if you're using less than 8 layers in total:
```c
@@ -93,7 +93,7 @@ into this:
oled_write_P(PSTR("WPM: "), false);
oled_write(get_u8_str(get_current_wpm(), ' '), false);
```
-which outputs `WPM: 5`. Or this:
+which outputs `WPM: 5`. Or this:
```c
// NEW CODE
oled_write_P(PSTR("WPM: "), false);
@@ -103,7 +103,7 @@ which outputs `WPM: 005`.
## RGB Settings
-If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them.. For RGB Light you can disable these in your keymap's `config.h`:
+If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them. For RGB Light you can disable these in your keymap's `config.h`:
```c
#undef RGBLIGHT_ANIMATIONS
#undef RGBLIGHT_EFFECT_BREATHING
@@ -118,7 +118,7 @@ If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (pe
#undef RGBLIGHT_EFFECT_TWINKLE
```
-For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's `config.h`:
+For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's `config.h`:
```c
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
@@ -168,7 +168,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that
# Final Thoughts
-If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst.
+If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst.
-- Drashna
That said, there are a number of Pro Micro replacements with ARM controllers:
@@ -176,5 +176,5 @@ That said, there are a number of Pro Micro replacements with ARM controllers:
* [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA)
* [Raspberry Pi 2040](https://www.sparkfun.com/products/18288) (not currently supported, no ETA)
-There are other, non-Pro Micro compatible boards out there. The most popular being:
+There are other, non-Pro Micro compatible boards out there. The most popular being:
* [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD)
diff --git a/docs/understanding_qmk.md b/docs/understanding_qmk.md
index 016e3d9fd2..582cbf46f2 100644
--- a/docs/understanding_qmk.md
+++ b/docs/understanding_qmk.md
@@ -132,34 +132,36 @@ Comparing against our keymap we can see that the pressed key is `KC_NUM`. From h
The `process_record()` function itself is deceptively simple, but hidden within is a gateway to overriding functionality at various levels of QMK. The chain of events is listed below, using cluecard whenever we need to look at the keyboard/keymap level functions. Depending on options set in `rules.mk` or elsewhere, only a subset of the functions below will be included in final firmware.
-* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172)
- * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
- * [Map this record to a keycode](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
- * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
- * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
- * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
- * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
- * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
- * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
- * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
- * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
- * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
- * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
- * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
- * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397)
- * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
- * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169)
- calls one of:
- * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
- * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
- * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
- * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
- * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
- * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
- * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
- * `bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`
- * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
- * [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
+* [`void action_exec(keyevent_t event)`](https://github.com/qmk/qmk_firmware/blob/88fe5c16a5cdca5e3cf13ef3cd91f5f1e4898c37/quantum/action.c#L70-L131)
+ * [`void pre_process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/ed49dbeac4c0deba1c6b511ac1ce8f4c542e1b3e/quantum/quantum.c#L176-L185)
+ * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
+ * [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172)
+ * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
+ * [Map this record to a keycode](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
+ * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
+ * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
+ * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
+ * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
+ * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
+ * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
+ * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
+ * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
+ * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
+ * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
+ * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
+ * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397)
+ * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
+ * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169)
+ calls one of:
+ * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
+ * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
+ * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
+ * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
+ * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
+ * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
+ * `bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`
+ * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
+ * [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing.
diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md
index b42818d582..93dfbf1eef 100644
--- a/docs/zh-cn/README.md
+++ b/docs/zh-cn/README.md
@@ -1,31 +1,42 @@
-# QMK机械键盘固件
+# Quantum Mechanical Keyboard固件
-[![当前版本](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
-[![异议](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
-[![文档状态](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
-[![GitHub贡献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
-[![GitHub分支](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
+<!---
+ original document: 0.15.12:docs/README.md
+ git diff 0.15.12 HEAD -- docs/README.md | cat
+-->
## 什么是 QMK 固件?
-QMK (*Quantum Mechanical Keyboard*) 是一个社区维护的开源软件,包括 QMK 固件, QMK 工具箱, qmk.fm网站, 和这些文档。QMK 固件是一个基于[tmk\_keyboard](https://github.com/tmk/tmk_keyboard)的键盘固件,它在爱特梅尔AVR微控制器实现一些有用的功能,确切地说, 是在 [OLKB product line](https://olkb.com), 在 [ErgoDox EZ](https://www.ergodox-ez.com) 键盘, 和 [Clueboard product line](https://clueboard.co/). 上。它被移植到使用ChibiOS的ARM芯片上. 它可以在飞线键盘或定制PCB键盘中发挥功能.
+QMK (*Quantum Mechanical Keyboard*) 是一个社区维护的用于开发计算机输入设备的开源软件。社区专注像键盘,鼠标,MIDI设备的各种电子输入设备。社区内的核心小组成员维护[QMK固件](https://github.com/qmk/qmk_firmware),[QMK配置器](https://config.qmk.fm)(QMK Configurator),[QMK工具箱](https://github.com/qmk/qmk_toolbox)(QMK Toolbox),[qmk.fm](https://qmk.fm),并与各位社区成员维护这份文档。
-## 如何得到它
+## 如何入门
-如果你打算贡献布局, 键盘, 或者其他QMK特性, 一下是最简单的方法:[从GitHub获得repo分支](https://github.com/qmk/qmk_firmware#fork-destination-box), 并克隆你的repo到本地进行编辑,推送,然后从你的分支打开 [Pull Request](https://github.com/qmk/qmk_firmware/pulls).
+<div class="flex-container">
-此外, 你也可以直接下载 ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), 或者从git克隆 (`git@github.com:qmk/qmk_firmware.git`), 或 https (`https://github.com/qmk/qmk_firmware.git`).
+?> **基础方式** [QMK配置器](zh-cn/newbs_building_firmware_configurator.md) <br>
+用户友好的图形界面工具,无需具备编程知识基础。
-## 如何编译
+?> **进阶方式** [基于源代码](zh-cn/newbs.md) <br>
+功能更强大,但门槛较高。
-在你能编译之前, 你需要[部署环境](zh-cn/getting_started_build_tools.md) 用于 AVR or/and ARM 开发。完成后, 你可以使用 `make` 命令来编译一个键盘和布局使用以下命令:
+</div>
- make planck/rev4:default
+## 个性化定制
-这将建立 `planck`的`rev4` 修订版本并使用 `default`布局。并非所有键盘都有修订版本 (也叫做子项目或文件夹),在此情况下,修订版本可以省略,如下:
+QMK提供了很多功能,对应着很多可供浏览的配套文档。大部分功能都是通过修改[键映射](zh-cn/keymap.md)及[键码](zh-cn/keycodes.md)实现的。
- make preonic:default
+## 需要帮助?
-## 如何定制
+请查阅[寻求帮助页面](zh-cn/support.md)以了解如何获取QMK使用方法的帮助。
-QMK 有许多 [特性](zh-cn/features.md)来探索,也有很多 [参考文档](https://docs.qmk.fm) 供您发掘。你可以通过修改 [布局](zh-cn/keymap.md)和[键码](zh-cn/keycodes.md)来利用许多特性。
+## 回馈社区
+
+有多种回馈社区的方法,最简单的方法是开始使用QMK并向你的朋友们推荐它。
+
+* 可以在我们的论坛及聊天室进行互助:
+ * [/r/olkb](https://www.reddit.com/r/olkb/)
+ * [Discord服务器](https://discord.gg/Uq7gcHh)
+* 点击页面下方的“Edit This Page”,可以对文档提供贡献。
+* [将这份文档翻译为你的语言](zh-cn/translating.md)
+* [上报bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
+* [发起Pull Request](zh-cn/contributing.md)
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index cedcfbd525..8a710a9ec1 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -1,133 +1,193 @@
-* [完全菜鸟指南](zh-cn/newbs.md)
+<!--for translators, see first: zh-cn/reference_glossary.md#terms-of-zh-cn-translate -->
+* 新手教程
+ * [介绍](zh-cn/newbs.md)
* [入门](zh-cn/newbs_getting_started.md)
- * [构建你的第一个固件](zh-cn/newbs_building_firmware.md)
- * [刷新固件](zh-cn/newbs_flashing.md)
- * [测试和调试](zh-cn/newbs_testing_debugging.md)
- * [Git最佳实践](zh-cn/newbs_git_best_practices.md)
- * [使用你分叉(fork)的主分支(master)](zh-cn/newbs_git_using_your_master_branch.md)
- * [解决合并冲突](zh-cn/newbs_git_resolving_merge_conflicts.md)
- * [重新同步一个分支](zh-cn/newbs_git_resynchronize_a_branch.md)
- * [学习资源](zh-cn/newbs_learn_more_resources.md)
-
-* [QMK基础](zh-cn/README.md)
- * [QMK简介](zh-cn/getting_started_introduction.md)
- * [QMK命令行工具](zh-cn/cli.md)
- * [QMK命令行工具配置](zh-cn/cli_configuration.md)
- * [向QMK贡献代码](zh-cn/contributing.md)
- * [如何使用GitHub](zh-cn/getting_started_github.md)
- * [获得帮助](zh-cn/getting_started_getting_help.md)
-
-* [非兼容性修改](zh-cn/breaking_changes.md)
- * [我的PR已经被标记为非兼容性修改](zh-cn/breaking_changes_instructions.md)
- * [2019年8月30日](zh-cn/ChangeLog/20190830.md)
-
-* [问题与解答](zh-cn/faq.md)
- * [一般问题](zh-cn/faq_general.md)
- * [构建/编译](zh-cn/faq_build.md)
- * [调试/故障排除](zh-cn/faq_debug.md)
- * [布局](zh-cn/faq_keymap.md)
- * [Zadig驱动安装](zh-cn/driver_installation_zadig.md)
-
-* 详细指南
- * [安装构建工具](zh-cn/getting_started_build_tools.md)
- * [vagrant指南](zh-cn/getting_started_vagrant.md)
- * [构建/编译指南](zh-cn/getting_started_make_guide.md)
- * [刷新固件](zh-cn/flashing.md)
- * [定制功能](zh-cn/custom_quantum_functions.md)
- * [布局概述](zh-cn/keymap.md)
-
-* [硬件](zh-cn/hardware.md)
- * [兼容的单片机](zh-cn/compatible_microcontrollers.md)
- * [AVR处理器](zh-cn/hardware_avr.md)
- * [驱动](zh-cn/hardware_drivers.md)
-
-* 参考
- * [键盘指南](zh-cn/hardware_keyboard_guidelines.md)
- * [配置选项](zh-cn/config_options.md)
- * [键码](zh-cn/keycodes.md)
- * [代码书写规范 - C](zh-cn/coding_conventions_c.md)
- * [代码书写规范 - Python](zh-cn/coding_conventions_python.md)
- * [文档书写规范](zh-cn/documentation_best_practices.md)
- * [文档模板](zh-cn/documentation_templates.md)
+ * [构建第一个固件](zh-cn/newbs_building_firmware.md)
+ * [刷写固件](zh-cn/newbs_flashing.md)
+ * [寻求帮助](zh-cn/support.md)
+ * [其它资源](zh-cn/newbs_learn_more_resources.md)
+ * [QMK大纲](zh-cn/syllabus.md)
+
+* FAQ
+ * [常规FAQ](zh-cn/faq_general.md)
+ * [构建/编译QMK](zh-cn/faq_build.md)
+ * [QMK问题排查](zh-cn/faq_misc.md)
+ * [调试QMK](zh-cn/faq_debug.md)
+ * [键映射FAQ](zh-cn/faq_keymap.md)
+ * [充分利用AVR的存储空间](zh-cn/squeezing_avr.md)
* [术语表](zh-cn/reference_glossary.md)
- * [单元测试](zh-cn/unit_testing.md)
- * [实用函数](zh-cn/ref_functions.md)
- * [配置器支持](zh-cn/reference_configurator_support.md)
- * [info.json 格式](zh-cn/reference_info_json.md)
- * [Python 命令行开发](zh-cn/cli_development.md)
-
-* [特性](zh-cn/features.md)
- * [基本键码](zh-cn/keycodes_basic.md)
- * [US ANSI控制码](zh-cn/keycodes_us_ansi_shifted.md)
- * [量子键码](zh-cn/quantum_keycodes.md)
- * [高级键码](zh-cn/feature_advanced_keycodes.md)
- * [音频](zh-cn/feature_audio.md)
- * [自动shift](zh-cn/feature_auto_shift.md)
- * [背光](zh-cn/feature_backlight.md)
- * [蓝牙](zh-cn/feature_bluetooth.md)
- * [热改键](zh-cn/feature_bootmagic.md)
- * [组合](zh-cn/feature_combo)
- * [命令](zh-cn/feature_command.md)
- * [消抖 API](zh-cn/feature_debounce_type.md)
- * [拨动开关](zh-cn/feature_dip_switch.md)
- * [动态宏指令](zh-cn/feature_dynamic_macros.md)
- * [编码器](zh-cn/feature_encoders.md)
- * [重音号Esc复合键](zh-cn/feature_grave_esc.md)
- * [触摸反馈](zh-cn/feature_haptic_feedback.md)
- * [HD44780 LCD控制器](zh-cn/feature_hd44780.md)
- * [自锁键](zh-cn/feature_key_lock.md)
- * [布局](zh-cn/feature_layouts.md)
- * [前导键](zh-cn/feature_leader_key.md)
- * [LED阵列](zh-cn/feature_led_matrix.md)
- * [宏指令](zh-cn/feature_macros.md)
- * [鼠标键](zh-cn/feature_mouse_keys.md)
- * [OLED驱动](zh-cn/feature_oled_driver.md)
- * [一键功能](zh-cn/one_shot_keys.md)
- * [指针设备](zh-cn/feature_pointing_device.md)
- * [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
- * [RGB灯光](zh-cn/feature_rgblight.md)
- * [RGB矩阵](zh-cn/feature_rgb_matrix.md)
- * [空格候补换挡](zh-cn/feature_space_cadet.md)
- * [分体键盘](zh-cn/feature_split_keyboard.md)
- * [速录机](zh-cn/feature_stenography.md)
- * [换手](zh-cn/feature_swap_hands.md)
- * [多击键](zh-cn/feature_tap_dance.md)
- * [终端](zh-cn/feature_terminal.md)
- * [热敏打印机](zh-cn/feature_thermal_printer.md)
- * [Unicode](zh-cn/feature_unicode.md)
- * [用户空间](zh-cn/feature_userspace.md)
- * [速度键](zh-cn/feature_velocikey.md)
-
-* 制造和定制者指南
- * [手工连线指南](zh-cn/hand_wire.md)
- * [ISP刷新指南](zh-cn/isp_flashing_guide.md)
- * [ARM调试指南](zh-cn/arm_debugging.md)
- * [ADC设备](zh-cn/adc_driver.md)
- * [I2C设备](zh-cn/i2c_driver.md)
- * [SPI设备](zh-cn/spi_driver.md)
- * [WS2812设备](zh-cn/ws2812_driver.md)
- * [EEPROM设备](zh-cn/eeprom_driver.md)
- * [GPIO控制](zh-cn/internals_gpio_control.md)
- * [自定义键盘矩阵](zh-cn/custom_matrix.md)
- * [Proton C转换](zh-cn/proton_c_conversion.md)
-
-* 深入了解
- * [键盘工作原理](zh-cn/how_keyboards_work.md)
- * [深入了解QMK](zh-cn/understanding_qmk.md)
-
-* 其他话题
- * [使用Eclipse开发QMK](zh-cn/other_eclipse.md)
- * [使用VSCode开发QMK](zh-cn/other_vscode.md)
- * [支持](zh-cn/getting_started_getting_help.md)
- * [翻译QMK文档](zh-cn/translating.md)
-
-* QMK 内构 (正在编写)
- * [定义](zh-cn/internals_defines.md)
- * [输入回调寄存器](zh-cn/internals_input_callback_reg.md)
- * [Midi设备](zh-cn/internals_midi_device.md)
- * [Midi设备配置过程](zh-cn/internals_midi_device_setup_process.md)
- * [Midi工具库](zh-cn/internals_midi_util.md)
- * [发送函数](zh-cn/internals_send_functions.md)
- * [Sysex工具](zh-cn/internals_sysex_tools.md)
-<!--fromen:20200126-6:03AM(GMT+8)-->
-<!--cn:20200211-11:04AM(GMT+8)-->
+
+* 配置器(Configurator)
+ * [总览](zh-cn/newbs_building_firmware_configurator.md)
+ * [入门](zh-cn/configurator_step_by_step.md)
+ * [问题排查](zh-cn/configurator_troubleshooting.md)
+ * [框架](zh-cn/configurator_architecture.md)
+ * QMK API
+ * [总览](zh-cn/api_overview.md)
+ * [API文档](zh-cn/api_docs.md)
+ * [键盘支持](zh-cn/reference_configurator_support.md)
+ * [添加默认键映射](zh-cn/configurator_default_keymaps.md)
+
+* CLI
+ * [总览](zh-cn/cli.md)
+ * [配置](zh-cn/cli_configuration.md)
+ * [命令](zh-cn/cli_commands.md)
+ * [Tab补全](zh-cn/cli_tab_complete.md)
+
+* 使用QMK
+ * 导览
+ * [功能定制](zh-cn/custom_quantum_functions.md)
+ * [利用Zadig安装驱动](zh-cn/driver_installation_zadig.md)
+ * [极简式制作](zh-cn/easy_maker.md)
+ * [键映射总览](zh-cn/keymap.md)
+ * 开发环境
+ * [Docker指南](zh-cn/getting_started_docker.md)
+ * [Vagrant指南](zh-cn/getting_started_vagrant.md)
+ * 刷写(Flashing)
+ * [刷写](zh-cn/flashing.md)
+ * [刷写ATmega32A (ps2avrgb)](zh-cn/flashing_bootloadhid.md)
+ * IDE
+ * [在Eclipse中使用QMK](zh-cn/other_eclipse.md)
+ * [在VSCode中使用QMK](zh-cn/other_vscode.md)
+ * Git最佳实践
+ * [介绍](zh-cn/newbs_git_best_practices.md)
+ * [你自己的副本](zh-cn/newbs_git_using_your_master_branch.md)
+ * [冲突合并](zh-cn/newbs_git_resolving_merge_conflicts.md)
+ * [基于你的分支修复](zh-cn/newbs_git_resynchronize_a_branch.md)
+ * 键盘组装
+ * [飞线指南](zh-cn/hand_wire.md)
+ * [ISP刷写指南](zh-cn/isp_flashing_guide.md)
+
+ * 键码入门
+ * [键码汇总](zh-cn/keycodes.md)
+ * [基础键码](zh-cn/keycodes_basic.md)
+ * [语言特定的键码](zh-cn/reference_keymap_extras.md)
+ * [修饰键](zh-cn/feature_advanced_keycodes.md)
+ * [原子键码](zh-cn/quantum_keycodes.md)
+ * [Magic键码](zh-cn/keycodes_magic.md)
+
+ * 键码进阶
+ * [指令](zh-cn/feature_command.md)
+ * [动态宏](zh-cn/feature_dynamic_macros.md)
+ * [Grave Escape](zh-cn/feature_grave_esc.md)
+ * [前导键](zh-cn/feature_leader_key.md)
+ * [Mod-Tap](zh-cn/mod_tap.md)
+ * [宏](zh-cn/feature_macros.md)
+ * [鼠标键](zh-cn/feature_mouse_keys.md)
+ * [Space Cadet Shift](zh-cn/feature_space_cadet.md)
+ * [US ANSI上档键值](zh-cn/keycodes_us_ansi_shifted.md)
+
+ * 软件特性
+ * [自动Shift](zh-cn/feature_auto_shift.md)
+ * [组合键](zh-cn/feature_combo.md)
+ * [防抖API](zh-cn/feature_debounce_type.md)
+ * [按键锁定](zh-cn/feature_key_lock.md)
+ * [按键重定义](zh-cn/feature_key_overrides.md)
+ * [层](zh-cn/feature_layers.md)
+ * [粘滞键](zh-cn/one_shot_keys.md)
+ * [光标设备](zh-cn/feature_pointing_device.md)
+ * [原生HID](zh-cn/feature_rawhid.md)
+ * [Sequencer](zh-cn/feature_sequencer.md)
+ * [换手](zh-cn/feature_swap_hands.md)
+ * [一键多用](zh-cn/feature_tap_dance.md)
+ * [点按配置](zh-cn/tap_hold.md)
+ * [终端](zh-cn/feature_terminal.md)
+ * [Unicode](zh-cn/feature_unicode.md)
+ * [用户空间](zh-cn/feature_userspace.md)
+ * [WPM计算](zh-cn/feature_wpm.md)
+
+ * 硬件特性
+ * 显示
+ * [HD44780 LCD控制器](zh-cn/feature_hd44780.md)
+ * [ST7565 LCD驱动](zh-cn/feature_st7565.md)
+ * [OLED驱动](zh-cn/feature_oled_driver.md)
+ * 灯效
+ * [背光](zh-cn/feature_backlight.md)
+ * [LED矩阵](zh-cn/feature_led_matrix.md)
+ * [RGB灯光](zh-cn/feature_rgblight.md)
+ * [RGB矩阵](zh-cn/feature_rgb_matrix.md)
+ * [音频](zh-cn/feature_audio.md)
+ * [蓝牙](zh-cn/feature_bluetooth.md)
+ * [Bootmagic Lite](zh-cn/feature_bootmagic.md)
+ * [自定义矩阵](zh-cn/custom_matrix.md)
+ * [Digitizer](zh-cn/feature_digitizer.md)
+ * [拨动开关(DIP Switch)](zh-cn/feature_dip_switch.md)
+ * [编码器(旋钮)](zh-cn/feature_encoders.md)
+ * [触摸反馈](zh-cn/feature_haptic_feedback.md)
+ * [摇杆](zh-cn/feature_joystick.md)
+ * [LED指示](zh-cn/feature_led_indicators.md)
+ * [MIDI](zh-cn/feature_midi.md)
+ * [Proton C转换](zh-cn/proton_c_conversion.md)
+ * [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
+ * [分体式键盘](zh-cn/feature_split_keyboard.md)
+ * [速记](zh-cn/feature_stenography.md)
+ * [热敏打印机](zh-cn/feature_thermal_printer.md)
+ * [Velocikey](zh-cn/feature_velocikey.md)
+
+* QMK开发
+ * [PR Checklist](zh-cn/pr_checklist.md)
+ * 打破兼容的改动
+ * [总览](zh-cn/breaking_changes.md)
+ * [我的PR已打上标记](zh-cn/breaking_changes_instructions.md)
+ * [近期的变更日志(Changelog)](zh-cn/ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29")
+ * [更早期的不兼容改动](zh-cn/breaking_changes_history.md)
+
+ * C语言开发
+ * [ARM调试指引](zh-cn/arm_debugging.md)
+ * [AVR处理器](zh-cn/hardware_avr.md)
+ * [C编码规范](zh-cn/coding_conventions_c.md)
+ * [兼容的微处理器](zh-cn/compatible_microcontrollers.md)
+ * [驱动](zh-cn/hardware_drivers.md)
+ * [ADC驱动](zh-cn/adc_driver.md)
+ * [Audio驱动](zh-cn/audio_driver.md)
+ * [I2C驱动](zh-cn/i2c_driver.md)
+ * [SPI驱动](zh-cn/spi_driver.md)
+ * [WS2812驱动](zh-cn/ws2812_driver.md)
+ * [EEPROM驱动](zh-cn/eeprom_driver.md)
+ * [串口驱动](zh-cn/serial_driver.md)
+ * [UART驱动](zh-cn/uart_driver.md)
+ * [操控GPIO](zh-cn/internals_gpio_control.md)
+ * [键盘开发指引](zh-cn/hardware_keyboard_guidelines.md)
+
+ * Python开发
+ * [编码规范](zh-cn/coding_conventions_python.md)
+ * [QMK CLI开发](zh-cn/cli_development.md)
+
+ * 配置器开发
+ * QMK API
+ * [开发环境](zh-cn/api_development_environment.md)
+ * [架构总览](zh-cn/api_development_overview.md)
+
+ * 硬件平台开发
+ * Arm/ChibiOS
+ * [选择MCU](zh-cn/platformdev_selecting_arm_mcu.md)
+ * [启动引导](zh-cn/platformdev_chibios_earlyinit.md)
+
+ * QMK参考信息
+ * [参与到QMK](zh-cn/contributing.md)
+ * [翻译QMK文档](zh-cn/translating.md)<!--but should we translate this? currently keep it fallback-->
+ * [配置](zh-cn/config_options.md)
+ * [数据驱动配置](zh-cn/data_driven_config.md)
+ * [Make指引](zh-cn/getting_started_make_guide.md)
+ * [编写文档的最佳实践](zh-cn/documentation_best_practices.md)
+ * [文档模板](zh-cn/documentation_templates.md)
+ * [贡献配列到社区](zh-cn/feature_layouts.md)
+ * [单元测试](zh-cn/unit_testing.md)
+ * [常用函数](zh-cn/ref_functions.md)
+ * [info.json参考资料](zh-cn/reference_info_json.md)
+
+ * 深入了解
+ * [键盘工作原理](zh-cn/how_keyboards_work.md)
+ * [键盘矩阵原理](zh-cn/how_a_matrix_works.md)
+ * [了解QMK](zh-cn/understanding_qmk.md)
+
+ * QMK内部细节 (编辑中)
+ * [定义](zh-cn/internals_defines.md)
+ * [输入回调的注册](zh-cn/internals_input_callback_reg.md)
+ * [Midi设备](zh-cn/internals_midi_device.md)
+ * [Midi设备驱动流程](zh-cn/internals_midi_device_setup_process.md)
+ * [Midi辅助功能](zh-cn/internals_midi_util.md)
+ * [发送函数](zh-cn/internals_send_functions.md)
+ * [Sysex工具](zh-cn/internals_sysex_tools.md)
+
+<!--fromen:20211014-12:00(GMT+8) commit 04cf161aa01fd433b5dae69d9fd31569ed5dca59-->
diff --git a/docs/zh-cn/api_docs.md b/docs/zh-cn/api_docs.md
new file mode 100644
index 0000000000..a2df9ec20a
--- /dev/null
+++ b/docs/zh-cn/api_docs.md
@@ -0,0 +1,73 @@
+# QMK API
+
+<!---
+ original document: 0.15.12:docs/api_docs.md
+ git diff 0.15.12 HEAD -- docs/api_docs.md | cat
+-->
+
+本章节详述了QMK API的使用方法,若您是应用开发者,使用这套API可以实现[QMK](https://qmk.fm)键盘固件的编译支持。
+
+## 总览
+
+本服务提供了一套用于编译自定义键映射的异步API,通过POST方式发送JSON参数到API,定期检查执行状态,待固件编译完成后,即可下载生成的固件文件和固件的源文件(如果需要的话)。
+
+#### 荷载JSON参数示例:
+
+```json
+{
+ "keyboard": "clueboard/66/rev2",
+ "keymap": "my_awesome_keymap",
+ "layout": "LAYOUT_all",
+ "layers": [
+ ["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
+ ["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
+ ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
+ ]
+}
+```
+
+如上可见,荷载参数里有用于生成固件文件的所有键盘信息。每一个层定义都包含了与键盘 `LAYOUT` 宏定义一致的QMK键码列表数据,若该键盘有多个支持的 `LAYOUT` 宏定义,也可以指定使用的是哪一个。
+
+## 提交一个编译job
+
+若要将键映射配置编译成固件文件,仅需将JSON参数通过POST发送至 `/v1/compile` 节点。下面的示例中我们假设JSON荷载参数已存放在 `json_data` 文件中。
+
+```
+$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" https://api.qmk.fm/v1/compile
+{
+ "enqueued": true,
+ "job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
+}
+```
+
+## 检查状态
+
+键映射配置提交后,可以简单地通过 HTTP GET 请求来查询job状态:
+
+```
+$ curl https://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
+{
+ "created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
+ "enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
+ "id": "f5f9b992-73b4-479b-8236-df1deb37c163",
+ "status": "running",
+ "result": null
+}
+```
+
+这份信息告诉我们编译job已经提交到队列中且正在执行。job的状态有5种:
+
+* **failed(失败)**: 编译服务出现问题。
+* **finished(完成)**: 编译已完成,`result` 字段中保存了编译结果。
+* **queued(排队中)**: 键映射job在等待可用的编译服务器。
+* **running(执行中)**: 编译进行中,应当很快就会结束。
+* **unknown(未知)**: 出现了较严重的错误,请给我们[提交一个bug](https://github.com/qmk/qmk_compiler/issues).
+
+## 确认编译产出
+
+编译job完成后请查看 `result` 字段,该字段下保存了如下信息项的哈希表数据:
+
+* `firmware_binary_url`: 用于刷写的固件文件URL列表
+* `firmware_keymap_url`: `keymap.c` 文件URL列表
+* `firmware_source_url`: 完整的固件源代码URL列表
+* `output`: 编译job的stdout及stderr输出信息,所有错误信息都会在这里。
diff --git a/docs/zh-cn/api_overview.md b/docs/zh-cn/api_overview.md
new file mode 100644
index 0000000000..a07cfb7427
--- /dev/null
+++ b/docs/zh-cn/api_overview.md
@@ -0,0 +1,20 @@
+# QMK API
+
+<!---
+ original document: 0.15.12:docs/api_overview.md
+ git diff 0.15.12 HEAD -- docs/api_overview.md | cat
+-->
+
+QMK API提供了一套可用于Web及GUI工具可用的异步API,用于实现将任何[QMK](https://qmk.fm/)支持的键盘的键映射方案进行编译。已有的键映射模板支持所有的QMK键码并且不需要额外的C代码需求。键盘的维护团队可以提供新的模板来启用更多功能的支持。
+
+## App开发者
+
+若您是一位意愿将这套API引入您的程序中的移动端App开发者,请参阅[API使用指引](zh-cn/api_docs.md)。
+
+## 键盘维护团队
+
+若您希望强化您维护的键盘方案在QMK编译API中的支持,请参阅[键盘支持](zh-cn/reference_configurator_support.md)。
+
+## 后端开发者
+
+若您对这套API系统本身感兴趣,请参阅[开发环境](zh-cn/api_development_environment.md)搭建环境并继续深入探索[架构总览](zh-cn/api_development_overview.md)。
diff --git a/docs/zh-cn/cli.md b/docs/zh-cn/cli.md
new file mode 100644
index 0000000000..22c2db92c8
--- /dev/null
+++ b/docs/zh-cn/cli.md
@@ -0,0 +1,43 @@
+# QMK CLI :id=qmk-cli
+
+<!---
+ original document: 0.15.12:docs/cli.md
+ git diff 0.15.12 HEAD -- docs/cli.md | cat
+-->
+
+## 总览 :id=overview
+
+QMK CLI可以让构建QMK键盘的过程更轻松一些,我们已提供的一批指令可用于简化及流式化地处理一些常见工作,如获取并编译QMK固件,创建新的键映射等。
+
+### 依赖项 :id=requirements
+
+QMK依赖Python 3.6或更高版本。我们已经尽力缩减依赖项,但在[`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt)中的依赖项是需安装的包。在安装QMK CLI时这些依赖项也会自动完成安装。
+
+### 通过 Homebrew 安装(macOS 及部分 Linux) :id=install-using-homebrew
+
+若已安装[Homebrew](https://brew.sh),可以按如下方法安装QMK:
+
+```
+brew install qmk/qmk/qmk
+export QMK_HOME='~/qmk_firmware' # 可选,指定 `qmk_firmware` 的路径
+qmk setup # 拉取 `qmk/qmk_firmware` 并选择性地配置构建环境
+```
+
+### 通过 pip 安装 :id=install-using-easy_install-or-pip
+
+未在以上列出的操作系统可以手动安装QMK。首先确认已安装Python 3.6(或更高版本)及 pip,然后通过如下指令安装QMK:
+
+```
+python3 -m pip install qmk
+export QMK_HOME='~/qmk_firmware' # 可选,指定 `qmk_firmware` 的路径
+qmk setup # 拉取 `qmk/qmk_firmware` 并选择性地配置构建环境
+```
+
+### 其它操作系统的安装包 :id=packaging-for-other-operating-systems
+
+我们正在寻求可以制作维护更多操作系统下可用的 `qmk` 安装包的开发者,若您愿意为您的操作系统制作安装包,请遵循如下指引:
+
+* 当该系统下的最佳实践与本指引冲突时,请遵循系统的最佳实践方案
+ * 但请在注释中列明此处违反这份指引的原因
+* 在 virtualenv 下安装
+* 指引用户去设置 `QMK_HOME` 环境变量,使得固件源文件拉取路径不再是默认的 `~/qmk_firmware`
diff --git a/docs/zh-cn/cli_commands.md b/docs/zh-cn/cli_commands.md
new file mode 100644
index 0000000000..ed36ed975b
--- /dev/null
+++ b/docs/zh-cn/cli_commands.md
@@ -0,0 +1,503 @@
+# QMK CLI 命令
+
+<!---
+ original document: 0.15.12:docs/cli_commands.md
+ git diff 0.15.12 HEAD -- docs/cli_commands.md | cat
+-->
+
+# 用户命令
+
+## `qmk compile`
+
+该命令用于在指定目录下编译固件,可用于构建<https://config.qmk.fm>导出的JSON数据,代码库中的键映射,或是当前目录下的键盘。
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**用于配置器导出的数据时**:
+
+```
+qmk compile [-c] <configuratorExport.json>
+```
+
+**用于键映射时**:
+
+```
+qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>
+```
+
+**在键盘目录下时**:
+
+须在存在默认键映射的键盘目录下执行,或是在键盘的键映射子目录下,否则须指定参数 `--keymap <keymap_name>`
+```
+qmk compile
+```
+
+**构建所有支持该键映射的键盘时**:
+
+```
+qmk compile -kb all -km <keymap_name>
+```
+
+**示例**:
+```
+$ qmk config compile.keymap=default
+$ cd ~/qmk_firmware/keyboards/planck/rev6
+$ qmk compile
+Ψ Compiling keymap with make planck/rev6:default
+...
+```
+指定键映射参数时
+
+```
+$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
+$ qmk compile -km 66_iso
+Ψ Compiling keymap with make clueboard/66/rev4:66_iso
+...
+```
+位于键盘目录下时
+
+```
+$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
+$ qmk compile
+Ψ Compiling keymap with make gh60/satan:colemak
+...
+```
+
+**在配列目录下时**:
+
+必须是在 `qmk_firmware/layouts/` 下的键映射目录下。
+```
+qmk compile -kb <keyboard_name>
+```
+
+**示例**:
+```
+$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi
+$ qmk compile -kb dz60
+Ψ Compiling keymap with make dz60:mechmerlin-ansi
+...
+```
+
+**并行编译**:
+
+在编译时添加 `-j`/`--parallel` 开关可能有助于加快编译速度。
+```
+qmk compile -j <num_jobs> -kb <keyboard_name>
+```
+`num_jobs` 用于指定并行的job上限,将其设置为0可以实现无限制的并行编译。
+```
+qmk compile -j 0 -kb <keyboard_name>
+```
+
+## `qmk flash` :id=qmk-flash
+
+该命令与 `qmk compile` 类似,但额外地可以指定bootloader。bootloader参数是可选的,默认会指定为 `:flash`。可通过 `-bl <bootloader>` 来指定bootloader。请查阅[刷写固件](zh-cn/flashing.md)指引以深入了解可用的bootloader信息。
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**用于配置器导出的数据时**:
+
+```
+qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configuratorExport.json>
+```
+
+**用于键映射时**:
+
+```
+qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
+```
+
+**列出所有bootloader**
+
+```
+qmk flash -b
+```
+
+## `qmk config`
+
+该命令用于配置QMK功能,完整的 `qmk config` 文档参见[CLI配置](zh-cn/cli_configuration.md)。
+
+**使用方法**:
+
+```
+qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
+```
+
+## `qmk cd`
+
+该命令会启动一个新的 shell 会话并定位到 `qmk_firmware` 所在目录。
+
+须留意如果你已经位于 `QMK_HOME` 下的某个位置(比如 `keyboards/` 目录中),该指令不会生效。
+
+若要退回到原来的 shell 会话,只需要执行 `exit`。
+
+**使用方法**:
+
+```
+qmk cd
+```
+
+## `qmk console`
+
+该命令用于连接键盘终端并展示调试信息。仅当键盘固件通过 `CONSOLE_ENABLE=yes` 编译时有效。
+
+**用法**:
+
+```
+qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
+```
+
+**示例**:
+
+连接到所有可用的键盘并输出终端信息:
+
+```
+qmk console
+```
+
+列出所有设备:
+
+```
+qmk console -l
+```
+
+仅输出 clueboard/66/rev3 键盘的信息:
+
+```
+qmk console -d C1ED:2370
+```
+
+仅输出第二把 clueboard/66/rev3 键盘的信息:
+
+```
+qmk console -d C1ED:2370:2
+```
+
+输出时间戳及VID:PID以替代键盘名:
+
+```
+qmk console -n -t
+```
+
+屏蔽bootloader的消息:
+
+```
+qmk console --no-bootloaders
+```
+
+## `qmk doctor`
+
+该命令用以检查你的开发环境并对发现的潜在的构建及刷写问题进行提醒,如果您乐意,它也可以修复其中大部分问题。
+
+**用法**:
+
+```
+qmk doctor [-y] [-n]
+```
+
+**示例**:
+
+检查开发环境中的问题并提示是否修复:
+
+ qmk doctor
+
+检查开发环境中的问题并自动进行修复:
+
+ qmk doctor -y
+
+检查开发环境中的问题,仅生成报告:
+
+ qmk doctor -n
+
+## `qmk format-json`
+
+将JSON文件格式化为(尽量)便于阅读的形式。会自动分辨JSON结构类型(info.json还是keymap.json),必要时也可以通过 `--format` 指定。
+
+**用法**:
+
+```
+qmk format-json [-f FORMAT] <json_file>
+```
+
+## `qmk info`
+
+展示QMK中的键盘及键映射信息,该命令用来获取键盘信息,输出配列,展示底层按键矩阵,及格式化地输出键映射JSON数据。
+
+**用法**:
+
+```
+qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]
+```
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**示例**:
+
+输出键盘的基础信息:
+
+ qmk info -kb planck/rev5
+
+输出键盘的矩阵信息:
+
+ qmk info -kb ergodox_ez -m
+
+输出键盘的键映射JSON数据:
+
+ qmk info -kb clueboard/california -km default
+
+## `qmk json2c`
+
+从QMK配置器导出的数据中生成 keymap.c 文件
+Creates a keymap.c from a QMK Configurator export.
+
+**用法**:
+
+```
+qmk json2c [-o OUTPUT] filename
+```
+
+## `qmk c2json`
+
+从 keymap.c 文件中生成 keymap.json
+**注意:** 解析C代码文件并不容易,该命令有可能无法对你的键映射文件生效,不使用C预处理代码有时可以解决问题。
+
+**用法**:
+
+```
+qmk c2json -km KEYMAP -kb KEYBOARD [-q] [--no-cpp] [-o OUTPUT] filename
+```
+
+## `qmk lint`
+
+检查键盘及键映射数据并提示出常见错误与问题,以及不符合模板规范的地方。
+
+**用法**:
+
+```
+qmk lint [-km KEYMAP] [-kb KEYBOARD] [--strict]
+```
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**示例**:
+
+基本的lint检查:
+
+ qmk lint -kb rominronin/katana60/rev2
+
+## `qmk list-keyboards`
+
+该命令可以列出 `qmk_firmware` 中所有的键盘
+
+**用法**:
+
+```
+qmk list-keyboards
+```
+
+## `qmk list-keymaps`
+
+该命令可以列出指定键盘(及指定版本)下的所有键映射。
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**用法**:
+
+```
+qmk list-keymaps -kb planck/ez
+```
+
+## `qmk new-keyboard`
+
+该命令可基于现有模板创建出新的键盘定义。
+
+对于未给出的参数,会提示你输入,若未传入 `-u` 参数且 .gitconfig 中设置了 `user.name`,则会提示你使用该值作为默认用户名。
+
+**用法**:
+
+```
+qmk new-keyboard [-kb KEYBOARD] [-t {avr,ps2avrgb}] -u USERNAME
+```
+
+## `qmk new-keymap`
+
+该命令可基于键盘已有的默认键映射创建新的键映射。
+
+该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
+
+**用法**:
+
+```
+qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
+```
+
+## `qmk clean`
+
+该命令会清理 `.build` 目录,若传入 `--all` 开关,在 `qmk_firmware` 下的所有.hex及.bin文件也会一并删除。
+
+**用法**:
+
+```
+qmk clean [-a]
+```
+
+---
+
+# 面向开发者的命令
+
+## `qmk format-text`
+
+该命令会重新格式化并统一文件的换行符。
+
+代码库下所有的文件须使用Unix换行符(LF)。
+若你在**Windows**下进行开发,必须确保文件中的换行符是正确的,才能让你的PR被允许合入。
+
+```
+qmk format-text
+```
+
+## `qmk format-c`
+
+该命令会使用clang-format来格式化C代码。
+
+不带参数地执行该命令以用来格式化核心代码相关的改动,默认会通过 `git diff` 来检查 `origin/master`, 可以通过 `-b <分支名>` 来改变检查的分支。
+
+带着 `-a` 开关执行命令会格式化所有的核心代码,也可以在命令行中传入文件名来指定格式化某个文件。
+
+**用以处理指定文件时**:
+
+```
+qmk format-c [file1] [file2] [...] [fileN]
+```
+
+**用以处理所有的核心代码时**:
+
+```
+qmk format-c -a
+```
+
+**用以处理 origin/master 下的所有改动时**:
+
+```
+qmk format-c
+```
+
+**用以处理指定分支下的所有改动时**:
+
+```
+qmk format-c -b branch_name
+```
+
+## `qmk generate-compilation-database`
+
+**用法**:
+
+```
+qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]
+```
+
+创建新 `compile_commands.json` 文件。
+
+你的IDE/编辑器是否使用了“编程语言本地服务器”(language server)且 _总是_ 无法找到全部的包含文件(include files)?是不是很讨厌红色的波浪线?想不想让你的编辑器看得懂 `#include QMK_KEYBOARD_H`?你需要的是一个[编译数据库](https://clang.llvm.org/docs/JSONCompilationDatabase.html)!而 QMK 可以帮助你构建出一个。
+
+该命令需要知道你在构建的是哪个键盘及键映射,它使用与 `qmk compile` 命令一样的选项:参数、当前目录以及配置文件。
+
+**示例:**
+
+```
+$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
+$ qmk generate-compilation-database
+Ψ Making clean
+Ψ Gathering build instructions from make -n gh60/satan:colemak
+Ψ Found 50 compile commands
+Ψ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
+```
+
+现在可以打开你的开发环境并享受没有波浪线的日子了。
+
+## `qmk docs`
+
+该命令会在本地启动一个HTTP服务,从而你可以浏览及改进文档,默认端口号为8936,使用 `-b`/`--browser` 开关可以让该命令自动通过默认浏览器打开链接地址。
+
+**用法**:
+
+```
+qmk docs [-b] [-p PORT]
+```
+
+## `qmk generate-docs`
+
+该命令可以在本地生成QMK文档,用以文档的常规浏览使用,或进行文档改进工作。可以使用类似[serve](https://www.npmjs.com/package/serve)这样的工具来浏览生成的文档文件。
+
+**用法**:
+
+```
+qmk generate-docs
+```
+
+## `qmk generate-rgb-breathe-table`
+
+该命令可以生成用于[RGB灯光](zh-cn/feature_rgblight.md)的呼吸效果的查询表(LUT)头文件。将该文件命名为 `rgblight_breathe_table.h` 并放入键盘或键映射目录下,可以覆盖替换 `quantum/rgblight/` 下的默认LUT。
+
+**用法**:
+
+```
+qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]
+```
+
+## `qmk kle2json`
+
+该命令可以将KLE原始数据转换成QMK配置器的JSON数据,可接受的输入可以是文件绝对路径,或当前目录下的文件名。若 `info.json` 文件存在,默认不会进行覆盖,通过指定 `-f` 或 `--force` 开关可以允许覆盖。
+
+**用法**:
+
+```
+qmk kle2json [-f] <filename>
+```
+
+**示例**:
+
+```
+$ qmk kle2json kle.txt
+☒ File info.json already exists, use -f or --force to overwrite.
+```
+
+```
+$ qmk kle2json -f kle.txt -f
+Ψ Wrote out to info.json
+```
+
+## `qmk format-python`
+
+该命令可以对 `qmk_firmware` 下的python代码进行格式化。
+
+**用法**:
+
+```
+qmk format-python
+```
+
+## `qmk pytest`
+
+该命令会执行python测试框架,在你更改了python代码后,应确保该命令可以成功执行。
+
+**用法**:
+
+```
+qmk pytest
+```
+
+**示例**:
+
+执行全部的测试套件:
+
+ qmk pytest
+
+执行指定的测试用例组:
+
+ qmk pytest -t qmk.tests.test_cli_commands
+
+执行单个测试用例:
+
+ qmk pytest -t qmk.tests.test_cli_commands.test_c2json
+ qmk pytest -t qmk.tests.test_qmk_path
diff --git a/docs/zh-cn/cli_configuration.md b/docs/zh-cn/cli_configuration.md
new file mode 100644
index 0000000000..d3bca4a338
--- /dev/null
+++ b/docs/zh-cn/cli_configuration.md
@@ -0,0 +1,126 @@
+# QMK CLI 配置
+
+<!---
+ original document: 0.15.12:docs/cli_configuration.md
+ git diff 0.15.12 HEAD -- docs/cli_configuration.md | cat
+-->
+
+本文详述了 `qmk config` 功能及作用。
+
+# 介绍
+
+QMK CLI的配置系统是一套键/值(key/value)数据系统,每个键由一个子指令和一个参数名组成,通过点号(英文句号)分隔。这使得配置项可以简单直接地映射到命令行参数上。
+
+## 简单示例
+
+作为一个示例,对于指令 `qmk compile --keyboard clueboard/66/rev4 --keymap default`
+
+其存在两个命令行参数,可以通过如下方式从配置中读取:
+
+* `compile.keyboard`
+* `compile.keymap`
+
+可以这样设置:
+
+```
+$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
+compile.keyboard: None -> clueboard/66/rev4
+compile.keymap: None -> default
+Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
+```
+
+现在每次执行 `qmk compile` 时都不需要指定键盘及键映射参数了。
+
+## 设置用户级的默认配置
+
+当你需要在多个命令中使用一致的配置项时,比如很多命令都需要的 `--keyboard` 参数,相比于每次执行命令都去指定该参数值,你可以直接设置用户级的配置值,即可将该配置用于所有的命令。
+
+示例:
+
+```
+$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
+user.keyboard: None -> clueboard/66/rev4
+user.keymap: None -> default
+Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
+```
+
+# CLI文档 (`qmk config`)
+
+`qmk config` 命令可以管理配置数据。当不带额外参数执行时,会输出所有已有配置。存在参数时这些参数将被视为配置项参数,其格式须满足如下形式且无空格分隔:
+
+ <subcommand|general|default>[.<key>][=<value>]
+
+## 设置配置值
+
+在配置项的键后加 = 号进行值的设置,配置项的键必须是 `<section>.<key>` 的完整形式。
+
+举例:
+
+```
+$ qmk config default.keymap=default
+default.keymap: None -> default
+Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
+```
+
+## 读取配置值
+
+可以读取整个配置文件、单独配置键或是一整个配置系列,也可以同时指定读取多个配置项。
+
+### 全量配置读取示例
+
+ qmk config
+
+### 单系列配置读取示例
+
+ qmk config compile
+
+### 单配置项读取示例
+
+ qmk config compile.keyboard
+
+### 多配置项读取示例
+
+ qmk config user compile.keyboard compile.keymap
+
+## 删除配置值
+
+将配置值设置为 `None` 即可删除该配置值。
+
+示例:
+
+```
+$ qmk config default.keymap=None
+default.keymap: default -> None
+Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
+```
+
+## 批量操作
+
+一个指令中可以合并执行多个读写操作,将依序进行执行输出:
+
+```
+$ qmk config compile default.keymap=default compile.keymap=None
+compile.keymap=skully
+compile.keyboard=clueboard/66_hotswap/gen1
+default.keymap: None -> default
+compile.keymap: skully -> None
+Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
+```
+
+# 用户配置相关的配置项
+
+| 配置项 | 默认值 | 描述 |
+|-------|-------|------|
+| user.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
+| user.keymap | None | 键盘名称(举例:`default`) |
+| user.name | None | 用户的Github用户名 |
+
+# 所有配置项
+
+| 配置项 | 默认值 | 描述 |
+|-------|-------|------|
+| compile.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
+| compile.keymap | None | 键盘名称(举例:`default`) |
+| hello.name | None | 执行时展示的欢迎信息 |
+| new_keyboard.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
+| new_keyboard.keymap | None | 键盘名称(举例:`default`) |
diff --git a/docs/zh-cn/cli_tab_complete.md b/docs/zh-cn/cli_tab_complete.md
new file mode 100644
index 0000000000..7a16e9766c
--- /dev/null
+++ b/docs/zh-cn/cli_tab_complete.md
@@ -0,0 +1,32 @@
+# QMK Tab补全
+
+<!---
+ original document: 0.15.12:docs/cli_tab_complete.md
+ git diff 0.15.12 HEAD -- docs/cli_tab_complete.md | cat
+-->
+
+在使用Bash 4.2及更高版本、Zsh或FiSH时,可以启用QMK CLI的Tab补全功能,可以实现对 `qmk` 参数中的开关、键盘、文件等参数的自动补全。
+
+## 设置
+
+有以下几种启用Tab补全的方法。
+
+### 仅当前用户生效
+
+将以下内容添加到文件 `.profile` 或 `.bashrc` 的末尾:
+
+ source ~/qmk_firmware/util/qmk_tab_complete.sh
+
+若你的 `qmk_firmware` 存放在其它路径,以上路径也需要调整。
+
+### 系统级的符号关联
+
+若想让所有本地用户都可以实现Tab补全,可以按如下方法添加符号连接到 `qmk_tab_complete.sh` 脚本:
+
+ `ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
+
+### 系统级的脚本拷贝
+
+有时符号连接的方案无效,可以改用拷贝文件到指定位置的方案。但须留意该Tab补全脚本可能会不定时更新,你需要定期重新拷贝一次该脚本。
+
+ cp util/qmk_tab_complete.sh /etc/profile.d
diff --git a/docs/zh-cn/configurator_architecture.md b/docs/zh-cn/configurator_architecture.md
new file mode 100644
index 0000000000..386ebd6899
--- /dev/null
+++ b/docs/zh-cn/configurator_architecture.md
@@ -0,0 +1,66 @@
+# QMK配置器框架
+
+<!---
+ original document: 0.15.12:docs/configurator_architecture.md
+ git diff 0.15.12 HEAD -- docs/configurator_architecture.md | cat
+-->
+
+本章节提供了QMK配置器前端技术框架信息,若你对QMK配置器前端工程本身感兴趣,可以从[QMK配置器](https://github.com/qmk/qmk_configurator)代码库开始。
+
+# 总览
+
+![QMK配置器技术框架图](./../configurator_diagram.svg)
+
+# 详述
+
+QMK配置器基于[单页面框架](https://en.wikipedia.org/wiki/Single-page_application)实现,供使用者创建兼容QMK键盘的自定义键映射方案。键映射方案可以导出为JSON格式的数据,也可以编译出可通过[QMK工具箱](https://github.com/qmk/qmk_toolbox)刷写到键盘中的固件文件。
+
+配置器从“键盘元数据仓库(Keyboard Metadata store)”获取键盘元数据,编译请求通过QMK API提交,编译产出放在S3兼容的数据仓库[Digital Ocean空间](https://www.digitalocean.com/products/spaces/)中。
+
+## 配置器前端
+
+地址:<https://config.qmk.fm>
+
+[配置器前端](https://config.qmk.fm)会编译并产出一些静态文件并通过Github Pages托管,每当[QMK配置器 `master`](https://github.com/qmk/qmk_configurator)分支收到推送的提交时都会触发。可以通过[QMK配置器 actions页面](https://github.com/qmk/qmk_configurator/actions/workflows/build.yml)查看这些job的状态。
+
+## 键盘元数据
+
+地址:<https://keyboards.qmk.fm>
+
+每当[qmk_firmware](https://github.com/qmk/qmk_firmware)仓库中的键盘定义变化时,会生成JSON格式的键盘元数据,并上传到指定空间用于配置器生成每种键盘的UI展现。可以在[QMK固件 actions页面](https://github.com/qmk/qmk_firmware/actions/workflows/api.yml)查看相关job的状态。如果你是QMK开发团队成员(Collaborator),可以使用 `workflow_dispatch` 事件触发器来手动执行该job。
+
+## QMK API
+
+地址:<http://api.qmk.fm>
+
+QMK API接受 `keymap.json` 文件输入并进行编译,这和你在 `qmk compile` 和 `qmk flash` 中使用的文件一样。当 `keymap.json` 文件被提交后,浏览器中的页面将定时查看job状态(每2秒一次,有时更久一些)直到job完成。最终产出的JSON描述信息里包含了键映射方案的源文件,及编译出的二进制的可下载链接地址。
+
+为遵循GPL协议,QMK API会确保源文件及编译产出总是同时提供的。
+
+API有3种非异常的回应状态-
+
+1. 编译job排队中
+2. 编译job执行中
+3. 编译job已完成
+
+### 编译job排队中
+
+此状态表明[QMK编译器](#QMK编译器)节点还未选中该job,在配置器页面此时会显示“等待一个可用的烤炉(Waiting for an oven)”。
+
+### 编译job执行中
+
+此状态说明编译job已经在执行中,配置器页面会显示为“烤制中”(Baking)。
+
+### 编译job已完成
+
+此状态说明编译job已经执行完毕,输出的JSON格式的状态信息里有源文件及编译产出的二进制文件的下载链接项。
+
+## Redis/RQ
+
+QMK API通过Redis队列分发job到可用的[QMK编译器](#QMK编译器)节点。接收到的 `keymap.json` 文件先送到RQ队列,而 `qmk_compiler` 节点则从中拉取执行。
+
+## QMK编译器
+
+[QMK编译器](https://github.com/qmk/qmk_compiler)负责执行 `keymap.json` 文件的实际编译工作。它的工作逻辑是先拉取有请求的 `qmk_firmware` 分支代码,执行 `qmk compile keymap.json`,最后上传源文件及二进制产出到Digital Ocean空间中。
+
+当用户需要下载源代码/二进制文件时,API会给出重定向后的已鉴权地址链接。
diff --git a/docs/zh-cn/configurator_default_keymaps.md b/docs/zh-cn/configurator_default_keymaps.md
new file mode 100644
index 0000000000..135029b7e2
--- /dev/null
+++ b/docs/zh-cn/configurator_default_keymaps.md
@@ -0,0 +1,198 @@
+# 向QMK配置器中添加默认键映射 :id=adding-default-keymaps
+
+<!---
+ original document: 0.15.12:docs/configurator_default_keymaps.md
+ git diff 0.15.12 HEAD -- docs/configurator_default_keymaps.md | cat
+-->
+
+本章节描述了如何向QMK配置器中添加一款键盘的默认键映射
+
+
+## 技术信息 :id=technical-information
+
+QMK配置器使用JSON作为键映射的本地文件格式。我们尽力确保其行为与在 `qmk_firmware` 中 执行 `make <keyboard>:default` 时一致。
+
+该目录下的键映射需要定义四个键值对:
+
+* `keyboard` (字符串)
+ * 键盘名称,与执行 `make` 进行编译时使用的一致(如 `make 1upkeyboards/1up60rgb:default`)。
+* `keymap` (字符串)
+ * 应设置为 `default`.
+* `layout` (字符串)
+ * 默认键映射应使用的配列宏定义。
+* `layers` (数组)
+ * 键映射数据。此键下的每行元素对应一个层定义,层定义中包含该层的键码组成信息。
+
+额外地,大部分键映射中还有一个 `commit` 项,该项并不是QMK配置器后端服务API所需,而是用于告知配置器维护者这份JSON键映射数据来源于代码库中的哪个版本的键映射。该值为 `qmk_firmware` 代码库中最后一次修改键盘默认 `keymap.c` 文件提交的commit的SHA标记。该SHA值的获取方式是拉取[`qmk/qmk_firmware` 库的 `master`分支](https://github.com/qmk/qmk_firmware/tree/master/)后,执行 `git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c`(若键盘有什么问题且存在 `keymap.json` 文件,则用之作为替代),执行结果应类似于:
+
+```
+f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
+```
+
+本例中,`f14629ed1cd7c7ec9089604d64f29a99981558e8` 即应为 `commit` 的值。
+
+
+## 示例 :id=example
+
+若某人想添加H87a Hineybush键盘的默认键映射方案,应到 `qmk_firmware` 下H87a的默认键映射下执行上述 `git log` 命令:
+
+```
+user ~/qmk_firmware (master)
+$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c
+ef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)
+```
+
+在我们获取了commit哈希值后,还需要键映射定义(为加强可读性进行了编辑处理):
+
+```c
+...
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+};
+```
+
+默认键映射使用了 `LAYOUT_all` 宏,最后其会成为 `layout` 项的值。编译为QMK配置器的JSON键映射数据后,输出文件应为:
+
+```json
+{
+ "keyboard": "hineybush/h87a",
+ "keymap": "default",
+ "commit": "ef8878fba5d3786e3f9c66436da63a560cd36ac9",
+ "layout": "LAYOUT_all",
+ "layers": [
+ [
+ "KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS",
+ "KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP",
+ "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN",
+ "KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT",
+ "KC_LSFT", "KC_NUBS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_TRNS", "KC_UP",
+ "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
+ ],
+ [
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_HUD", "RGB_HUI", "RGB_SAD", "RGB_SAI", "RGB_VAD", "RGB_VAI", "BL_TOGG", "BL_DEC", "BL_INC",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RESET", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MNXT", "KC_VOLD",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
+ ]
+ ]
+}
+```
+
+`layers` 数组中的空白区域不影响键映射功能,仅为了方便阅读。
+
+
+## 附加说明 :id=caveats
+
+### 层定义只能通过序号进行引用 :id=layer-references
+
+QMK中常见的一种做法是通过一系列 `#define` 或 `enum` 类型声明来对层定义进行命名:
+
+```c
+enum layer_names {
+ _BASE,
+ _MEDIA,
+ _FN
+};
+```
+
+对于C代码来讲可行,但对于配置器来讲,你*必须*使用层序号 - 上例中的`MO(_FN)` 应使用 `MO(2)`。
+
+### 不支持任何形式的定制化代码 :id=custom-code
+
+需要在 keymap.c 文件中添加函数代码的功能,如Tap Dance或是Unicode,都*完全*无法在配置器中构建。即便是在 `qmk_firmware` 代码库中在键盘定义中设置了 `TAP_DANCE_ENABLE = yes`,也只会导致*任何*固件构建在配置器中行不通。这是由API及JSON格式的键映射数据同时造成的限制。
+
+### 对自定义键码的不完全支持 :id=custom-keycodes
+
+仅有一个方案可以支持自定义键码:若自定义键码的逻辑实现是在 qmk_firmware 下的键盘定义中完成的,而非在键映射中,那么这个键码*可以*在配置器中使用且*可以*编译运行。(因此,)相对于在 `keymap.c` 中使用如下代码段:
+
+```c
+enum custom_keycodes {
+ MACRO_1 = SAFE_RANGE,
+ MACRO_2,
+ MACRO_3
+};
+...
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case MACRO_1:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #1.");
+ }
+ return false;
+ case MACRO_2:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #2.");
+ }
+ return false;
+ case MACRO_3:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #3.");
+ }
+ return false;
+ }
+ return true;
+};
+```
+
+... 请将键码的 `enum` 定义块添加到键盘的头文件(`<keyboard.h>`)中,例如(留意 `enum` 在这里命名为 `keyboard_keycodes`):
+
+```c
+enum keyboard_keycodes {
+ MACRO_1 = SAFE_RANGE,
+ MACRO_2,
+ MACRO_3,
+ NEW_SAFE_RANGE // 重要!
+};
+```
+
+... 之后在 `<keyboard>.c` 中的 `process_record_kb()` 代码逻辑应为:
+
+```c
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case MACRO_1:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #1.");
+ }
+ return false;
+ case MACRO_2:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #2.");
+ }
+ return false;
+ case MACRO_3:
+ if (record->event.pressed) {
+ SEND_STRING("This is macro #3.");
+ }
+ return false;
+ }
+ return process_record_user(keycode, record);
+};
+```
+
+注意最后的 `process_record_user()` 调用,若用户需要添加自定义键码到键映射中,须使用 `NEW_SAFE_RANGE` 替代 `SAFE_RANGE`,而其定义来自于上面键盘层定义中。
+
+
+## 更多资料 :id=additional-reading
+
+为了让QMK配置器支持你的键盘,你的键盘定义必须存在于 `qmk_firmware` 代码库的 `master` 分支中。相关操作指引,请参见[在QMK配置器中支持你的键盘](zh-cn/reference_configurator_support.md).
diff --git a/docs/zh-cn/configurator_step_by_step.md b/docs/zh-cn/configurator_step_by_step.md
new file mode 100644
index 0000000000..bbfb71d5a6
--- /dev/null
+++ b/docs/zh-cn/configurator_step_by_step.md
@@ -0,0 +1,63 @@
+# QMK 配置器: 入门
+
+<!---
+ original document: 0.15.12:docs/configurator_step_by_step.md
+ git diff 0.15.12 HEAD -- docs/configurator_step_by_step.md | cat
+-->
+
+本章节描述了如何使用QMK配置器构建出固件文件的过程。
+
+## 第一步:选择键盘
+
+从下拉列表中选择一款用于创建键映射的键盘。
+
+?> 当键盘有多个版本可选择时,请确保选择正确。
+
+因为很重要,这里我再次说一遍:
+
+!> **请选择正确的版本!**
+
+如果你的键盘声称是基于QMK的但未在列表中,可能是开发者还未提交给我们,或者提交还未被合并进来。若在[Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard)中没有找到请求支持该键盘的issue,请到[QMK固件](https://github.com/qmk/qmk_firmware/issues)提交一个issue。也有一些基于QMK的键盘是由制造商自己的GitHub账号在维护着,请也确认一下。 <!-- FIXME(skullydazed): This feels too wordy and I'm not sure we want to encourage these kinds of issues. Also, should we prompt them to bug the manufacutrer? -->
+
+## 第二部:选择键盘配列
+
+选择最适合你要创建的键映射的配列,一些键盘的配列不完整或有问题,后续会逐渐支持。
+
+!> 有时会遇到没有特别适合的配列的情况,请选择 `LAYOUT_all`。
+
+## 第三步:命名你的键映射
+
+如何起名完全取决于你。
+
+?> 如果编译时遇到了问题,可能是因为QMK固件代码库中已经有了同名项,可以尝试改一下名字。
+
+## 第四步:设计你的键映射
+
+以下三种方法可以添加键码:
+
+1. 拖拽
+2. 点击布局上的空白项,再点击所需的键码
+3. 点击布局上的空白项, 再点击你物理键盘上的按键
+
+?> 鼠标在键上悬停时会有一个键码值的提示出现,详细描述信息请参见:
+
+* [基础键码资料](zh-cn/keycodes_basic.md)
+* [进阶键码资料](zh-cn/feature_advanced_keycodes.md)
+
+!> 如果你选择的配列与物理实机有出入,请将不需要的按键留空。如果不清楚应该用哪个键,例如,你只需要一个退格键,但 `LAYOUT_all` 中有两个退格键,须将两个键都放上一样的键码。
+
+## 第五步:保存键映射留待后续修订
+
+当你调整完毕键映射方案,或打算以后继续编辑,点击 `导出Keymap JSON文件(Download this QMK Keymap JSON File)` 按钮,当前键映射方案将保存到你的计算机中,之后可以点击 `导入Keymap JSON文件(Upload a QMK Keymap JSON File)` 按钮导入后继续编辑。
+
+!> **注意:** 导出的.json文件与 kbfirmware.com 和其它工具软件生成的并不兼容,如果你将导出的数据放到那些工具中,或尝试导入那些工具生成的.json文件,是不可行的。
+
+## 第六步:编译固件
+
+点击绿色的 `编译(Compile)` 按钮。
+
+编译完成后,可以点击绿色的 `固件(Download Firmware)` 下载固件文件。
+
+## 下一步:刷写到键盘中
+
+参见[刷写固件](zh-cn/newbs_flashing.md).
diff --git a/docs/zh-cn/configurator_troubleshooting.md b/docs/zh-cn/configurator_troubleshooting.md
new file mode 100644
index 0000000000..a48ad1dd72
--- /dev/null
+++ b/docs/zh-cn/configurator_troubleshooting.md
@@ -0,0 +1,31 @@
+# 配置器问题排查
+
+<!---
+ original document: 0.15.12:docs/configurator_troubleshooting.md
+ git diff 0.15.12 HEAD -- docs/configurator_troubleshooting.md | cat
+-->
+
+## 我的 .json 文件不可用
+
+如果该 .json 文件确实是QMK配置器中导出的,恭喜你遇到bug了,请在[QMK配置器](https://github.com/qmk/qmk_configurator/issues)库中提交一个issue。
+
+如果不是……那么页面顶部加大加粗的提示让你不要使用其它 .json 文件,你是怎么错过的?
+
+## 我的配列中有好多空格键,我应该怎么处理?
+
+如果你是说有三个空格键栏,最好的做法是都放上空格键。这个处理方案也适用于退格键和Shift键。
+
+## 用于...的键码是什么?
+
+参见:
+
+* [基础键码资料](zh-cn/keycodes_basic.md)
+* [进阶键码资料](zh-cn/feature_advanced_keycodes.md)
+
+## 无法编译
+
+请检查键映射中所有的层,确保没有随机(random)键。
+
+## Bug及其它问题
+
+我们很乐意倾听你的需求及bug报告,请到[QMK配置器](https://github.com/qmk/qmk_configurator/issues)代码库中提交吧。
diff --git a/docs/zh-cn/contributing.md b/docs/zh-cn/contributing.md
index 6424d330ce..03d3ea916a 100644
--- a/docs/zh-cn/contributing.md
+++ b/docs/zh-cn/contributing.md
@@ -1,123 +1,78 @@
# 如何做贡献
+<!---
+ original document: 0.15.12:docs/contributing.md
+ git diff 0.15.12 HEAD -- docs/contributing.md | cat
+-->
+
👍🎉 首先感谢各位百忙之中抽空阅读本文档,并为我们无私奉献。给您点赞啦! 🎉👍
-第三方的帮助让Q酱成长了许多呢,Q酱也从你们那学到了不少新东西。Q酱希望每一个想帮助我的人都能很方便的做出有用的贡献。在这里我给摩拳擦掌的你们写了一点引导,让你们的代码在不对我做重大改动的情况下都能成功的被采纳哦。
+第三方的帮助让QMK获得了成长与进步。我们希望提供一套对贡献者和维护者都感到简便实用的PR(pull request)及贡献流程,因此我们整理出了一些准则,以免你的PR在被接纳前需要大改一番。
-* [项目概况](#项目概况)
-* [代码规范](#代码规范)
-* [一般教程](#一般教程)
-* [行为守则对于我来说有何意义?](#行为守则对于我来说有何意义?)
+* [项目概况](#project-overview)
+* [代码规范](#coding-conventions)
+* [一般教程](#general-guidelines)
+* [行为守则对于我来说有何意义?](#what-does-the-code-of-conduct-mean-for-me)
## 这文章巨长无比不想读啊! 我就想问个问题而已!
-您要是想问关于Q酱的问题的话可以在[OLKB Subreddit](https://reddit.com/r/olkb)或者是[Discord](https://discord.gg/Uq7gcHh)随意问。
+您要是有关于QMK的问题,请在[OLKB Subreddit](https://reddit.com/r/olkb)或者是[Discord](https://discord.gg/Uq7gcHh)上进行提问。
请记住:
-* 维护Q酱的小可爱有的时候可能会有点忙,不能及时回答您的问题,耐心等等,他们都是很nice的人呀。
-* 维护Q酱的人都是很无私的善良的人。无论是贡献代码还是回答问题,都是义务的。有时见到他们努力回答各种问题,解决各种BUG,Q酱也是很心疼的。
+* 你的问题也许要过几个小时才会有人回复,请耐心一些。
+* 参与到QMK中的成员都是在无偿地贡献着自己的时间和精力,我们没有受雇于开发QMK或是专职回答你的疑问。
* 您可以看看下面的教程,可以让您的问题浅显易懂,更容易回答:
* https://opensource.com/life/16/10/how-ask-technical-questions
* http://www.catb.org/esr/faqs/smart-questions.html
-# 项目概况
+# 项目概况 :id=project-overview
-Q酱很大一部分是用C语言组成的,不过有一小部分特性是C++的。怎么说呢,都是我的一部分,两个我都爱。Q酱一般是在键盘上的嵌入式处理器那里工作的,尤其与AVR([LUFA](https://www.fourwalledcubicle.com/LUFA.php))和ARM ([ChibiOS](https://www.chibios.org))两小哥哥搭配,干活不累,嘻嘻。如果您精通Arduino的话您会发现很多熟悉的概念,但也有点不爽,因为您以前的经验可能没法用来帮助Q酱。
+QMK很大一部分是C语言编写的,小部分特性是C++的。QMK的设计目标是在键盘上的嵌入式处理器中工作,如AVR([LUFA](https://www.fourwalledcubicle.com/LUFA.php))和ARM ([ChibiOS](https://www.chibios.org))。如果您对Arduino很熟悉的话,会发现优缺点也基本是相似的。但无论你之前是否有Arduino使用经验,都不会影响你参与到QMK贡献中来。
-<!-- 需要修正: 这里放些学习C语言的资源。另外感谢修正的小可爱。谢谢您了。-->
+<!-- FIXME: 这里应当放些C语言的学习资源。 -->
-# Q酱,我在哪能帮助你嘞?
+# 我到哪里寻求帮助?
您要是有问题的话可以 [提出一个issue](https://github.com/qmk/qmk_firmware/issues) 或 [在Discord上交流一下](https://discord.gg/Uq7gcHh).
-# Q酱,我如何帮助你?
+# 我怎样才能做出贡献?
-您以前是否没为开源贡献过代码,而又想知道帮助Q酱是怎么一回事? 稍安勿躁,咱给您总结一下!
+您以前是否没有参与贡献过开源社区,而又想知道如何对QMK提供帮助?这里有一份快速指引!
+*译注:对于没有基本编程经验的人,请谨慎考虑这套操作流程,可参考,照着做很容易出问题,社区的语言障碍也会阻碍你对这些步骤的细节进行咨询*
0. 先注册一个 [GitHub](https://github.com) 账户。
-1. 做好一个你要贡献的布局,那就要 [找一个你想解决的问题](https://github.com/qmk/qmk_firmware/issues),或者 [找一个你想添加的特性](https://github.com/qmk/qmk_firmware/issues?q=is%3Aopen+is%3Aissue+label%3Afeature)。
-2. 把关联着问题的仓库分叉(fork)到你的仓库。这样你在`你的GitHub用户名/qmk_firmware`就有一个仓库备份啦。
-3. 使用 `git clone https://github.com/此处添GitHub用户名/此处添仓库名.git`这个命令把仓库同步到你的电脑中。
-4. 您要是想开发一个新特性的话可以先创建一个issue和Q酱的维护者讨论一下您要做什么。
-5. 使用`git checkout -b 此处写分支名字(别用汉字)`命令来创建一个分支(branch)用于开发。
+1. 完整整理出来你要贡献的键映射,或是 [找一个你想解决的问题](https://github.com/qmk/qmk_firmware/issues),或者 [找一个你想添加的特性](https://github.com/qmk/qmk_firmware/issues?q=is%3Aopen+is%3Aissue+label%3Afeature)。
+2. 把关联着问题的仓库fork到你的仓库。这样在`你的GitHub用户名/qmk_firmware` 下就有一个副本啦。
+3. 使用 `git clone https://github.com/你的GitHub用户名/仓库名.git` 命令把仓库同步到你的电脑中。
+4. 您要是想开发一个新特性的话可以先创建一个issue和QMK的维护者讨论一下您要做什么。
+5. 使用 `git checkout -b 此处写分支名字(别用汉字)` 命令来创建一个新分支(branch)用于开发。
6. 对要解决的问题或要添加的特性进行适当的更改。
7. 使用 `git add 把改变的文件的目录写这里` 可以添加改变的文件内容到git用于管理工程状态的索引(快照)里。
8. 使用 `git commit -m "这里写修改的相关信息"` 来描述你做出了什么修改。
9. 使用 `git push origin 此处写分支名字`来把你的更改同步到GitHub库里(反正不是打篮球那个库里)。
10. 提交一个[QMK 固件的pull request](https://github.com/qmk/qmk_firmware/pull/new/master)。
-11. 给你的pull request拟一个标题,包括简短的描述和问题或错误代码。比如, 你可以起一个这样的"Added more log outputting to resolve #4352"(最好用英语,毕竟Q酱的中文也不是那么的溜,有可能会看不懂中文)。
-12. 在描述(description)里面写你做了哪些更改,你的代码里还存在什么问题, 或者你想问维护的小可爱们的问题。你的your pull request有点小问题无伤大雅(本来也没有完美的代码嘛), 维护的小可爱们会竭尽全力帮您改进的!
+11. 给你的pull request拟一个标题,包括简短的描述和问题或错误代码。比如, 你可以起一个这样的"Added more log outputting to resolve #4352"(最好用英语,毕竟QMK的维护团队成员都是英语语系,有可能会看不懂中文)。
+12. 在描述(description)里面写你做了哪些更改,你的代码里还存在什么问题, 或者你想对QMK维护着询问的问题。你的pull request有点小问题无伤大雅(没有完美的pull request), QMK维护团队会尽力帮您改进的!
13. 维护人员审查代码可能需要一些时间。
14. 维护人员会通知您要更改什么地方,然后您就按照建议改一改。
-15. 预祝您合并成功!
-
-# 代码规范
-
-其实也没有什么特别严格的规范啦,但是俗话说的好:没有规矩,不成方圆。您可以看一下您的要改动的代码周围的画风,然后保持队形。如果你感觉周围都不知道是什么牛鬼蛇神的话就看看下面的建议:
-
-* 我们用肆(4)个空格来缩进(软件中也可以设置到Tab键)
-* 我们使用改良的1TBS(允许单行样式)
- * 左大括号: 在开放性语句块那行的末尾
- * 右大括号: 和开放性语句块第一个字母对齐
- * Else If: 将右大括号放在行的开头,下一个左大括号放在同一行的结尾
- * 可选大括号: 可选大括号是必选的
- * 应该这样: if (condition) { return false; }
- * 不应该这样: if (condition) return false;
-* 建议使用C语言风格的注释: `/* */`
- * 把注释想象成一个描述特征的故事
- * 充分使用注释来描述你为何这样修改
- * 有些公认的东西就不要写到注释里面了
- * 如果你不知道注释是否多余,看下面
-* 一般不要主动换行,主动换行的话每行不要超过76列
-* 要把 `#pragma once` 放到头文件的开始哦,抛弃老土的(`#ifndef THIS_FILE_H`, `#define THIS_FILE_H`, ..., `#endif`)吧
-* 下面两种预处理命令都可以用: `#ifdef DEFINED` 还有 `#if defined(DEFINED)`
- * 以上那句对处女座不是很友好哈,处女座的朋友们就别纠结了,直接 `#if defined(DEFINED)` 。
- * 还有就是选好一种风格就一直用,一直用一直爽,不要朝三暮四, 除非你要变化到多重条件的 `#if`。
- * `#` 和 `if`要挨在一起哦,再让本空格在中间冒充电灯泡本空格会生气的。
- * 以下是缩进规则:
- * 首先考虑可读性,强迫症的朋友们总想要保持代码的高一致性,这样可不好。
- * 保证文件已有风格不变。如果代码本来就是杂糅风格,那就见机行事,让你的修改更有意义些。
- * 其实你也可以在缩进的时候看看周围其他代码,然后范水模山,预处理命令可以有自己的缩进风格。
-
-可以参照下面:
-
-```c
-/* foo 的 Enums*/
-enum foo_state {
- FOO_BAR,
- FOO_BAZ,
-};
-
-/* 有返回值的情况 */
-int foo(void) {
- if (some_condition) {
- return FOO_BAR;
- } else {
- return -1;
- }
-}
-```
-
-# Clang-format的自动格式化
-[Clang-format](https://clang.llvm.org/docs/ClangFormat.html) 是LLVM的一部分,可以帮你自动格式化代码。我们给你准备好了一个适用于以上规范的配置文件,会帮你调整缩进和换行,你只需要写好括号就好。有了它,你再也不用担心调整代码格式太耗时,没有时间陪伴自己(虚构)的另一半了。
-
-使用[LLVM 完整安装](https://llvm.org/builds/)可以在Windows上安装clang-format, Ubuntu用户要用`sudo apt install clang-format`。
+15. 你的pull request合并成功了,恭喜!
-命令行的朋友们, 加上 `-style=file`选项就会自动在QMK的根目录寻找.clang-format配置文件了。
+# 代码规范 :id=coding-conventions
-VSCode用户, 标准的 C/C++ 插件就支持clang-format, 或者可以用[独立扩展](https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat)也行。
+我们的编码风格很容易掌握,如果你有C语言或Python编码经验,跟随我们的编码风格不会有什么困难。
-有些东西(比如LAYOUT宏) 会被clang-format打乱,所以那些文件就别用clang-format了,这里就教您一个小窍门,在`// clang-format off` 和 `//clang-format on`之间装上会被搞乱的代码就好了。
+* [编码规范 - C](zh-cn/coding_conventions_c.md)
+* [编码规范 - Python](zh-cn/coding_conventions_python.md)
-# 一般教程
+# 基本准则 :id=general-guidelines
-你可以给Q酱的不同部分添砖加瓦,但也要用不同的方法严谨检查。不论你修改哪里最好还是看看下边。
+在QMK中存在多种类型的修改需求,因此也会有审查严格性上的差异。请在做出任何修改时留意,你的改动隶属于什么类型。
* 将PR(pull request)分成一个个的逻辑单元。 比如,不要一次将两个新特性PR出去。要添加的特性排好队,一个一个来。
-* 提交之前看一眼,`git diff --check`的空格一定要写对了
+* 提交之前使用 `git diff --check` 做以下检查,不要提交多余的空格
* 确定你的代码能通过编译
- * 布局: 确定`make keyboard:your_new_keymap` 不返回错误
+ * 键映射: 确定`make keyboard:your_new_keymap` 不返回错误
* 键盘: 确定 `make keyboard:all` 不返回错误
* 核心代码: 确定 `make all` 不返回错误
* 提交的信息尽量明确。第一行写点简短介绍(每行不多于70个英文字母), 第二行空着,第三行和后面就要写些必要的细节了。最好用英文写,比如:
@@ -130,13 +85,15 @@ The kerpleplork was intermittently failing with error code 23. The root cause wa
Limited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure.
```
+!> **特别留意:** 若你要对其它QMK使用者提交的代码进行功能修改或尝试修复bug,例如非默认的键映射、用户空间和配列部分,须在PR中标记出代码的原始提交者。很多QMK使用者都会对自己提交的代码在不知晓的情况下产生了改动感到困惑和沮丧,无论他的Git及Github经验丰富与否。
+
## 文档
-想帮助Q酱当然是先看文档最简单了。找到这个文档哪里错了然后改正它对于你来说超级简单! 我们也对有写文档能力的人求贤若渴,如果你是对的人[点这个](#Q酱,我在哪能帮助你嘞?)!
+对文档进行修正是最简单的参与贡献的一个办法,找到错误放置的文档或是修复不完备的部分很容易!我们也急需能修订文档的贡献者参与进来,所以如果你具备这样的能力但不清楚如何开始,请[看这里](#我怎样才能做出贡献?)!
-文档呢,都静静的放在`qmk_firmware/docs` 目录里, 也或者您想为网页做贡献的话也是可以的哦。
+文档位于 `qmk_firmware/docs` 目录下,如果你习惯于在web页面中完成工作目标,可以在 https://docs.qmk.fm/ 各文档页面下方点击“Edit this page”在线进行编辑。
-在文档中附代码案例时, 先观察文档其他地方的命名规范。比如, 把enums的名字都改成像`my_layers`或者`my_keycodes`来防止名字不一致的enums被当作特务枪毙:
+在文档中附代码案例时, 先观察文档其他地方的命名规范。比如, 将enum类型的定义命名为 `my_layers` 或 `my_keycodes` 的形式可以保持前后一致性:
```c
enum my_layers {
@@ -150,56 +107,69 @@ enum my_keycodes {
};
```
-## 布局
+### 预览文档 :id=previewing-the-documentation
-大多数QMK新手都从创建一个自己的布局开始。我们尽力保证布局规范宽松 (毕竟布局是个性的体现) 不过建议遵守以下准则,这样可以让别人更好理解你的代码
+在发起pull request前,请通过文档预览来检查你的本地更改。可以在 `qmk_firmware/` 目录下执行以下命令来配置文档开发环境:
-* 用 [模板](documentation_templates.md)写个`readme.md`。
-* 所有的布局PR都会被squash, 如果你想知道你的提交是怎么被squash的那你就自己来吧
-* 不要把新特性和布局一起PR。可以分别PR他们
-* 布局文件夹就不要放`Makefile`了,这个操作都过时啦
-* 更新文件头部的copyrights(看`%YOUR_NAME%`那)
+ qmk docs
+
+或者,如果你有安装Python 3,可以尝试:
+
+ python3 -m http.server 8936 --directory docs
+
+然后在本地浏览器打开 `http://localhost:8936/`.
+
+## 键映射
+
+大多数QMK新手都从创建一个自己的键映射
+开始。我们尽力保证键映射规范宽松 (毕竟键映射体现的是个人喜好) 不过我们仍要求须遵守以下准则,以便他人更好地发现并理解你的键映射代码。
+
+* 使用这份 [模板](zh-cn/documentation_templates.md) 写一份 `readme.md`。
+* 所有的键映射PR都会被压缩处理(squashed,参见[Github文档](https://docs.github.com/cn/github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges)),如果你对commit被压缩很介意,请自行处理
+* 不要把新特性和键映射放在一个PR中。先提交新特性,再通过PR提交键映射
+* 键映射文件夹中不要提交 `Makefile` 文件(已不再使用)
+* 更新头文件中的copyrights信息(看 `%YOUR_NAME%` 部分)
## 键盘
-QMK的最终归宿是键盘。有些键盘是社区维护的,有一些是制作这些键盘的人维护的。`readme.md`会告诉你是谁维护了这个键盘,如果你对某个键盘有疑问,可以 [创建一个Issue](https://github.com/qmk/qmk_firmware/issues) 来问一问维护者。
+QMK的最终归宿是键盘。有些键盘是社区维护的,有一些是制作这些键盘的人维护的。`readme.md` 会告诉你是谁维护了这个键盘,如果你对某个键盘有疑问,可以 [创建一个Issue](https://github.com/qmk/qmk_firmware/issues) 来问一问维护者。
我们建议你按下面的来操作:
-* 用[模板](documentation_templates.md)写`readme.md`。
-* 提交数量尽量合理,不然我们可就要把你的PR给squash了。
-* 不要把新特性和新键盘一起PR。可以分别PR他们
-* 用父文件夹的名字命名 `.c`/`.h`文件, 比如`/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
+* 基于[模板](zh-cn/documentation_templates.md)编写 `readme.md`。
+* commit数量尽量合理,否则你的PR可能会被我们压缩。
+* 不要把新特性和新键盘定义放在一个PR中。先提交新特性,再通过PR提交新键盘定义
+* 用最近一级的父文件夹的名字命名 `.c`/`.h` 文件, 比如 `/keyboards/<kb1>/<kb2>/<kb2>.[ch]`
* 键盘文件夹就不要放`Makefile`了,这个操作都过时啦
* 更新文件头部的copyrights(看`%YOUR_NAME%`那)
## Quantum/TMK 核心
-在您废寝忘食地开发Q酱新特性或者帮Q酱驱虫之前,一定要确保你的工作是有意义的。看看[了解QMK](understanding_qmk.md)你会对Q酱有更深的了解,这个文档将带你领略QMK的程序流程。现在你应该和维护团对谈谈来了解实现你想法的最佳方法了。一下渠道都可以:
+在你投入大量精力到新功能开发中之前,请先确保使用了最佳的实现方案。通过阅读[了解QMK](zh-cn/understanding_qmk.md)可以获得对QMK的基本认知,这个文档将带你领略QMK的程序流程,然后你可以和维护团队探讨一下实现你想法的最佳方法的思路,以下渠道都可以:
-* [在Discord交流](https://discord.gg/Uq7gcHh)
+* [在Discord中交流](https://discord.gg/Uq7gcHh)
* [建立一个Issue](https://github.com/qmk/qmk_firmware/issues/new)
-新特性和BUG的修复影响所有键盘。开发组也在翻修QMK。所以,在实施重大返修之前一定要讨论一下。如果你在没有事先与维护团队沟通的情况下提交了一个PR,而且你的选择与维护团队的计划方向不符,那你可能要面临大改了。
+新特性和BUG的修复影响所有键盘,开发组也在翻修QMK。所以,在实施重大改动之前一定要讨论一下。如果你在没有事先与维护团队沟通的情况下提交了一个PR,而且你的选择与维护团队的计划方向不符,那你可能要面临大改了。
修复BUG或者开发新特性之前看看这个:
-* **默认不启用** - QMK运行的芯片多数内存有限,所以首要考虑的还应该是布局不要被破坏,于是特性默认是不启用的。你喜欢什么特性的话就打开它,如果你觉得有些特性应该默认开启或者你能帮助缩减代码,那就联系维护组吧。
-* **提交之前在本地编译** - 这个简直就是家喻户晓了,但是也确实需要编译啊! 我们的Travis系统会发现一切问题,但是自己编译一下可要比在线等快多了。
-* **注意版本和芯片平台** - 有那么几个键盘有支持不同配置甚至是不同芯片的版本。试着写一个能AVR和ARM两个平台运行的特性,或者在不支持的平台自动禁用。
+* **默认不启用** - QMK运行的芯片多数内存有限,首要考虑的应是已有的键映射不要被破坏,因此你的功能应当是“可以**启用**”的,而不是“可以禁用”的。如果你觉得该特性应该默认开启或者你能帮助缩减代码,请先和我们沟通一下。
+* **提交之前在本地编译** - 这个简直就是家喻户晓了,但是也确实需要编译啊! 在你发起PR前,请确保任何改动都通过了编译验证。
+* **注意版本和芯片平台兼容性** - 有那么几个键盘有支持不同配置甚至是不同芯片的版本。请确保你开发的特性同时支持AVR和ARM两个平台,或者在不支持的平台自动禁用。
* **解释你的新特性** - 在`docs/`写个文档, 你可以创建新文档或者写到现有文档中。如果你不把它记录下来,其他人就无法从你的努力中获益。
也可以看看以下建议:
-* 提交数量尽量合理,不然我们可就要把你的PR给squash了。
-* 不要把新特性、布局和键盘一起PR。可以分别PR他们。
-* 给你的特性写[单元测试](unit_testing.md)。
-* 你编辑的文件风格要一致,如果风格不明确或者是混搭风的,你就要先看看[代码规范](#代码规范)确认情况。
+* commit数量尽量合理,否则你的PR可能会被我们压缩。
+* 不要把新键盘定义或新键映射与关键改动放在一个PR中。先提交关键改动。
+* 给你的特性编写[单元测试](zh-cn/unit_testing.md)。
+* 你编辑的文件风格要一致,如果风格不明确或者是混搭风的,请先阅读上方的[代码规范](#coding-conventions)。
## 重构
-为了保持QMK脉络清晰,Q酱打算深入规划重构一下自己,然后让合作者进行修改。如果你有重构的思路或建议[创建一个issue](https://github.com/qmk/qmk_firmware/issues), Q酱很乐意讨论一下怎么改进一下。
+为了保持QMK脉络清晰,QMK的深度重构工作已在规划中,并会通过合作者进行相应的修改。如果你有重构的思路或建议请[创建一个issue](https://github.com/qmk/qmk_firmware/issues), 我们很乐意讨论一下QMK可以如何改进。
-# 行为守则对于我来说有何意义?
+# 行为守则对于我来说有何意义? :id=what-does-the-code-of-conduct-mean-for-me
-我们的[行为守则](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) 是说明您有责任尊重和礼貌地对待项目中的每个人,无论他们的身份如何。 如果你是我们行为准则所描述的不当行为的受害者,我们将站在你这边,并按照行为准则对施暴者进行适当谴责。
+我们的[行为守则](https://qmk.fm/coc/) 指出您有责任尊重并礼貌地对待项目中的每个人,无论他们的身份如何。如果你是我们行为守则所描述的不当行为的受害者,我们将站在你这边,尽最大努力对施暴者进行谴责。
diff --git a/docs/zh-cn/custom_quantum_functions.md b/docs/zh-cn/custom_quantum_functions.md
index 1ae996e392..29c5089052 100644
--- a/docs/zh-cn/custom_quantum_functions.md
+++ b/docs/zh-cn/custom_quantum_functions.md
@@ -1,31 +1,35 @@
-# 如何定制你键盘的功能
+# 如何定制化键盘功能
-对于很多人来说客制化键盘可不只是向你的电脑发送你按了那个件这么简单。你肯定想实现比简单按键和宏更复杂的功能。QMK有能让你注入代码的钩子, 覆盖功能, 另外,还可以自定义键盘在不同情况下的行为。
+<!---
+ original document: 0.15.12:docs/custom_quantum_functions.md
+ git diff 0.15.12 HEAD -- docs/custom_quantum_functions.md | cat
+-->
-本页不假定任何特殊的QMK知识,但阅读[理解QMK](understanding_qmk.md)将会在更基础的层面帮你理解发生了什么。
+对于很多人来说对客制化键盘的诉求不只是向电脑输入按下的键。你肯定想实现比简单按键和宏更复杂的功能。QMK支持基于注入点的代码注入,功能重写,另外还可以自定义键盘在不同情况下的行为。
-## A Word on Core vs 键盘 vs 布局
+本页不要求任何额外的QMK知识基础,但阅读[理解QMK](zh-cn/understanding_qmk.md)将会在更基础的层面帮你理解发生了什么。
-我们把qmk组织成一个层次结构:
+## 核心/键盘/键映射的概念 :id=a-word-on-core-vs-keyboards-vs-keymap
+
+QMK基于如下层级组成:
* Core (`_quantum`)
* Keyboard/Revision (`_kb`)
* Keymap (`_user`)
-下面描述的每一个函数都可以在定义上加一个`_kb()`或 `_user()` 后缀。 建议在键盘/修订层使用`_kb()`后缀,在布局层使用`_user()`后缀。
+该文后续部分所提及的函数在定义时皆可添加 `_kb()` 或 `_user()` 后缀,我们建议在键盘及其子版本中使用 `_kb()` 后缀,而在键映射中使用 `_user()` 后缀。
-在键盘/修订层定义函数时,`_kb()`在执行任何代码前先调用`_user()`是必要的,不然布局层函数就不要被调用。
-<!-- 翻译问题:上面那句翻译的不太好-->
+在键盘及其子版本中定义函数时,一个重要的点是在 `_kb()` 函数执行任何逻辑前,应先调用 `_user()` 函数,否则这些键映射中的函数将没有机会被执行。
# 自定义键码
到目前为止,最常见的任务是更改现有键码的行为或创建新的键码。从代码角度来看这些操作都很相似。
## 定义一个新键码
-创建键码第一步,先枚举出它全部,也就是给键码起个名字并分配唯一数值。QMK没有直接限制最大键码值大小,而是提供了一个`SAFE_RANGE`宏。你可以在枚举时用`SAFE_RANGE`来保证你取得了唯一的键码值。
+创建键码的第一步,是先定义其枚举值,也就是给键码起个名字并分配一个唯一值。QMK没有直接限制最大可用的键码值,而是提供了一个 `SAFE_RANGE` 宏。你可以在定义枚举时用 `SAFE_RANGE` 来保证你取得了唯一的键码值。
-这有枚举两个键码的例子。把这块加到`keymap.c`的话你就在布局中能用`FOO`和`BAR`了。
+这有定义两个键码的枚举值的例子。添加以下代码块至 `keymap.c` 后你就可以在布局中使用 `FOO` 和 `BAR` 了。
```c
enum my_keycodes {
@@ -34,15 +38,15 @@ enum my_keycodes {
};
```
-## 为键码的行为编程
+## 编程设计你的键码的行为 :id=programming-the-behavior-of-any-keycode
-当你覆盖一个已存在按键的行为时,或将这个行为赋给新键时,你要用`process_record_kb()`和`process_record_user()`函数。这俩函数在键处理中真实键事件被处理前被QMK调用。如果这俩函数返回`true`,QMK将会用正常的方式处理键码。这样可以很方便的扩展键码的功能而不是替换它。如果函数返回`false` QMK会跳过正常键处理,然后发送键子抬起还是按下事件就由你决定了。
+当你覆盖一个已存在按键的行为时,或是给新按键设计功能时,请使用 `process_record_kb()` 和 `process_record_user()` 函数。QMK会在响应并处理按键事件前调用这些函数,如果这些函数返回值为 `true`,QMK将继续用常规的方式处理键码,这样可以很方便的扩展键码的功能而不需要替换代码实现。如果函数返回`false` QMK会跳过常规的键处理逻辑,需要发送的按键按下或抬起事件则需交由你负责完成。
-当某个键按下或释放时这俩函数会被调用。
+任意按键在按下或抬起时,每次都会调用这些函数。
-### process_record_user()`函数示例实现
+### process_record_user()` 实现示例
-这个例子做了两个事。自定义了一个叫做`FOO`的键码的行为,并补充了在按下回车时播放音符。
+这个例子做了两个事。自定义了一个叫做 `FOO` 的键码的行为,并提供了在按下回车时播放音符的功能。
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -51,7 +55,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
// 按下时做些什么
} else {
- // 释放时做些什么
+ // 抬起时做些什么
}
return false; // 跳过此键的所有进一步处理
case KC_ENTER:
@@ -59,21 +63,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
PLAY_SONG(tone_qwerty);
}
- return true; // 让QMK触发回车按下/释放事件
+ return true; // 让QMK响应回车按下/抬起事件
default:
- return true; // 正常处理其他键码
+ return true; // 正常响应其他键码
}
}
```
-### `process_record_*` 函数文档
+### `process_record_*` 实现示例
-* 键盘/修订: `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
-* 布局: `bool process_record_user(uint16_t keycode, keyrecord_t *record)`
+* 键盘/各子版本:`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
+* 键映射:`bool process_record_user(uint16_t keycode, keyrecord_t *record)`
-`keycode(键码)`参数是在布局上定义的,比如`MO(1)`, `KC_L`, 等等。 你要用 `switch...case` 块来处理这些事件。
+`keycode` 参数为键映射中形如 `MO(1)`,`KC_L` 等定义的键值项。 应使用 `switch...case` 代码块来处理这些事件。
-`record`参数含有实际按键的信息:
+`record` 参数含有按键的真实状态信息:
```c
keyrecord_t record {
@@ -88,108 +92,31 @@ keyrecord_t record {
}
```
-# LED控制
-
-qmk提供了读取HID规范包含的5个LED的方法。:
-
-* `USB_LED_NUM_LOCK`
-* `USB_LED_CAPS_LOCK`
-* `USB_LED_SCROLL_LOCK`
-* `USB_LED_COMPOSE`
-* `USB_LED_KANA`
-
-这五个常量对应于主机LED状态的位置位。
-有两种方法可以获得主机LED状态:
-
-* 通过执行 `led_set_user()`
-* 通过调用 `host_keyboard_leds()`
-
-## `led_set_user()`
-
-当5个LED中任何一个的状态需要改变时,此函数将被调用。此函数通过参数输入LED参数。
-使用`IS_LED_ON(usb_led, led_name)`和`IS_LED_OFF(usb_led, led_name)`这两个宏来检查LED状态。
-
-!> `host_keyboard_leds()`可能会在`led_set_user()`被调用前返回新值。
-
-### `led_set_user()`函数示例实现
-
-```c
-void led_set_user(uint8_t usb_led) {
- if (IS_LED_ON(usb_led, USB_LED_NUM_LOCK)) {
- writePinLow(B0);
- } else {
- writePinHigh(B0);
- }
- if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- writePinLow(B1);
- } else {
- writePinHigh(B1);
- }
- if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
- writePinLow(B2);
- } else {
- writePinHigh(B2);
- }
- if (IS_LED_ON(usb_led, USB_LED_COMPOSE)) {
- writePinLow(B3);
- } else {
- writePinHigh(B3);
- }
- if (IS_LED_ON(usb_led, USB_LED_KANA)) {
- writePinLow(B4);
- } else {
- writePinHigh(B4);
- }
-}
-```
-
-### `led_set_*`函数文档
-
-* 键盘/修订: `void led_set_kb(uint8_t usb_led)`
-* 布局: `void led_set_user(uint8_t usb_led)`
-
-## `host_keyboard_leds()`
-
-调用这个函数会返回最后收到的LED状态。这个函数在`led_set_*`之外读取LED状态时很有用,比如在[`matrix_scan_user()`](#矩阵扫描代码).
-为了便捷,你可以用`IS_HOST_LED_ON(led_name)`和`IS_HOST_LED_OFF(led_name)` 宏,而不直接调用和检查`host_keyboard_leds()`。
-
-## 设置物理LED状态
-
-一些键盘实现了为设置物理LED的状态提供了方便的方法。
-
-### Ergodox Boards
-
-Ergodox实现了提供`ergodox_right_led_1`/`2`/`3_on`/`off()`来让每个LED开或关, 也可以用 `ergodox_right_led_on`/`off(uint8_t led)` 按索引打开或关闭他们。
-
-此外,还可以使用`ergodox_led_all_set(uint8_t n)`指定所有LED的亮度级别;针对每个LED用`ergodox_right_led_1`/`2`/`3_set(uint8_t n)`;使用索引的话用`ergodox_right_led_set(uint8_t led, uint8_t n)`。
-
-Ergodox boards 同时定义了最低亮度级别`LED_BRIGHTNESS_LO`和最高亮度级别`LED_BRIGHTNESS_HI`(默认最高).
-
# 键盘初始化代码
-键盘初始化过程有几个步骤。你是用那个函数取决于你想要做什么。
+键盘初始化过程须经过几个步骤,而你的目的决定了你需要关注哪些函数。
有三个主要初始化函数,按调用顺序列出。
-* `keyboard_pre_init_*` - 会在大多数其他东西运行前运行。适用于哪些需要提前运行的硬件初始化。
-* `matrix_init_*` - 在固件启动过程中间被调用。此时硬件已初始化,功能尚未初始化。
-* `keyboard_post_init_*` - 在固件启动过程最后被调用。大多数情况下,你的“客制化”代码都可以放在这里。
+* `keyboard_pre_init_*` - 会在大多数其他功能运行前执行。适用于那些需要尽早执行的硬件初始化工作。
+* `matrix_init_*` - 在固件启动过程中被调用。此时硬件已初始化,但部分功能还不可用。
+* `keyboard_post_init_*` - 在固件启动过程的最后被调用。大多数情况下,你的“客制化”代码都可以放在这里。
-!> 对于大多数人来说`keyboard_post_init_user`是你想要调用的函数。例如, 此时你可以设置RGB灯发光。
+!> 对于大多数人来说 `keyboard_post_init_user` 是你想要关注的函数。例如, 你可以在这里启动RGB背光灯。
## 键盘预初始化代码
-这代码极早运行,甚至都在USB初始化前运行。
+这部分代码执行的非常早,甚至是在USB通信功能启动之前。
-在这之后不久矩阵就被初始化了。
+在这之后不久即会完成矩阵的初始化。
-对于大多数用户来说,这用不到,因为它主要是用于面向硬件的初始化。
+对于大多数用户来说不应在此处进行修改,因为它主要用于硬件初始化。
-但如果你有硬件初始化的话放在这里再好不过了(比如初始化LED引脚一类的).
+但如果你有硬件须初始化的话放在这里再好不过了(比如初始化LED引脚).
-### `keyboard_pre_init_user()`函数示例实现
+### `keyboard_pre_init_user()` 实现示例
-本例中在键盘级别,设定 B0, B1, B2, B3, 和 B4 是LED引脚。
+本例中,在键盘层将 B0, B1, B2, B3, 和 B4 引脚设置为LED引脚。
```c
void keyboard_pre_init_user(void) {
@@ -206,95 +133,110 @@ void keyboard_pre_init_user(void) {
### `keyboard_pre_init_*` 函数文档
-* 键盘/修订: `void keyboard_pre_init_kb(void)`
-* 布局: `void keyboard_pre_init_user(void)`
+* 键盘/各子版本:`void keyboard_pre_init_kb(void)`
+* 键映射:`void keyboard_pre_init_user(void)`
## 矩阵初始化代码
-这将会在矩阵初始化时被调用,在某些硬件设置好后,但在一些功能被初始化前。
+在矩阵初始化后被调用。此时一部分硬件已设置完成,但一些功能尚未完成初始化。
-这在你设置其他地方会用到的东西的时候会很有用,但与硬件无关,也不依赖于它的启动位置。
+此处可以用来设置一些与硬件无关,且对初始化位置没有特殊要求的功能。
-### `matrix_init_*`函数文档
+### `matrix_init_*` 函数文档
-* 键盘/修订: `void matrix_init_kb(void)`
-* 布局: `void matrix_init_user(void)`
+* 键盘/各子版本:`void matrix_init_kb(void)`
+* 键映射:`void matrix_init_user(void)`
+### 低级矩阵函数的重写 :id=low-level-matrix-overrides
-## 键盘后初始化代码
+* GPIO引脚初始化:`void matrix_init_pins(void)`
+ * 此处须完成低级行列引脚的初始化。默认实现中,这里会参考可选的键盘设置项 `ROW2COL`,`COL2ROW` 及 `DIRECT_PINS` 来初始化所有 `MATRIX_ROW_PINS` 及 `MATRIX_COL_PINS` 中定义的GPIO引脚的输入/输出状态。当键盘设计者重写该函数后,QMK本身不会进行任何引脚的初始化,只会听从重写的函数的实现逻辑。
+* `COL2ROW`-从行中读: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
+* `ROW2COL`-从列中读: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)`
+* `DIRECT_PINS`-直读: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
+ * 以上三个函数须参考矩阵类别,从底层矩阵的相关引脚状态中获取输入信息,并且应该只需要实现三者之一。默认情况下,在遍历 `MATRIX_ROW_PINS` and `MATRIX_COL_PINS` 时,会根据是否设置了 `ROW2COL`,`COL2ROW` 或 `DIRECT_PINS` 来配置输入输出方式。当键盘设计者重写该函数后,QMK本身不会进行任何矩阵GPIO引脚状态的变更,只会听从重写的函数的实现逻辑。
-这是键盘初始化过程中的最后一个任务。如果您想更改某些特性,这会很有用,因为此时应该对它们进行初始化。
+## 键盘后初始化代码
+这是键盘初始化过程中的最后一个任务。此时您可以配置并调整某些特性,因为此时这些特性已初始化完毕。
-### `keyboard_post_init_user()`示例实现
+### `keyboard_post_init_user()` 实现示例
-本示例在所有初始化完成后运行,配置RGB灯。
+本示例在所有初始化完成后运行,配置RGB背光。
```c
void keyboard_post_init_user(void) {
// 调用后初始化代码
rgblight_enable_noeeprom(); // 使能Rgb,不保存设置
- rgblight_sethsv_noeeprom(180, 255, 255); // 将颜色设置到蓝绿色(青色)不保存
- rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // 设置快速呼吸模式不保存
+ rgblight_sethsv_noeeprom(180, 255, 255); // 将颜色设置到蓝绿色(青色),不保存设置
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3); // 设置快速呼吸模式,不保存设置
}
```
### `keyboard_post_init_*` 函数文档
-* 键盘/修订: `void keyboard_post_init_kb(void)`
+* 键盘/各子版本:`void keyboard_post_init_kb(void)`
* 布局: `void keyboard_post_init_user(void)`
-# 矩阵扫描代码
+# 矩阵扫描码
-可能的话你要用`process_record_*()`自定义键盘,以这种方式连接到事件中,以确保代码不会对键盘产生负面的性能影响。然而,在极少数情况下,有必要进行矩阵扫描。在这些函数中要特别注意代码的性能,因为它每秒至少被调用10次。
+应尽量使用 `process_record_*()` 实现所需的键盘自定义以及事件监听,以确保这些代码不会对键盘性能产生负面的影响。然而,在极少数情况下需要在矩阵扫描中添加监听,此时需要极端留意这些函数代码的性能表现,因为这些函数每秒可能被执行十数次。
-### `matrix_scan_*`示例实现
+### `matrix_scan_*` 实现示例
-这个例子被故意省略了。在hook这样一个对性能及其敏感的区域之前,您应该足够了解qmk的内部结构,以便在没有示例的情况下编写。如果你需要帮助,请[建立一个issue](https://github.com/qmk/qmk_firmware/issues/new)或[在Discord上与我们交流](https://discord.gg/Uq7gcHh).
+这个例子被故意省略了。在监听处理这样一个对性能及其敏感的部分之前,您应该足够了解qmk的内部结构,才可以在没有示例的情况下编写。如果你需要帮助,请[新建一个issue](https://github.com/qmk/qmk_firmware/issues/new)或[在Discord上与我们交流](https://discord.gg/Uq7gcHh).
### `matrix_scan_*` 函数文档
-* 键盘/修订: `void matrix_scan_kb(void)`
+* 键盘/各子版本:`void matrix_scan_kb(void)`
* 布局: `void matrix_scan_user(void)`
该函数在每次矩阵扫描时被调用,这基本与MCU处理能力上限相同。在这里写代码要谨慎,因为它会运行很多次。
-你会在自定义矩阵扫描代码时用到这个函数。这也可以用作自定义状态输出(比如LED灯或者屏幕)或者其他即便用户不输入你也想定期运行的功能。
+在需要自定义矩阵扫描代码时可以使用该函数。这也可以用作自定义状态输出(比如LED灯或者屏幕)或者其他即便用户没有输入时你也想定期运行的功能。
+
+# Keyboard housekeeping
+
+* 键盘/各子版本:`void housekeeping_task_kb(void)`
+* 键映射:`void housekeeping_task_user(void)`
+
+该函数在所有QMK处理工作完毕后,下一轮开始执行前被执行。可以放心地假设此时QMK已对最新的矩阵扫描结果完成了所有的处理工作 -- 更新层状态,发送USB事件,更新LED状态,刷新显示屏。
+与 `matrix_scan_*` 类似,这些函数会频繁调用直至MCU处理能力上限。为了确保键盘的响应能力,建议在这些函数中尽量做最少的事情,在你确实需要在这里实现特别的功能时,可能会影响到其它功能的表现。
# 键盘 空闲/唤醒 代码
-如果键盘支持就可以通过停止一大票功能来达到"空闲"。RGB灯和背光就是很好的例子。这可以节约能耗,也可能让你键盘风味更佳。
+在主控板支持情况下,暂停大部分功能可以实现“空闲”状态,例如RGB灯光和背光。既可以节省电量消耗,也可能增强键盘的表现。
-用两个函数控制: `suspend_power_down_*`和`suspend_wakeup_init_*`, 分别在系统板空闲和唤醒时调用。
+这由两个函数控制: `suspend_power_down_*` 和 `suspend_wakeup_init_*`,分别在主控板空闲和唤醒时被调用。
-### suspend_power_down_user()和suspend_wakeup_init_user()示例实现
+### suspend_power_down_user() 和 suspend_wakeup_init_user() 的实现示例
```c
void suspend_power_down_user(void) {
- // code will run multiple times while keyboard is suspended
+ // 当键盘挂起时会被多次调用的代码
}
void suspend_wakeup_init_user(void) {
- // code will run on keyboard wakeup
+ // 键盘唤醒时被调用的代码
}
```
### 键盘 挂起/唤醒 函数文档
-* 键盘/修订: `void suspend_power_down_kb(void)` 和`void suspend_wakeup_init_user(void)`
-* 布局: `void suspend_power_down_kb(void)` 和 `void suspend_wakeup_init_user(void)`
+* 键盘/各子版本:`void suspend_power_down_kb(void)` 和 `void suspend_wakeup_init_user(void)`
+* 键映射:`void suspend_power_down_kb(void)` 和 `void suspend_wakeup_init_user(void)`
-# 层改变代码
+# 层切换代码 :id=layer-change-code
-每当层改变这个就运行代码。这对于层指示或自定义层处理很有用。
+每当层发生切换时被执行,可用于感知层切换事件,或自定义层处理逻辑。
-### `layer_state_set_*` 示例实现
+### `layer_state_set_*` 实现示例
-本例使用了Planck键盘示范了如何设置 [RGB背光灯](feature_rgblight.md)使之与层对应
+本例中,通过Planck键盘示范了如何将[RGB背光灯](zh-cn/feature_rgblight.md)设置为与层同步。
```c
layer_state_t layer_state_set_user(layer_state_t state) {
@@ -311,36 +253,41 @@ layer_state_t layer_state_set_user(layer_state_t state) {
case _ADJUST:
rgblight_setrgb (0x7A, 0x00, 0xFF);
break;
- default: // for any other layers, or the default layer
+ default: // 默认层及其它层
rgblight_setrgb (0x00, 0xFF, 0xFF);
break;
}
return state;
}
```
+
+可以通过 `IS_LAYER_ON_STATE(state, layer)` 和 `IS_LAYER_OFF_STATE(state, layer)` 宏来确认常规层的状态。
+
+如果不在 `layer_state_set_*` 函数中,可以通过 `IS_LAYER_ON(layer)` 和 `IS_LAYER_OFF(layer)` 宏来确认全局的层状态。
+
### `layer_state_set_*` 函数文档
-* 键盘/修订: `uint32_t layer_state_set_kb(uint32_t state)`
+* 键盘/各子版本:`uint32_t layer_state_set_kb(uint32_t state)`
* 布局: `layer_state_t layer_state_set_user(layer_state_t state)`
-该`状态`是活动层的bitmask, 详见[布局概述](keymap.md#布局的层状态)
+此处的 `state` 为当前活跃层的位掩码, 详见[键映射概述](zh-cn/keymap.md#keymap-layer-status)
-# 掉电保存配置 (EEPROM)
+# 配置的持久存储(EEPROM)
-这会让你的配置长期的保存在键盘中。这些配置保存在你主控的EEPROM里,掉电不会消失。 设置可以用`eeconfig_read_kb`和`eeconfig_read_user`读取,可以用`eeconfig_update_kb`和`eeconfig_update_user`写入。这对于您希望能够切换的功能很有用(比如切换RGB层指示。此外,你可以用`eeconfig_init_kb`和`eeconfig_init_user`来设置EEPROM默认值。
+该功能可以让键盘的配置持久存储下来。这些配置存储在控制器的EEPROM中,即便掉电后依旧可以留存下来。可以通过 `eeconfig_read_kb` 和 `eeconfig_read_user` 来读取,通过 `eeconfig_update_kb` and `eeconfig_update_user` 来进行保存。该功能常用于保存一些开关状态(比如rgb层指示灯)。此外,可以通过 `eeconfig_init_kb` 和 `eeconfig_init_user` 来设置EEPROM的默认配置值。
-最复杂的部分可能是,有很多方法可以通过EEPROM存储和访问数据,并且并没有用哪种方法是“政治正确”的。你每个功能只有一个双字(四字节)空间。
+复杂的地方是,有很多方法可以存储和访问EEPROM数据,并且没有哪种方法是“正确”的。但是,每个功能只有一个双字(四字节)空间可用。
-记住EEPROM是有写入寿命的。尽管写入寿命很高,但是并不是只有设置写道EEPROM中。如果你写入频繁,你的MCU寿命将会变短。
+记住EEPROM是有写入寿命的。尽管写入寿命很高,但是并不是只有这些配置信息会写到EEPROM中。如果你写入过于频繁,你的MCU寿命将会急速减少。
-* 如果您不理解这个例子,那么您可能希望避免使用这个特性,因为它相当复杂。
+* 如果您不理解这个例子,那么您可以不使用这个特性,因为它相当复杂。
-### 示例实现
-
-本例讲解了如何添加设置,并且读写。本里使用了用户布局。这是一个复杂的函数,有很多事情要做。实际上,它使用了很多上述函数来工作!
+### 实现示例
+本例讲解了如何添加并读写设置项。本例使用用户键映射来实现。这是一个复杂的函数,有很多事情要做。实际上,它使用了很多前述的函数来工作!
+(译注:该示例由于英文行文,可能会觉得看得稀里糊涂。实现的功能很简单,即开启了层指示功能(RGB_LYR)时,rgb背光灯会展示当前层的特定颜色用以指示层状态,而触发任何改变rgb背光颜色的键码时,rgb背光灯将回归普通的背光灯角色,不再作为层指示器)
在你的keymap.c文件中,将以下代码添加至顶部:
```c
@@ -354,14 +301,14 @@ typedef union {
user_config_t user_config;
```
-以上代码建立了一个结构体,该结构体可以存储设置并可用于写入EEPROM。如此这般将无需定义变量,因为在结构体中已然定义。要记住`bool` (布尔)值使用1位, `uint8_t`使用8位, `uint16_t`使用16位。你可以混合搭配使用,但是顺序记错可能会招致麻烦,因为那会改变写入写出的值。
+以上代码建立了一个32位的结构体,用于在内存及EEPROM中存储配置项。此时不再需要再单独声明变量,因为都已经在该结构体中定义了。须记住 `bool`(布尔)值占用1位,`uint8_t` 占用8位,`uint16_t` 占用16位。你可以混合搭配使用,但改变这些顺序会因为错误的读写而招致问题。
- `layer_state_set_*`函数中使用了`rgb_layer_change`,使用了`keyboard_post_init_user`和`process_record_user`来配置一切。
+我们在 `layer_state_set_*` 函数中会使用 `rgb_layer_change`。通过 `keyboard_post_init_user` 和 `process_record_user` 来配置所需的一切。
-首先要使用`keyboard_post_init_user,你要加入`eeconfig_read_user()`来填充你刚刚创建的结构体。然后您可以立即使用这个结构来控制您的布局中的功能。就像这样:
+在编写 `keyboard_post_init_user` 时,你需要使用 `eeconfig_read_user()` 来计算并填充你刚刚创建的结构体。然后即可以使用结构体数据来控制键映射中的功能。就像这样:
```c
void keyboard_post_init_user(void) {
- // 调用布局级别的矩阵初始化
+ // 调用键映射级别的矩阵初始化
// 从EEPROM读用户配置
user_config.raw = eeconfig_read_user();
@@ -374,7 +321,7 @@ void keyboard_post_init_user(void) {
}
}
```
-以上函数会在读EEPROM配置后立即使用该设置来设置默认层RGB颜色。"raw"的值是从你上面基于"union"创建的结构体中转换来的。
+以上函数会在读EEPROM配置后立即设置默认层的RGB颜色。"raw"值将被转换为上述创建的实际使用的"union"结构体。
```c
layer_state_t layer_state_set_user(layer_state_t state) {
@@ -398,7 +345,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return state;
}
```
-这样仅在值使能时会改变RGB背光灯。现在配置这个值, 为`process_record_user`创建一个新键码叫做`RGB_LYR`。我们要确保,如果使用正常的RGB代码,使用上面的示例将其关闭,请将其设置为:
+这样仅在相关值使能时才会改变RGB背光灯。若要配置该值, 为 `process_record_user` 创建一个新键码 `RGB_LYR`。此时我们想实现的是,如果触发了常规的RGB码,以上示例中的逻辑都将不生效,形如:
```c
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -407,7 +354,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
// 按下时做点什么
} else {
- // 释放时做点什么
+ // 抬起时做点什么
}
return false; // 跳过此键的进一步处理
case KC_ENTER:
@@ -415,76 +362,116 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
PLAY_SONG(tone_qwerty);
}
- return true; // 让QMK产生回车按下/释放事件
- case RGB_LYR: // 本句让underglow作为层指示,或正常使用。
+ return true; // 让QMK产生回车按下/抬起事件
+ case RGB_LYR: // 这允许我们将背光灯作为层指示,或正常用途
if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // 切换状态
eeconfig_update_user(user_config.raw); // 向EEPROM写入新状态
- if (user_config.rgb_layer_change) { // 如果层状态被使能
+ if (user_config.rgb_layer_change) { // 如果层指示功能被使能
layer_state_set(layer_state); // 那么立刻更新层颜色
}
}
return false;
- case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // 对于所有的RGB代码 (see quantum_keycodes.h, L400 可以参考)
- if (record->event.pressed) { //本句失能层指示,假设你改变了这个…你要把它禁用
+ case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // 对于所有的RGB代码 (参考 quantum_keycodes.h, 400 行处)
+ if (record->event.pressed) { // 本句失能层指示功能,假设你现在要调整该功能…你要把它禁用
if (user_config.rgb_layer_change) { // 仅当使能时
- user_config.rgb_layer_change = false; // 失能,然后
+ user_config.rgb_layer_change = false; // 失能,然后
eeconfig_update_user(user_config.raw); // 向EEPROM写入设置
}
}
return true; break;
default:
- return true; // 按其他键正常
+ return true; // 其他键码正常处理
}
}
```
-最后你要加入`eeconfig_init_user`函数,所以当EEPROM重置时,可以指定默认值, 甚至自定义操作。想强制重置EEPROM,请用`EEP_RST`键码或[Bootmagic](feature_bootmagic.md)函数。比如,如果要在默认情况下设置RGB层指示,并保存默认值
+最后,须添加 `eeconfig_init_user` 函数,从而当EEPROM重置时,可以指定默认值, 甚至自定义操作。若想强制重置EEPROM,请用 `EEP_RST` 键码或[Bootmagic](zh-cn/feature_bootmagic.md) 功能。比如,在你想重置RGB层指示配置,并保存默认值时。
```c
-void eeconfig_init_user(void) { // EEPROM正被重置
+void eeconfig_init_user(void) { // EEPROM被重置
user_config.raw = 0;
user_config.rgb_layer_change = true; // 我们想要默认使能
eeconfig_update_user(user_config.raw); // 向EEPROM写入默认值
- // use the non noeeprom versions, 还要向EEPROM写入这些值
+ // 通过使用非'noeeprom'版本的函数,可以同时写入这些配置到EEPROM中。
rgblight_enable(); // 默认使能RGB
rgblight_sethsv_cyan(); // 默认设置青色
rgblight_mode(1); // 默认设置长亮
}
```
-然后就完事了。RGB层指示会在你想让它工作时工作。这个设置会一直保存,即便你拔下键盘。如果你使用其他RGB代码,层指示将失能,现在它可以做你所想了。
+一切已就绪,RGB层指示将在需要时生效。这个设置会持久存储,即便是拔下键盘。如果你使用其他RGB码,层指示将失效,从而可以停留在期望的模式及颜色下。
### 'EECONFIG' 函数文档
-* 键盘/修订: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)`和`void eeconfig_update_kb(uint32_t val)`
-* 布局: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)`和`void eeconfig_update_user(uint32_t val)`
+* 键盘/各子版本:`void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)` 和 `void eeconfig_update_kb(uint32_t val)`
+* 键映射:`void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` 和 `void eeconfig_update_user(uint32_t val)`
`val` 是你想写入EEPROM的值,`eeconfig_read_*`函数会从EEPROM返回一个32位(双字)的值。
-# 自定义击键-长按临界值(TAPPING_TERM)
-默认情况下,击键-长按临界值是全球统一的,并且不能通过键进行配置。对于大多数用户来说这很好。但是在有些情况下,对于`LT`键来说按键延时对双功能键的提升更大,可能是因为有些键比其他的键更容易按住。为了不给每个都自定义键码,本功能可以为每个键定义`TAPPING_TERM`。
-
-想使能这个功能的话, 要先在`config.h`加上`#define TAPPING_TERM_PER_KEY`。
+### 定时执行 :id=deferred-execution
+QMK支持在特定时间间隔后执行回调,以代替手动的计时器管理。
-## `get_tapping_term`示例实现
+#### 定时回调函数
-想要修改基于键码的`TAPPING TERM`,你要向`keymap.c`文件添加如下代码:
+所有的 _定时回调函数_ 使用同样的函数签名,如下:
```c
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case SFT_T(KC_SPC):
- return TAPPING_TERM + 1250;
- case LT(1, KC_GRV):
- return 130;
- default:
- return TAPPING_TERM;
- }
+uint32_t my_callback(uint32_t trigger_time, void *cb_arg) {
+ /* 处理了一些工作 */
+ bool repeat = my_deferred_functionality();
+ return repeat ? 500 : 0;
}
```
-### `get_tapping_term` 函数文档
+第一个参数 `trigger_time` 为预期的执行时间,如果因为其它事情造成了延迟未能在准确的时间点执行,可以利用这个参数“追赶”或者跳过这次间隔,取决于你的目的是什么。
+
+第二个参数 `cb_arg` 为下述的 `defer_exec()` 传入的参数,由此可以获取调用时的状态信息。
+
+返回值为该函数下一次期望被回调的时间间隔毫秒数 -- 若返回 `0` 则会自动被注销掉。上例中,通过执行假想的 `my_deferred_functionality()` 函数来决策回调是否继续下去 -- 若是,则给出一个 `500` 毫秒的延迟计划,否则,返回 `0` 来告知定时处理后台任务该计划已执行完毕。
+
+?> 须留意返回的延时时间是相对原定的触发时间点的,而不是回调执行完的时间点。这样可以防止偶发的执行延迟影响稳定的定时事件计划。
+
+#### 注册定时回调
+
+在定义好回调后,通过如下API进行定时回调注册:
+
+```c
+deferred_token my_token = defer_exec(1500, my_callback, NULL);
+```
+
+第一个参数为执行 `my_callback` 的毫秒时间延迟 -- 上例中为 `1500` 毫秒,即 1.5 秒。
+
+第三个参数为回调执行时传入的 `cb_arg` 参数。须确保该值在回调时依旧有效 -- 局部函数内的变量会在回调执行前就被释放掉因此不能用。如果并不需要这个参数,可以传入 `NULL`。
+
+返回值 `deferred_token` 可被用于在回调执行前取消该定时计划。如果该函数调用失败,会返回 `INVALID_DEFERRED_TOKEN`,一般错误原因是延时值被设置为 `0` 或回调函数参数为 `NULL`,还有一种可能是已有过量的回调在等待被处理 -- 可以按照下述方法修改这个阈值。
+
+#### 延长定时回调时间
+
+由 `defer_exec()` 返回的 `deferred_token` 可以用来修改回调执行所需等待的时延值:
+```c
+// 重新调整 my_token 后续的执行计划为当前时间起800ms后
+extend_deferred_exec(my_token, 800);
+```
+
+#### 取消定时回调
+
+由 `defer_exec()` 返回的 `deferred_token` 可以用来取消掉后续的执行计划:
+```c
+// 取消 my_token 的后续回调
+cancel_deferred_exec(my_token);
+```
+
+一旦 token 被取消了,即视为不再可用。重新使用该 token 是不支持的。
+
+#### 定时回调的限制
+
+可安排的定时回调计划数量是有限的,由 `MAX_DEFERRED_EXECUTORS` 定义的值确定。
+
+如果定时回调注册失败了,可以在对应的键盘或键映射下的 `config.h` 文件中修改该值,比如将默认的 8 改为 16:
+
+```c
+#define MAX_DEFERRED_EXECUTORS 16
+```
-不像这篇的其他功能,这个不需要quantum或者键盘级别的函数,只要用户级函数即可。
diff --git a/docs/zh-cn/driver_installation_zadig.md b/docs/zh-cn/driver_installation_zadig.md
new file mode 100644
index 0000000000..db9bb9a3fd
--- /dev/null
+++ b/docs/zh-cn/driver_installation_zadig.md
@@ -0,0 +1,102 @@
+# 利用Zadig安装Bootloader驱动
+
+<!---
+ original document: 0.15.12:docs/driver_installation_zadig.md
+ git diff 0.15.12 HEAD -- docs/driver_installation_zadig.md | cat
+-->
+
+QMK在主机侧会展现为一台HID键盘设备,因此不需要额外的驱动。但若要在Windows下刷写键盘固件,重置主控板时出现的bootloader设备则通常需要一些驱动程序。
+
+已知的特例有两个:常见于Pro Micro的Caterina bootloader,以及PJRC Teensys上的HalfKay bootloader, 会同时提供一个串行端口设备及一个HID设备,因此不需要额外的驱动。
+
+这里我们推荐使用[Zadig](https://zadig.akeo.ie/)工具软件。若你在MSYS2中配置了开发环境,`qmk_install.sh` 脚本已经替你安装了相关驱动。
+
+## 安装
+
+将键盘重置为bootloader模式,点击 `RESET` 键码(可能在别的层中),或按一下通常在主控板背面上的重置开关,如果你的键盘上没有前两者,尝试在按住Esc键或空格+`B`键时插上键盘(更多信息参见[Bootmagic](zh-cn/feature_bootmagic.md))。有些键盘使用[指令](zh-cn/feature_command.md)功能来代替Bootmagic,这种情况下,可以在键盘插入状态下点击 左Shift+右Shift+`B` 或 左Shift+右Shift+Esc组合键来进入bootloader模式。
+也有一些键盘需要特别的操作才能进入bootloader状态。例如,[Bootmagic](zh-cn/feature_bootmagic.md)键(默认为:Esc键)在其它键上,比如左Control;或是指令组合键(默认为:左Shift+右Shift)为其它组合,如左Control+右Control。当不确定的时候,可以查阅一下主控板的README文件。
+
+若要将USBaspLoader设备置为bootloader模式,请在按住 `BOOT` 按钮时点击 `RESET` 按钮,或是在按住 `BOOT` 按钮时插入USB线缆。
+
+Zadig可以自动检测到bootloader设备,但有时你需要在 **Options(选项) → List All Devices(列出所有设备)** 的下拉列表中选择正确的设备。
+
+!> 如果Zadig中列出的一个或多个设备为 `HidUsb` 驱动的,那么你的键盘应该没有进入bootloader模式,此时箭头会标记成橙色并会询问你确认是否要修改系统驱动,此时**不要**允许该操作。
+
+如果箭头呈现绿色,选择所需的驱动,点击**Install Driver(安装驱动)**。如何选择正确的驱动进行安装请参见[已知驱动列表](#list-of-known-bootloaders)。
+
+![在Zadig中安装了正确的bootloader驱动](https://i.imgur.com/b8VgXzx.png)
+
+最后,重新拔插一次键盘,确认驱动可以正常加载。如果你在使用QMK工具箱进行刷写,记得也重启一下,因为有时它不会检测到驱动的变化。
+
+## 从错误的驱动安装中恢复
+
+如果你发现键盘无法输入了,应当是因为错误地替换了键盘本身的驱动,而不是bootloader的驱动,你的键盘没有进入bootloader模式就进行安装时就会遇到这个问题。在Zadig中很容易看出这个问题 - 正常的键盘在其所有的接口上都应该有 `HidUsb` 驱动:
+
+![在Zadig中的一个正常的键盘](https://i.imgur.com/Hx0E5kC.png)
+
+打开Device Manager(设备管理器),选择**View(查看) → Devices by container(依类型排序设备)**,并定位到你键盘名所在的节点。
+
+![在设备管理器中安装了错误的驱动的主控板](https://i.imgur.com/o7WLvBl.png)
+
+在这些节点上右键,选择**Uninstall device(卸载)**。如果出现了**Delete the driver software for this device(同时卸载该设备驱动文件)**也请勾选上。
+
+![设备卸载确认对话框,选中了“删除驱动文件”](https://i.imgur.com/aEs2RuA.png)
+
+点击 **Action(操作) → Scan for hardware changes(扫描检测硬件改动)**。此时,键盘应该恢复可用状态了。再确认一下Zadig中键盘是否在使用 `HidUsb` 驱动,如果是,键盘即完全恢复可用状态了,如果不是,重复这一步直到Zadig中报告了正确的驱动。
+
+?> 在这一步有时需要重启电脑,以便Windows可以选用新驱动文件。
+
+## 卸载
+
+卸载bootloadeer设备要比安装过程复杂一些。
+
+打开设备管理器,选择**查看 → 依类型排序设备**,并找到bootloader设备,寻找USB VID和PID与Zadig的[该表格](#list-of-known-bootloaders)中一致的项。
+
+在设备属性的详细信息tab中,找到 `Inf name(INF名称)` 值,通常该值类似于 `oemXX.inf`:
+
+![设备属性中的INF名称值](https://i.imgur.com/Bu4mk9m.png)
+
+之后使用管理员权限打开一个命令行窗口(在开始菜单处输出 `cmd` 并点击Ctrl+Shift+回车)。执行 `pnputil /enum-drivers` 并找到 `INF名称` 与 `Published Name(发布名称)` 一致的项:
+
+![对pnputil输出中匹配驱动项进行高亮展示](https://i.imgur.com/3RrSjzW.png)
+
+执行 `pnputil /delete-driver oemXX.inf /uninstall`,之后该驱动会被删除,相关设备也不再使用该驱动,但设备是不会被移除的。
+
+与上一节相似,本流程也可能需要执行多次,因为一个设备可能会有多个可用的驱动。
+
+!> **警告:** 操作过程中*务必非常小心*!以免不小心卸载掉其它关键驱动。如果你对操作不是很确定,多次检查 `/enum-drivers`的输出信息,也可以考虑执行 `/delete-driver` 时不添加 `/uninstall` 开关\。
+
+## 已知驱动列表 :id=list-of-known-bootloaders
+
+该表列出了已知的bootloader设备及其USB VID(厂商ID)和PID(产品ID),以及可用于QMK刷写固件的驱动。留意usbser及HidUsb驱动是随Windows附带的,无法通过Zadig安装 - 如果你的设备驱动不符,请参照上节来卸载这些驱动。
+
+此处列出的设备名应与Zadig中的一致,但不一定与设备管理器及QMK工具箱展示的一致。
+
+|Bootloader |设备名 |VID/PID |驱动 |
+|--------------|------------------------------|--------------|-------|
+|`atmel-dfu` |ATmega16u2 DFU |`03EB:2FEF` |libusb0|
+|`atmel-dfu` |ATmega32U2 DFU |`03EB:2FF0` |libusb0|
+|`atmel-dfu` |ATm16U4 DFU V1.0.2 |`03EB:2FF3` |libusb0|
+|`atmel-dfu` |ATm32U4DFU |`03EB:2FF4` |libusb0|
+|`atmel-dfu` |*none* (AT90USB64) |`03EB:2FF9` |libusb0|
+|`atmel-dfu` |AT90USB128 DFU |`03EB:2FFB` |libusb0|
+|`qmk-dfu` |(键盘名) Bootloader |同`atmel-dfu` |libusb0|
+|`halfkay` |*none* |`16C0:0478` |HidUsb |
+|`caterina` |Pro Micro 3.3V |`1B4F:9203` |usbser |
+|`caterina` |Pro Micro 5V |`1B4F:9205` |usbser |
+|`caterina` |LilyPadUSB |`1B4F:9207` |usbser |
+|`caterina` |Pololu A-Star 32U4 Bootloader |`1FFB:0101` |usbser |
+|`caterina` |Arduino Leonardo |`2341:0036` |usbser |
+|`caterina` |Arduino Micro |`2341:0037` |usbser |
+|`caterina` |Adafruit Feather 32u4 |`239A:000C` |usbser |
+|`caterina` |Adafruit ItsyBitsy 32u4 3V |`239A:000D` |usbser |
+|`caterina` |Adafruit ItsyBitsy 32u4 5V |`239A:000E` |usbser |
+|`caterina` |Arduino Leonardo |`2A03:0036` |usbser |
+|`caterina` |Arduino Micro |`2A03:0037` |usbser |
+|`bootloadhid` |HIDBoot |`16C0:05DF` |HidUsb |
+|`usbasploader`|USBasp |`16C0:05DC` |libusbK|
+|`apm32-dfu` |APM32 DFU ISP Mode |`314B:0106` |WinUSB |
+|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
+|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
+|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
+|`qmk-hid` |(键盘名) Bootloader |`03EB:2067` |HidUsb |
diff --git a/docs/zh-cn/easy_maker.md b/docs/zh-cn/easy_maker.md
new file mode 100644
index 0000000000..420c77d3af
--- /dev/null
+++ b/docs/zh-cn/easy_maker.md
@@ -0,0 +1,37 @@
+# 极简式制作 - 通过配置器进行一次性的工程构建
+
+<!---
+ original document: 0.15.12:docs/easy_maker.md
+ git diff 0.15.12 HEAD -- docs/easy_maker.md | cat
+-->
+
+你是否需要一种极简的控制器编程方案,类似Proton C或Teensy 2.0,以进行一次性的工程构建?QMK提供了极简制作器,通过QMK配置器可以在几分钟内制作一个固件。
+
+有几种极简制作器,取决于你需要什么样的:
+
+* [引脚直连](https://config.qmk.fm/#/?filter=ez_maker/direct) - 将每个开关独立直连到一个引脚
+* 引脚直连 + 背光 (即将可用) - 类似引脚直连,单独加一个引脚连接到[背光](zh-cn/feature_backlight.md)控制器上
+* 引脚直连 + 小键盘锁 (即将可用) - 类似引脚直连,单独加一个引脚连接到Numlock LED上
+* 引脚直连 + 大写锁 (即将可用) - 类似引脚直连, 单独加一个引脚连接到Capslock LED上
+* 引脚直连 + 编码器 (即将可用) - 类似引脚直连, 再加两个引脚用于连接一个旋钮编码器
+
+## 快速指引
+
+最简单的情况是使用一个引脚直连的主控板,将每个引脚连接到一个开关,另一端再接地即可,从以下键盘列表中可以选择一款支持的MCU:
+
+* <https://config.qmk.fm/#/?filter=ez_maker/direct>
+
+更多信息请参见[引脚直连](#direct-pin)一节。
+
+# 引脚直连 :id=direct-pin
+
+与其名字表意相同,它的原理是一个引脚连接一个开关,每个开关的另一端接地(VSS或GND),不需要额外的部件,通常MCU内部自带上拉电阻,因此可以感知开关动作。
+
+
+这里有一个示意图,展示了如何将一个按钮连接到ProMicro的A3引脚上:
+
+![该示意图中的ProMicro的A3引脚导出一根线,连接到了开关的左边,另一根线从开关右边引出并接地。](https://i.imgur.com/JcDhZll.png)
+
+在开关连接到各自的引脚后,在键盘下拉列表中选择所使用的MCU,将键码指定到对应的引脚上即可构建出固件。以下链接仅展示支持引脚直连的极简式制作:
+
+* <https://config.qmk.fm/#/?filter=ez_maker/direct>
diff --git a/docs/zh-cn/faq.md b/docs/zh-cn/faq.md
deleted file mode 100644
index 3d0b65c6fd..0000000000
--- a/docs/zh-cn/faq.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# 常见问题
-
-* [一般问题](faq_general.md)
-* [构建和编译QMK](faq_build.md)
-* [QMK调试和故障排除](faq_debug.md)
-* [布局问题](faq_keymap.md)
diff --git a/docs/zh-cn/faq_build.md b/docs/zh-cn/faq_build.md
index c4b6e64d8d..84cd3c6a4e 100644
--- a/docs/zh-cn/faq_build.md
+++ b/docs/zh-cn/faq_build.md
@@ -1,122 +1,73 @@
-# 关于构建的常见问题
+# 常被问及的编译问题
-本页所写是QMK构建的常见问题.如果你还没有进行过编译,就看一下[构建环境搭建](getting_started_build_tools.md) 和 [make的说明](getting_started_make_guide.md).
+<!---
+ original document: 0.15.12:docs/faq_build.md
+ git diff 0.15.12 HEAD -- docs/faq_build.md | cat
+-->
-## 如果您不能在Linux上编程
-您需要适当的权限才能操作设备。对于Linux用户, 请参阅下方有关`udev`规则的说明。如果您对`udev`有问题,解决方法是用`sudo`命令。如果您不熟悉此命令,使用`man sudo`查看其手册或[看这个网页](https://linux.die.net/man/8/sudo).
+本页涉及所有编译QMK的问题,如果你还没有试过,请先阅读[编译环境配置](zh-cn/getting_started_build_tools.md)及[Make指引](zh-cn/getting_started_make_guide.md)。
-在你的主控是ATMega32u4时,以下是使用`sudo`命令的样例:
+## 无法在Linux下编程
+操作设备需要足够的权限,对于Linux用户,请参阅下方有关 `udev` 的规则说明。如果你对 `udev` 有困惑,可以先试试 `sudo` 命令,如果你对这个命令不熟悉,可以通过 `man sudo` 或 [这个web页面](https://linux.die.net/man/8/sudo)进行了解。
+
+一个使用 `sudo` 的示例,这里假设你的控制器是ATMega32u4:
$ sudo dfu-programmer atmega32u4 erase --force
$ sudo dfu-programmer atmega32u4 flash your.hex
$ sudo dfu-programmer atmega32u4 reset
-或只用;
+或者只是:
- $ sudo make <keyboard>:<keymap>:dfu
+ $ sudo make <keyboard>:<keymap>:flash
-使用`sudo`运行`make`一般来说**不**推荐,如果可能,尽量使用前一种方法之一。
+但请留意,用 `sudo` 来执行 `make` 通常***不是***一个好主意,请尽量考虑使用上面的办法。
-### Linux `udev` 规则
-在Linux上,您需要适当的权限才能访问MCU。你也可以在刷新固件时使用 `sudo`,或把这些文件放到`/etc/udev/rules.d/`。
+### Linux `udev` 规则 :id=linux-udev-rules
-**/etc/udev/rules.d/50-atmel-dfu.rules:**
-```
-# Atmel ATMega32U4
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", MODE:="0666"
-# Atmel USBKEY AT90USB1287
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", MODE:="0666"
-# Atmel ATMega32U2
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", MODE:="0666"
-```
+在linux下,需要足够的权限才能读写bootloader设备,可以使用 `sudo` 来刷写固件(不推荐),也可以将[这个文件](https://github.com/qmk/qmk_firmware/tree/master/util/udev/50-qmk.rules) 放到 `/etc/udev/rules.d/` 目录下。
+
+放好后,执行:
-**/etc/udev/rules.d/52-tmk-keyboard.rules:**
```
-# tmk键盘产品 https://github.com/tmk/tmk_keyboard
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
+sudo udevadm control --reload-rules
+sudo udevadm trigger
```
-**/etc/udev/rules.d/54-input-club-keyboard.rules:**
+
+**注意:**在旧版ModeManager(<1.12)中,过滤功能仅在严格模式(strict mode)下可用,可以调整一下配置:
```
-# Input Club keyboard bootloader
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", MODE:="0666"
+printf '[Service]\nExecStart=\nExecStart=/usr/sbin/ModemManager --filter-policy=default' | sudo tee /etc/systemd/system/ModemManager.service.d/policy.conf
+sudo systemctl daemon-reload
+sudo systemctl restart ModemManager
```
-### 串行设备在Linux上检测不到bootloader模式
-确保您的内核对您的设备有相应的支持。 如果你的设备是 USB ACM, 比如Pro Micro (Atmega32u4),就要加上`CONFIG_USB_ACM=y`. 其他设备可能需要`USB_SERIAL` 及其任何子选项。
-
-## DFU Bootloader的未知设备
+### 在Linux下无法检测到bootloader模式下的串口设备
+确认一下你的内核版本是否已配置为支持该设备。如果你的设备使用USB ACM,如Pro Micro(Atmega32u4),确认内核 配置中包含 `CONFIG_USB_ACM=y`,其它类型的设备可能需要 `USB_SERIAL` 及相关子配置的支持。
-如果您在使用Windows来刷新键盘的时候碰到了问题,检查设备管理器。如果在键盘处于 "bootloader模式"时你看到 "未知设备",说明你可能面临设备问题。
+## DFU Bootloader显示为未知设备
-重新运行MSYS2上的安装脚本或许会凑效(比如在MSYS2/WSL运行 `./util/qmk_install.sh`) 或者重新安装QMK工具箱也可能会解决你的问题。
+在Windows下刷写键盘固件时很常见的一个问题。主要原因是安装了错误的驱动,或者压根没有装驱动。
-如果以上方法还是短针攻疽,那您可能需要使用[Zadig Utility](https://zadig.akeo.ie/)。下载此程序, 找到设备问题, 然后选择 `WinUSB`选项, 然后点击"Reinstall driver"。完成后再试试刷新你的键盘。倘若依然徒劳无功,那就尝试所有选项直到好用为止。
+要修复这个问题,可以尝试重新执行QMK安装脚本(位于MSYS2或WSL中的 `qmk_firmware` 目录下的 `./util/qmk_install.sh`)或重新安装QMK工具箱。此外,也可以尝试下载安装[QMK驱动安装包 `qmk_driver_installer`](https://github.com/qmk/qmk_driver_installer)来修复。
-?> 事实上没有一个驱动的最佳选择,有些选项就是和某些系统相辅相成。但libUSB和WinUSB似乎也算是这里的最佳选择了。
-如果bootloader在设备列表中没有显示,你可能要使能 "List all devices"选项在选项菜单中`Options`,然后找到有问题的bootloader设备。(译者注:在win10中可能为 查看-显示隐藏的设备)
+如果问题依旧,可能是需要下载安装Zadig,具体请参考[通过Zadig安装bootloader驱动](zh-cn/driver_installation_zadig.md)。
## USB VID 和 PID
-你可以在编辑`config.h`时使用任何你想用的ID值。实际上,使用任何可能未使用的ID都没有问题,除了有极低的与其他产品发生冲突的可能性。
+通过编辑 `config.h` 你可以自由指定ID,随便选一个看起来不常用的ID一般不会有什么问题,冲突的概率很低。
-大多数QMK主板使用`0xFEED`作为vendor ID。您应该查看其他键盘,以确保选择了唯一的Product ID。
+大部分QMK设备都选用 `0xFEED` 作为VID,选取PID前请先看一下其它键盘的情况再决定。
-也要看看这个。
+同时请阅读这个issue:
https://github.com/tmk/tmk_keyboard/issues/150
-一也可以在下方链接购买一个唯一的VID:PID。不过个人使用似乎用不着这个。
+你可以在以下地址购买唯一的VID:PID,但我觉得个人使用情况下没有必要。
- https://www.obdev.at/products/vusb/license.html
- https://www.mcselec.com/index.php?page=shop.product_details&flypage=shop.flypage&product_id=92&option=com_phpshop&Itemid=1
-## AVR的BOOTLOADER_SIZE
-注意Teensy2.0++ bootloader的大小是2048字节。有些Makefile注释错了。
-
-```
-# Boot Section Size in *bytes*
-# Teensy halfKay 512
-# Teensy++ halfKay 2048
-# Atmel DFU loader 4096 (TMK Alt Controller)
-# LUFA bootloader 4096
-# USBaspLoader 2048
-OPT_DEFS += -DBOOTLOADER_SIZE=2048
-```
-
-## 在MacOS上 `avr-gcc: internal compiler error: Abort trap: 6 (program cc1)`
-这是brew更新的问题,导致AVR GCC依赖的符号链接被损坏。
-
-解决方案是移除并重新安装所有受影响的模块。
-
-```
-brew rm avr-gcc
-brew rm dfu-programmer
-brew rm dfu-util
-brew rm gcc-arm-none-eabi
-brew rm avrdude
-brew install avr-gcc
-brew install dfu-programmer
-brew install dfu-util
-brew install gcc-arm-none-eabi
-brew install avrdude
-```
-
-### avr-gcc 8.1 和 LUFA
-
-如果你把avr-gcc升级到7以上你可能会遇到关于LUFA的问题。比如:
-
-`lib/lufa/LUFA/Drivers/USB/Class/Device/AudioClassDevice.h:380:5: error: 'const' attribute on function returning 'void'`
-
-那你就需要在brew中把avr-gcc回退到7。
-
-```
-brew uninstall --force avr-gcc
-brew install avr-gcc@8
-brew link --force avr-gcc@8
-```
-
-### 我刷新了我的键盘但是键盘不工作/按键没有注册 - 而且还是ARM的 (rev6 planck, clueboard 60, hs60v2, etc...) (Feb 2019)
-由于EEPROM在基于ARM的芯片上的工作原理,保存的设置可能不再有效。这会影响默认层,而且*或许*在某些情况下,会使键盘不好用,我们仍在调查这些情况。重置EEPROM将解决此问题。
+### 在我刷写完键盘后就没响应了/点了没动静了 -- 设备是arm的(rev6 planck, clueboard 60, hs60v2等)(2019年2月)
+因为ARM平台下EEPROM特殊的工作模式,已保存的配置可能会失效。主要影响的是默认层,有概率在特定情况下会导致键盘不可用,我们还没有搞明白原因。这个问题可以在重置EEPROM后恢复。
-[Planck rev6键盘重置EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) 是用于强制重置EEPROM的。刷入这个文件后,再次刷入正常固件,这会将键盘恢复到_正常_工作状态。
-[Preonic rev3键盘重置EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin)
+[Planck rev6 上重置 EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/539284620861243409/planck_rev6_default.bin) 可以用于强制重置EEPROM。刷入这个文件后,再次刷入正常固件,会将键盘恢复到_正常_工作状态。
+[Preonic rev3 上重置 EEPROM](https://cdn.discordapp.com/attachments/473506116718952450/537849497313738762/preonic_rev3_default.bin)
-如果以任何形式启用了bootmagic, 那么您还需要(看[Bootmagic文档](feature_bootmagic.md) 以及键盘信息,以了解如何执行此操作的详细信息).
+也可以考虑使用bootmagic,只要它可以用。(参见[Bootmagic文档](zh-cn/feature_bootmagic.md)并结合键盘情况来了解如何操作)
diff --git a/docs/zh-cn/faq_debug.md b/docs/zh-cn/faq_debug.md
index 4dba44c275..63d688ed9e 100644
--- a/docs/zh-cn/faq_debug.md
+++ b/docs/zh-cn/faq_debug.md
@@ -1,136 +1,136 @@
-# 调试的常见问题
+# 调试 FAQ
-本篇详细介绍了人们在键盘故障排除时的各种常见问题。
+<!---
+ original document: 0.15.12:docs/faq_debug.md
+ git diff 0.15.12 HEAD -- docs/faq_debug.md | cat
+-->
-# 调试控制台
+此页面详细介绍了人们对键盘故障排除的各种常见问题。
-## `hid_listen` 无法识别设备
-当设备的调试控制台未就绪时,您将看到如下内容:
+## 调试 :id=debugging
-```
-Waiting for device:.........
-```
-
-插入设备后,*hid_listen*找到该设备,您将收到以下消息:
+如果你在 `rules.mk` 中配置了 `CONSOLE_ENABLE = yes`,你的键盘将会输出调试信息。默认情况下输出很有限,可以启用调试模式来增加调试输出的丰富度。使用你的键映射方案中的 `DEBUG` 键码,或使用[指令](zh-cn/feature_command.md)功能来启动调试模式,或者将下面这段代码放到你的键映射中:
-```
-Waiting for new device:.........................
-Listening:
+```c
+void keyboard_post_init_user(void) {
+ // 通过调整这些值可以改变其表现
+ debug_enable=true;
+ debug_matrix=true;
+ //debug_keyboard=true;
+ //debug_mouse=true;
+}
```
-如果您无法获得这条“Listening:”消息,请尝试在[Makefile]中使用 `CONSOLE_ENABLE=yes`
+## 调试工具
-在Linux这样的操作系统上,你可能需要一些权限。
-- 使用`sudo hid_listen`
+有多种可用于调试的工具。
-## 控制台没有返回消息
-检查:
-- *hid_listen* 找到了你的设备。看前面。
-- 输入**Magic**+d打开调试。详见[Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands)。
-- 设置`debug_enable=true` ,一般存在于**matrix.c**的`matrix_init()`中。
-- 尝试使用'print'函数而不要用调试输出。详见**common/print.h**。
-- 断开其他有控制台功能的设备。 详见[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97)。
+### 使用QMK工具箱调试
-## Linux或UNIX这样的系统如何请求超级用户权限
-用'sudo'来执行*hid_listen*就有权限了。
-```
-$ sudo hid_listen
-```
+在兼容的平台上,[QMK工具箱](https://github.com/qmk/qmk_toolbox)可以展示你的键盘的调试输出。
-或者把一个文件放到规则文件夹来为TMK设备添加*udev规则*,不同系统的目录可能有所不同。
+### 使用 QMK CLI 进行调试
-文件: /etc/udev/rules.d/52-tmk-keyboard.rules(在Ubuntu系统的情况下)
-```
-# tmk keyboard products https://github.com/tmk/tmk_keyboard
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
-```
+倾向于在终端进行调试?使用 [QMK CLI 命令行](zh-cn/cli_commands.md#qmk-console)可以展示键盘输出的调试信息。
-***
+### 使用hid_listen调试
-# 其他
-## 安全注意事项
+更喜欢使用终端的方案?PJRC提供的[hid_listen](https://www.pjrc.com/teensy/hid_listen.html)也可以用来展示调试信息,已有Windows、Linux及MacOS下预编译好的可执行文件。
-你应该不想要把你的键盘变成"砖头"吧,就是变成没法重写固件的那种。
-下面讲解一些参数来告诉你什么风险很大(其实也不是很大)。
+## 发送自定义调试信息 :id=debug-api
-- 假如你键盘表面没有设计重置键"RESET", 那你要进入bootloader的话就要按PCB上的RESET了。
- 按PCB上的RESET要拧开键盘底部。
-- 如果 tmk_core / common 里面的文件丢失键盘可能失灵。
-- .hex太大可能不太好; `make dfu` 会删除块,检验大小(咦?好像反了...)。
- 一但出错,刷新键盘失败的话就困在DFU出不去了。
- - 所以, 要知道大小限制。 Planck键盘上.hex文件最大大小是 is 7000h (十进制是28672)
+有时在[自定义代码](zh-cn/custom_quantum_functions.md)中输出调试信息非常有用,要做到这个功能也很简单,在代码文件头部包含 `print.h` 文件:
+```c
+#include "print.h"
```
-Linking: .build/planck_rev4_cbbrowne.elf [OK]
-Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
-Size after:
- text data bss dec hex filename
- 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
-```
+然后可以使用以下输出函数:
- - 上面那个文件大小是 22396/577ch,比28672/7000h小
- - 当你有一个合适的.hex文件时,你就要重试加载那个了
- - 您在键盘Makefile中的某些选项可能消耗额外内存;注意以下这几个
- BOOTMAGIC_ENABLE, MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
-- DFU 工具/不/可以写入bootloader (unless you throw in extra fruit salad of options),
- 所以还是有点危险的
-- EEPROM大概有100000次循环寿命。不要总是频繁重写固件;EEPROM会玩坏的。
-## 全键无冲不好用
-首先你要在**Makefile**用如下命令编译固件`NKRO_ENABLE`。
+* `print("string")`: 字符串输出
+* `uprintf("%s string", var)`: 格式化字符串输出
+* `dprint("string")` 仅调试模式下,字符串输出
+* `dprintf("%s string", var)`: 仅调试模式下,格式化字符串输出
-全键无冲还不好用的话试着用`Magic` **N** 命令(默认是`LShift+RShift+N`)。这个命令会在**全键无冲**和**六键无冲**之间临时切换。有些情况**全键无冲**不好用你就需要使用**六键无冲**模式,尤其是在BIOS中。
+## 调试示例
+以下列出了一些实际出现过的调试范例,更多资料参见[调试/定位QMK问题](zh-cn/faq_debug.md)。
-## 指点杆需要复位电路(PS/2 鼠标支持)
-如果没有复位电路,由于硬件初始化不正确,您将得到不一致的结果。查看TPM754复位电路。
+### 当前按下的键的矩阵坐标是什么?
-- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
-- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf
+在移植或尝试诊断PCB问题时,确认按下的键被正确扫描到是很有用的排查步骤。要启用该场景的日志输出,请在 `keymap.c` 中添加:
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
+#endif
+ return true;
+}
+```
-## 矩阵不可读16以上的列
-当列超过16时[matrix.h]的`read_cols()`中,用`1UL<<16`而不要用`1<<16`。
-
-在C语言中`1` 是一个[int] 类型的[16 bit]值,在AVR中你不能左移大于15次。如果你使用`1<<16`的话会得到意外的零。你要用 [unsigned long]类型,比如`1UL`。
+输出示例
+```text
+Waiting for device:.......
+Listening:
+KL: kc: 169, col: 0, row: 0, pressed: 1
+KL: kc: 169, col: 0, row: 0, pressed: 0
+KL: kc: 174, col: 1, row: 0, pressed: 1
+KL: kc: 174, col: 1, row: 0, pressed: 0
+KL: kc: 172, col: 2, row: 0, pressed: 1
+KL: kc: 172, col: 2, row: 0, pressed: 0
+```
-https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
+### 扫描到一个键码需要多久?
-## 特殊额外键不起作用(系统,音频控制键)
-你要在`rules.mk`定义`EXTRAKEY_ENABLE`在QMK中使用它们。
+调试性能问题时,知晓开关矩阵的扫描频率是很有用的排查步骤。要启用该场景的日志输出,请在 `config.h` 中添加:
+```c
+#define DEBUG_MATRIX_SCAN_RATE
```
-EXTRAKEY_ENABLE = yes # 音频控制和系统控制
-```
-
-## 睡眠唤醒不好用
-
-在Windows查看设备管理器中该键盘设备属性中电源管理选项卡中的`允许此设备唤醒计算机(O)`是否勾选。同时看一眼BIOS设置。
-在主机睡眠时按下任何键都可以唤醒了。
+输出示例
+```text
+ > matrix scan frequency: 315
+ > matrix scan frequency: 313
+ > matrix scan frequency: 316
+ > matrix scan frequency: 316
+ > matrix scan frequency: 316
+ > matrix scan frequency: 316
+```
-## 使用Arduino?
+## `hid_listen` 无法识别到设备
-**注意Arduino的针脚名字和主控芯片的不一样。** 比如, Arduino的`D0`并不是`PD0`。自己用原理图捋一下电路。
+如果设备没有就绪,在命令行下调试会看到如下输出:
-- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
-- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
+```
+Waiting for device:.........
+```
-Arduino Leonardo和micro使用**ATMega32U4**,该芯片TMK可用,但Arduino的bootloader会导致问题。
+当设备插入后,*hid_listen*可以发现设备,会有如下输出:
-## USB 3 兼容性
-据传说有些人用USB3接口会有问题,用USB2的试试。
+```
+Waiting for new device:.........................
+Listening:
+```
+若无法出现'Listening:'消息,尝试在[Makefile]中添加 `CONSOLE_ENABLE=yes`
-## Mac 兼容性
-### OS X 10.11 和集线器
-https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
+在类Linux系统下,访问设备可能需要一定权限,尝试使用 `sudo hid_listen`。
+此外,很多Linux发行版可以通过创建如下内容的文件 `/etc/udev/rules.d/70-hid-listen.rules` 来避免通过root权限执行hid_listen:
-## 对于BIOS (UEFI)/恢复(睡眠和唤醒)/重新启动 有问题
-有人说他们的键盘在BIOS中,或许是恢复(睡眠和唤醒)后不工作.
+```
+SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"
+```
-截止至目前,其根本原因未知,不排除与某些构建选项有关。试着在Makefile中失能`CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE`这样的选项,也试试其他的。
+使用设备的真实VID和PID替换上面的abcd和def1,留意必须全小写。其中 `RUN{builtin}+="uaccess"` 仅在较老的发行版中需要使用。
-https://github.com/tmk/tmk_keyboard/issues/266
-https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
+## 命令行无法成功输出消息
+请检查:
+- *hid_listen*确实找到了设备,如前文所述。
+- 通过**Magic**+d命令启用调试模式,参见[Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
+- 配置`debug_enable=true`. 参见[调试](#debugging)
+- 尝试用 `print` 替代 `dprint`, 参见**common/print.h**.
+- 拔出其它可能影响命令行的设备,参见[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
diff --git a/docs/zh-cn/faq_general.md b/docs/zh-cn/faq_general.md
index 4949acb8c9..cc8ef3d19a 100644
--- a/docs/zh-cn/faq_general.md
+++ b/docs/zh-cn/faq_general.md
@@ -1,19 +1,58 @@
-#
+# 常见问题(FAQ)
-## QMKʲô?
+<!---
+ original document: 0.15.12:docs/faq_general.md
+ git diff 0.15.12 HEAD -- docs/faq_general.md | cat
+-->
-[QMK](https://github.com/qmk), ӻе(Quantum Mechanical Keyboard)дһȺԴΪƼ̿ĹߡǴ[QMK̼](https://github.com/qmk/qmk_firmware)ʼ[TMK](https://github.com/tmk/tmk_keyboard)ħķֲ档
+## QMK是什么?
-### Ϊʲô(Quantum)?
+[QMK](https://github.com/qmk), 是量子机械键盘(Quantum Mechanical Keyboard)的缩写, 是制作自定义键盘工具的人组成的组织。 一切始于[QMK固件](https://github.com/qmk/qmk_firmware)项目, 可以认为是[TMK](https://github.com/tmk/tmk_keyboard)的改进版本.
-<!-- ޸ ²ۣĵ߾ȻҲ֪Ϊɶ -->
+## 不知道从哪开始搞!
-## QMKTMKʲô?
+这样的话建议从[新手指引](zh-cn/newbs.md)开始。那里有你需要的高质量的入门信息。
-TMK[Jun Wako](https://github.com/tmk)ƺִСQMKʼ[Jack Humbert](https://github.com/jackhumbert)ΪPlanck̴TMKֲ档һʱJackķֲͺTMKȥԶˣ2015꣬JackQMK
+如果还是搞不懂的话,直接跳到[QMK配置器](https://config.qmk.fm)吧,你核心需要的东西都在那里。
-Ӽ۵QMKTMKһЩ¹ܶɵġQMKչ˿õļ룬ʹ߼ܽһḻ `S()`, `LCTL()`, `MO()`ȫ[](keycodes.md).
+## 我的固件如何刷写到硬件上?
-ӹ̵TMKԼάйٷֵ֧ļֻ̣кСһ֧֡άѴڷֲΪ̴ķֲ档Ĭֺ֧ٵļ룬ûͨ˷֡QMKͨйֺֿͼ̣ǻз׼PRͼı֤άͬʱQMKСҲڱҪʱ
+先参考[编译/刷写固件FAQ](zh-cn/faq_build.md),里面有充足的资料,常见的问题也给出了足够多的解决办法。
-ַŵȱ㣬ҴʱTMKQMK֮
+## 我的问题这里找不到相关信息怎么办?
+
+没有关系,请到[GitHub上发issue](https://github.com/qmk/qmk_firmware/issues)看看是否有人遇到了相同的问题(留意一定是相同的问题,而不是相似的)。
+
+如果还是找不到解决办法,请[新建issue](https://github.com/qmk/qmk_firmware/issues/new)!
+
+## 我好像找到了bug?
+
+那么新建一个[issue](https://github.com/qmk/qmk_firmware/issues/new)吧,如果你还知道怎么修,带着修复方案发个Pull Request吧。
+
+## 但是 `git` 和 `GitHub` 我实在是玩不转!
+
+别担心,这里有很好的[入门指引](zh-cn/newbs_git_best_practices.md)可以教你怎么轻松快乐地使用 `git` 和GitHub进行开发。
+
+更多的 `git` 和GitHub知识,参考[这里](zh-cn/newbs_learn_more_resources.md)。
+
+## 我可以添加一个支持的键盘
+
+太棒啦!请发Pull Request吧,在代码审阅后,我们会合并进去!
+
+### 我可以打上 `QMK` 的标吗?
+
+很好啊!我们甚至乐意帮你这么做!
+
+我们有[一整页](https://qmk.fm/powered/)的资料旨在帮你在页面和键盘上打上QMK的标,里面有QMK官方提供的所有支援(信息及图片)。
+
+如果你有任何疑问,可以发issue或通过[Discord](https://discord.gg/Uq7gcHh)联系我们。
+
+## QMK和TMK区别是什么?
+
+TMK原先是由[Jun Wako](https://github.com/tmk)设计实现的,QMK来源于[Jack Humbert](https://github.com/jackhumbert)的Planck的TMK fork。一段时间后,Jack的这个fork与TMK渐行渐远,到2015年时,Jack决定将这份fork重命名为QMK。
+
+技术上讲QMK等同于基于TMK增加了一些新功能,最显著的是在扩充了可用键码后,实现了很多诸如 `S()`, `LCTL()` 及 `MO()` 这样的高级功能,所有这些键码可以参见[键码](zh-cn/keycodes.md)页。
+
+从工程项目及社区维护角度来看,TMK维护了一份官方支持的键盘及很少量的社区贡献,社区中各自维护着各自的fork,且因为默认键映射很少,TMK的使用者基本不会共享键映射。QMK通过统一的集约式仓库(repo)管理来鼓励分享键盘及键映射,任何符合质量基线的pull request都会被采纳,因此绝大部分贡献都来源于社区,QMK小组会在必要时提供支援。
+
+两种模式各有利弊,并且TMK和QMK之间也会有合乎理法的代码交流。
diff --git a/docs/zh-cn/faq_keymap.md b/docs/zh-cn/faq_keymap.md
index ff38f38894..f674129717 100644
--- a/docs/zh-cn/faq_keymap.md
+++ b/docs/zh-cn/faq_keymap.md
@@ -1,151 +1,157 @@
-# 布局常见问题
+# 键映射FAQ
-本页本页包含人们经常遇到的关于布局的问题。如果你觉得没什么问题,请先看[布局概览](keymap.md)。
+<!---
+ original document: 0.15.12:docs/faq_keymap.md
+ git diff 0.15.12 HEAD -- docs/faq_keymap.md | cat
+-->
-## 我能用什么键码?
-看[键码](keycodes.md)你可以找到你能用的键码索引。可以的话这些链接可以连接到更广泛的文档。
+本页包含人们经常遇到的关于键映射的问题,如果你还没阅读过[键映射概览](zh-cn/keymap.md),请先阅读一下。
-键码实际上定义在[common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
+## 我能使用的键码有哪些?
+所有可用键码收录在[键码](zh-cn/keycodes.md)页,在有更详尽的文档时,我们会更新这个链接。
-## 默认的键码什么样?
+所有键码实际定义在[quantum/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
-世界上有三种标准键盘设计,分别是:ANSI, ISO, and JIS. 主要是北美用ANSI(译者注:中国很多键盘使用这个), 欧洲和非洲主要使用ISO,日本使用JIS。未提及的区域通常使用ANSI或ISO。与这些设计对应的键代码如下所示:
+## 默认键码是什么?
-<!-- 该图片的来源: https://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
-![键盘设计图](https://i.imgur.com/5wsh5wM.png)
+广为使用的键盘配列有三种——ANSI,ISO及JIS。北美主要使用ANSI,欧洲及非洲主要使用ISO,日本主要使用JIS,其它区域多为ANSI或ISO。这三种配列的键码可查阅:
-## 我有一些键变成了其他功能或者不工作了
+<!-- Source for this image: https://www.keyboard-layout-editor.com/#/gists/bf431647d1001cff5eff20ae55621e9a -->
+![键盘配列示意图](https://i.imgur.com/5wsh5wM.png)
-QMK有两个功能,Bootmagic和命令行,它允许您在运行中更改键盘的行为。该功能包括但不仅限于, 交换Ctrl/Caps,关闭界面,交换Alt/Gui,交换 Backspace/Backslash,禁用所有键,以及其他的行为改变。
+## 如何对复杂的键码指定自定义的名称?
-快速解决方法是插入键盘时按住`Space`+`Backspace`。该操作将重置已保存设置,让这些键回复初始功能。这招不好用的话参阅下方:
+使用更容易理解的自定义的名字去指代一些键码有时很实用,通常我们使用 `#define` 来实现:
-* [Bootmagic](feature_bootmagic.md)
-* [命令](feature_command.md)
+```c
+#define FN_CAPS LT(_FL, KC_CAPSLOCK)
+#define ALT_TAB LALT(KC_TAB)
+```
+
+这样键映射代码中就可以使用 `FN_CAPS` 和 `ALT_TAB` 了,可读性好得多。
+
+## 一些按键发生了交换,或是不能用了
+
+QMK有两个功能系列,Bootmagic及指令,都可以让键盘随时变得灵活多变,功能包含但不限于交换Ctrl/Caps、锁定Gui键、交换Alt/Gui、交换Backspace/Backslash、禁用所有按键等。
-## 菜单键不好用
+快速恢复的办法是插入键盘时按住空格+`Backspace`键,这样会重置键盘内存储的设置信息,键盘就会恢复常态。如果问题依旧存在,请参考:
-现在大多数键盘 `KC_RGUI`和`KC_RCTL`中间的键子叫做`KC_APP`。这是因为在这个键子发明之前相关标准里就已经有键叫做`MENU(菜单)`了,所以微软叫他`APP(应用)`键。
+* [Bootmagic](zh-cn/feature_bootmagic.md)
+* [指令](zh-cn/feature_command.md)
-## `KC_SYSREQ` 不工作
-使用抓屏的键码(`KC_PSCREEN`或`KC_PSCR`)而不用`KC_SYSREQ`。组合键'Alt + Print Screen'会被当作'System request'。
+## 菜单键(Menu)不可用
-见[issue #168](https://github.com/tmk/tmk_keyboard/issues/168)和
+现代键盘上,位于 `KC_RGUI` 及 `KC_RCTL` 间的按键实际上叫做 `KC_APP`。原因是该键被发明时,相关标准中已经有了 `菜单(MENU)` 键,因此微软将该键命名为 `APP` 键。
+
+## `KC_SYSREQ` 不可用
+请使用截图键码(`KC_PSCREEN` 及 `KC_PSCR`)替代 `KC_SYSREQ`,组合键’Alt + Print Screen‘实际上会被识别为’System request‘。
+
+具体参见[issue #168](https://github.com/tmk/tmk_keyboard/issues/168)以及
* https://en.wikipedia.org/wiki/Magic_SysRq_key
* https://en.wikipedia.org/wiki/System_request
## 电源键不工作
-这有点让人困惑,QMK有两个"Power(电源)"键码: `KC_POWER` 在键盘/小键盘的HID使用页面中,`KC_SYSTEM_POWER` (或者叫`KC_PWR`)在用户页。
+QMK有两个容易让人迷惑的“电源键”键码:HID键盘页的 `KC_POWER`,及用户页的 `KC_SYSTEM_POWER`(或 `KC_PWR`)。
-前者只能被macOS识别,但是后者,即`KC_SLEP`和`KC_WAKE`三大主要操作系统全都支持,所以推荐使用这两个。Windows下这些键立即生效,macOS要长按直到弹出对话框。
+前者只有macOS支持,后者连同 `KC_SLEP` 及 `KC_WAKE` 在所有主流操作系统上都支持,因此使用后者是推荐的做法。在Windows下,按下按键即刻就会生效,而macOS下必须按住直到系统弹出一个对话框。
-## 自动大小写锁定
-可以解决'the'问题(正常应为The)。我经常在输入'The'时不慎输入了'the'或者'THe'。自动大小写锁定可以修正此类问题。详见下方链接。
+## 单发修饰键
+用来解决我自己的’the‘麻烦,我总是会将’The‘错输入为’the‘或’THe‘,单发Shift键缓解了我的这个麻烦。
https://github.com/tmk/tmk_keyboard/issues/67
-## 修改 键/层 卡住
-除非正确配置层切换,否则修改键或层可能会卡住。
-对于修改键和图层操作,必须把`KC_TRANS`放到目标层的相同位置,用于注销修改键或在释放事件时返回到上一层。
+## 修饰键/层 卡住了
+层切换功能只有在正确配置的情况下,才不会出现卡住修饰键和层的问题。
+对于修饰键和层切换操作来讲,必须确保 `KC_TRANS` 在切换到目标layer时正确置位,才能让修饰键正确释放。或者在释放动作中确保返回到了之前的层。
+
* https://github.com/tmk/tmk_core/blob/master/doc/keymap.md#31-momentary-switching
* https://geekhack.org/index.php?topic=57008.msg1492604#msg1492604
* https://github.com/tmk/tmk_keyboard/issues/248
-## 机械自锁开关支持Mechanical Lock Switch Support
+## 机械锁定式开关支持
-本功能用于*机械自锁开关*比如[this Alps one](https://deskthority.net/wiki/Alps_SKCL_Lock)。你可以通过向`config.h`添加以下宏来使能该功能:
+该功能支持形如[Alps这款](https://deskthority.net/wiki/Alps_SKCL_Lock)的*机械锁定式开关*,启用该功能须在 `config.h` 中添加如下定义:
```
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
```
-在使能该功能后,要在键盘中使用`KC_LCAP`, `KC_LNUM` 和 `KC_LSCR`这三个键码。
+启用该功能后,在你的键映射中须改为使用 `KC_LCAP`,`KC_LNUM` 和 `KC_LSCR`。
-远古机械键盘偶尔会有自锁机械开关,现在几乎没有了。***大多数情况下你不需要使用该功能,且要使用`KC_CAPS`, `KC_NLCK`和`KC_SLCK`这三个键码。***
+旧式复古风(vintage style)键盘偶尔能见到锁定式开关,但在现代键盘中见不到了。***因此你基本不会需要这个功能的,直接使用 `KC_CAPS`,`KC_NLCK` 和 `KC_SLCK` 就好***
-## 输入ASCII之外的特殊字符比如Cédille 'Ç'
+## 输入形如法语中软音'Ç'这样的非ASCII字符
-请见[Unicode](feature_unicode.md)功能。
+参见[Unicode](zh-cn/feature_unicode.md)功能.
-## macOS上的`Fn`
+## macOS系统下的 `Fn`
-不像大多数FN键,苹果上那个有自己的键码...呃,基本上算吧。 他取缔了基本6键无冲HID报告的第六个键码 -- 所以苹果键盘其实是5键无冲的。
+和其它键盘不同,Apple键盘上的Fn有自己的键码...在某种程度上。其占用了基础6KRO HID事件上报中的第六个键码 —— 因此Apple键盘实际上只是5KRO(5键无冲)的。
-技术上说QMK可以发送这个键。但是,这样做需要修改报告格式以添加FN键的状态。这还不是最糟糕的,你的键盘的VID和PID和真的苹果键盘不一样的话还不会被识别。
-QMK官方支持这个会被律师函的,所以就当我没说过。
+技术上讲QMK确实能发送这种键码,但这么做需要修改上报事件中Fn键状态的格式。更麻烦的是,只有你的键盘的VID及PID与Apple键盘一致时才会生效。QMK对此提供官方支持可能会有法律风险,换句话说,我们不太可能去这么做的。
-详见[issue#2179](https://github.com/qmk/qmk_firmware/issues/2179)。
+具体信息请参见[这个issue](https://github.com/qmk/qmk_firmware/issues/2179)。
+## Mac OSX下支持的键有哪些?
+你可以通过查阅以下代码确认OSX下支持的键码。
-## Mac OSX的媒体控制键
-#### KC_MNXT 和 KC_MPRV 在Mac上不好用
-使用 `KC_MFFD`(`KC_MEDIA_FAST_FORWARD`) 和 `KC_MRWD`(`KC_MEDIA_REWIND`),不要用 `KC_MNXT` 和 `KC_MPRV`.
-详见 https://github.com/tmk/tmk_keyboard/issues/195
-
-
-## Mac OSX中支持那些键?
-你可以从此源码中获知在OSX中支持哪些键码
-
-`usb_2_adb_keymap` 阵列映射 键盘/小键盘 页用于ADB扫描码(OSX内部键码).
+`usb_2_adb_keymap` 数组实现了从 Keyboard/Keypad 页到 ADB 扫描码(OSX内部使用的键码)的转换。
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/Cosmo_USB2ADB.c
-`IOHIDConsumer::dispatchConsumerEvent`会处理用户页面用法。
-<!--翻译问题:上面那两句翻译的不好-> handles Consumer page usages. -->
+以及 `IOHIDConsumer::dispatchConsumerEvent` 负责处理用户页部分。
+
https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-606.1.7/IOHIDFamily/IOHIDConsumer.cpp
-## Mac OSX中的JIS键
-岛国特别键比如`無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)`OSX是不是别的。You can use **Seil** to enable those keys, try following options.
-<!--翻译问题:以上“岛国特别键”没有任何地域歧视的意思 -->
-* 在电脑键盘上使能NFER键
-* 在电脑键盘上使能XFER键
-* 在电脑键盘上使能KATAKAN键
+## Mac OSX下的JIS键
+日语体系的JIS键盘有些特殊键码:`無変換(Muhenkan)`, `変換(Henkan)`, `ひらがな(hiragana)` 在OSX下无法被识别,可以尝试通过以下配置借助 **Seil** 来启用这些键。
-https://pqrs.org/osx/karabiner/seil.html
+* 在PC键盘中启用NFER键
+* 在PC键盘中启用XFER键
+* 在PC键盘中启用KATAKANA键
+https://pqrs.org/osx/karabiner/seil.html
-## RN-42蓝牙模块与Karabiner不能有效协同工作
-Karabiner - Mac OSX的改键软件 - 默认RN-42模块是不会被响应的。想要Karabiner和你的键盘协同工作你要使能此选项:
-https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559237
-此问题详见下方链接。
+## RN-42蓝牙模块与Karabiner的兼容性问题
+Karabiner - Mac OSX系统下的键映射工具 - 默认会忽略RN-42模块的输入事件。须在Karabiner开启相关选项来支持你的键盘。
+https://github.com/tekezo/Karabiner/issues/403#issuecomment-102559230
+这个问题的其它详细信息参见
https://github.com/tmk/tmk_keyboard/issues/213
https://github.com/tekezo/Karabiner/issues/403
-## Esc 和 <code>&#96;</code> 双功能键
-
-请见[Grave Escape](feature_grave_esc.md)功能。
+## Esc和<code>&#96;</code>位于同一个键位
-## Mac OSX的弹出键
-`KC_EJCT` 键码在OSX可以使用 https://github.com/tmk/tmk_keyboard/issues/250
-似乎Windows10会忽略该键码,Linux/Xorg可以识别该键码但默认不映射。
+参见[Grave Escape](zh-cn/feature_grave_esc.md)功能.
-目前尚不清楚如何在真正的苹果键盘按出弹出键。HHKB使用`F20`用于弹出键(`Fn+f`),该功能在MAC模式有效但不保证与苹果弹出键码相符。
+## Mac OSX下的弹出功能
+`KC_EJCT` 在OSX下可用。 https://github.com/tmk/tmk_keyboard/issues/250
+Windows 10应该是忽略了这个键码,Linux/Xorg能识别到,但默认没有映射处理。
+目前尚不清楚Apple键盘上弹出键到底是啥,HHKB在Mac模式下使用 `F20` 来作为弹出键(`Fn+f`),但应该和Apple的弹出键码不是一回事儿。
-## `action_util.c`中的 `weak_mods`和`real_mods`是什么
-___待改善___
+## 在 `action_util.c` 中的 `weak_mods` 和 `real_mods` 是什么东西?
+___待完善的内容___
-real_mods 用于保存实际(物理)修改键的实际状态。
-weak_mods 用于保存虚拟或临时修改键,它将不会影响实际修改键。
+real_mods保存的是现实的/物理上的修饰键状态,而weak_mods保存的是虚拟的或临时的修饰键状态,且不应该影响到真实的修饰键的状态。
-以按下左侧Shift键然后输入ACTION_MODS_KEY(LSHIFT, KC_A)为例,
+例如你按住了物理键盘上的左shift键,又输入了 ACTION_MODS_KEY(LSHIFT, KC_A),
-在weak_mods时,
-* (1) 按下不抬起左Shift: real_mods |= MOD_BIT(LSHIFT)
-* (2) 按 ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods |= MOD_BIT(LSHIFT)
-* (3) 抬起 ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods &= ~MOD_BIT(LSHIFT)
-real_mods 还是保持在修改状态。
+在weak_mods下,
+* (1) 按住左shift: real_mods |= MOD_BIT(LSHIFT)
+* (2) 按下 ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods |= MOD_BIT(LSHIFT)
+* (3) 松开 ACTION_MODS_KEY(LSHIFT, KC_A): weak_mods &= ~MOD_BIT(LSHIFT)
+real_mods依然保留着修饰键的状态值。
-在没有weak_mods时,
-* (1) 按下不抬起左Shift: real_mods |= MOD_BIT(LSHIFT)
-* (2) 按 ACTION_MODS_KEY(LSHIFT, KC_A): real_mods |= MOD_BIT(LSHIFT)
-* (3) 抬起 ACTION_MODS_KEY(LSHIFT, KC_A): real_mods &= ~MOD_BIT(LSHIFT)
-此时real_mods失去‘实际左Shift’的状态。
+非weak_mods时,
+* (1) 按住左shift: real_mods |= MOD_BIT(LSHIFT)
+* (2) 按下 ACTION_MODS_KEY(LSHIFT, KC_A): real_mods |= MOD_BIT(LSHIFT)
+* (3) 松开 ACTION_MODS_KEY(LSHIFT, KC_A): real_mods &= ~MOD_BIT(LSHIFT)
+这时real_mods失去了‘物理键左shift’的状态值。
-weak_mods和real_mods现已全部加入键盘数据包发送豪华套餐。
+在键盘事件发送时,weak_mods会与real_mods求逻辑或。
https://github.com/tmk/tmk_core/blob/master/common/action_util.c#L57
diff --git a/docs/zh-cn/faq_misc.md b/docs/zh-cn/faq_misc.md
new file mode 100644
index 0000000000..d01caba3be
--- /dev/null
+++ b/docs/zh-cn/faq_misc.md
@@ -0,0 +1,108 @@
+# 其它 FAQ
+
+<!---
+ original document: 0.15.12:docs/faq_misc.md
+ git diff 0.15.12 HEAD -- docs/faq_misc.md | cat
+-->
+
+## 怎么对键盘进行测试? :id=testing
+
+测试键盘就简单直接,把每个按键按一遍后确认发送的是正确的就行。也可以使用[QMK配置器](https://config.qmk.fm/#/test/)的测试模式检查键盘,即便这键盘没有运行着QMK。
+
+## 安全措施
+
+你应该不想见到键盘变砖,变得不能再刷写固件。这里给出了一些非常危险(或相反不太危险)的因素。
+
+- 如果你的键盘没有RESET键,在你需要进入DFU模式时,不得不需要用螺丝刀打开后盖去按PCB上的RESET键。
+- 把 tmk_core/common 下的文件搞乱的话,容易导致键盘无法使用
+- .hex文件太大的话也会引起问题。`make dfu` 会先擦除存储块,再检查固件大小(哎呀,顺序错了),此时发现错误进而导致刷写失败,键盘停留在DFU模式下。
+ - 因此,请留意.hex文件尺寸有大小限制,例如在Planck上是十六进制7000(十进制的28672)
+
+```
+Linking: .build/planck_rev4_cbbrowne.elf [OK]
+Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
+
+Size after:
+ text data bss dec hex filename
+ 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
+```
+
+ - 上面的文件大小是22396/577ch, 小于28672/7000h
+ - 任何合适的其它.hex文件,都可以尝试加载
+ - 在键盘的Makefile中你添加的一些配置也会额外占用空间,在使用BOOTMAGIC_ENABLE,
+ MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE
+ 时请留意
+- DFU工具/不会/允许bootloader被覆写(除非你往DFU工具上塞自己的东西),这个风险不大。
+- EEPROM的写循环一般是 100000(100k)次,不应不停地持续重复地刷写固件,不然很快就烧毁了。
+
+## NKRO 不好使
+首先请确保在编译固件时有在**Makefile**中启用 `NKRO_ENABLE`
+
+如果依旧不行,尝试一下 `Magic` **N** 指令(默认是左Shift+右Shift+N),这个指令可以让键盘在**NKRO**和**6KRO**模式间临时切换。有的场景下**NKRO**无法工作必须切换到**6KRO**模式,比如在BIOS中操作时。
+
+如果你的固件编译时指定了 `BOOTMAGIC_ENABLE` ,则需要使用 `BootMagic`**N** 指令(默认是空格+N)。这个配置保存在EEPROM中,断电也会留存。
+
+https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
+
+
+## 轨迹球需要复位电路 (PS/2鼠标支持)
+缺失复位电路的情况下,由于不正确的硬件初始化,可能会导致设备不稳定,具体请参阅TPM754的电路原理图:
+
+- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
+- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf
+
+
+## 无法读到大于16的矩阵列
+当列数大于16时,在 [matrix.h] 中的 `read_cols()` 中请用 `1UL<<16` 替代 `1<<16`。
+
+在C语言中,对于AVR上的 `1`,会被视作一种[16位]的[整形(int)]类型,因此无法左移超过15位。因此 `1<<16` 的计算结果会错误地变成0。解决办法就是将类型改为[无符号长整形(unsigned long)]类型的 `1UL`。
+
+https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
+
+## 有些额外的按键不好使(系统,音频控制键)
+在QMK的 `rules.mk` 中须定义 `EXTRAKEY_ENABLE`
+
+```
+EXTRAKEY_ENABLE = yes # 音频及系统控制
+```
+
+## 无法从休眠唤醒
+
+在Windows的**电源管理**的**设备管理**中,检查 `允许该设备唤醒计算机` 选项,同时检查一下BIOS中的相关设置,任意一个按键都应该能将计算机从休眠状态唤醒。
+
+## 在使用Arduino?
+
+**注意Arduino的引脚编号与芯片的引脚编号是不同的**。例如,Arduino的 `D0` 引脚并不是 `PD0`,请对照其电路图检查电路。
+
+- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
+- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
+
+Arduino Leonardo 以及 micro 使用的是**ATMega32U4**因此可以用TMK,但bootloader可能会是个麻烦的问题。
+
+## 启用JTAG
+
+默认情况下,键盘启动后JTAG调试接口就被禁用了。支持JTAG的MCU出场时会带着 `JTAGEN` 保险丝,而键盘因为需要这部分MCU的引脚去控制开关矩阵、LED等功能。
+
+如果你希望启用JTAG,在 `config.h` 中添加定义:
+
+```c
+#define NO_JTAG_DISABLE
+```
+
+## USB 3兼容性问题
+将设备从USB 3.x端口改插到USB 2.0端口能解决一些问题。
+
+
+## Mac相关兼容性问题
+### OS X 10.11 和 Hub
+参见: https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
+
+
+## BIOS (UEFI) 配置/恢复 (休眠 & 唤醒)/电源循环
+有人反馈过他们的键盘在BIOS下或是从休眠状态唤醒后会不可用。
+
+目前这个问题的原因还不清楚,但一些编译选项应该和这个问题有关,你可以在Makefile中禁用 `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` 或其他的试一试。
+
+更多信息:
+- https://github.com/tmk/tmk_keyboard/issues/266
+- https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
diff --git a/docs/zh-cn/feature_grave_esc.md b/docs/zh-cn/feature_grave_esc.md
new file mode 100644
index 0000000000..f57dabeaff
--- /dev/null
+++ b/docs/zh-cn/feature_grave_esc.md
@@ -0,0 +1,39 @@
+# Grave Escape
+
+<!---
+ original document: 0.15.12:docs/feature_grave_esc.md
+ git diff 0.15.12 HEAD -- docs/feature_grave_esc.md | cat
+-->
+
+*译注:Grave键即标准键盘中Tab键上方的 <code>&#96;</code> 键,该符号用于英法语等西语体系,辅助调整发音,中文中没有对应概念;Escape即Esc键*
+
+若你使用60%或其它没有Fn键配列的键盘,会留意到没有独立的Escape键。Grave Escape功能可以让Grave键(<code>&#96;</code>及`~`)与Escape共享一个按键
+
+## 使用方法
+
+在配列中使用 `KC_GESC` 替换 `KC_GRAVE` (一般都在`1`键左边)。默认点击会输出 `KC_ESC`,按下Shift或GUI键时,点击会输出 `KC_GRV`
+
+## 操作系统视角
+
+假如翠花按下GESC键,系统接收到的是KC_ESC字符。若翠花按住Shift再按下GESC,将输出 `~` 或是反引号。若翠花按住GUI/CMD/Win键,将仅输出<code>&#96;</code>字符
+
+## 键码
+
+|键 |别名 |描述 |
+|---------|-----------|------------------------------------------------------------------|
+|`KC_GESC`|`GRAVE_ESC`|单击输出Escape, 按住Shift或GUI时输出<code>&#96;</code> |
+
+### 须留意
+
+在macOS上 Command+<code>&#96;</code>默认行为是“移动焦点到下一个窗口”,因此不会输出反引号。另外,即便在键盘配置中更改过快捷键,终端程序(Terminal)也通常会将这个操作视为循环切换窗口
+
+## 配置
+
+有几种键组合可以变更这种行为,如Windows下的Control+Shift+Escape、macOS下的Command+Option+Escape。若要调整,可以在 `config.h` 中通过 `#define` 配置
+
+|定义 |描述 |
+|--------------------------|-----------------------------------------|
+|`GRAVE_ESC_ALT_OVERRIDE` |按住Alt时输出Escape |
+|`GRAVE_ESC_CTRL_OVERRIDE` |按住Control时输出Escape |
+|`GRAVE_ESC_GUI_OVERRIDE` |按住GUI时输出Escape |
+|`GRAVE_ESC_SHIFT_OVERRIDE`|按住Shift时输出Escape |
diff --git a/docs/zh-cn/feature_space_cadet.md b/docs/zh-cn/feature_space_cadet.md
new file mode 100644
index 0000000000..e3dab9c727
--- /dev/null
+++ b/docs/zh-cn/feature_space_cadet.md
@@ -0,0 +1,70 @@
+# Space Cadet: The Future, Built In
+<!-- Deliberately not translated, leave it to a suitable translation -->
+
+<!---
+ original document: 0.15.12:docs/feature_space_cadet.md
+ git diff 0.15.12 HEAD -- docs/feature_space_cadet.md | cat
+-->
+
+*译注:Space Cadet来源于(在西方早期程序员中)著名的键盘Space Cadet Keyboard,具体信息参见下面的链接或[维基百科](https://en.wikipedia.org/wiki/Space-cadet_keyboard)*
+
+Steve Losh 在 [Space Cadet Shift](https://stevelosh.com/blog/2012/10/a-modern-space-cadet/) 详细地描述了该功能. 简而言之,点击左Shift时,会输出左括号;点击右Shift时,会输出右括号。如果按住Shift键,常规的Shift将正常工作。这功能实际上和听起来的一样爽,更爽的是现在连Control和Alt也支持!
+
+## 使用指南
+
+首先,在你的配列中完成以下任一项:
+- 替换左Shift为 `KC_LSPO`(左Shift,左括号),替换右Shift为 `KC_RSPC`(右Shift,右括号)。
+- 替换左Control为 `KC_LCPO`(左Control,左括号),替换右Control为 `KC_RCPC`(右Control,右括号)。
+- 替换左Alt为 `KC_LAPO`(左Alt,左括号),替换右Alt为 `KC_RAPC`(右Alt,右括号)。
+- 替换任意一个Shift为 `KC_SFTENT`(右Shift,回车)。
+
+## 键码
+
+|键码 |描述 |
+|-----------|-----------------------------|
+|`KC_LSPO` |按住时左Shift,点击时 `(` |
+|`KC_RSPC` |按住时右Shift,点击时 `)` |
+|`KC_LCPO` |按住时左Control,点击时 `(` |
+|`KC_RCPC` |按住时右Control,点击时 `)` |
+|`KC_LAPO` |按住时左Alt,点击时 `(` |
+|`KC_RAPC` |按住时右Alt,点击时 `)` |
+|`KC_SFTENT`|按住时右Shift,点击时回车 |
+
+## 须留意
+
+同时按下两边的Shift键时会与Space Cadet功能冲突。请参见[指令功能](zh-cn/feature_command.md)以了解如何解决,也可以在 `rules.mk` 中禁用指令:
+
+```make
+COMMAND_ENABLE = no
+```
+
+## 配置
+
+默认情况下Space Cadet假设键盘布局为US ANSI,如果你的布局使用不同的括号符,可以在 `config.h` 中重定义。可以修改修饰键点击时发送的字符,亦或阻止修饰键工作。这个新的配置项依次绑定了三个键码:按住或组合其它键使用时的修饰键;点击时发送的修饰键点击(`Tap Modifier`)(在 `KC_TRNS` 中没有修饰键时);最后是点击时发送的键码。请记住,例如'KC_RSFT'按住时点击 `KC_KSPO` 及 `KC_TRNS` 时,修饰键依旧会对键码生效,即属于修饰键点击。
+
+|定义 |默认值 |描述 |
+|----------------|-------------------------------|----------------------------------------------------------------|
+|`LSPO_KEYS` |`KC_LSFT, LSPO_MOD, LSPO_KEY` |按住时发送`KC_LSFT`,点击时发送 `LSPO_MOD` 及 `LSPO_KEY` 定义的键码. |
+|`RSPC_KEYS` |`KC_RSFT, RSPC_MOD, RSPC_KEY` |按住时发送`KC_RSFT`,点击时发送 `RSPC_MOD` 及 `RSPC_KEY` 定义的键码. |
+|`LCPO_KEYS` |`KC_LCTL, KC_LSFT, KC_9` |按住时发送`KC_LCTL`,点击时发送 `KC_LSFT` 及 `KC_9`. |
+|`RCPC_KEYS` |`KC_RCTL, KC_RSFT, KC_0` |按住时发送`KC_RCTL`,点击时发送 `KC_RSFT` 及 `KC_0`. |
+|`LAPO_KEYS` |`KC_LALT, KC_LSFT, KC_9` |按住时发送`KC_LALT`,点击时发送 `KC_LSFT` 及 `KC_9`. |
+|`RAPC_KEYS` |`KC_RALT, KC_RSFT, KC_0` |按住时发送`KC_RALT`,点击时发送 `KC_RSFT` 及 `KC_0`. |
+|`SFTENT_KEYS` |`KC_RSFT, KC_TRNS, SFTENT_KEY` |按住时发送`KC_RSFT`,点击时发送 `SFTENT_KEY`. |
+|`SPACE_CADET_MODIFIER_CARRYOVER` |*未定义* |在尝试触发其它修饰键的修饰键点击前,暂存目前的修饰键。这在尝试触发Space Cadet前频繁发生修饰键提前松开时会有用。(译注[^1]) |
+
+
+## 过时的配置项
+
+以下是一些内部用于向后兼容的定义,目前仍可以使用,但上面的定义适用性要强得多。例如,若你点击 `KC_LSPO` 时不想按住修饰键,在旧定义中只有一个办法,使用 `DISABLE_SPACE_CADET_MODIFIER`。但现在可以定义为:`#define LSPO_KEYS KC_LSFT, KC_TRNS, KC_9`,效果是在按住按键时触发左Shift,点击则发送 `KC_9`。
+
+|定义 |默认值 |描述 |
+|------------------------------|-------------|-------------------------------------|
+|`LSPO_KEY` |`KC_9` |点击左Shift时发送的键码 |
+|`RSPC_KEY` |`KC_0` |点击右Shift时发送的键码 |
+|`LSPO_MOD` |`KC_LSFT` |应用在 `LSPO_KEY` 上的修饰键 |
+|`RSPC_MOD` |`KC_RSFT` |应用在 `RSPC_KEY` 上的修饰键 |
+|`SFTENT_KEY` |`KC_ENT` |点击Shift时发送的键码 |
+|`DISABLE_SPACE_CADET_MODIFIER`|*未定义* |定义时将阻止修饰键应用在Space Cadet上 |
+
+[^1]这句实在是绕,不能确保翻译到位,请参考英文文档
diff --git a/docs/zh-cn/flashing.md b/docs/zh-cn/flashing.md
new file mode 100644
index 0000000000..da3ceefc32
--- /dev/null
+++ b/docs/zh-cn/flashing.md
@@ -0,0 +1,329 @@
+# 刷写指引及Bootloader资料
+
+<!---
+ original document: 0.15.12:docs/flashing.md
+ git diff 0.15.12 HEAD -- docs/flashing.md | cat
+-->
+
+用于键盘的bootloader有很多种,几乎每一种都在使用私有的刷写协议及工具。幸运的是,形如[QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)这样的工程目标就是尽量支持这些工具,本文会探讨各种bootloader的差异,以及可用的刷写方案。
+
+针对基于AVR的键盘,QMK会自动检查所要刷写的 `.hex` 文件大小是否与在 `rules.mk` 中设置的 `BOOTLOADER` 值所匹配,同时会输出字节大小信息(及最大限制)。
+
+同时也可以使用CLI工具刷写键盘,执行:
+```
+$ qmk flash -kb <keyboard> -km <keymap>
+```
+更多信息参见文档[`qmk flash`](zh-cn/cli_commands.md#qmk-flash)。
+
+## Atmel DFU
+
+Atmel系列的DFU bootloader默认配备在所有USB AVR系列上(16/32U4RC除外),广泛用于一些PCB上具备私有集成电路模块(IC)的键盘上(老款OLKB、Clueboards等)。有些使用的是LUFA实现的DFU bootloader,或是QMK的分支版本(新款OLKB),后者对硬件功能进行了扩充加强。
+
+为保证对DFU bootloader的兼容性,请确保在 `rules.mk` 中存在如下部分内容(可选的值还有 `lufa-dfu` 或 `qmk-dfu`):
+
+```make
+# 选择Bootloader
+BOOTLOADER = atmel-dfu
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)(推荐的图形化工具)
+* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / QMK中将构建目标设为 `:dfu`(推荐的命令行工具)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码
+ * 如果PCB上有 `RESET` 键,点击之
+ * 快速短接一下RST到GND
+2. 等待操作系统识别到设备
+3. 清空flash存储数据(如果使用QMK工具箱或CLI的 `make`会自动进行)
+4. 将.hex文件刷写进去
+5. 重置设备进入应用模式(如上,会自动进行)
+
+### QMK DFU
+
+QMK维护了[一个LUFA DFU bootloader的分支版本](https://github.com/qmk/lufa/tree/master/Bootloaders/DFU),其可以进行一次矩阵扫描来退出bootloader进入应用模式,同时会让LED闪烁或蜂鸣器响一声。若要启用该功能,将以下定义添加到 `config.h`:
+
+```c
+#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW
+#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW
+// 可选:
+//#define QMK_LED E6
+//#define QMK_SPEAKER C6
+```
+目前来讲不推荐将 `QMK_ESC` 键设置成与[Bootmagic](zh-cn/feature_bootmagic.md)同一个键,否则按下该键时只会让MCU在bootloader模式上反复进出。
+
+制造商及型号字符串自动从 `config.h` 中获取,并会在型号后追加 " Bootloader"。
+
+要生成该bootloader,需指定 `bootloader` 构建目标,即 `make planck/rev4:default:bootloader`。要生成可部署到正式产品的.hex文件(同时包含QMK及bootloader),使用 `production` 构建目标,即 `make planck/rev4:default:production`。
+
+### `make` 构建目标
+
+* `:dfu`: 每5秒检测一次直到发现可用的DFU设备,然后进行固件刷写。
+* `:dfu-split-left` 和 `:dfu-split-right`: 同 `:dfu` 一样会刷写固件,但额外地会设置手性设置到EEPROM中,对于基于Elite-C的分体式键盘这是理想的方法。
+
+## Caterina
+
+Arduino及其仿制板使用[Caterina bootloader](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina)或某种变体(使用Pro Micro或其仿制芯片、Pololu A-Star等构建的所有键盘),并基于虚拟串口使用AVR109协议进行通信。
+
+为确保对Caterina bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = caterina
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases) (推荐的图形化工具)
+* [avrdude](https://www.nongnu.org/avrdude/) QMK中须基于 `avr109` 编程器 / `:avrdude` 构建目标 (推荐的命令行工具)
+* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式(进入该模式后只有7秒时间可以刷写;一些型号需要你在750ms内重置两次):
+ * 点击 `RESET` 键码
+ * 如果PCB上有 `RESET` 键,点击之
+ * 快速短接一下RST到GND
+2. 等待操作系统识别到设备
+3. 将.hex文件刷写进去
+4. 等待设备自动重置
+
+### `make` 构建目标
+
+* `:avrdude`: 每5秒检测一次直到发现可用的Caterina设备(通过检测新COM端口),然后进行固件刷写。
+* `:avrdude-loop`: 同 `:avrdude` 一样刷写固件,但会在一个设备刷写完后再次尝试刷写。主要用于批量刷写设备。按 Ctrl+C 以终止循环检测。
+* `:avrdude-split-left` 和 `:avrdude-split-right`: 同 `:avrdude` 一样会刷写固件,但额外地会设置手性设置到EEPROM中,对于基于Pro Micro的分体式键盘这是理想的方法。
+
+## HalfKay
+
+HalfKay是一款由PJRC开发的超精简的bootloader,且呈现为HID设备(因此不需要额外的驱动),在所有的Teensys,即"the 2.0",上已经预刷写过。该bootloader目前是闭源的,因此一旦覆写(即通过ISP刷入其它bootloader)掉,就无法复原了。
+
+为确保对Halfkay bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = halfkay
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)(推荐的图形化工具)
+* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) / QMK中将构建目标设为 `:teensy`(推荐的命令行工具)
+* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式(进入该模式后只有7秒时间可以刷写):
+ * 点击 `RESET` 键码
+ * 如果Teensy上或PCB上有 `RESET` 键,点击之
+ * 快速短接一下RST到GND
+2. 等待操作系统识别到设备
+3. 将.hex文件刷写进去
+4. 重置设备进入应用模式(可能会自动进行)
+
+## USBasploader
+
+USBasploader是一款来源于[Objective Development](https://www.obdev.at/products/vusb/usbasploader.html)的bootloader。它通过模拟出一个USBasp ISP编程器来运行V-USB以用于一些形如ATmega328P这样的“非USB AVR芯片”。
+
+为确保对USBasploader bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = usbasploader
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)(推荐的图形化工具)
+* [avrdude](https://www.nongnu.org/avrdude/) QMK中须基于 `usbasp` 编程器 / `:usbasp` 构建目标(推荐的命令行工具)
+* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码
+ * 在按住 `BOOT` 按钮时,快速点击一下PCB上的 `RESET`
+2. 等待操作系统识别到设备
+3. 将.hex文件刷写进去
+4. 点击PCB上的 `RESET` 按钮或将RST短接至GND一下。
+
+## BootloadHID
+
+BootloadHID是一款用于AVR微控制器的bootloader,其呈现为HID输入设备,和HalkKay很像,因此在Windows下也无需安装驱动。
+
+为确保对bootloadHID bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = bootloadhid
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)(推荐的图形化工具)
+* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / QMK中将构建目标设为 `:bootloadhid`(推荐的命令行工具)
+* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash)
+
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码
+ * 在按住“盐键”(salt key)时插入键盘 - 在PS2AVRGB板上,通常在MCU的A0及B0引脚上有这个按键,否则请查看键盘的使用说明。
+2. 等待操作系统识别到设备
+3. 将.hex文件刷写进去
+4. 重置设备到应用模式(可能会自动进行)
+
+### QMK HID
+
+QMK维护了[一个LUFA HID bootloader的分支版本](https://github.com/qmk/lufa/tree/master/Bootloaders/HID),通过USB HID节点设备进行刷写,工作模式类似于PJRC的Teensy Loader刷写器以及HalfKay bootloader。其可以进行一次矩阵扫描来退出bootloader进入应用模式,同时会让LED闪烁或蜂鸣器响一声。
+
+为确保对QMK HID bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = qmk-hid
+```
+
+要启用额外的功能支持,请添加如下定义至 `config.h`:
+
+```c
+#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW
+#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW
+// 可选:
+//#define QMK_LED E6
+//#define QMK_SPEAKER C6
+```
+
+目前来讲不推荐将 `QMK_ESC` 键设置成与[Bootmagic Lite](zh-cn/feature_bootmagic.md)同一个键,否则按下该键时只会让MCU在bootloader模式上反复进出。
+
+制造商及型号字符串自动从 `config.h` 中获取,并会在型号后追加 " Bootloader"。
+
+要生成该bootloader,需指定 `bootloader` 构建目标,即 `make planck/rev4:default:bootloader`。要生成可部署到正式产品的.hex文件(同时包含QMK及bootloader),使用 `production` 构建目标,即 `make planck/rev4:default:production`。
+
+兼容的刷写工具:
+
+* TBD
+ * 目前只能选择使用该 [Python脚本](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp_python), 或从LUFA仓库中构建[`hid_bootloader_cli`](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp)。Homebrew也许(即将)能直接支持(通过 `brew install qmk/qmk/hid_bootloader_cli`)。
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码
+ * 如果PCB上有 `RESET` 键,点击之
+ * 快速短接一下RST到GND
+2. 等待操作系统识别到设备
+4. 将.hex文件刷写进去
+5. 重置设备进入应用模式(可能会自动进行)
+
+### `make` 构建目标
+
+* `:qmk-hid`: 每5秒检测一次直到发现可用的DFU设备,然后进行固件刷写。
+
+## STM32/APM32 DFU
+
+所有的STM32及APM32 MCU系列,除F103型号外(参见[STM32duino小节](#stm32duino))都在出场时预装了bootloader且无法修改或删除。
+
+为确保对STM32-DFU bootloader的兼容性,请添加如下代码块至 `rules.mk`(可选替代项为 `apm32-dfu`):
+
+```make
+# 选择Bootloader
+BOOTLOADER = stm32-dfu
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases) (推荐的图形化工具)
+* [dfu-util](https://dfu-util.sourceforge.net/) / QMK中将构建目标设为 `:dfu-util`(推荐的命令行工具)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式(进入该模式后只有7秒时间可以刷写):
+ * 点击 `RESET` 键码(对STM32F042设备可能无效)
+ * 如果有重置电路,点击PCB上的 `RESET` 键;有些主控板上可能会有一个开关需要先打开
+ * 否则,你需要将 `BOOT0` 接线到VCC(通过 `BOOT0` 按钮或跳线),短接 `RESET` 至GND(通过 `RESET` 按钮或条线),然后断开 `BOOT0` 的接线。
+2. 等待操作系统识别到设备
+3. 将.bin文件刷写进去
+4. 重置设备进入应用模式(可能会自动进行)
+
+### `make` 构建目标
+
+* `:dfu-util`: 每5秒检测一次直到发现可用的STM32 bootloader设备,然后进行固件刷写。
+* `:dfu-util-split-left` 和 `:dfu-util-split-right`: 同 `:avrdude` 一样会刷写固件,但额外地会设置手性设置到EEPROM中,对于基于Proton-C的分体式键盘这是理想的方法。
+* `:st-link-cli`: 通过ST-Link CLI工具集而非dfu-util进行刷写,需要有ST-Link电子狗。
+* `:st-flash`: 通过[STLink工具](https://github.com/stlink-org/stlink)内的 `st-flash` 工具而非dfu-util进行刷写,需要有ST-Link电子狗。
+
+## STM32duino :id=stm32duino
+
+该bootloader几乎是STM32F103板专用,该型号出厂不带USB DFU bootloader。其源代码及预编译好的二进制文件[在这里](https://github.com/rogerclarkmelbourne/STM32duino-bootloader)。
+
+为确保对STM32duino bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = stm32duino
+```
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases) (推荐的图形化工具)
+* [dfu-util](https://dfu-util.sourceforge.net/) / QMK中将构建目标设为 `:dfu-util`(推荐的命令行工具)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式(进入该模式后只有7秒时间可以刷写):
+ * 点击 `RESET` 键码(对STM32F042设备可能无效)
+ * 如果有重置电路,点击PCB上的 `RESET` 键;有些主控板上可能会有一个开关需要先打开
+ * 否则,你需要将 `BOOT0` 接线到VCC(通过 `BOOT0` 按钮或跳线),短接 `RESET` 至GND(通过 `RESET` 按钮或条线),然后断开 `BOOT0` 的接线。
+2. 等待操作系统识别到设备
+3. 将.bin文件刷写进去
+4. 重置设备进入应用模式(可能会自动进行)
+
+## Kiibohd DFU
+
+Input Club出品的键盘使用NXP Kinetis微控制器而非STM32,并使用了独有的[自制bootloader](https://github.com/kiibohd/controller/tree/master/Bootloader),然而处理器 及协议上两者大部分是一致的。
+
+在 `rules.mk` 中该bootloader的设置项为 `kiibohd`,但既然该bootloader仅用在Input Club主控板上,就不必要设置到键映射或是用户级<!--译:不清楚这里的“user level”是个啥……-->了。
+
+兼容的刷写工具:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)(推荐的图形化工具)
+* [dfu-util](https://dfu-util.sourceforge.net/) / QMK中将构建目标设为 `:dfu-util`(推荐的命令行工具)
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码(有可能只能进入到“安全”bootloader模式,参见[这里](https://github.com/qmk/qmk_firmware/issues/6112))
+ * 如果PCB上有 `RESET` 键,点击之
+2. 等待操作系统识别到设备
+3. 将.bin文件刷写进去
+4. 重置设备进入应用模式(可能会自动进行)
+
+## tinyuf2
+
+键盘可以考虑支持tinyuf2 bootloader,目前唯一支持的设备是F401/F411 blackpill。
+
+在 `rules.mk` 中该bootloader的设置项为 `tinyuf2`,也可指定到键映射及用户级中。
+
+为确保对tinyuf2 bootloader的兼容性,请添加如下代码块至 `rules.mk`:
+
+```make
+# 选择Bootloader
+BOOTLOADER = tinyuf2
+```
+
+兼容的刷写工具:
+
+* 任何具备文件拷贝能力的程序,如 _macOS Finder_ 或 _Windows Explorer_ *。
+
+刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码
+ * 双击PCB上的 `nRST` 键
+2. 等待操作系统识别到设备
+3. 将.uf2文件拷贝到新出现的USB存储设备上
+4. 等待设备恢复可用状态
diff --git a/docs/zh-cn/flashing_bootloadhid.md b/docs/zh-cn/flashing_bootloadhid.md
new file mode 100644
index 0000000000..70139c1e12
--- /dev/null
+++ b/docs/zh-cn/flashing_bootloadhid.md
@@ -0,0 +1,75 @@
+# BootloadHID刷写指引及资料
+
+<!---
+ original document: 0.15.12:docs/flashing_bootloadhid.md
+ git diff 0.15.12 HEAD -- docs/flashing_bootloadhid.md | cat
+-->
+
+ps2avr(GB)基于一片ATmega32A微控制器及特殊的bootloader,无法使用常规的QMK方法进行刷写。
+
+常规刷写过程:
+
+1. 使用如下任一方式进入bootloader模式:
+ * 点击 `RESET` 键码(一些设备上不管用)
+ * 在按住“盐键”(salt key)时插入键盘(该键一般会在键盘使用说明上写明)
+2. 等待操作系统识别到设备
+3. 将.hex文件刷写进去
+4. 重置设备到应用模式(可能会自动进行)
+
+## 用于bootloadHID刷写的构建目标
+
+?> 使用QMK安装脚本,具体[参见这里](zh-cn/newbs_getting_started.md),所需的bootloadHID工具应自动被安装上。
+
+若希望通过命令行进行刷写,通过如下命令指定 `:bootloadhid` 构建目标:
+
+ make <keyboard>:<keymap>:bootloadhid
+
+## 基于图形化界面的刷写方法
+
+### Windows
+1. 下载[HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash)
+2. 重置键盘
+3. 确认VID为 `16c0` 且PID为 `05df`
+4. 点击 `查找设备(Find Device)` 并确认目标键盘可见
+5. 点击 `打开.hex文件(Open .hex File)` 并定位到你创建的.hex文件
+6. 点击 `刷写设备(Flash Device)` 并等待刷写完毕
+
+## 在命令行中进行刷写
+
+1. 重置键盘
+2. 通过输入 `bootloadHID -r` 并追加 `.hex` 文件的路径进行主控板的刷写
+
+### Windows系统上手动安装
+针对MSYS2:
+1. 下载BootloadHID固件包:https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz
+2. 使用合适的工具解压,如7-Zip
+3. 将解压出的 `commandline/bootloadHID.exe` 拷贝至MSYS目录下,一般是 `C:\msys64\usr\bin`
+
+针对Windows本地环境刷写,`bootloadHID.exe` 可以直接在非MSYS2环境下执行。
+
+### Linux系统上手动安装
+1. 安装libusb开发依赖项:
+ ```bash
+ # 该操作具体取决于系统 - Debian下可以这样
+ sudo apt-get install libusb-dev
+ ```
+2. 下载BootloadHID固件包:
+ ```
+ wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz -O - | tar -xz -C /tmp
+ ```
+3. 构建bootloadHID可执行程序:
+ ```
+ cd /tmp/bootloadHID.2012-12-08/commandline/
+ make
+ sudo cp bootloadHID /usr/local/bin
+ ```
+
+### MacOS系统上手动安装
+1. 执行以下命令安装Homebrew:
+ ```
+ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+ ```
+2. 安装以下包:
+ ```
+ brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
+ ```
diff --git a/docs/zh-cn/getting_started_docker.md b/docs/zh-cn/getting_started_docker.md
new file mode 100644
index 0000000000..038f17f9ac
--- /dev/null
+++ b/docs/zh-cn/getting_started_docker.md
@@ -0,0 +1,59 @@
+# Docker快速上手指引
+
+<!---
+ original document: 0.15.12:docs/getting_started_docker.md
+ git diff 0.15.12 HEAD -- docs/getting_started_docker.md | cat
+-->
+
+本工程包含了一套Docker工作流,可以方便地在不更改你主系统环境情况下完成新固件文件的构建工作。这同时也保证了在你拉取该工程代码后的编译环境与其他人以及QMK开发者的一致。当你需要其他人协助你排查遇到的问题时会方便很多。
+
+## 需求
+
+核心需求是一个已安装的可用的 `docker` 或 `podman`。
+* [Docker CE](https://docs.docker.com/install/#supported-platforms)
+* [Podman](https://podman.io/getting-started/installation)
+
+## 用法
+
+拉取QMK仓库到本地(包括所有的子模块):
+
+```bash
+git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
+cd qmk_firmware
+```
+
+执行以下命令构建键映射:
+```bash
+util/docker_build.sh <keyboard>:<keymap>
+# 例: util/docker_build.sh planck/rev6:default
+```
+
+如上可以构建所需的键盘/键映射,可用于刷写的 `.hex` 及 `.bin` 输出文件存放在QMK目录下。如果省略了 `:keymap` 参数,所有的键映射都会被编译。留意编译参数格式与 `make` 构建时的一致。
+
+同时也支持直接从Docker中编译和刷写,只需要指定 `target`:
+
+```bash
+util/docker_build.sh keyboard:keymap:target
+# 例: util/docker_build.sh planck/rev6:default:flash
+```
+
+可以不带参数地执行该脚本,其会依次要求你输入这些参数,也许你会觉得这样更好用:
+
+```bash
+util/docker_build.sh
+# 从输入中读取参数 (留空则构建所有的键盘/键映射)
+```
+
+可以通过设置环境变量 `RUNTIME` 为想使用的容器运行时的名称或路径来指定运行时,默认其会检测并自动选取docker或podman,相比于podman会更倾向于用docker。
+
+```bash
+RUNTIME="podman" util/docker_build.sh keyboard:keymap:target
+```
+
+## FAQ
+
+### 为什么我无法在我的Windows/macOS下刷写固件
+
+在Windows及macOS上,需要有[Docker Machine](http://gw.tnode.com/docker/docker-machine-with-usb-support-on-windows-macos/)运行着,配置过程很繁琐,因此我们没有做推荐。请考虑使用[QMK工具箱](https://github.com/qmk/qmk_toolbox)。
+
+!> Windows下需要启用[Hyper-V](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v)才能运行Docker,这也意味着它无法运行在没有Hyper-V的Windows版本下,如Windows 7,Windows 8及**Windows 10家庭版**。
diff --git a/docs/zh-cn/getting_started_getting_help.md b/docs/zh-cn/getting_started_getting_help.md
deleted file mode 100644
index 8c0ebaa243..0000000000
--- a/docs/zh-cn/getting_started_getting_help.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# 获得帮助
-
-有很多方法来获得关于QMK的帮助.
-
-## 实时聊天
-
-你可以在我们的主要[Discord服务器](https://discord.gg/Uq7gcHh)找到QMK的开发者和用户。有很多讨论固件的不同频道, 工具箱(Toolbox), 硬件,配置工具(configurator).
-
-## OLKB Subreddit
-
-QMK的官方论坛是[/r/olkb](https://reddit.com/r/olkb) 在[reddit.com](https://reddit.com)上.
-
-## GitHub的Issue
-
-你可以在GitHub上 [提出issue](https://github.com/qmk/qmk_firmware/issues).当您的问题需要长期讨论或调试时,这尤其方便。
diff --git a/docs/zh-cn/getting_started_github.md b/docs/zh-cn/getting_started_github.md
index b4e8e9fa5d..2a5ec8ca4f 100644
--- a/docs/zh-cn/getting_started_github.md
+++ b/docs/zh-cn/getting_started_github.md
@@ -1,6 +1,11 @@
# 如何在QMK中使用GitHub
-GitHub can be a little tricky to those that aren't familiar with it - this guide will walk through each step of forking, cloning, and submitting a pull request with QMK.
+<!---
+ original document: 0.15.12:docs/getting_started_github.md
+ git diff 0.15.12 HEAD -- docs/getting_started_github.md | cat
+-->
+
+对不熟悉 GitHub 的人来说,使用GitHub 可能会有些难度。此教程会教您 fork 和 clone QMK,以及向 QMK 提交 pull request 。
?> 本教程假设您已安装GitHub,并且您喜欢使用命令行工作。
diff --git a/docs/zh-cn/getting_started_introduction.md b/docs/zh-cn/getting_started_introduction.md
index b977b63390..82d50355eb 100644
--- a/docs/zh-cn/getting_started_introduction.md
+++ b/docs/zh-cn/getting_started_introduction.md
@@ -1,5 +1,10 @@
# 介绍
+<!---
+ original document: 0.15.12:docs/getting_started_introduction.md
+ git diff 0.15.12 HEAD -- docs/getting_started_introduction.md | cat
+-->
+
本页解释了使用QMK项目所需的基本信息。它假定您能熟练使用Unix shell,但您不熟悉C语言也不熟悉使用make编译。
## 基本QMK结构
@@ -8,7 +13,7 @@ QMK是[Jun Wako](https://github.com/tmk)的[tmk_keyboard](https://github.com/tmk
### 用户空间结构
-在`users`文件夹里面的目录是每个用户的目录。这个文件夹里面放的是用户们在不同键盘都能用到的代码。详见[用户空间特性](feature_userspace.md)
+在`users`文件夹里面的目录是每个用户的目录。这个文件夹里面放的是用户们在不同键盘都能用到的代码。详见[用户空间特性](zh-cn/feature_userspace.md)
### 键盘项目结构
@@ -25,7 +30,7 @@ QMK是[Jun Wako](https://github.com/tmk)的[tmk_keyboard](https://github.com/tmk
* `config.h`: 配置布局的选项
* `keymap.c`: 布局的全部代码, 必要文件
* `rules.mk`: 使能的QMK特性
-* `readme.md`:介绍你的布局,告诉别人怎么使用,附上功能说明。请将图片上传到imgur等图床(译者注:imgur可能已被墙,为了方便国人访问,建议使用国内可以直接访问的图床)。
+* `readme.md`:介绍你的布局,告诉别人怎么使用,附上功能说明。请将图片上传到imgur等图床(译注:imgur可能已被墙,为了方便国人访问,建议使用国内可以直接访问的图床)。
# `config.h` 文件
diff --git a/docs/zh-cn/getting_started_vagrant.md b/docs/zh-cn/getting_started_vagrant.md
new file mode 100644
index 0000000000..5e5de44552
--- /dev/null
+++ b/docs/zh-cn/getting_started_vagrant.md
@@ -0,0 +1,61 @@
+# Vagrant快速上手指引
+
+<!---
+ original document: 0.15.12:docs/getting_started_vagrant.md
+ git diff 0.15.12 HEAD -- docs/getting_started_vagrant.md | cat
+-->
+
+本工程包含一份 `Vagrantfile`,可以方便地在不更改你系统环境情况下完成新固件文件的构建工作。这同时也保证了在你拉取该工程代码后的编译环境与也使用Vagrantfile的其它人的一致。当你需要其他人协助你排查遇到的问题时会方便很多。
+
+## 需求
+
+本工程中的 `Vagrantfile` 需要安装[Vagrant](https://www.vagrantup.com/)以及可用的虚拟机服务:
+
+* [VirtualBox](https://www.virtualbox.org/) (5.0.12及以后版本)
+ * 卖点是'最适用于Vagrant的平台'
+* [VMware Workstation](https://www.vmware.com/products/workstation) 及 [Vagrant VMware插件](https://www.vagrantup.com/vmware)
+ * (付费购买的)VMware插件需要在经过正版授权的VMware Workstation/Fusion上运行
+* [Docker](https://www.docker.com/)
+
+安装了Vagrant之后,在安装合适的虚拟机服务后可能需要重启机器。拉取本工程后在工程目录下执行 'vagrant up' 将启动一个包含了所有本工程所需工具的构建环境(虚拟机或是容器)。最后会有一个vagrant启动提示告知你一切正常就绪,否则你也可以参考一下下面的构建文档。
+
+## 刷写固件
+
+比较“简单”的方案是在你的宿主系统上借助以下工具刷写固件:
+
+* [QMK工具箱](https://github.com/qmk/qmk_toolbox) (推荐)
+* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
+
+如果你希望通过命令行进行编程工作,可以在Vagrantfile中取消掉['modifyvm']的注释以允许USB直通到Linux环境,既可以使用dfu-util/dfu-programmer之类的命令行工具进行编程工作,或是安装Teensy的命令行版本。
+
+## Vagrantfile概览
+开发环境被配置为运行QMK Docker镜像 `qmkfm/qmk_cli`,不仅让各系统下的功能预期一致,也是我们CI环境的镜像。
+
+## FAQ
+
+### 为什么我的VirtualBox环境会有问题?
+VirtualBox 5的某些版本与工程中Vagrantfile中指定的VirtualBox扩展存在兼容问题。如果你遇到了/vagrant挂载不成功的问题,请升级VirtualBox至5.0.12或更高版本。**或者,可以尝试执行如下命令:**
+
+```console
+vagrant plugin install vagrant-vbguest
+```
+
+### 如何移除一个现有环境?
+不再需要这个环境了是吗?在本工程目录下的任何位置,执行:
+
+```console
+vagrant destroy
+```
+
+### 如果我是想直接用Docker呢?
+想在不使用虚拟机技术的情况下也能使用Vagrant工作流?Vagrangfile已配置为允许绕过运行虚拟机,直接运行容器。通过如下方式执行命令可以强制使用Docker来启动环境:
+```console
+vagrant up --provider=docker
+```
+
+### 如何访问虚拟机环境而非Docker容器?
+通过如下方法跳过 `vagrant` 的用户初始化过程以在QMK构建镜像中直接执行:
+
+```console
+vagrant ssh -c 'sudo -i'
+```
diff --git a/docs/zh-cn/hand_wire.md b/docs/zh-cn/hand_wire.md
new file mode 100644
index 0000000000..97e80251fe
--- /dev/null
+++ b/docs/zh-cn/hand_wire.md
@@ -0,0 +1,255 @@
+# 手工搭建指南
+
+<!---
+ original document: 0.15.17:docs/hand_wire.md
+ git diff 0.15.17 HEAD -- docs/hand_wire.md | cat
+-->
+
+## 模块清单
+
+你需要的模块有:(*x*为你设计的键盘的键数)
+
+* QMK所兼容的主控板(Teensy, Pro-Micro, QMK Proton C 等)
+* *x* 个键轴 (MX, Matias, Gateron 等)
+* *x* 个通孔二极管(译注:即普通的直插二极管)
+* 定位板及卫星轴
+* 电线
+* 电烙铁
+* 松香/焊油
+* 通风的环境/风扇通风
+* 剪线钳
+
+可选地但比较有用的:
+
+* 剥线钳/一把锋利的剪刀
+* 镊子及小尖嘴钳
+* 焊台/一位助手
+
+## 前期工作
+
+组装PCB矩阵的方法多种多样,这份指引会描述一些基础信息并给出一些推荐方案。
+
+既然我们要进行手工飞线搭建,这里就假设你已经有了定位板。如果你想构建完全定制化的配列,有 [ai03 Plate Generator](https://kbplate.ai03.me/) 以及 [Swillkb Plate & Case Builder](http://builder.swillkb.com/) 这样的工具可以助你设计出一个新的。
+
+首先从安装键轴及卫星轴开始,考虑厚度及材质的影响,可能需要热熔胶来固定。
+
+## 设计矩阵 :id=planning-the-matrix
+
+如果你在参考已有的手工搭建指南(比如[自制键盘固件目录](https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired)下的键盘),可以跳过该步骤,确保是按照文中的矩阵方案连线即可。
+
+如果你的方案是将每个开关的一个引脚与两边的开关相连(行方向),另一个引脚与上下的开关相连(列方向),并串联一个二极管到一端,最常用的方案是二极管背对着连接到行方向的引脚(列向行)。即让远离二极管黑线一端连接到开关上(电流只能从一个方向通过二极管)。
+
+可以很容易地设计出正交连接的键盘(如Planck)。
+(译注:这里的“正交”意思是行列方向连接规整)
+
+![Planck矩阵示例图](https://i.imgur.com/FRShcLD.png)
+[作者:RoastPotatoe "如何手工搭建Planck键盘"](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/) (英文)内的图例
+
+键盘配列越大,功能越丰富,则矩阵也会更复杂。[Keyboard Firmware Builder](https://kbfirmware.com/) 可以帮助你设计矩阵配列(下图为通过 [Keyboard Layout Editor](https://www.keyboard-layout-editor.com) 导出的全尺寸ISO键盘)。
+
+![ISO键盘矩阵示例图](https://i.imgur.com/UlJ4ZDP.png)
+
+必须时刻留意矩阵的行列数总和不能超出控制器的IO引脚数,因此上图的方案可以使用 Proton C 或 Teensy++ 控制器,但常规 Teensy 或 Pro Micro 不行。
+
+### 常见微控制器板 :id=common-microcontroller-boards
+
+| 控制器板 | 控制器方案 | # I/O引脚数 | 引脚图 |
+| :------------ |:-------------:| ------:| ------ |
+| Pro Micro* | ATmega32u4 | 20 | [链接](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/hardware-overview-pro-micro#Teensy++_2.0) |
+| Teensy 2.0 | ATmega32u4 | 25 | [链接](https://www.pjrc.com/teensy/pinout.html) |
+| [QMK Proton C](https://qmk.fm/proton-c/) | STM32F303xC | 36 | [链接 1](https://i.imgur.com/RhtrAlc.png), [2](https://deskthority.net/wiki/QMK_Proton_C) |
+| Teensy++ 2.0 | AT90USB1286 | 46 | [链接](https://www.pjrc.com/teensy/pinout.html#Teensy_2.0) |
+
+*Elite C 与 Pro Micro 除将 Micro USB 替换为 USB-C 外其余无差别。
+
+一些主控板专门为手工接线设计,除可直接连接少量开关外还有额外的引脚,但这些通常会更贵一些,也更难掌控。
+
+<img src="https://i.imgur.com/QiA3ta6.jpg" alt="实装的 Postage mini 主控板" width="500"/>
+
+| 控制器板 | 控制器方案 | # I/O引脚数 |
+| :------------ |:-------------:| ------:|
+| [Swiss helper](https://www.reddit.com/r/MechanicalKeyboards/comments/8jg5d6/hand_wiring_this_might_help/) | ATmega32u4 | 20 |
+| [Postage 主控板](https://github.com/LifeIsOnTheWire/Postage-Board/)| ATmega32u4| 25 |
+| [Postage mini 主控板](https://geekhack.org/index.php?topic=101460.0)| ATmega32u4| 25 |
+
+## 矩阵布线
+
+布线方案不是唯一的,要达成的效果是可以正确连接所有的焊点并不会出现预期外的短路。
+
+公开的材料和技术方案:
+
+(译注:链接文章及标题恕不翻译)
+
+| 技术方案 | 示例 | 优点 | 缺点 | 图片
+| :-----------| :------- | :------ | :--- | :---
+| 间断开口的线缆 | [Sasha Solomon's Dactyl](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f) 以及 [Cribbit's modern hand wire](https://geekhack.org/index.php?topic=87689.0) | 整洁 | 线缆开口的操作会有些困难 | ![开口的线缆](https://i.imgur.com/0GNIYY0.jpg)
+| 适宜长度的线缆 | [u/xicolinguada's ortho build](https://www.reddit.com/r/MechanicalKeyboards/comments/c39k4f/my_first_hand_wired_keyboard_its_not_perfect_but/) | 剥线容易 | 较难固定位置 | ![适宜长度的线缆](https://i.imgur.com/mBe5vkL.jpg)
+| 漆包线 | [fknraiden's custom board](https://geekhack.org/index.php?topic=74223.0) | 可以直接焊接(烧掉绝缘层) | 外观差? | ![漆包线](https://i.imgur.com/b4b7KDb.jpg)
+| 弯折二极管引脚作为行方向连线 | [Matt3o's Brownfox](https://deskthority.net/viewtopic.php?f=7&t=6050) | 焊点更少 | 绝缘性差 | ![弯折了的二极管引脚](https://i.imgur.com/aTnG8TV.jpg)
+| 硬线(如铜管) | [u/d_stilgar's invisible hardline](https://www.reddit.com/r/MechanicalKeyboards/comments/8aw5j2/invisible_hardline_keyboard_progress_update_april/) 以及 [u/jonasfasler's first attempt](https://www.reddit.com/r/MechanicalKeyboards/comments/de1jyv/my_first_attempt_at_handwiring_a_keyboard/) | 非常漂亮 | 难度高,没有物理绝缘 | ![手工连接的硬线](https://i.imgur.com/CnASmPo.jpg)
+| 用绝缘胶带(如高温胶带*)隔离开的裸线 | [Matt3o's 65% on his website](https://matt3o.com/hand-wiring-a-custom-keyboard/) | 简单(不用剥线) | 丑拒 | ![裸线](https://i.imgur.com/AvXZShD.jpg)
+| 铜箔胶带 | [ManuForm Dactyl](https://github.com/tshort/dactyl-keyboard) | 非常简单 | 只适用于定位板/外壳与开关底部平齐的情况 | ![铜箔胶带](https://i.imgur.com/RFyNMlL.jpg)
+
+(*译注:原文是聚酰亚胺胶带,在中国通常叫高温胶带)
+
+
+以上方案可以结合使用,在焊接前请准备好各种长度的线缆。
+
+
+### 分体键盘的注意事项
+
+如果你想制作的是分体键盘(如Dactyl),每一半边都需要一个控制器以及连通两方的通信用线(如TRRS或硬连接线)。更多资料参见[QMK分体键盘文档](zh-cn/feature_split_keyboard.md)。
+(译注:TRRS即一种常用的4线耳机线插口,具体信息请查阅维基百科或[这份知乎文章](https://zhuanlan.zhihu.com/p/144233538))
+
+
+### 焊接
+
+你可以找到很多焊接指导及技巧,这里列出了最相关及最关键的部分:
+
+要想焊接的牢固需要确保焊料与焊接两端的金属面充分地接触,一个好办法(也不是必须)是上锡前先(将线缆)在针脚上绕一圈或先拧在一起。
+
+<img src="https://i.imgur.com/eHJjmnU.jpg" alt="杆上绕圈" width="200"/> <img src="https://i.imgur.com/8nbxmmr.jpg?1" alt="绕环的二极管引脚" width="200"/>
+
+如果二极管还在包装条上且需要弯折(作为绕圈的起点处或用于连接到邻接处),一个简便的办法是找一个盒子、桌子或尺子的直边上进行弯折。由于弯折统一在二极管一侧,也有助于区分二极管的方向。
+
+<img src="https://i.imgur.com/oITudbX.jpg" alt="弯折二极管引脚" width="200"/>
+
+如果你的电烙铁有温控功能,将其设置在 315ºC(600ºF)。
+
+热起来后,给电烙铁上锡 - 即融化一部分锡料到烙铁头上然后立刻用湿海绵或烙铁头海绵擦掉,这样烙铁头上会有一层光滑明亮的焊料,以防止氧化且有助于焊料的焊接操作。
+
+接下来进行焊接,先将烙铁头在焊接面上接触一会儿进行加热,然后上焊料焊接两侧。加热焊接面的目的是为了确保焊料可以粘附且不会过早冷却下来。
+
+不能让焊料/焊点加热过度,热量会通过接触面烧毁原件(融毁开关外壳等)。并且,由于焊锡中有帮助[“浸润”](https://en.m.wikipedia.org/wiki/Wetting)(即上锡)的助焊剂,加热的越久助焊剂蒸发掉的越多,最终导致焊接点虚焊,除了看起来糟糕外,还有导致电路短路的风险。
+
+#### 焊接二极管
+
+从左上角的那个开关开始,将二极管放到开关上(用镊子,如果有的话)并纵向放直,有黑线的一端朝向你。让二极管间并联(二极管的阴极不应连接到其它二极管的阳极),二极管的阳极应连接到开关的左引脚上,而弯曲的阴极应朝向右边放置,如图:
+
+![soldering-diodes-01.png](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/docs/hand_wire/soldering-diodes-01.png)
+
+在放稳二极管后,拿起焊锡,将其与左轴脚同时接触到电烙铁上 - 在松香的帮助下焊锡会很容易地覆盖在二极管及轴脚上。二极管可能会有些位移,此时你可以抓住二极管另外一端弯折过的引脚,小心地放回到位置上 - 但请留意另一端是会迅速变得烫手的。如果二极管容易乱跑,可以使用尖嘴钳之类的东西在焊接时辅助保持稳固。
+
+松香加热时升起的烟有害,注意保护口鼻,不要熏到眼睛或皮肤。
+
+焊接到位时,可以将焊点升起的烟吹走以免熏脸,也能帮助焊点快速降温。焊点在冷却后会形成沙哑状(无光泽)的表面,但请注意此时它依旧非常烫,需要几分钟时间的冷却才可以触摸,多吹吹有助于快速冷却。
+
+在第一个二极管焊接完毕后,第二个二极管需要焊接轴脚以及上一个二极管弯折的那一端,看起来像这样:
+
+![soldering-diodes-02.png](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/docs/hand_wire/soldering-diodes-02.png)
+
+在焊接完毕一整行后,用剪线钳剪掉二极管上方(绕轴脚后多出的部分),以及这一行最后侧多出来的引脚部分。在每一行焊接完毕后都要记得这一步。
+
+在你完成了所有的二极管的焊接工作后,最好是逐一测试一下以确保焊接牢固稳定 - 再往后不是不能回头修正,但会越来越困难。
+
+#### 纵向上的焊接
+
+这一步你有几个可选项需考虑 - 给横向电缆进行绝缘处理是个好主意(毕竟二极管没有绝缘层),但如果你足够小心,横向电缆裸露着也行 - 但仍旧不建议这么做。如果你用的是单芯线,先将外皮整个褪下来再酌情装回去可能是最好的办法,但会因尺寸及材质原因造成操作困难,你可以将线缆上需要焊接到开关轴的部分裸露出来。
+
+如果你使用多股线/铜绞线,可能最简单的方案就是用不固定长度的小段电线来纵向连接开关。通过融化掉焊接点的外皮的方式来用一整根线不是不可以,但这里不推荐这样做,这种操作会产生更多的有害烟尘,也会毁掉你的电烙铁。
+
+在进行焊接操作前,先预弯折好线缆(如果是单芯线),或至少心中已经规划好焊接路线顺序(特别是你要做的设计是错列的时)。实际上焊接顺序不是特别重要,因为我们是通过焊接方案来确定键映射定义的 - 只要确保一行上的所有按键都有独自的列,且从左到右依次排列。
+
+如果你不做任何的绝缘处理,可以将纵向的线升高一些,焊接在轴脚尖端上 - 如果线缆本身足够稳固,不会短路到连接着二极管的横线线缆上。
+
+## 连接控制器
+
+在矩阵焊接完成后,可以将其焊接到微控制器板上了。
+
+将微控制器放在预期的位置上,同时要考虑到安装及外壳对齐问题。须记得USB槽的位置是可以与微控制器分开的,只需使用一小段公对母线接驳下即可。
+
+找到微控制器板的引脚定义/文档([链接](#common-microcontroller-boards))并将所有的I/O引脚标出来(留意像teensy这种的控制器,模拟I/O引脚可能是数字I/O引脚的两倍),将线缆连接到这些引脚上。
+
+----
+
+### 针对 Teensy 2.0 的特殊说明
+
+Teensy 上的部分引脚有点特殊,像 D6(片上LED),及一些 UART、SPI、I2C或PWM通道,不过只是在你计划着在键盘上还有其它功能设计时才需避免使用。如果你还不是很确定以后会不会增加什么功能上去,引脚应该还是足够充足到可以剩一部分出来的。
+
+那些无论在什么控制器上都不应去使用的引脚,有:GND、VCC、AREF以及RST - 其它所有引脚都是可以用且也能在固件中访问的到的。
+
+----
+
+
+将电线切割为控制器到各行/列上某一点距离的长度。可以焊到各行的任意位置上,只需要确保是在二极管之后 - 焊接到二极管前面(轴脚侧)的话该行将无法正常使用。
+
+这里用排线的话会显得非常整洁,你也可以考虑如何排布线缆以连接到各行/列的近处。
+
+<img src="https://i.imgur.com/z2QlKfB.jpg" alt="排线" width="350"/>
+
+在往控制器上焊接电线时,请记住各引脚连接的是哪一行/列,在后续制作固件时我们需要用到这些信息来定义矩阵。
+
+在你往下继续以前,请确保控制器已装配到位 - 切掉线缆再重新焊接非常麻烦!
+
+
+## 一些基础的固件配置
+
+至此,在你构建好固件后,键盘就应该能正常工作了。
+
+通过 [Keyboard Firmware Builder](https://kbfirmware.com/) 网站可以轻松地创建一个简单的固件。通过 [Keyboard Layout Editor](https://www.keyboard-layout-editor.com) 可以自己制作配列数据,之后就可以导入进来并重新构建矩阵信息(如果你没有在先前的 [设计矩阵](#planning-the-matrix) 完成的话)。
+
+继续完成剩下的步骤,在逐一配置完所有的按键后就可以编译下载固件了。其中 .hex 文件可以用来直接刷写到键盘上,而 .zip 包中的源代码可以用来添加高级功能并通过 [构建第一个固件](zh-cn/newbs_building_firmware?id=build-your-firmware) 中详述的方法进行本地构建。
+
+Keyboard Firmware Builder提供的源代码是QMK的,但版本是2017年初的。如果要用现今版本的QMK来构建 .zip 中的源代码,需要在打开 .zip 后遵循以下几步:
+
+1. 解压 `kb` 目录到 `qmk_firmware/keyboards/handwired/`。
+2. 进入解压的 `kb` 目录,转到 `keymaps/default/` 目录下,打开 `keymap.c`。
+3. 找到并删除 `action_get_macro` 代码段:
+ ```
+ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ ...
+ return MACRO_NONE;
+ }
+ ```
+4. 保存并关闭 `keymap.c`。
+
+## 刷写固件
+
+安装 [QMK Toolbox](https://github.com/qmk/qmk_toolbox).
+
+![QMK Toolbox](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/docs/hand_wire/qmk_toolbox.png "QMK Toolbox 0.0.16 on Windows 8.1")
+
+在 “Local File” 栏处定位到你新创建的 .hex 文件,在 “MicroController” 中选择你的控制器板(常见型号[这里](#common-microcontroller-boards)有)。
+
+插上你的键盘后在QMK Toolbox中点击reset(重置)按钮(如果没有重置按钮,短接一下Reset和接地引脚)再点击“Flash”(刷写)按钮。
+
+
+## 测试固件
+
+可以用 [QMK配置器的键盘测试器](https://config.qmk.fm/#/test)、[Keyboard Tester](https://www.keyboardtester.com/tester.html) 或 [Keyboard Checker](https://keyboardchecker.com/) 进行测试,也可以打开一个文本编辑器并试着输入 - 你应该能成功输入键映射方案中的所有字符。对每个按键进行测试,并记录下不能正常工作的按键。对这些不能正常工作的按键,这里有一个快速排查指引:
+
+1. 将键盘翻过来,用一段金属物短接一下轴脚 - 这么做可以排除掉需要更换掉的坏轴的可能性。
+2. 检查轴脚上的焊点 - 应该是饱满且完整覆盖的。如果你稍加用力就能将其弄下来,那么就是焊接不到位。
+3. 检查二极管的焊点 - 如果二极管虚焊了,部分行可以使用,但其它的可能就不行了。
+4. 检查连接到各行的焊点 - 如果这里虚焊了,这些行就无法正常使用。
+5. 检查 Teensy 两侧的进/出线的焊点 - 两侧的线缆都必须确保已被良好地焊接。
+6. 检查 `<project_name>.h` 文件中是否有错误或不当的 `KC_NO` - 如果不确定在哪里,用已有的 k*xy* 变量替换一下。
+7. 检查固件文件确实经过编译且正确刷写到Teensy上了。除非你在终端看到了错误消息,或是刷写时出现了弹框,否则一切应该是正常的。
+8. 使用万用表实测一下,触发开关时是否成功闭合(按下时可以连通电路)。
+
+如果你完成了上述所有检查,应当留意有时可能是多种因素共同造成了开关的异常,因此最后将其短路掉来排查问题并没有什么害处。
+
+## 即将完成
+
+在确认键盘可以正常使用后,如果你用的是独立的控制器模块(非手工构建用),须将其固定好。办法有很多,比如热熔胶、双面胶带、3D打印的盒子、电工胶带等。
+
+如果你觉得成就感满满,可以试着增加一些额外的功能,比如 [轴内LED](https://geekhack.org/index.php?topic=94258.0),[轴内RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/),[RGB背光](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) 甚至可以是 [OLED显示屏!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
+
+固件的潜力非常大 - 阅览 [docs.qmk.fm](https://docs.qmk.fm) 可以看到全部功能的列表,也能深入了解人们是如何使用那些五花八门的键盘的。随时欢迎到 [OLKB subreddit](https://reddit.com/r/olkb) 或 [QMK Discord](https://discord.gg/Uq7gcHh) 上寻求帮助!
+
+## 其它指引链接
+
+- [matt3o 的分步指引 (BrownFox build)](https://deskthority.net/viewtopic.php?f=7&t=6050) 以及他的 [个人站点](https://matt3o.com/hand-wiring-a-custom-keyboard/) 和 [指导视频](https://www.youtube.com/watch?v=LVzpsjFWPP4)
+- [Cribbit:“现代化的手工搭建指南 - 强大,简洁,友好”](https://geekhack.org/index.php?topic=87689.0)
+- [Sasha Solomon:“打造我的第一把键盘”](https://medium.com/@sachee/building-my-first-keyboard-and-you-can-too-512c0f8a4c5f)
+- [RoastPotatoe: “如何手工搭建Planck键盘”](https://blog.roastpotatoes.co/guide/2015/11/04/how-to-handwire-a-planck/)
+- [Masterzen:“手工搭建键盘记录”](https://www.masterzen.fr/2018/12/16/handwired-keyboard-build-log-part-1/)
+
+
+# 遗留内容
+
+以前本页内还有其它内容,现在我们已经将他们单独分离出去了。以下的内容是一些重定向链接,以供那些从老链接地址过来的人能找到自己要找的内容。
+
+## 序: 键盘矩阵是如何工作的(以及为什么需要二极管) :id=preamble-how-a-keyboard-matrix-works-and-why-we-need-diodes
+
+* [键盘矩阵是如何工作的](zh-cn/how_a_matrix_works.md)
diff --git a/docs/zh-cn/keymap.md b/docs/zh-cn/keymap.md
new file mode 100644
index 0000000000..b4433ed49f
--- /dev/null
+++ b/docs/zh-cn/keymap.md
@@ -0,0 +1,209 @@
+# 键映射总览
+
+<!---
+ original document: 0.15.12:docs/keymap.md
+ git diff 0.15.12 HEAD -- docs/keymap.md | cat
+-->
+
+QMK键映射定义在C源文件中,其数据结构上是一个容纳了数组的数组。外层数组容纳了各个层,内层各数组则为层内的键列表。基本所有键盘都通过定义 `LAYOUT()` 宏来创建该两级数组。
+
+
+## 键映射与配列 :id=keymap-and-layers
+在QMK中, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** 容纳了多个 **层**, 每个**层**下包含了由**16位**的**动作码**所组成的键映射信息。 最多可以定义**32个层**。
+
+对于常规键的定义,其**动作码**的高8位皆为0,低8位保存了USB HID中使用的各个键对应的**键码**。
+
+不同的层可以同时生效,层的编号从0至31,编号越高的层优先级越高。
+(译注:由于是ascii图,掺杂中文会导致排版错乱,各翻译标注在图下方。下同)
+
+ Keymap: 32 Layers Layer: action code matrix
+ ----------------- ---------------------
+ stack of layers array_of_action_code[row][column]
+ ____________ precedence _______________________
+ / / | high / ESC / F1 / F2 / F3 ....
+ 31 /___________// | /-----/-----/-----/-----
+ 30 /___________// | / TAB / Q / W / E ....
+ 29 /___________/ | /-----/-----/-----/-----
+ : _:_:_:_:_:__ | : /LCtrl/ A / S / D ....
+ : / : : : : : / | : / : : : :
+ 2 /___________// | 2 `--------------------------
+ 1 /___________// | 1 `--------------------------
+ 0 /___________/ V low 0 `--------------------------
+翻译:
+
+|原文 |译文 |
+|--------------------------|-------------|
+|Keymap: 32 Layers | 键映射:32个层|
+|stack of layers | 层堆栈 |
+|precedence | 优先级 |
+|high/low | 高/低 |
+|layer: action code matrix | 层:动作码矩阵|
+|row/column | 行/列 |
+
+有时,键映射中存储的动作码在一些文档中也被称作键码,主要是由TMK沿袭而来的习惯。
+
+### 键映射的层状态 :id=keymap-layer-status
+
+键映射的层状态由两个32位参数决定:
+
+* **`default_layer_state`** 指向一个总是可用的键映射层(0-31)(即默认层)。
+* **`layer_state`** 每一位标记对应层的启用/停用状态。
+
+通常键映射中的'0'层为 `default_layer(默认层)`,其它层在启动时会被固件置为停用状态,不过这些可以通过 `config.h` 进行配置。当你换了一个按键布局时可用于更改 `default_layer`,比如从Qwerty布局切换到了Colemak布局。
+
+ Initial state of Keymap Change base layout
+ ----------------------- ------------------
+
+ 31 31
+ 30 30
+ 29 29
+ : :
+ : : ____________
+ 2 ____________ 2 / /
+ 1 / / ,->1 /___________/
+ ,->0 /___________/ | 0
+ | |
+ `--- default_layer = 0 `--- default_layer = 1
+ layer_state = 0x00000001 layer_state = 0x00000002
+翻译:
+
+|原文 |译文 |
+|-----------------------|-------------|
+|Initial state of Keymap| 键映射原始状态|
+|Change base layout | 更改了基础层 |
+
+另外,可以通过修改 `layer_state` 做到其他层对基础层的覆盖,以实现诸如导航键、功能键(F1-F12)、多媒体键等特殊动作。
+
+ Overlay feature layer
+ --------------------- bit|status
+ ____________ ---+------
+ 31 / / 31 | 0
+ 30 /___________// -----> 30 | 1
+ 29 /___________/ -----> 29 | 1
+ : : | :
+ : ____________ : | :
+ 2 / / 2 | 0
+ ,->1 /___________/ -----> 1 | 1
+ | 0 0 | 0
+ | +
+ `--- default_layer = 1 |
+ layer_state = 0x60000002 <-'
+
+
+
+### 层优先级及穿透
+须记住**层堆栈中更高的层有着更高的优先级**。固件会从最高的活跃层开始向下找键码,一旦固件在活跃层上找到了一个非 `KC_TRNS`(穿透)键码,就会停止查找,再往下的层级不会被查看。
+
+ ____________
+ / / <--- 较高的层
+ / KC_TRNS //
+ /___________// <--- 较低的层 (KC_A)
+ /___________/
+
+ 这个场景中,较高层级中的非穿透键是可用的,如果定义为 `KC_TRNS`(及同等效果的),较低层级的键码 `KC_A` 将被采纳。
+
+**注意:** 在层中定义合法的穿透键的方法有:
+* `KC_TRANSPARENT`
+* `KC_TRNS`(别名)
+* `_______`(别名)
+
+这些键码允许在搜索非穿透键码时可以穿透当前层下落到更低层去。
+
+## `keymap.c` 文件解析
+
+本例中我们将深入到[Clueboard 66%的一款旧版的默认键映射](https://github.com/qmk/qmk_firmware/blob/ca01d94005f67ec4fa9528353481faa622d949ae/keyboards/clueboard/keymaps/default/keymap.c)方案中去。将该文件在另一个浏览器窗口中打开,以便对照本文进行同步阅览。
+
+在一个 `keymap.c` 文件中会有三个你可能会关心的部分:
+
+* [预定义](#definitions)
+* [层/键映射数据结构](#layers-and-keymaps)
+* [自定义函数](#custom-functions),若有的话
+
+### 预定义
+
+文件头部可以看到:
+
+ #include QMK_KEYBOARD_H
+
+ // Helpful defines
+ // 译:便捷性的宏定义
+ #define GRAVE_MODS (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)|MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
+
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * You can use _______ in place for KC_TRNS (transparent) *
+ * Or you can use XXXXXXX for KC_NO (NOOP) *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+ // 译:可以用 _______ 替代 KC_TRNS(穿透),用 XXXXXXX 替代 KC_NO (空操作)
+
+ // Each layer gets a name for readability.
+ // The underscores don't mean anything - you can
+ // have a layer called STUFF or any other name.
+ // Layer names don't all need to be of the same
+ // length, and you can also skip them entirely
+ // and just use numbers.
+ // 译:每一层为了便于识别可以起一个名字,下划线没有实际意义 - 叫STUFF之类的也行的,
+ // 译:层名不需要都一样长,甚至不定义这些直接用层号也是可以的
+ #define _BL 0
+ #define _FL 1
+ #define _CL 2
+
+以上是一些便于编写键映射及自定义函数时可用的预定义,`GRAVE_MODS` 后续会用在自定义函数中,之后的 `_BL`, `_FL` 及 `_CL` 便于我们在代码中引用这些层。
+
+注:在一些更早的键映射文件中,你可能会发现一些形如 `_______` 或 `XXXXXXX` 的定义,这些可以分别代替 `KC_TRNS` 及 `KC_NO`,这样可以更清楚地分辨出各层中定义了哪些键的键值。现在这些定义是不需要的,因为我们默认已经提供了这些定义。
+
+### 层和键映射
+
+这个文件中最主要的部分是 `keymaps[]` 定义,这里须列出你的层以及层中的内容。这一部分应该以如下定义起始:
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+之后是一个LAYOUT()宏组成的列表,一个LAYOUT()下定义了一个层中的键列表,一般你需要至少一个“基础层”(如QWERTY、Dvorak或Colemak),之后是在其之上的多个“功能”层。受限于对层的处理顺序,较低的层无法覆盖在较高的层上。
+
+QMK在 `keymaps[][MATRIX_ROWS][MATRIX_COLS]` 中保存着16位的动作码(有些时候也被称作键码),对于与常规键一致的键码,其高字节为0,低字节为USB HID 键盘所使用的键码值。
+
+> QMK的前身TMK中使用 `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` 来存储8位的键码,一些键码被保留用于引用执行 `fn_actions[]` 数组中的特定功能。
+
+#### 基础层
+
+以下示例是Clueboard的基础层定义:
+
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+ [_BL] = LAYOUT(
+ F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, \
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_SPC,KC_SPC, KC_HENK, KC_RALT, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+这里有一些值得留意的地方:
+
+* 站在C语言源代码的角度看,这只是一个数组,但我们掺杂了大量括号使得每个键可以在视觉上与物理设备对齐。
+* 常规的键盘扫描码以KC_起始,而那些“特殊”键则不是。
+* 最左上的键可以触发自定义函数0(`F(0)`)
+* "Fn"键定义为 `MO(_FL)`,当按住该键时会切换到 `_FL` 层。
+
+#### 功能覆盖层
+
+对于功能层,从代码角度讲与基础层没有任何区别。但在概念上讲,应该将其作为覆盖层而非替代层来定义。对大部分人来讲这个区别不重要,但当你构建越来越复杂的层结构时,其重要性会越来越凸显。
+
+ [_FL] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, BL_STEP, \
+ _______, _______, _______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK, KC_PAUS, _______, _______, _______, _______, \
+ _______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, \
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, KC_PGUP, \
+ _______, _______, _______, _______, _______,_______, _______, _______, _______, MO(_FL), KC_HOME, KC_PGDN, KC_END),
+
+这里值得留意的有:
+
+* 我们使用 `_______` 定义来替代 `KC_TRNS`, 以便凸显在该层中有变化的那些键。
+* 对于这一层来讲,如果点击的是一个 `_______` 键,实际生效的将是其下的活跃层中的键。
+
+# 核心细节
+
+在阅读完本节后,你应该掌握了构建自己的键映射的基础能力,更多的资料请参见:
+
+* [键码](zh-cn/keycodes.md)
+* [键映射FAQ](zh-cn/faq_keymap.md)
+
+我们仍在优化这份文档,如果你有更好的优化建议,请[提交一份issue](https://github.com/qmk/qmk_firmware/issues/new)!
diff --git a/docs/zh-cn/mod_tap.md b/docs/zh-cn/mod_tap.md
new file mode 100644
index 0000000000..5bf18a1527
--- /dev/null
+++ b/docs/zh-cn/mod_tap.md
@@ -0,0 +1,143 @@
+# Mod-Tap
+
+<!---
+ original document: 0.15.12:docs/mod_tap.md
+ git diff 0.15.12 HEAD -- docs/mod_tap.md | cat
+-->
+
+Mod-Tap键 `MT(mod, kc)` 在按住时功能为修饰键,在点击时则是常规键码。举例来讲,可以设计出一个按键,当点击时发送Escape,按下时则作为Control或Shift
+
+修饰键码及`OSM()`将会被缀以`MOD_`前缀,而非`KC_`
+
+|修饰键码 |描述 |
+|----------|------------------------------------------|
+|`MOD_LCTL`|左Control |
+|`MOD_LSFT`|左Shift |
+|`MOD_LALT`|左Alt |
+|`MOD_LGUI`|左GUI (Windows/Command/Meta键) |
+|`MOD_RCTL`|右Control |
+|`MOD_RSFT`|右Shift |
+|`MOD_RALT`|右Alt (AltGr) |
+|`MOD_RGUI`|右GUI (Windows/Command/Meta键) |
+|`MOD_HYPR`|Hyper (左Control, Shift, Alt 及 GUI同时按下)|
+|`MOD_MEH` |Meh (左Control, Shift, 及 Alt同时按下) |
+
+可以通过逻辑或进行组合:
+
+```c
+MT(MOD_LCTL | MOD_LSFT, KC_ESC)
+```
+
+此时按住该键将触发左Control及左Shift,点击将发送Escape。
+
+为了方便配列,QMK已包含一些常见的Mod-Tap:
+
+|键 |别名 |描述 |
+|------------|-----------------------------------------------------------------|---------------------------------------------|
+|`LCTL_T(kc)`|`CTL_T(kc)` |按住时为左Control,点击时为 `kc` |
+|`LSFT_T(kc)`|`SFT_T(kc)` |按住时为左Shift,点击时为 `kc` |
+|`LALT_T(kc)`|`LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` |按住时为左Alt,点击时为 `kc` |
+|`LGUI_T(kc)`|`LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|按住时为左GUI,点击时为 `kc` |
+|`RCTL_T(kc)`| |按住时为右 Control,点击时为 `kc` |
+|`RSFT_T(kc)`| |按住时为右 Shift,点击时为 `kc` |
+|`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |按住时为右 Alt,点击时为 `kc` |
+|`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |按住时为右 GUI,点击时为 `kc` |
+|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |按住时为左Shift及GUI,点击时为 `kc` |
+|`LAG_T(kc)` | |按住时为左Alt及GUI,点击时为 `kc` |
+|`RSG_T(kc)` | |按住时为右 Shift及GUI,点击时为 `kc` |
+|`RAG_T(kc)` | |按住时为右 Alt及GUI,点击时为 `kc` |
+|`LCA_T(kc)` | |按住时为左Control及Alt,点击时为 `kc` |
+|`LSA_T(kc)` | |按住时为左Shift及Alt,点击时为 `kc` |
+|`RSA_T(kc)` |`SAGR_T(kc)` |按住时为右 Shift及右 Alt (AltGr),点击时为 `kc` |
+|`RCS_T(kc)` | |按住时为右 Control及右 Shift,点击时为 `kc` |
+|`LCAG_T(kc)`| |按住时为左Control,Alt及GUI,点击时为 `kc` |
+|`RCAG_T(kc)`| |按住时为右 Control,Alt及GUI,点击时为 `kc` |
+|`C_S_T(kc)` | |按住时为左Control及Shift,点击时为 `kc` |
+|`MEH_T(kc)` | |按住时为左Control,Shift及Alt,点击时为 `kc` |
+|`HYPR_T(kc)`|`ALL_T(kc)` |按住时为左Control,Shift,Alt及GUI,点击时为 `kc` - 更多[参见这里](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
+
+## 注意
+
+目前 `MT()` 的 `kc`参数限制在[基础键码集](zh-cn/keycodes_basic.md)中,因此不能使用 `LCTL()`,`KC_TILD` 及其它大于 `0xFF` 的键码。原因是,QMK使用16位的键码,其中3位是功能标记,1位标记左右修饰键,4位存储修饰键码,仅剩8位存储键码。当一次Mod-Tap触发时,只要有一个右修饰键被激发,其它的修饰键也都被视为右修饰键,因此无法混搭形如左Control+右Shift的形式,会被视为右Control+右Shift
+
+若展开讲就比较复杂了。迁移到32位的键码可以很大程度解决这个问题,但同时会招致配列矩阵大小翻倍,也可能会有其它未知问题。若是想用修饰键配合按键,可以考虑使用[Tap Dance/多击键](zh-cn/feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys)
+
+在使用Windows远程桌面时你可能会发现有些问题,这是因为远程桌面对键码响应过快。若要修复,可以打开远程桌面的“配置”,在“本地资源”页中的键盘属性,调整为“本地计算器”,此时功能即可恢复正常。另一个办法是加大[`TAP_CODE_DELAY`](zh-cn/config_options.md#behaviors-that-can-be-configured)。
+
+## 截获Mod-Taps
+
+### 改变点击功能
+
+若要在Mod-Tap中突破基础键码的限制,可以在 `process_record_user` 中实现。如,上档键码 `KC_DQUO` 无法与 `MT()` 共用,因为它实际上是 `LSFT(KC_QUOT)` 的别名,`KC_DQUO` 上的修饰键码会被 `MT()` 覆盖。但可以使用如下代码截获点击,手动发送 `KC_DQUO`:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LCTL_T(KC_DQUO):
+ if (record->tap.count && record->event.pressed) {
+ tap_code16(KC_DQUO); // 点击时发送 KC_DQUO
+ return false; // 通过返回false阻止对该键的其它处理
+ }
+ break;
+ }
+ return true;
+}
+```
+
+### 改变按住功能
+
+类似地,同样可以使用这段自定义代码改变按住功能。下面的例子会在 `LT(0, kc)` (layer-tap键无实际意义,因为layer 0默认被激活)按住时对X,C和V键附加剪切,复制和粘贴功能:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(0,KC_X):
+ if (record->tap.count && record->event.pressed) {
+ return true; // 返回true来发送常规键码
+ } else if (record->event.pressed) {
+ tap_code16(C(KC_X)); // 截获按住功能来发送Ctrl-X
+ }
+ return false;
+ case LT(0,KC_C):
+ if (record->tap.count && record->event.pressed) {
+ return true; // 返回true来发送常规键码
+ } else if (record->event.pressed) {
+ tap_code16(C(KC_C)); // 截获按住功能来发送Ctrl-C
+ }
+ return false;
+ case LT(0,KC_V):
+ if (record->tap.count && record->event.pressed) {
+ return true; // 返回true来发送常规键码
+ } else if (record->event.pressed) {
+ tap_code16(C(KC_V)); // 截获按住功能来发送Ctrl-V
+ }
+ return false;
+ }
+ return true;
+}
+```
+
+在数字及字母键上使用Mod-Tap时推荐启用 `IGNORE_MOD_TAP_INTERRUPT`,以避免在快速按下下一个键时保持功能优先级。参见[忽略Mod Tap中断](zh-cn/tap_hold.md#ignore-mod-tap-interrupt)。
+
+### 同时改变点击和按住功能
+
+最后一个例子通过 `LT(0,KC_NO)` 实现了点击复制,按住粘贴的功能:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(0,KC_NO):
+ if (record->tap.count && record->event.pressed) {
+ tap_code16(C(KC_C)); // 截获点击来发送Ctrl-C
+ } else if (record->event.pressed) {
+ tap_code16(C(KC_V)); // 截获按住功能来发送Ctrl-V
+ }
+ return false;
+ }
+ return true;
+}
+```
+
+## 其它信息
+
+在[点按配置](zh-cn/tap_hold.md)中描述了影响Mod-Tap行为的标记。
diff --git a/docs/zh-cn/newbs.md b/docs/zh-cn/newbs.md
index eca8c14e5f..3be4626211 100644
--- a/docs/zh-cn/newbs.md
+++ b/docs/zh-cn/newbs.md
@@ -1,23 +1,29 @@
-# QMK菜鸟教程
+# QMK入门教程
-QMK是为你机械硬盘设计的的一个强大的开源固件。使用QMK可以很简单的让你的定制键盘变得强大。看完这篇文章,无论你是菜鸟还是大佬,都可以顺利的使用QMK来定制键盘。
+<!---
+ original document: 0.15.12:docs/newbs.md
+ git diff 0.15.12 HEAD -- docs/newbs.md | cat
+-->
-你是否为不知道你的键盘能不能运行QMK而苦恼? 如果你的机械键盘是你自己做的,那么这把键盘一般可以运行QMK。我们提供了[一大堆自制键盘](https://qmk.fm/keyboards/), 所以即便你的键盘不能运行QMK你也很容易能找到满足你需求的键盘。
+就像计算机一样,每把键盘里也有一个处理器,它的职责是在你点击键盘时,检测到这个动作并反馈给计算机。QMK固件即是为了这个目的而设计的一种"软件",负责检测点击,反馈给电脑。当你构建出一个自定义键映射时,就是在创建一个新的键盘"软件"。
-## 概览
+QMK的愿景是提供强有力的功能,让不可能的事情变得可能,简单的事情依旧简单。即便是不会编程也可以创建强大的键映射方案。
-这个教程有7个主要部分:
+想知道你的键盘是否能运行QMK?如果这个键盘是你自己组建的,那么很可能是可以的。我们[已经支持很多键盘](https://qmk.fm/keyboards/),所以即便你的键盘不能运行QMK,你也很容易能买到满足要求的键盘。
-* [新手上路](newbs_getting_started.md)
-* [用命令行构建你的第一个固件](newbs_building_firmware.md)
-* [用在线界面构建你的第一个固件](newbs_building_firmware_configurator.md)
-* [刷新固件](newbs_flashing.md)
-* [测试和调试](newbs_testing_debugging.md)
-* [Git最佳实践](newbs_best_practices.md)
-* [其他学习资源](newbs_learn_more_resources.md)
+?> **这份指南适合于我吗?**<br>
+编程对你是个困难的话,可以看看我们的[在线GUI页面](zh-cn/newbs_building_firmware_configurator.md)。</div>
-这份教程旨在帮助没有固件构建经验的人,也是根据该目的做出选择和建议。这些程序有很多替代方法,大部分替代我们都支持。如果你对完成一个任务有疑问,可以[向我们寻求帮助](getting_started_getting_help.md).
+## 总览
-## 其他资源
+这份指南适用于想通过源代码编译出键盘固件的需求。对于程序员,全过程都会感觉很熟悉。教程主要分3部分:
-* [Thomas Baart的 QMK基础博客](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – 这是一个用户创建的博客,涵盖了为新手准备的使用QMK的基础知识。
+1. [环境配置](zh-cn/newbs_getting_started.md)
+2. [构建第一个固件](zh-cn/newbs_building_firmware.md)
+3. [刷写固件](zh-cn/newbs_flashing.md)
+
+该指南的目的是帮助那些从未编译过软件的人,很多取舍及建议都是基于这个考量。完成一个目标可能有多种方案,我们尽量都去支持,如果你搞不明白你的目标如何实现,可以[向我们寻求帮助](zh-cn/support.md)。
+
+## 更多资料
+
+这份指南之外,也有一些其它能帮助你学习QMK的资料。我们归纳整理在[大纲](zh-cn/syllabus.md)页面和[学习资料](zh-cn/newbs_learn_more_resources.md)页面
diff --git a/docs/zh-cn/newbs_best_practices.md b/docs/zh-cn/newbs_best_practices.md
deleted file mode 100644
index fa58dc75e8..0000000000
--- a/docs/zh-cn/newbs_best_practices.md
+++ /dev/null
@@ -1,163 +0,0 @@
-# 最佳实践
-
-## 或者说, "我应如何学会不再担心并开始爱上Git。"
-
-本文档旨在指导新手以最佳方式获得为QMK做出贡献的丝滑体验。我们将介绍为QMK做出贡献的过程,详细介绍使这项任务更容易的一些方法,然后我们将制造一些问题,来教你如何解决它们。
-
-本文假设了一些内容:
-
-1. 一有个GitHub账户, 并[创建qmk_firmware仓库分叉](getting_started_github.md)到你的帐户.
-2. 你已经[建立你的构建环境](newbs_getting_started.md?id=environment-setup).
-
-
-## 你分叉的主分支: 一直在上传,但不要提交
-
-十分推荐您在QMK开发过程中无论开发是否完成都要保持你的 `master` 分支更新,但是 ***一定不要*** 提交。相反,你应该在一个开发分叉中做出你所有修改并在开发时提交pull request。
-
-减少合并冲突的可能性 &mdash; 两个或多个用户同时编辑文件的同一部分的实例 &mdash; 保持 `master` 分支最新,并创建一个新的分支来开始新的开发。
-
-### 更新你的主分支
-
-保持你的 `master` 更新, 推荐你添加QMK Firmware仓库作为Git的远程仓库,想这么做的话, 你可以打开你的Git命令行接口然后输入:
-
-```
-git remote add upstream https://github.com/qmk/qmk_firmware.git
-```
-
-运行 `git remote -v`, 来确定这个仓库已经添加,以下是回显:
-
-```
-$ git remote -v
-origin https://github.com/<your_username>/qmk_firmware.git (fetch)
-origin https://github.com/<your_username>/qmk_firmware.git (push)
-upstream https://github.com/qmk/qmk_firmware.git (fetch)
-upstream https://github.com/qmk/qmk_firmware.git (push)
-```
-
-现在添加已完成,你可以用`git fetch upstream`来检查仓库的更新. 这会检索branches 和 tags &mdash; 统称为"refs" &mdash; 从QMK仓库, 也就是 `upstream`。我们可以比较我们的分叉和QMK的 `origin` 数据的不同。
-
-要更新你的分叉的主分支,请运行以下命令,在每行之后按Enter键:
-
-```
-git checkout master
-git fetch upstream
-git pull upstream master
-git push origin master
-```
-
-这回切换到你的`master` 分支, 检索你QMK仓库的refs, 下载当前QMK `master` 分支到你的电脑, 并上传到你的分叉.
-
-### 做改动
-
-你可以输入以下命令来创建一个新的分支来做改动:
-
-```
-git checkout -b dev_branch
-git push --set-upstream origin dev_branch
-```
-
-这回建立一个叫做 `dev_branch`的新分支, 检查一下, 然后想你的分叉保存分支. 使用 `--set-upstream` 参数来告诉git使用你的分叉并且当每次你对你的分支用`git push` 或 `git pull`时要使用`dev_branch`。 它仅需要在第一次push的时候使用;然后你就可以很安全的用 `git push` 或 `git pull`, 并不需要其他参数了。
-
-!> 使用 `git push`, 你可以用 `-u` 来代替 `--set-upstream` &mdash; `-u`是`--set-upstream`的简写。
-
-您可以将您的分支命名为您想要的任何名称,但建议将其命名为与您要进行的更改相关的内容。
-
-默认情况下 `git checkout -b` 在已经检出的分支上建立新的分支。您可以将新的分支建立在未检出的现有分支的基础上,方法是将现有分支的名称添加到命令:
-
-```
-git checkout -b dev_branch master
-```
-
-现在您已经有了一个开发分支,那么就打开您的文本编辑器并进行您需要做的任何更改。建议对您的分支进行许多小的提交;这样,任何引起问题的更改都可以在需要时更容易地跟踪和撤消。要进行更改,编辑并保存任何需要更新的文件,请将它们添加到Git的 *staging area* ,然后将它们提交到您的分支:
-
-```
-git add path/to/updated_file
-git commit -m "My commit message."
-```
-
-` git add`添加已更改到Git的*临时区域*也就是Git的“加载区域”的文件。其中包含使用 `git commit` 命令 *提交* 的并已经保存到仓库的更改。建议您使用描述性的提交消息,这样您就可以一目了然地知道更改了什么。
-
-!> 如果你修改了很多文件,但所有的文件都是同一个更改的一部分,你可以用 `git add .` 来添加当前目录中所有已更改的文件而不是单独添加每个文件.
-
-### 发布更改
-
-最后一步是将更改推送到您的分叉。 输入 `git push`来推送. 现在Git将`dev_branch`的当前状态发布到您的分叉。
-
-
-## 解决合并冲突
-
-有时,当您在某个分支中的工作需要很长时间才能完成时,其他人所做的更改与您在打开pull request时对该分支所做的更改相冲突。这称为*rebase* 即合并冲突,当多个人编辑同一文件的同一部分时会发生这种情况。
-
-### 重新调整您的更改
-
-*rebase*是Git的一种方法,它获取在某一点上应用的更改,撤销它们,然后将相同的更改应用到另一点。在合并冲突的情况下,您可以重新设置您的分支以获取在创建分支时和当前时间之间的那段时间所做的更改。
-
-运行以下命令来开始:
-
-```
-git fetch upstream
-git rev-list --left-right --count HEAD...upstream/master
-```
-
- 这里的`git rev-list` 命令返回当前分支和qmk的主分支之间不同的提交数。我们首先运行`git fetch`,以确保我们有代表upstream仓库的refs。 `git rev-list` 命令的回显有两个数字:
-
-```
-$ git rev-list --left-right --count HEAD...upstream/master
-7 35
-```
-
-第一个数字表示自创建以来当前分支的提交数, 第二个数字是自创建当前分支以来对 `upstream/master` 进行的提交数, 因此, 当前分支中未记录变动。
-
-既然知道当前分支和upstream仓库的当前状态,我们可以开始一个rebase操作:
-
-```
-git rebase upstream/master
-```
-
-这就是让Git撤销当前分支上的提交,然后根据QMK的主分支重新应用它们。
-
-```
-$ git rebase upstream/master
-First, rewinding head to replay your work on top of it...
-Applying: Commit #1
-Using index info to reconstruct a base tree...
-M conflicting_file_1.txt
-Falling back to patching base and 3-way merge...
-Auto-merging conflicting_file_1.txt
-CONFLICT (content): Merge conflict in conflicting_file_1.txt
-error: Failed to merge in the changes.
-hint: Use 'git am --show-current-patch' to see the failed patch
-Patch failed at 0001 Commit #1
-
-Resolve all conflicts manually, mark them as resolved with
-"git add/rm <conflicted_files>", then run "git rebase --continue".
-You can instead skip this commit: run "git rebase --skip".
-To abort and get back to the state before "git rebase", run "git rebase --abort".
-```
-
-这告诉我们有一个合并冲突,并给出带有冲突的文件的名称。在文本编辑器中打开冲突的文件,在该文件的某个位置,您会发现如下内容:
-
-```
-<<<<<<< HEAD
-<p>For help with any issues, email us at support@webhost.us.</p>
-=======
-<p>Need help? Email support@webhost.us.</p>
->>>>>>> Commit #1
-```
-
- `<<<<<<< HEAD`行标记合并冲突的开始, `>>>>>>> Commit #1` 行标记结束, 冲突选项被 `=======`分隔。`HEAD`那端的部分来自文件的qmk master版本,标记有commit消息的部分来自当前的分支持和提交。
-
-因为Git跟踪 *对文件的更改* 而不是直接跟踪文件的内容,所以如果Git在提交之前找不到文件中的文本,它将不知道如何编辑该文件。重新编辑文件将解决冲突。进行更改,然后保存文件。
-
-```
-<p>Need help? Email support@webhost.us.</p>
-```
-
-现在运行:
-
-```
-git add conflicting_file_1.txt
-git rebase --continue
-```
-
-Git记录对冲突文件的更改,并继续应用来自我们的分支的提交,直到它到达末尾。
diff --git a/docs/zh-cn/newbs_building_firmware.md b/docs/zh-cn/newbs_building_firmware.md
index fc43583c2b..681c7ba8f6 100644
--- a/docs/zh-cn/newbs_building_firmware.md
+++ b/docs/zh-cn/newbs_building_firmware.md
@@ -1,81 +1,68 @@
# 构建第一个固件
-现在您已经建立了构建环境,就可以开始构建自定义固件了。对于本指南的这一部分,我们将在3个程序之间切换——文件管理器、文本编辑器和终端窗口。请保持所有3个程序打开,直到您完成并对键盘固件满意。
+<!---
+ original document: 0.15.12:docs/newbs_building_firmware.md
+ git diff 0.15.12 HEAD -- docs/newbs_building_firmware.md | cat
+-->
-如果您在按照指南第一部分的操作之后关闭并重新打开了终端窗口,请不要忘记输入“cd qmk_firmware”,来使您的终端位于正确的目录。
+现在您已经准备好了构建环境,就可以开始构建自定义固件了。在这节指南中,我们将在3个程序中开展工作——文件管理器、文本编辑器和终端。在做出心满意足的固件前,请不要关闭它们。
+## 新建键映射
-## 导航到您的keymaps文件夹
+也许你会考虑从默认键映射复制一份来开始,如果你遵循编译环境配置指南到了最后,那么使用QMK命令行可以简单地做到:
-首先导航到键盘的 `keymaps` 文件夹.
+ qmk new-keymap
-?> 如果您使用的是MacOS或Windows,可以使用以下命令轻松地打开keymaps文件夹。
+如果你的环境没有那样配置,或者你有多个键盘要做,可以指定键盘名:
-?> macOS:
+ qmk new-keymap -kb <keyboard_name>
- open keyboards/<keyboard_folder>/keymaps
+检查命令行输出,应该类似于:
-?> Windows:
+ Ψ <github_username> keymap directory created in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>
- start .\\keyboards\\<keyboard_folder>\\keymaps
+上面就是创建出的新 `keymap.c` 文件的路径。
-## 创建`default` 布局副本
+## 使用趁手的编辑器打开 `keymap.c`
-打开`keymaps`文件夹后,您将需要创建`default`文件夹的副本。我们强烈建议您将文件夹命名为与GitHub用户名相同的名称,但您也可以使用任何您想使用的名称,只要它只包含小写字母、数字和下划线字符。
-
-要自动执行此过程,您还可以选择运行`new_keymap.sh`脚本。
-
-导航到`qmk_firmware/util` 目录然后输入以下命令:
-
-```
-./new_keymap.sh <keyboard path> <username>
-```
-
-例如,一个名字叫ymzcdg的用户要创建1up60hse的布局,他需要输入
-
-```
-./new_keymap.sh 1upkeyboards/1up60hse ymzcdg
-```
-
-## 在你最钟爱的文本编辑器中打开`keymap.c`
-
-打开你的`keymap.c`. 在这个文件中,您可以找到控制键盘行为的结构。 在你的`keymap.c` 的顶部有一些让布局更易读的define和enum。在靠下的位置你会找到一行和下面这句很像的:
+在编辑器中打开 `keymap.c`,可以看到控制键盘所有功能的关键结构。`keymap.c` 文件头部的一些define和enum定义能让代码容易阅读一些,继续往下会找到这么一行:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-从这一行开始便是层列表。这行下面你会看到包括 `LAYOUT` 或 `KEYMAP`这两个词的几行, 从这些行开始就是层。在这一行下面是组成该特定层的键的列表。
+这行是所有层定义的起点,往下能看到有 `LAYOUT` 的行,都是一个层定义的起始,其下方为该层的组成定义。
-!> 编辑您的keymap文件时,注意不要添加或删除任何逗号。如果这样做,您将阻止您的固件编译,并且您可能不容易找出多余的或缺少的逗号在哪里。
+!> 编辑时请非常留意不要错误增加/删除了逗号分隔符,否则很可能无法编译固件,且很难排查是哪里的逗号不对。
-## 根据您的喜好自定义布局
+## 按照个人喜好设计层级
-如何完成这一步骤完全取决于您。改变一直困扰着你的问题,或者完全重做所有的事情。如果您不需要全部图层,可以删除图层,或者将图层总数增加到32个。查看以下文档,了解可以在此处定义的内容:
+这一步的目标完全取决于你,既可以去修复一个你不爽的问题,也可以完全重写一个新的。你可以删除不需要的层,或是增加层到32个的上限,QMK功能丰富,可以在左边的导航栏中寻找“使用QMK”一节,浏览完整的功能信息,也可以看看这些比较简单的:
-* [键码](keycodes.md)
-* [特性](features.md)
-* [问题与解答](faq.md)
+* [基础键码](zh-cn/keycodes_basic.md)
+* [量子键码](zh-cn/quantum_keycodes.md)
+* [Grave/Escape](zh-cn/feature_grave_esc.md)
+* [鼠标键](zh-cn/feature_mouse_keys.md)
-?> 当你明白布局是怎么工作时,您也要让每次改变尽可能小。一次改变很大在调试时找出问题会十分困难。
+?> 你大概理解了键映射如何工作的话,留心尽量少去做改动,改动越多出了问题越难排查。
-## 构建你的固件
+## 构建固件 :id=build-your-firmware
-完成对布局的更改后,您就要构建固件了。为此,请返回终端窗口并运行build命令:
+对键映射做完修改后,该编译固件了。回到终端中使用编译命令:
- make <my_keyboard>:<my_keymap>
+ qmk compile
-例如,如果您的keymap名为“xyverz”,并且您正在为rev5 planck构建一个keymap,那么您将使用此命令:
+如果没有完整地配置环境,或你有多个目标键盘,可以指定键盘及键映射:
- make planck/rev5:xyverz
+ qmk compile -kb <keyboard> -km <keymap>
-在编译过程中,你将看到屏幕上有很多输出,通知您正在编译哪些文件他应该以与下文类似的输出结束:
+编译完成后,会输出详尽的编译产出文件信息,其末尾应该看起来像这样:
```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex [OK]
- * File size is fine - 18392/28672
+Linking: .build/planck_rev5_default.elf [OK]
+Creating load file for flashing: .build/planck_rev5_default.hex [OK]
+Copying planck_rev5_default.hex to qmk_firmware folder [OK]
+Checking file size of planck_rev5_default.hex [OK]
+ * The firmware size is fine - 27312/28672 (95%, 1360 bytes free)
```
-## 刷新你的固件
+## 刷写固件
-请移步 [Flashing Firmware](newbs_flashing.md) 来继续。
+参阅[刷写固件](zh-cn/newbs_flashing.md)以了解如何将固件写入键盘主控。
diff --git a/docs/zh-cn/newbs_building_firmware_configurator.md b/docs/zh-cn/newbs_building_firmware_configurator.md
new file mode 100644
index 0000000000..c4cd114318
--- /dev/null
+++ b/docs/zh-cn/newbs_building_firmware_configurator.md
@@ -0,0 +1,18 @@
+# QMK配置器
+
+<!---
+ original document: 0.15.12:docs/newbs_building_firmware_configurator.md
+ git diff 0.15.12 HEAD -- docs/newbs_building_firmware_configurator.md | cat
+-->
+
+[![QMK配置器截图](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/)
+
+[QMK配置器](https://config.qmk.fm)是一个可用于生成`.hex`和`.bin`格式的QMK固件文件的在线交互页面。
+
+这里有[视频教程](https://www.youtube.com/watch?v=-imgglzDMdY). 很多人给我们反馈该视频包含了足够多的知识可以用来开始编写自己的键盘程序。
+
+QMK配置器在Chrome及Firefox中工作良好。
+
+!> **来自于第三方工具的文件数据无法保证与QMK兼容,如Keyboard Layout Editor(KLE)或kbfirmware,请不要加载或导入这些文件。QMK配置器是一个独立的工具。**
+
+更多信息请参见[QMK配置器: 入门](zh-cn/configurator_step_by_step.md)。
diff --git a/docs/zh-cn/newbs_flashing.md b/docs/zh-cn/newbs_flashing.md
index 05a9eb55ee..9ffb792793 100644
--- a/docs/zh-cn/newbs_flashing.md
+++ b/docs/zh-cn/newbs_flashing.md
@@ -1,307 +1,124 @@
-# 刷新你的键盘
+# 刷写键盘固件
-现在您已经构建了一个自定义固件文件,那么您就需要刷新键盘了。
+<!---
+ original document: 0.15.12:docs/newbs_flashing.md
+ git diff 0.15.12 HEAD -- docs/newbs_flashing.md | cat
+-->
-## 用QMK工具箱刷新键盘
+在自定义的固件文件构建出来后,可以刷写到键盘中了。
-刷新键盘的最简单方法是使用[QMK 工具箱](https://github.com/qmk/qmk_toolbox/releases).
+## 将键盘调至DFU(Bootloader)模式
-但是,QMK工具箱目前仅适用于Windows和MacOS。如果您使用的是Linux(或者只是希望从命令行刷新固件),则必须使用 [方法概述](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
+在你将自定义固件刷写到键盘前,键盘必须处于特有的刷写模式下。此时,键盘会处于不会响应点击等常规操作的状态,并且一定留意不要打断刷写工作,刷写固件过程中不可以把键盘拔下来。
-### 将文件加载到QMK工具箱中
+不同的键盘进入刷写模式的方法都是不同的,如果你的键盘运行的是QMK、TMK或PS2AVRGB(Bootmapper客户端)且没有写明特别的操作说明的话,可以依次尝试以下操作:
-首先打开QMK工具箱应用程序。您将要在访达或资源管理器中找到固件文件。您的键盘固件可能是两种格式之一`.hex`或`.bin`。qmk会尝试将键盘的相应文件复制到“qmk_firmware”根目录中。
+* 按住两边的Shift键,点击Pause
+* 按住两边的Shift键,点击B
+* 拔出键盘,同时按住“空格”键及B键,再插上键盘,等两秒后松开
+* 拔出键盘,按住键盘左上或左下的按键(一般来讲是Escape或左Control),在插上键盘
+* 按重置按键(Reset),一般在PCB背面
+* 在PCB上寻找导出的 `RESET` 和 `GND` 引脚,在插电的情况下短接一下
-?> 如果您在Windows或MacOS上,可以使用以下命令轻松地在资源管理器或访达中打开当前固件文件夹。
+如果上面的方法没有用,且键盘主板上的芯片是 `STM32` 系列,情况要复杂一些。通常在[Discord](https://discord.gg/Uq7gcHh)上寻求帮助是最好的办法,并且很可能需要你提供一些键盘主板的照片 —— 所以如果你能提前准备好,我们沟通起来会快得多。
-?> Windows:
+如果没有遇到什么问题,你会在QMK工具箱的输出信息里找到类似下面的黄色文字的信息:
- start .
-
-?> macOS:
-
- open .
-
-固件文件始终遵循此命名格式:
+```
+*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
+```
- <keyboard_name>_<keymap_name>.{bin,hex}
+已进入bootloader状态的设备也可以在设备管理器、系统信息或 `lsusb` 中看到。
-例如,使用 `default` 布局的 `plank/rev5` 将使用以下名字:
+## 使用QMK工具箱刷写固件
- planck_rev5_default.hex
+使用[QMK工具箱](https://github.com/qmk/qmk_toolbox/releases)刷写固件是最简单的方案。
-找到固件文件后,将其拖到QMK工具箱中的“Local file”框中,或单击“Open”并导航到固件文件的存储位置。
+然而该工具箱仅支持Windows及macOS,如果你在使用Linux环境(或是希望用命令行刷写固件),请参阅[在命令行中刷写固件](#使用命令行刷写固件)一节。
-### 将键盘置于DFU(Bootloader)模式
+### 加载固件到QMK工具箱
-要刷新自定义固件,您必须将键盘置于特殊的刷新模式。在此模式下,您将无法键入或使用键盘。在写入固件时,不要拔下键盘插头或以其他方式中断刷新过程,这一点非常重要。
+打开QMK工具箱,在Finder或文件管理器中找到固件文件。键盘固件文件名后缀通常是 `.hex` 或 `.bin`,QMK工具箱会尝试将正确的文件拷贝到qmk根目录 `qmk_firmware` 中。
-不同的键盘有不同的方式进入这种特殊模式。如果您的键盘当前运行的是QMK或TMK,而您没有得到特定的指示,请按顺序尝试以下操作:
+在Windows或macOS上,使用下面的指令可以快速打开当前目录。
-* 按住两个shift键并按 `Pause`
-* 按住两个shift键并按 `B`
-* 拔下键盘插头, 同时按住空格键和 `B` , 插上键盘然后等一会再放开按键
-* 按下PCB底部的 `RESET` 物理键
-* 找到PCB上标记有 `BOOT0` 或 `RESET`的金属点, 在插入PCB的同时短接它们
+<!-- tabs:start -->
-成功后,您将在QMK工具箱中看到类似以下内容的消息:
+#### ** Windows **
```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
+start .
```
-### 刷新你的键盘
-
-单击QMK工具箱中的 `Flash` 按钮。您将看到类似以下内容的输出:
+#### ** macOS **
```
-*** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
-*** DFU device connected
-*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
- Erasing flash... Success
- Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- 0% 100% Reading 0x7000 bytes...
- [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
- Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-
-*** DFU device disconnected
-*** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
+open .
```
-## 使用命令行刷新键盘
-
-首先,您需要知道您的键盘使用的是哪个bootloader。通常是以下四个常见的bootloader。Pro-Micro 和 clones 使用 CATERINA, Teensy 使用 Halfkay, OLKB 键盘使用 QMK-DFU, 其他的atmega32u4芯片使用DFU。
-
-您可以在以下文章中了解更多关于bootloader[刷新指令和Bootloader信息](flashing.md)。
-
-如果您知道正在使用的bootloader是哪种,那么在编译固件时,可以向“make”命令里添加一些额外参数,以自动执行刷新过程。
+<!-- tabs:end -->
-### DFU
+固件文件的文件名格式为:
-对于DFU引导加载程序,当您准备好编译和刷新固件时,打开终端窗口并运行构建命令:
-
- make <my_keyboard>:<my_keymap>:dfu
-
-例如,如果您的布局名为“xyverz”,并且您正在为rev5 planck构建一个布局,那么您可以使用此命令:
-
- make planck/rev5:xyverz:dfu
+```
+<keyboard_name>_<keymap_name>.{bin,hex}
+<键盘名>_<键映射名>.{bin,hex}
+```
-编译完成后,应输出以下内容:
+例如, `planck/rev5` 的 `default` 键映射对应的文件名是:
```
-Linking: .build/planck_rev5_xyverz.elf [OK]
-Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
-Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
-Checking file size of planck_rev5_xyverz.hex
- * File size is fine - 18574/28672
- ```
+planck_rev5_default.hex
+```
-到了这个时候, 构建脚本将每隔5秒查找一次DFU。它将重复以下操作,直到找到设备或将其取消。
+找到固件文件后,将其拖拽至QMK工具箱的"Local file"框,或点击“Open”并定位至固件文件。
- dfu-programmer: no device present.
- Error: Bootloader not found. Trying again in 5s.
+### 刷写到键盘
-一旦出现以上回显,您将需要重置控制器。然后,它应该显示与以下类似的输出:
+点击QMK工具箱的`Flash`,将看到如下输出信息:
```
+*** DFU device connected: Atmel Corp. ATmega32U4 (03EB:2FF4:0000)
*** Attempting to flash, please don't remove device
->>> dfu-programmer atmega32u4 erase --force
+>>> dfu-programmer.exe atmega32u4 erase --force
Erasing flash... Success
Checking memory from 0x0 to 0x6FFF... Empty.
->>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
- Checking memory from 0x0 to 0x55FF... Empty.
- 0% 100% Programming 0x5600 bytes...
+>>> dfu-programmer.exe atmega32u4 flash "D:\Git\qmk_firmware\gh60_satan_default.hex"
+ Checking memory from 0x0 to 0x3F7F... Empty.
+ 0% 100% Programming 0x3F80 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
0% 100% Reading 0x7000 bytes...
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
Validating... Success
- 0x5600 bytes written into 0x7000 bytes memory (76.79%).
->>> dfu-programmer atmega32u4 reset
-```
-
-如果您对此有任何问题,您可能需要这样做:
-
- sudo make <my_keyboard>:<my_keymap>:dfu
-
-#### DFU命令
-
-有许多DFU命令可用于将固件下载到DFU设备:
-
-* `:dfu` - 这是正常选项,等待DFU设备可用,然后刷新固件。这将每隔5秒检查一次,以查看是否出现了DFU设备。
-* `:dfu-ee` - 这将刷新一个`eep`文件,而不是普通的十六进制文件。这很不常见。
-* `:dfu-split-left` - 这将刷新正常固件,就像默认选项 (`:dfu`)一样. 但是,这也会刷新“左侧”EEPROM文件,用于分割键盘。 _这是基于Elite C的键盘的推荐选择。_
-* `:dfu-split-right` - 这将刷新正常固件,就像默认选项(`:dfu`). 但是,这也会刷新“右侧”EEPROM文件,用于分割键盘。 _这是基于Elite C的键盘的推荐选择。_
-
-
-### Caterina
-
-对于Arduino板以及其克隆版来说(比如SparkFun和ProMicro), 准备好编译和刷新固件后,打开终端窗口并运行构建命令:
-
- make <my_keyboard>:<my_keymap>:avrdude
-
-比如, 你的布局叫"xyverz"你要创建一个rev2 Lets Split的布局,你要用以下命令:
-
- make lets_split/rev2:xyverz:avrdude
-
-固件完成编译后,它将输出类似以下的内容:
-
-```
-Linking: .build/lets_split_rev2_xyverz.elf [OK]
-Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
-Checking file size of lets_split_rev2_xyverz.hex [OK]
- * File size is fine - 27938/28672
-Detecting USB port, reset your controller now..............
-```
-
-此时,复位,然后脚本将检测bootloader,然后刷新固件。输出应该像这样:
-
-```
-Detected controller on USB port at /dev/ttyS15
-
-Connecting to programmer: .
-Found programmer: Id = "CATERIN"; type = S
- Software Version = 1.0; No Hardware Version given.
-Programmer supports auto addr increment.
-Programmer supports buffered memory access with buffersize=128 bytes.
-
-Programmer supports the following devices:
- Device code: 0x44
-
-avrdude.exe: AVR device initialized and ready to accept instructions
-
-Reading | ################################################## | 100% 0.00s
-
-avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
-avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
- To disable this feature, specify the -D option.
-avrdude.exe: erasing chip
-avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: writing flash (27938 bytes):
-
-Writing | ################################################## | 100% 2.40s
-
-avrdude.exe: 27938 bytes of flash written
-avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
-avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
-avrdude.exe: reading on-chip flash data:
-
-Reading | ################################################## | 100% 0.43s
-
-avrdude.exe: verifying ...
-avrdude.exe: 27938 bytes of flash verified
-
-avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
-
-avrdude.exe done. Thank you.
+ 0x3F80 bytes written into 0x7000 bytes memory (56.70%).
+>>> dfu-programmer.exe atmega32u4 reset
+
+*** DFU device disconnected: Atmel Corp: ATmega32U4 (03EB:2FF4:0000)
```
-如果您对此有任何问题,您可能需要这样做:
-
- sudo make <my_keyboard>:<my_keymap>:avrdude
-
-此外,如果要刷新多个板,请使用以下命令:
+## 使用命令行刷写固件
- make <keyboard>:<keymap>:avrdude-loop
+现在已经没有以前那样繁琐了,在编译固件后需要刷写时,打开终端输入如下刷写指令:
-当你完成了刷新后,你需要按下ctrl+c或者其他正确的按键来让你的操作系统终止循环。
+ qmk flash
+如果未通过命令行工具配置过键盘/键映射名,或有多个目标键盘,可以指定目标键盘和键映射:
-## HalfKay
+ qmk flash -kb <键盘名> -km <键映射名>
-对于PJRC设备(Teensy),当您准备好编译和刷新固件时,打开终端窗口并运行构建命令:
+QMK将核查键盘配置,并尝试使用合适的bootloader进行刷写。也就是说,你不用关注应该使用什么bootloader,这些重活儿让qmk指令去承担就好。
- make <my_keyboard>:<my_keymap>:teensy
+但是,先决条件是键盘配置中已经设置了bootloader,如果未配置,或你的键盘板子不支持配置的刷写方式,你会看到这些错误信息:
-比如, 如果你的布局叫做"xyverz"你想创建Ergodox or Ergodox EZ的布局,你要使用以下命令:
+ WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.
- make erdogox_ez:xyverz:teensy
-
-固件完成编译后,它将输出如下内容:
-
-```
-Linking: .build/ergodox_ez_xyverz.elf [OK]
-Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
-Checking file size of ergodox_ez_xyverz.hex [OK]
- * File size is fine - 25584/32256
- Teensy Loader, Command Line, Version 2.1
-Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
-Waiting for Teensy device...
- (hint: press the reset button)
- ```
-
-此时,复位键盘。完成后,您将看到如下输出:
-
- ```
- Found HalfKay Bootloader
-Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
-Programming............................................................................................................................................................................
-...................................................
-Booting
-```
+此时,只能退回到需要指定bootloader的方法,具体参见[刷写固件](zh-cn/flashing.md)指引。
-## STM32 (ARM)
-
-对于大多数ARM板(包括Proton C、Planck Rev 6和Preonic Rev 3),当您准备好编译和刷新固件时,打开终端窗口并运行构建命令:
-
- make <my_keyboard>:<my_keymap>:dfu-util
-
-例如,如果您的keymap被命名为“xyverz”,并且您正在为Planck Revision 6键盘构建一个布局,那么您需要使用以下命令,然后将键盘重新启动到bootloader(在完成编译之前):
-
- make planck/rev6:xyverz:dfu-util
-
-固件完成编译后,它将输出如下内容:
-
-```
-Linking: .build/planck_rev6_xyverz.elf [OK]
-Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
-Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
-
-Size after:
- text data bss dec hex filename
- 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
-
-Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
-dfu-util 0.9
-
-Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
-Copyright 2010-2016 Tormod Volden and Stefan Schmidt
-This program is Free Software and has ABSOLUTELY NO WARRANTY
-Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
-
-Invalid DFU suffix signature
-A valid DFU suffix will be required in a future dfu-util release!!!
-Opening DFU capable USB device...
-ID 0483:df11
-Run-time device DFU version 011a
-Claiming USB DFU Interface...
-Setting Alternate Setting #0 ...
-Determining device status: state = dfuERROR, status = 10
-dfuERROR, clearing status
-Determining device status: state = dfuIDLE, status = 0
-dfuIDLE, continuing
-DFU mode device DFU version 011a
-Device returned transfer size 2048
-DfuSe interface name: "Internal Flash "
-Downloading to address = 0x08000000, size = 41824
-Download [=========================] 100% 41824 bytes
-Download done.
-File downloaded successfully
-Transitioning to dfuMANIFEST state
-```
+## 上手试试键盘吧!
-## 试一试吧!
+恭喜你,你的自定义固件成功刷写到键盘中了,快去试试吧!
-恭喜您! 您的自定义固件已经刷写到您的键盘
+运气不差的话一切都会是正常工作的,如果不幸遇到了些问题,有一些参考方案可以帮助你排查问题原因。
+键盘测试就简单直接了,依次按一下各按键,检查它是不是发送了正确的输入。可以使用[QMK配置器](https://config.qmk.fm/#/test/)中的测试模式进行测试,即便你的键盘并不运行QMK。
-试一试,确保一切按你想的方式进行。我们写了[测试和调试](newbs_testing_debugging.md)来完善新手引导。 因此,请前往那里了解如何排除自定义功能的故障。
+还是不行吗?参阅一下FAQ或[通过Discord和我们聊聊](https://discord.gg/Uq7gcHh)吧。
diff --git a/docs/zh-cn/newbs_getting_started.md b/docs/zh-cn/newbs_getting_started.md
index 596ab78f7f..7ca9871aa7 100644
--- a/docs/zh-cn/newbs_getting_started.md
+++ b/docs/zh-cn/newbs_getting_started.md
@@ -1,93 +1,183 @@
-# 介绍
+# 配置环境
-你的电脑键盘里面包含一个处理器, 这个处理器和你电脑里面的不太一样。这个处理器负责运行一些特殊的软件,这些软件可以监测按钮按下并将按钮处于按下还是释放状态的数据发送出去。QMK就是这样一种软件,即监测按钮被按下并发送这样的信息到作为主机的计算机上。当你创建了你的布局, 你也就创建了你的键盘运行的的可执行程序。
+<!---
+ original document: 0.15.12:docs/newbs_getting_started.md
+ git diff 0.15.12 HEAD -- docs/newbs_getting_started.md | cat
+-->
-QMK试图通过使简单的事情变得更简单,使使不可能成为可能来把大量的权力交给你。你不需要懂如何通过程序创建强大的布局——你只需要遵循简单的语法规则。
+构建键映射前,有一些必须安装配置的构建工具,但无论你要编译多少个固件,这一步只需要做一次。
-# 新手上路
+## 1. 必备工具
-在你能创建布局前,你要安装一些软件来建立你的开发环境。无论你想编译多少固件,这个操作都只需要进行一次。
+首先需要确保一些基本的软件配备。
-如果您更喜欢图形化界面, 请考虑使用在线工具[QMK配置器](https://config.qmk.fm)。 请参考 [使用在线GUI构建您的第一个固件](newbs_building_firmware_configurator.md)。
+* [文本编辑器](zh-cn/newbs_learn_more_resources.md#text-editor-resources)
+ * 你需要至少一个能编辑常规文本的软件。系统自带的编辑器通常不会如实保存(会做一些额外的处理,如回车),所以选择编辑器时需要留意。
+* [QMK工具箱(可选)](https://github.com/qmk/qmk_toolbox)
+ * 在Windows及macOS上可用的图形程序,用于编辑及调试你的键盘
+?> 如果你没有Linux/Unix命令行使用经验,有些基本概念需要先学习一下。[这些资料](zh-cn/newbs_learn_more_resources.md#command-line-resources)是个使用QMK很好的参考。
-## 下载软件
+## 2. 准备构建环境 :id=set-up-your-environment
-### 文本编辑器
+我们已经尽力让QMK易于配置了,你只要准备好Linux或Unix环境,剩余的交给QMK来安装。
-你需要一个可以编辑 **纯文本** 文件的程序。在Windows上你可以用Notepad, 在Linux上使用gedit,这两个都是简单又实用的文本编辑工具。 在macOS上, 请小心使用 “文本编辑” 这个默认软件: 如果你不明确的选择_格式_菜单中的 _制作纯文本_ 的话文本将不会被保存为纯文本。
+<!-- tabs:start -->
-你也可以下载并安装一个专用编辑器 [Sublime Text](https://www.sublimetext.com/) 或 [VS Code](https://code.visualstudio.com/)。 这大概是跨平台的最好方法了, 这些编辑器是专门为了编辑代码设计的。
+### ** Windows **
-?>搞不清用哪种编辑器? Laurence Bradford 写了篇关于编辑器选择的文章 [a great introduction](https://learntocodewith.me/programming/basics/text-editors/)。
+QMK有维护一套基于MSYS2的软件包,所有命令行程序和依赖都是齐备的。通过 `QMK MSYS` 快捷命令可以快速启动开发环境。
-### QMK 工具箱
+#### 依赖项
-QMK 工具箱 是一种可选的Windows和macOS下的图形化工具,它可以对你的定制键盘进行编程和调试。你可能会发现它就是你能简单的刷新你的键盘固件并查看调试信息的稀世珍宝。
+需安装[QMK MSYS](https://msys.qmk.fm/),最新版在[这里](https://github.com/qmk/qmk_distro_msys/releases/latest)。
-[在这里下载最新发布版本](https://github.com/qmk/qmk_toolbox/releases/latest)
+此外,如果想自行安装MSYS2环境,下面给出了具体的步骤。
-* Windows用户: `qmk_toolbox.exe` (绿色版) 或 `qmk_toolbox_install.exe` (安装版)
-* macOS用户: `QMK.Toolbox.app.zip` (绿色版) or `QMK.Toolbox.pkg` (安装版)
+<details>
+ <summary>自行安装</summary>
-## 建立你的环境
+?> 若决定使用 `QMK MSYS`,请跳过此节.
-我们为了使QMK环境变得更容易建立已竭尽所能。你只需要准备Linux 或 Unix 环境, 然后让QMK安装剩余部分。
+#### 依赖项
-?> 如果你从未使用过Linux/Unix的命令行,有一些你需要学习的基础概念和命令,以下资料将教会您使用QMK环境的必要能力:<br>
-[必会Linux命令](https://www.guru99.com/must-know-linux-commands.html)<br>
-[一些基本的Unix命令](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
+遵循 https://www.msys2.org 上的指引,安装MSYS2、Git和Python。
-### Windows
+在MSYS2安装完毕后,关闭所有的MSYS终端,启动新的MinGW 64-bit终端。
-你需要安装MSYS2和Git.
+!> **注意:** MinGW 64-bit 终端*不同于*安装包最后打开的MSYS终端,窗口标题应当是紫色的"MINGW64"而不是"MSYS"。具体的差异可以[参考这里](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems)。
-* 按照以下安装说明进行操作[MSYS2 主页](https://www.msys2.org)。
-* 关闭所有打开的MSYS2终端并打开新的MSYS2 MinGW 64-bit终端。
-* 使用以下命令安装Git: `pacman -S git`。
+执行如下命令:
-### macOS
+ pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip
-你需要安装Homebrew。按照以下说明进行操作 [Homebrew 主页](https://brew.sh)。
+#### 安装
-在Homebrew安装完成后, 继续 _同步QMK工程_. 这一步你将会通过运行一个脚本安装其他包。
+安装QMK命令行程序:
-### Linux
+ python3 -m pip install qmk
-你将需要安装Git.你很有可能已经安装,但若你尚未安装,可以使用以下命令进行安装:
+</details>
-* Debian / Ubuntu / Devuan: `apt-get install git`
-* Fedora / Red Hat / CentOS: `yum install git`
-* Arch: `pacman -S git`
+### ** macOS **
-?> 无论你使用哪种平台,Docker都可以是你的选择[点这里进一步了解](getting_started_build_tools.md#docker)
+QMK维护了一套Homebrew tap和formula以用于自动安装命令行程序及依赖项。
-## 同步QMK工程
+#### 依赖项
-当你建立Linux/Unix环境后,你就已经可以下载QMK了.下载时我们可以用Git来 "clone" QMK仓库. 打开一个终端或MSYS2 MinGW 窗口,在阅读剩余的指南时请保持窗口打开。在窗口里面运行以下两句命令:
+须先安装Homebrew,可以参考 https://brew.sh
-```shell
-git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
-cd qmk_firmware
-```
+#### 安装
+
+安装QMK命令行程序:
+
+ brew install qmk/qmk/qmk
+
+### ** Linux/WSL **
+
+?> **WSL用户注意**: 默认情况下,QMK仓库会被clone到home目录下,如果想指定其它目录,务必留意要放在WSL文件系统中(即,非 `/mnt` 目录下),否则文件读写会[非常慢](https://github.com/microsoft/WSL/issues/4197).
+
+#### 依赖项
+
+须安装Git及Python,通常你肯定已经有了,如果确实没有,请使用下面的方法尝试安装:
+
+* Debian / Ubuntu / Devuan: `sudo apt install -y git python3-pip`
+* Fedora / Red Hat / CentOS: `sudo yum -y install git python3-pip`
+* Arch / Manjaro: `sudo pacman --needed --noconfirm -S git python-pip libffi`
+* Void: `sudo xbps-install -y git python3-pip`
+* Solus: `sudo eopkg -y install git python3`
+* Sabayon: `sudo equo install dev-vcs/git dev-python/pip`
+* Gentoo: `sudo emerge dev-vcs/git dev-python/pip`
+
+#### 安装
+
+安装QMK命令行程序:
+
+ python3 -m pip install --user qmk
+
+#### 社区提供的包
+
+有一些社区成员提供的包,可能版本会有落后或是功能不全的问题,如果你遇到了什么问题,请联系维护它的社区成员。
+
+Arch系环境下可以使用官方源安装命令行程序(在写这份文档时,有些依赖项被标记为可选的,其实不是):
+
+ sudo pacman -S qmk
+
+也可以尝试AUR的 `qmk-git`:
+
+ yay -S qmk-git
+
+### ** FreeBSD **
+
+#### 安装
+
+使用FreeBSD包安装QMK命令行程序:
+
+ pkg install -g "py*-qmk"
+
+请遵循安装后输出的指引操作进行配置(使用 `pkg info -Dg "py*-qmk"` 可以显示这份指引)。
+
+<!-- tabs:end -->
+
+## 3. 执行QMK配置 :id=set-up-qmk
+*译注:由于setup过程中需要从github clone依赖项,请先确保科学上网*
+
+<!-- tabs:start -->
-?> 如果您已经知道[如何使用GitHub](getting_started_github.md), 我们推荐您创建您自己的分支并克隆。 如果您不知道这是什么, 您完全可以忽略这句无关紧要的话。
+### ** Windows **
-QMK附带一个脚本,可帮助您设置剩余的所需内容.您可以通过输入此命令来运行它:
+安装QMK后,执行:
- util/qmk_install.sh
+ qmk setup
-## 测试你的开发环境
+通常所有的询问回复 `y` 就行了。
-现在你的QMK环境已经建立完毕, 你可以为你的键盘创建固件了。开始试着创建键盘的默认固件吧。 你需要使用以下格式的命令创建固件:
+### ** macOS **
- make <keyboard>:default
+安装QMK后,执行:
-比如, 制作一个Clueboard 66%的固件,需要用:
+ qmk setup
- make clueboard/66/rev3:default
+通常所有的询问回复 `y` 就行了。
-当完成后你要看到一些回显,尾部如下:
+### ** Linux/WSL **
+
+安装QMK后,执行:
+
+ qmk setup
+
+通常所有的询问回复 `y` 就行了。
+
+?>**Debian及Ubuntu系环境须留意**:
+也许你会遇到 `bash: qmk: command not found` 错误,主要是因为Debian上的Bash 4.4版本引入的一个[bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155),`$HOME/.local/bin` 被从PATH环境变量中删除了,后续版本中这个问题已被修复。
+然而Ubuntu很挫地再次引入了这个bug[且没有修复](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562)。
+不过修复也很容易,在当前账户中执行:`echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc`
+
+### ** FreeBSD **
+
+安装QMK后,执行:
+
+ qmk setup
+
+通常所有的询问回复 `y` 就行了。
+
+<!-- tabs:end -->
+
+?> QMK的home目录可以在安装时通过 `qmk setup -H <path>` 来指定,安装后也可以通过[命令行程序来配置](zh-cn/cli_configuration.md?id=single-key-example)`user.qmk_home`变量,可以通过 `qmk setup --help` 查看所有可用配置。
+
+?> 若你熟悉GitHub,[推荐阅读这份指引](zh-cn/getting_started_github.md)通过 `qmk setup <github_username>/qmk_firmware` 来clone你自己的fork。如果你看不懂这一段啥意思,忽略就是了。
+
+## 4. 测试你的构建环境
+
+QMK构建环境搭建完成,可以尝试构建一个键盘固件。使用以下指令格式,先试试编译默认提供的键映射:
+
+ qmk compile -kb <keyboard> -km default
+
+例如,要构建一个Clueboard 66%,就这样执行:
+
+ qmk compile -kb clueboard/66/rev3 -km default
+
+你应当能看到像这样的输出信息:
```
Linking: .build/clueboard_66_rev3_default.elf [OK]
@@ -97,6 +187,22 @@ Checking file size of clueboard_66_rev3_default.hex
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
-# 创建你的布局
+## 5. 配置你的构建环境 (可选的)
+
+通过对默认配置的简单调整,QMK用起来会更有趣一些,我们来试试!
+
+大部分QMK新手手头只有一把键盘,可以通过 `qmk config` 命令将它设置为默认键盘,例如你想将 `clueboard/66/rev4` 设置为默认,可以这样:
+
+ qmk config user.keyboard=clueboard/66/rev4
+
+也可以调整默认的键映射名称。社区上大家常用自己的GitHub用户名,这也是我们推荐的做法。
+
+ qmk config user.keymap=<github_username>
+
+完成后,这些配置就不用管了,编译键盘固件就可以直接这样执行:
+
+ qmk compile
+
+# 制作你自己的键映射
-现在你可以创建属于你自己的布局了! 请移步 [构建你的第一个固件](newbs_building_firmware.md)来继续。
+万事俱备啦!请继续阅读[构建第一个固件](zh-cn/newbs_building_firmware.md).
diff --git a/docs/zh-cn/newbs_learn_more_resources.md b/docs/zh-cn/newbs_learn_more_resources.md
index ccb4fa326c..20fed1f358 100644
--- a/docs/zh-cn/newbs_learn_more_resources.md
+++ b/docs/zh-cn/newbs_learn_more_resources.md
@@ -1,15 +1,35 @@
# 学习资源
-这些资源旨在让QMK社区的新成员更了解新成员文档中提供的信息。
+<!---
+ original document: 0.15.12:docs/newbs_learn_more_resources.md
+ git diff 0.15.12 HEAD -- docs/newbs_learn_more_resources.md | cat
+-->
-Git 资源:
+这些资源旨在让QMK社区的新成员更了解新手教程中的基础知识。
-* [很好的通用教程](https://www.codecademy.com/learn/learn-git)
-* [从例子中学习Git游戏](https://learngitbranching.js.org/)
-* [了解有关GitHub的更多信息的Git资源](getting_started_github.md)
-* [专门针对QMK的Git资源](contributing.md)
+*译注:以下资料超出了QMK核心概念范畴,恕不另行翻译*
+### QMK参考资料
-命令行资源:
+* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – 一个站在新人视角,探讨如何使用QMK固件的个人博客。
-* [超棒的命令行通用教程](https://www.codecademy.com/learn/learn-the-command-line)
+### 命令行操作参考资料 :id=command-line-resources
+
+* [Good General Tutorial on Command Line](https://www.codecademy.com/learn/learn-the-command-line)
+* [Must Know Linux Commands](https://www.guru99.com/must-know-linux-commands.html)<br>
+* [Some Basic Unix Commands](https://www.tjhsst.edu/~dhyatt/superap/unixcmd.html)
+
+### 文本编辑器相关参考资料 :id=text-editor-resources
+
+对文本编辑器有选择困难?
+* [a great introduction to the subject](https://learntocodewith.me/programming/basics/text-editors/)
+
+更适用于编程的文本编辑器:
+* [Sublime Text](https://www.sublimetext.com/)
+* [VS Code](https://code.visualstudio.com/)
+
+### Git参考资料
+
+* [Great General Tutorial](https://www.codecademy.com/learn/learn-git)
+* [Flight Rules For Git](https://github.com/k88hudson/git-flight-rules)
+* [Git Game To Learn From Examples](https://learngitbranching.js.org/)
diff --git a/docs/zh-cn/newbs_testing_debugging.md b/docs/zh-cn/newbs_testing_debugging.md
index d88d9b6f2d..0016d3b816 100644
--- a/docs/zh-cn/newbs_testing_debugging.md
+++ b/docs/zh-cn/newbs_testing_debugging.md
@@ -1,46 +1,14 @@
# 测试和调试
-使用自定义固件刷新键盘后,您就可以测试它了。如果您幸运,一切都会完美运行,但如果没有,这份文件将帮助您找出问题所在。
-
+<!---
+ original document: 0.15.12:docs/newbs_testing_debugging.md
+ git diff 0.15.12 HEAD -- docs/newbs_testing_debugging.md | cat
+-->
## 测试
-测试键盘通常非常简单。按下每一个键并确保它发送的是您期望的键。甚至有一些程序可以帮助您确保没有任何键失效。
-
-注意:这些程序不是由QMK提供或认可的。
-
-* [QMK Configurator](https://config.qmk.fm/#/test/) (网页版)
-* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (仅Windows)
-* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (仅Mac)
-* [Keyboard Tester](https://www.keyboardtester.com) (网页版)
-* [Keyboard Checker](https://keyboardchecker.com) (网页版)
-
-## 使用QMK工具箱进行调试
-
-[QMK工具箱](https://github.com/qmk/qmk_toolbox) 将会在你的`rules.mk`中有`CONSOLE_ENABLE = yes`的时候显示你键盘发来的消息。 默认情况下,输出极为有限,不过您可以打开调试模式来增加输出信息量。使用你键盘布局中的`DEBUG`键码,使用 [命令](feature_command.md) 特性来使能调试模式, 或者向你的布局中添加以下代码。
-
-```c
-void keyboard_post_init_user(void) {
- // Customise these values to desired behaviour
- debug_enable=true;
- debug_matrix=true;
- //debug_keyboard=true;
- //debug_mouse=true;
-}
-```
-
-<!-- 需要修改之处:这里要添加调试回显。 -->
-
-## 发送您自己的调试消息
-
-有时用[custom code](custom_quantum_functions.md)发送自定义调试信息很有用. 这么做很简单. 首先在你文件头部包含`print.h`:
+[已移到这里](zh-cn/faq_misc.md#testing)
-```c
-#include "print.h"
-```
+## 调试 :id=debugging
-之后,您可以使用一些不同的打印功能:
+[已移到这里](zh-cn/faq_debug.md#debugging)
-* `print("string")`: 打印简单字符串.
-* `uprintf("%s string", var)`: 打印格式化字符串
-* `dprint("string")`: 仅在调试模式使能时打印简单字符串
-* `dprintf("%s string", var)`: 仅在调试模式使能时打印格式化字符串
diff --git a/docs/zh-cn/other_eclipse.md b/docs/zh-cn/other_eclipse.md
new file mode 100644
index 0000000000..d0783c2070
--- /dev/null
+++ b/docs/zh-cn/other_eclipse.md
@@ -0,0 +1,90 @@
+# 在Eclipse中设置QMK开发环境
+
+<!---
+ original document: 0.15.16:docs/other_eclipse.md
+ git diff 0.15.16 HEAD -- docs/other_eclipse.md | cat
+-->
+
+
+[Eclipse][1]是一款广泛用于Java开发的[集成开发环境](https://en.wikipedia.org/wiki/Integrated_development_environment)(IDE),但有着强大的插件体系允许自定义开发其它语言及用途。
+
+相对于使用普通的文本编辑器,使用形如Eclipse这样的IDE有着诸多好处,例如:
+* 智能代码补全
+* 快速代码跳转
+* 重构工具
+* 构建自动化(无需使用命令行)
+* 图形化交互的GIT
+* 静态代码分析
+* 以及大量其它工具,如调试器,代码格式化,显示调用链等。
+
+本文专注于阐述如何将Eclipse配置为AVR软件开发环境,并用于基于QMK代码的开发工作。
+
+注意,在本文编写时,仅在Ubuntu 16.04环境中进行过验证。
+
+# 需求
+## 构建环境
+在开始之前,你需要确保遵循了新手教程中的[新手指引](zh-cn/newbs_getting_started.md)一节。通常,此时你应该具备了[通过 `qmk complile` 命令](zh-cn/newbs_building_firmware.md#build-your-firmware)构建固件文件的能力。
+
+## Java
+Eclipse为Java程序,因此需要安装Java 8或更高版本才能运行。你可以选择JRE或JDK,后者在进行Java开发时需要用到。
+
+# 安装Eclipse及插件
+Eclipse有[多种可选安装方式](https://www.eclipse.org/downloads/eclipse-packages/),取决于你的使用目标。目前没有完备的AVR开发栈安装包,所以我们需要从Eclipse CDT(C/C++ 开发工具环境)开始并安装对应的插件。
+
+## 下载安装Eclipse CDT
+如果系统中已安装了Eclipse CDT,可以跳过本步骤。同时,为了确保版本支持情况,我们推荐保持其更新至最新版。
+
+如果你已安装了Eclipse包,通常也可以[在上面再安装CDT插件](https://eclipse.org/cdt/downloads.php)。但是可能更好的方案是重新全新安装一下,以确保环境轻量,以及防止已安装的工具对后续的工程开发工作产生干扰。
+
+安装很简单:遵循[Eclipse安装5步走](https://eclipse.org/downloads/eclipse-packages/?show_instructions=TRUE),并在第三步选择 **用于C/C++开发者的Eclipse IDE(Eclipse IDE for C/C++ Developers)**。
+
+此外,也可以选择直接[下载 用于C/C++开发者的Eclipse IDE](https://www.eclipse.org/downloads/eclipse-packages/)([最新版直达链接](https://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neonr))并解压至任意目录下(会生成 `eclipse` 目录)。
+
+## 首次运行
+在安装完毕后,点击<kbd>运行</kbd>按钮。(如果是手动解压的,请在安装目录下双击 `eclipse` 可执行程序
+
+在提示你选择工作区目录时,选择一个可用于存储Eclipse元数据及工程的目录。**不要选择 `qmk_firmware` 目录**,这是你的项目目录。可以使用其父目录,或其它(最好是空)目录(默认目标目录如果未作他用亦可使用)。
+
+启动后,点击右上角的<kbd>工作台(Workbench)</kbd>按钮切换到工作台视图(启动时的欢迎页最下方有个确认框可以在下次启动时不再展示欢迎页)。
+
+## 安装必要的插件
+注意:无需在每个插件安装完成时重启Eclipse,全部安装完毕后重启一次即可。
+
+### [AVR插件](https://avr-eclipse.sourceforge.net/)
+这是最重要的一个插件,可以帮助Eclipse理解AVR下的C语言代码。参照执行[更新网址使用指引](https://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download#Update_Site),并允许那些未签名内容产生的警告。
+
+### [ANSI Escape in Console(命令行下的ANSI转义符)](https://marketplace.eclipse.org/content/ansi-escape-console)
+该插件可以允许QMK makefile产生的具有颜色标记的构建输出信息能够正确显示。
+
+1. 打开<kbd>帮助</kbd> > <kbd>Eclipse插件市场…</kbd>
+2. 搜索_ANSI Escape in Console_
+3. 点击插件的<samp>安装</samp>按钮
+4. 跟随安装指引并再次允许那些未签名的内容产生的警告。
+
+在插件皆安装完毕后,依照提示重启Eclipse。
+
+# 配置Eclipse QMK环境
+## 导入工程
+1. 点击<kbd>文件</kbd> > <kbd>新建</kbd> > <kbd>现有的Makefile工程代码</kbd>
+2. 在之后这一页中:
+ * 选择仓库所克隆到的目录位置作为 _现有代码位置_;
+ * (可选地)指定一个不同的工程名,如 _QMK_ 或 _Quantum_ ;
+ * 选择 _AVR-GCC Toolchain_;
+ * 其它选项保留不动,点击<kbd>完成</kbd>
+
+ ![Importing QMK in Eclipse](https://i.imgur.com/oHYR1yW.png)
+
+3. 工程即完成加载及分析,其下的文件可以方便地在左侧的 _Project Explorer_ 中查看了。
+
+¹ 导入工程时若自定义名称有时会遇到些问题,如果行不通,保留默认的工程名(即目录名,通常是 `qmk_firmware`)再试一次。
+
+## 构建你的键盘
+
+我们将默认构建目标从 `all` 调整到我们期望构建的键盘及键映射组合上,即 `kinesis/kint36:stapelberg`。此时,形如清理、构建等工程级别的操作可以很快地执行完毕,而不至于耗费大量时间且导致Eclipse卡住。
+
+1. 焦点置于工程下的任一编辑器tab中
+2. 打开`工程` > `属性`窗口, 选择 `C/C++构建` 菜单项并切至 `Behavior` 标签。
+3. 将 `Make build target`选项中的全量构建 `all` 改为 `kinesis/kint41:stapelberg`。
+4. 点击 `工程` > `清理...` 以确认配置正确。
+
+ [1]: https://en.wikipedia.org/wiki/Eclipse_(software)
diff --git a/docs/zh-cn/other_vscode.md b/docs/zh-cn/other_vscode.md
new file mode 100644
index 0000000000..e4bca0711c
--- /dev/null
+++ b/docs/zh-cn/other_vscode.md
@@ -0,0 +1,122 @@
+# 在Visual Studio Code中设置QMK开发环境
+
+<!---
+ original document: 0.15.12:docs/other_vscode.md
+ git diff 0.15.12 HEAD -- docs/other_vscode.md | cat
+-->
+
+[Visual Studio Code](https://code.visualstudio.com/) (VS Code) 是一款支援非常多种不同编程语言的开源编辑器。
+
+相比于使用简陋的文本编辑器,形如VS Code这样的多功能编辑器有诸多优势,比如:
+* 智能的代码补全
+* 便捷的代码导航
+* 重构工具
+* 自动化构建支持(不再需要命令行操作)
+* 图形化的GIT界面
+* 调试器、代码格式化、显示调用层级等多种工具
+
+本章节旨在阐述如何配置VS Code以在其上进行QMK固件开发。
+
+这份指引提供了在Windows及Ubuntu 18.04下所有的配置方法。
+
+# 配置VS Code
+一开始,你需要首先确认所有的构建工具已经安装配置完成,且QMK Firmware仓库已拷贝至本地。前往参阅[新人指引](zh-cn/newbs_getting_started.md)确保已完成初始配置。
+
+## Windows
+
+### 依赖项
+
+* [Git for Windows](https://git-scm.com/download/win) (该链接会自动提示你保存或运行安装包)
+
+ 1. 除 `Git LFS (Large File Support)(大文件支援)` 及 `Check daily for Git for Windows updates(每天检查更新)` 外取消所有可选项。
+ 2. 将默认编辑器改为 `Use Visual Studio Code as Git's default editor(将VS Code作为默认编辑器)`
+ 3. 选择 `Use Git from Git Bash only(仅在Git Bash中使用Git)`,这是应使用的方案。
+ 4. 在 `Choosing HTTPS transport backend(选择HTTPS传输服务)` 选项上,皆可。
+ 5. 选择 `Checkout as-is, commit Unix-style line endings(检出不作更改,提交时使用Unix风格换行符)`,QMK仓库使用的是Unix style提交。
+ 6. 在额外选项页,保持默认选择即可。
+
+ 该软件是VS Code支持Git的所需项目,是有可能不去使用它,但直接用它会省很多事。
+
+* [Git Credential Manager for Windows(Windows版Git凭据管理器)](https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases) (可选)
+
+ 该软件提供了更好的git 凭据加密存储、多因素身份认证(MFA)及私有访问token生成器。
+
+ 这个不是严格必须的,但我们依旧推荐使用。
+
+
+### 安装VS Code
+
+1. 到[VS Code](https://code.visualstudio.com/)下载安装包
+2. 运行安装包
+
+很简单的操作。然而,仍有一些配置我们需要确保是设置正确的。
+
+### VS Code设置
+
+首先来配置IntelliSense,虽不是严格必要的,但能让你后续使用便捷**很多**。首先,在QMK Firmware目录下创建文件 `.vscode/c_cpp_properties.json`,之后的操作可以手动完成,但我已经完成了大部分。
+
+获取[这份文件](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8),如果你的MSYS2没有安装在默认路径,或在用WSL/LxSS,你可能需要做一下编辑修改。
+
+在保存妥当后,如果你有已打开的VS Code,你需要reload一下。
+
+?> 在 `.vscode` 目录下你应该还能看到 `extensions.json` 和 `settings.json` 文件。
+
+现在,我们配置MSYS2作为VSCode的集成终端。这么做有很多好处,最主要的是可以通过按住control点击错误消息直接跳转到文件,调试起来会简单得多,另外的好处是,你不用在窗口间切换。
+
+1. 点击 <kbd><kbd>文件</kbd> > <kbd>首选项 ></kbd> > <kbd>设置</kbd> </kbd>
+2. 点击上方右侧的 <kbd>{}</kbd> 按钮,打开 `settings.json` 文件。
+3. 将文件改为:
+
+ ```json
+ {
+ "terminal.integrated.profiles.windows": {
+ "QMK_MSYS": {
+ "path": "C:/QMK_MSYS/usr/bin/bash.exe",
+ "env": {
+ "MSYSTEM": "MINGW64",
+ "CHERE_INVOKING": "1"
+ },
+ "args": ["--login"]
+ }
+ },
+
+ "terminal.integrated.cursorStyle": "line"
+ }
+ ```
+
+ 如果该文件内已经有一些配置项,将上面的内容粘贴在最外层的花括号内,并用一个逗号将新旧内容分隔开。
+
+?> 如果你的MSYS2安装在不同的目录下,你需要将 `terminal.integrated.shell.windows` 更改为你系统中正确的目录。
+
+4. 点击Ctrl-<code>&#96;</code> (Grave) 或在 <kbd><kbd>视图</kbd> > <kbd>终端</kbd></kbd> 可以打开终端界面 (`workbench.action.terminal.toggleTerminal` 命令)。如果没有终端它会自动打开一个。
+
+ 终端应启动于工程目录中(即 `qmk_firmware` 目录),之后你可以构建键盘了。
+
+
+## 其它系统
+
+1. 到[VS Code](https://code.visualstudio.com/)下载安装包
+2. 运行安装包
+3. 搞定
+
+是的,确实是搞定了。安装的时候所有所需的路径配置都会被包含进来,在检查当前工程文件并进行IntelliSense解析上表现也会更好。
+
+## 插件
+
+有一些你可能感兴趣的扩展可以安装:<!-- 老外自己也分不清plugin和extension啊-_-||| -->
+
+* [Git Extension Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.git-extension-pack) - 提供了一系列的Git工具可以让你在QMK Firmware中使用Git便捷一些。
+* [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) - _[可选]_ - 可以让你的代码更符合QMK规范。
+* [Bracket Pair Colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2) - _[可选]_ - 可以给大括号着色,可以更好地阅读嵌套代码。
+* [GitHub Markdown Preview](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview) - _[可选]_ - 使得VS Code下的markdown预览更符合Github的效果。
+* [VS Live Share Extension Pack](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack) - _[可选]_ - 这个扩展允许他人访问你的工作区(或反之)进行协作,在你遇到问题需要他人帮助时挺有用。
+* [VIM Keymap](https://marketplace.visualstudio.com/items?itemName=GiuseppeCesarano.vim-keymap) - _[可选]_ - 为那些更喜欢VIM风格的按键操作的人所准备。这样的扩展还有挺多。
+
+安装扩展后需要重启VS Code。
+
+# 配置VS Code下的QMK
+1. 点击 <kbd><kbd>文件</kbd> > <kbd>打开目录</kbd></kbd>
+2. 打开你从Github克隆的QMK固件仓库所在目录。
+3. 点击 <kbd><kbd>文件</kbd> > <kbd>保存工作区为...</kbd></kbd>
+
+此时你已完成了在VS Code下编写QMK固件的准备工作。
diff --git a/docs/zh-cn/reference_configurator_support.md b/docs/zh-cn/reference_configurator_support.md
new file mode 100644
index 0000000000..aa174ceedb
--- /dev/null
+++ b/docs/zh-cn/reference_configurator_support.md
@@ -0,0 +1,200 @@
+# 在QMK配置器中支持您的键盘
+
+<!---
+ original document: 0.15.12:docs/reference_configurator_support.md
+ git diff 0.15.12 HEAD -- docs/reference_configurator_support.md | cat
+-->
+
+本章节详述了如何在[QMK配置器](https://config.qmk.fm/)中对键盘进行支持。
+
+
+## 配置器如何理解键盘
+
+若要了解配置器如何理解键盘,须先理解配列的宏定义。这里有一份练习,假设这里有一个17键的小键盘PCB方案,就叫做 `numpad`。
+
+```
+|---------------|
+|NLk| / | * | - |
+|---+---+---+---|
+|7 |8 |9 | + |
+|---+---+---| |
+|4 |5 |6 | |
+|---+---+---+---|
+|1 |2 |3 |Ent|
+|-------+---| |
+|0 | . | |
+|---------------|
+```
+
+?> 配列宏定义的更多资料,参见[理解QMK:矩阵扫描](zh-cn/understanding_qmk.md?id=matrix-scanning)及[理解QMK:矩阵到物理配列的映射](zh-cn/understanding_qmk.md?id=matrix-to-physical-layout-map)。
+
+配置器的API会从 `qmk_firmware/keyboards/<keyboard>/<keyboard>.h` 中读取键盘定义的 `.h` 文件。在上面的小键盘示例中,对应文件应为 `qmk_firmware/keyboards/numpad/numpad.h`:
+
+```c
+#pragma once
+
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k33, \
+ k40, k42 \
+ ) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, KC_NO }, \
+ { k30, k31, k32, k33 }, \
+ { k40, KC_NO, k42, KC_NO } \
+}
+```
+
+QMK使用 `KC_NO` 去标记开关矩阵中的空位。有时也会因方便或调试用途而使用 `XXX`,`___` 或 `____` 来替代。通产定义写在 `.h` 文件起始位置附近:
+
+```c
+#pragma once
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, \
+ k30, k31, k32, k33, \
+ k40, k42 \
+ ) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, XXX }, \
+ { k30, k31, k32, k33 }, \
+ { k40, XXX, k42, XXX } \
+}
+```
+
+!> 注意这里的使用模式与键映射中的宏完全不同,后者几乎都在用 `XXXXXXX`(7个大写X)替代 `KC_NO`,用 `_______`(7个下划线)替代 `KC_TRNS`。
+
+!> 为避免混淆,推荐使用 `KC_NO`。
+
+配列宏定义描述该键盘有17个按键,分布在五行四列。我们将这些开关命名为 `k<行号><列号>`,从0计起。命名成什么不太重要,但须确保负责从键映射中接收键码的上半段,与描述矩阵中按键位置的下半段定义匹配一致。
+
+为了能够重现键盘的物理组成样式,须构建并提供一份用于描述按键物理位置和尺寸与开关矩阵绑定关系的JSON文件,以告知配置器程序这些信息。
+
+## 构建JSON文件
+
+构建该JSON描述文件最简便的办法是使用[Keyboard Layout Editor](https://www.keyboard-layout-editor.com/) ("KLE"), 从中获取的原始数据(Raw Data)可以经QMK工具转换为配置器可用的JSON格式数据。由于KLE默认打开显示的是一个小键盘配列,请移除新手引导部分,从剩余部分开始使用。
+
+在配列编辑完毕后,从KLE的原始数据(Raw Data tab)页中拷贝类似如下的内容:
+
+```
+["Num Lock","/","*","-"],
+["7\nHome","8\n↑","9\nPgUp",{h:2},"+"],
+["4\n←","5","6\n→"],
+["1\nEnd","2\n↓","3\nPgDn",{h:2},"Enter"],
+[{w:2},"0\nIns",".\nDel"]
+```
+
+要将这份数据转换为我们可用的JSON格式,请跳转至[QMK KLE-JSON转换工具](https://qmk.fm/converter/)页面并粘贴到输入框,点击转换按钮。稍后输出框中即可看到所需的JSON数据。将输出数据拷贝到文本文档中,并命名为 `info.json`,保存到 `numpad.h` 所在目录。
+
+可以通过 `keyboard_name` 元素来指定键盘名称。这里为了演示,会将每个按键独立分行,以更方便于阅读,这不影响配置器的功能。
+
+```json
+{
+ "keyboard_name": "Numpad",
+ "url": "",
+ "maintainer": "qmk",
+ "tags": {
+ "form_factor": "numpad"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Num Lock", "x":0, "y":0},
+ {"label":"/", "x":1, "y":0},
+ {"label":"*", "x":2, "y":0},
+ {"label":"-", "x":3, "y":0},
+ {"label":"7", "x":0, "y":1},
+ {"label":"8", "x":1, "y":1},
+ {"label":"9", "x":2, "y":1},
+ {"label":"+", "x":3, "y":1, "h":2},
+ {"label":"4", "x":0, "y":2},
+ {"label":"5", "x":1, "y":2},
+ {"label":"6", "x":2, "y":2},
+ {"label":"1", "x":0, "y":3},
+ {"label":"2", "x":1, "y":3},
+ {"label":"3", "x":2, "y":3},
+ {"label":"Enter", "x":3, "y":3, "h":2},
+ {"label":"0", "x":0, "y":4, "w":2},
+ {"label":".", "x":2, "y":4}
+ ]
+ }
+ }
+}
+```
+
+`layouts` 对象描述了键盘的物理配列信息,其下的 `LAYOUT` 对象命名须与 `numpad.h` 中的一致,而 `LAYOUT` 下的 `layout` 对象,其下每个JSON对象描述了各物理按键,格式如下:
+
+```
+ 按键名,不会在配置器中展现。
+ |
+ | 按键的X坐标,从键盘左侧开始数。
+ | |
+ | |
+ | | 按键的Y坐标,从键盘上侧(后视角)开始数。
+ | | |
+ ↓ ↓ ↓
+{"label":"Num Lock", "x":0, "y":0},
+```
+
+部分对象包含 `"w"` 和 `"h"` 字段,用以描述按键的宽高值。
+
+?> 关于 `info.json` 文件的详细信息,参见[`info.json` 文件格式](zh-cn/reference_info_json.md)。
+
+
+## 配置器如何配置按键
+
+配置器API基于配列宏定义及JSON描述文件创建出键盘的可视化展现,并将每个可视化元素依序绑定到指定的按键:
+
+配列宏定义中的键 | 所使用的JSON对象
+:---: | :----
+k00 | {"label":"Num Lock", "x":0, "y":0}
+k01 | {"label":"/", "x":1, "y":0}
+k02 | {"label":"*", "x":2, "y":0}
+k03 | {"label":"-", "x":3, "y":0}
+k10 | {"label":"7", "x":0, "y":1}
+k11 | {"label":"8", "x":1, "y":1}
+k12 | {"label":"9", "x":2, "y":1}
+k13 | {"label":"+", "x":3, "y":1, "h":2}
+k20 | {"label":"4", "x":0, "y":2}
+k21 | {"label":"5", "x":1, "y":2}
+k22 | {"label":"6", "x":2, "y":2}
+k30 | {"label":"1", "x":0, "y":3}
+k31 | {"label":"2", "x":1, "y":3}
+k32 | {"label":"3", "x":2, "y":3}
+k33 | {"label":"Enter", "x":3, "y":3, "h":2}
+k40 | {"label":"0", "x":0, "y":4, "w":2}
+k42 | {"label":".", "x":2, "y":4}
+
+当用户在配置器中选中左上角的按键,并赋予数字区锁定键(NumLock)时,配置器会将 `KC_NLCK` 作为第一个按键进行键映射文件的构建工作,其它按键逻辑类似。其中 `label` 键值未被用到,其用于用户在调试 `info.json` 文件时,可以参考辨认出各按键。
+
+
+## 问题及副作用
+
+目前配置器还不支持按键偏转及类似ISO回车键这种非矩形按键。另外,对于纵向上偏离其行的按键 &mdash; 特别是像[TKC1800](https://github.com/qmk/qmk_firmware/tree/4ac48a61a66206beaf2fdd5f2939d8bbedd0004c/keyboards/tkc1800/)这种1800配列的键盘中的方向键 &mdash; 如果 `info.json` 文件的贡献者没有做出修正,KLE转JSON数据工具将会不知如何处理。
+
+### 解决方案
+
+#### 非矩阵形状的按键
+
+针对ISO回车键的情况,QMK会将其定制化显示成一个矩形键,宽1.25u高2u,按键矩阵的右边与字母区的右边对齐。
+
+![](https://i.imgur.com/JKngtTw.png)
+*一款60% ISO配列的键盘, 在QMK配置器中的渲染样式。*
+
+#### 纵向偏移的按键
+
+对于纵向偏移的按键,将其视作未偏移的样子放入KLE,最后在转换后的JSON文件中,按需编辑其Y偏移值。
+
+![](https://i.imgur.com/fmDvDzR.png)
+*一款1800配列键盘在KLE中的渲染样式,方向键未进行纵向偏移移动。*
+
+![](https://i.imgur.com/8beYMBR.png)
+*这份Unix差异文件,展示了我们需要在JSON文件中进行的纵向偏移改动。*
diff --git a/docs/zh-cn/reference_glossary.md b/docs/zh-cn/reference_glossary.md
index 06d3632505..e1dfccddd2 100644
--- a/docs/zh-cn/reference_glossary.md
+++ b/docs/zh-cn/reference_glossary.md
@@ -1,5 +1,10 @@
# QMK术语表
+<!---
+ original document: 0.15.12:docs/reference_glossary.md
+ git diff 0.15.12 HEAD -- docs/reference_glossary.md | cat
+-->
+
## ARM
多家公司生产的32位单片机系列,例如Atmel, Cypress, Kinetis, NXP, ST, 和 TI等公司。
@@ -7,16 +12,16 @@
[Atmel](https://www.microchip.com/)公司的单片机系列。 AVR是TMK的初始支持平台。
## AZERTY
-Français (法国)标准键盘布局。用键盘的前六个字母命名。
+Français (法语)标准键盘布局。用键盘的前六个字母命名。
## Backlight(背光)
-键盘上照明的通称。背光通常是一组LED灯,通过键帽或者按轴发光,但也不总是这样。
+键盘上照明的通称。背光通常是一组LED灯,穿过键帽或者轴体发光,但也不总是这样。
## Bluetooth(蓝牙)
-一种短距离点对点无线协议。许多多无线键盘使用此协议。
+一种短距离点对点无线传输协议。许多无线键盘使用此协议。
## Bootloader(引导加载程序)
-一种写到你单片机的保护区的特殊的程序,该程序可以使单片机升级自己的固件,通常是通过USB来升级。
+一种写到你单片机保护区的特殊程序,该程序可以使单片机升级自己的固件,通常是通过USB来升级。
## Bootmagic(热改键)
允许各种键盘行为动态变化的功能,如交换或禁用常用键。
@@ -36,12 +41,12 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
## Dynamic Macro(动态宏)
一种记录在键盘上的宏,当键盘拔出或计算机重新启动时,宏将丢失。
-* [动态宏文档](feature_dynamic_macros.md)
+* [动态宏文档](zh-cn/feature_dynamic_macros.md)
## Eclipse
是一种受C语言开发者追捧的集成开发环境(IDE)。
-* [Eclipse安装说明](eclipse.md)
+* [Eclipse安装说明](zh-cn/other_eclipse.md)
## Firmware(固件)
用来控制单片机的软件。
@@ -52,14 +57,14 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
## GitHub
负责大多数QMK项目的网站。它是Git、问题跟踪和其他帮助我们运行qmk的功能的集成平台。
-## ISP(在系统编程)
-在系统编程(In-system programming), 使用外部硬件和JTAG管脚对AVR芯片进行编程的一种方法。
+## ISP(在线系统编程)
+在线系统编程(In-system programming), 使用外部硬件和JTAG管脚对AVR芯片进行编程的一种方法。
## hid_listen
从键盘接收调试消息的接口。 您可以使用[QMK Flasher](https://github.com/qmk/qmk_flasher)或[PJRC's hid_listen](https://www.pjrc.com/teensy/hid_listen.html)查看这些消息
## Keycode(键码)
-表示特定键的2字节数据。`0x00`-`0xFF`用于[基本键码](keycodes_basic.md)而`0x100`-`0xFFFF`用于[量子键码](quantum_keycodes.md).
+表示特定键的2字节数据。`0x00`-`0xFF`用于[基本键码](zh-cn/keycodes_basic.md)而`0x100`-`0xFFFF`用于[量子键码](zh-cn/quantum_keycodes.md).
## Key Down
一个键按下尚未抬起时触发的事件。
@@ -71,12 +76,12 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
映射到物理键盘布局的一组键码,在按键和按键释放时进行处理。有时翻译为布局,意为软件上表示的布局,即映射。
## Layer(层)
-为了让一个键实现多个功能的抽象结构。最高活动层有限。
+为了让一个键实现多个功能的抽象结构。可用层数有上限。
## Leader Key(前导键、设置菜单键)
本功能允许您点击前导键,然后按顺序按1-3个键子来激活按键或其他量子功能。
-* [前导键文档](feature_leader_key.md)
+* [前导键文档](zh-cn/feature_leader_key.md)
## LED
发光二极管,键盘上最常用的指示灯装置。
@@ -90,18 +95,18 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
## Macro(宏)
本功能可以在敲击单个键后发送多个按键事件(hid报告)。
-* [宏文档](feature_macros.md)
+* [宏文档](zh-cn/feature_macros.md)
## MCU(单片机、微控制单元)
微控制单元,键盘的处理器。
-## Modifier(修改键、修饰键、功能键)
+## Modifier(修饰键、修改键、功能键)
按住该键将会改变其他键的功能,修饰键包括 Ctrl, Alt, 和 Shift。
## Mousekeys(鼠标键)
本功能在您敲击键盘时会控制鼠标光标。
-* [鼠标键文档](feature_mouse_keys.md)
+* [鼠标键文档](zh-cn/feature_mouse_keys.md)
## N-Key Rollover (NKRO、全键无冲)
一种术语,适用于能够同时报告任意数量按键的键盘。
@@ -128,17 +133,17 @@ Français (法国)标准键盘布局。用键盘的前六个字母命名。
HID报告中的一个1字节的数字,表示一个键子。这些数字在下列文档中[HID Usage Tables](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf)该文档发布于[USB-IF](https://www.usb.org/)。
## Space Cadet键盘的shift键
-一种特使的shift设置,能让你通过敲击左或右shift一次或多次键入不同的括号。
+一种特殊的shift设置,能让你通过敲击左或右shift一次或多次键入不同的括号。
-* [Space Cadet键盘文档](feature_space_cadet.md)
+* [Space Cadet键盘文档](zh-cn/feature_space_cadet.md)
## Tap(敲击、单击)
-按下并释放一个键。在某些情况下您需要区分键按下和键抬起,但是单击把两个事件都包括了。
+按下并抬起一个键。在某些情况下您需要区分键按下和键抬起,但是单击把两个事件都包括了。
## Tap Dance(多击键)
本功能允许向同一个键子分配多个键码,并根据按键次数区分。
-* [多击键文档](feature_tap_dance.md)
+* [多击键文档](zh-cn/feature_tap_dance.md)
## Teensy
一种低成本AVR开发板<!--译者吐槽:我怎么感觉成本不低。好吧,我穷。 -->,通常用于手工连线键盘。这个teensy是有点小贵但是halfkay bootloader会让它刷写十分简单,所以也很常用。
@@ -147,21 +152,47 @@ HID报告中的一个1字节的数字,表示一个键子。这些数字在下
用于照亮电路板底面的LED的总称。这些LED通常从印刷电路板的底部向键盘所在的表面发光。
## Unicode
-在较大的计算机世界中,Unicode是一组编码方案,用于表示任何语言中的字符。 与qmk相关的是,它意味着使用各种操作系统方案来发送Unicode代码点,而不是扫描码。
+在广阔的计算机世界中,Unicode是一组编码方案,用于表示任何语言中的字符。 与qmk相关的是,它意味着使用各种操作系统方案来发送Unicode码点,而不是扫描码。
-* [Unicode文档](feature_unicode.md)
+* [Unicode文档](zh-cn/feature_unicode.md)
## Unit Testing(单元测试)
-针对qmk的自动运行测试框架。单元测试帮助我们确信我们的更改不会破坏任何东西。
+针对qmk的自动测试框架。单元测试帮助我们确信我们的更改不会破坏任何东西。
-* [单元测试文档](unit_testing.md)
+* [单元测试文档](zh-cn/unit_testing.md)
## USB
通用串行总线,键盘最常见的有线接口。
-## USB 主机 (或简易主机)
-USB诸暨市你的电脑,或者你的键盘所插的任何设备。
+## USB 主机 (简称主机)
+USB主机就是你的电脑,或者你的键盘所插的任何设备。
# 并没有找到你想找到的术语?
-[建立一个issue](https://github.com/qmk/qmk_firmware/issues) ,想好你的问题,或许你所问的术语就会添加到这里。创建一个PR帮我们添加需要添加的术语当然坠吼了:)
+[新建一个issue](https://github.com/qmk/qmk_firmware/issues) ,想好你的问题,或许你所问的术语就会添加到这里。创建一个PR帮我们添加需要添加的术语当然坠吼了:)
+
+## 中文翻译术语特别说明(terms of Chinese translation):id=terms-of-zh-cn-translate
+!>如果你对QMK文档翻译中的细节不关心,请跳过该节
+
+由于语言及文化差异,QMK英文文档中的部分内容,很难在**保持原句结构**的情况下,完美地翻译为中文,而保持翻译前后的语句结构一致对于开源代码的文档翻译来讲十分重要,这样才能确保不同的文档贡献者不会*夹带私货*,防止不同的翻译风格、不同的翻译水准、不同的理解与润色最终产生糟糕的混合。
+因此,这里会对一些词组的的翻译进行规范化,并希望阅读者及后续文档翻译维护者,维持这种统一的范式。
+
+### keyboard(键盘)及keymap(键映射)
+QMK文档中使用最多的两个术语是keyboard及keymap
+* 键盘:在中文语境下,我们提及键盘,基本是在指物理键盘,而在QMK文档中到处可见的“键盘”一词,多对应的是代码中 `keyboards\` 目录下的键盘定义,其更接近于我们讲的“配列”的概念,主要描述了键盘的大体结构,物理键数量及排列。
+* 键映射:keymap的作用是定义物理键盘到实际输出键值(keycode)的映射关系,也是QMK最重要、涉及最多的概念。QMK很多功能就是为了能够在不改变键盘物理排列/电路组成/芯片程序的情况下,动态地改变物理按键输出的键值。如,通过层切换,将原先的wasd键,切换到可以上下左右的模式,或是一键切换CapsLock和Control,实现这些功能的核心工作就是一套动态的keymap,即键映射逻辑。这里不使用“布局”一词作为keymap的翻译,是因为该词过于宽泛。键映射即便是不好听,至少解释了意思且语境中不容易误解。
+
+### mod-tap
+倾向于不翻译,直接使用原词。因为找不到合适的译法
+
+### dead key
+直译为死键,西语体系下使用的特殊符号,中文中无对应概念。
+
+### flashing(firmware)
+使用“刷写”而非容易迷惑的“刷新”
+
+### option/configuration/setting
+根据上下文灵活考虑。对于组件化配置的概念,如一个功能支持与否,使用“配置”一词;对于客观上一定存在的某项设置值,使用“设置”一词。
+
+### commit/push/pull等Git术语
+倾向于不翻译。这些词语的对应中文词语过于宽泛或词性不明,非常容易混淆上下文。
diff --git a/docs/zh-cn/support.md b/docs/zh-cn/support.md
new file mode 100644
index 0000000000..e636d29c97
--- /dev/null
+++ b/docs/zh-cn/support.md
@@ -0,0 +1,22 @@
+# 寻求帮助
+
+<!---
+ original document: 0.15.12:docs/support.md
+ git diff 0.15.12 HEAD -- docs/support.md | cat
+-->
+
+你可以从很多渠道获取QMK帮助。
+
+在你前往社区进行沟通前,请先阅览我们的社区[行为守则](https://qmk.fm/coc/)
+
+## 实时沟通
+
+在你需要帮助时,最便捷的办法是通过我们的[Discord服务器](https://discord.gg/Uq7gcHh)进行沟通,通常会有人在线,也有很多乐于助人的人。
+
+## OLKB Subreddit
+
+QMK的官方论坛是[reddit.com](https://reddit.com)上的[/r/olkb](https://reddit.com/r/olkb).
+
+## GitHub Issues
+
+你可以在[Github上发Issue](https://github.com/qmk/qmk_firmware/issues),对于需要深入讨论或需要调试的问题,会方便得多。
diff --git a/docs/zh-cn/syllabus.md b/docs/zh-cn/syllabus.md
new file mode 100644
index 0000000000..d0b861530a
--- /dev/null
+++ b/docs/zh-cn/syllabus.md
@@ -0,0 +1,77 @@
+# QMK大纲
+
+<!---
+ original document: 0.15.12:docs/syllabus.md
+ git diff 0.15.12 HEAD -- docs/syllabus.md | cat
+-->
+
+这一页旨在帮你建立关于QMK的相关基础知识,并提供能引导你成为QMK大师所需的所有概念。
+
+# 基本概念
+
+如果你还没有看其它部分,先阅读这一节吧。在阅读了[介绍](zh-cn/newbs.md)之后,你可以制作、编译、刷写一个简单的键映射了,以下文档可以助你充实各系列的知识。
+
+* **了解如何使用QMK**
+ * [介绍](zh-cn/newbs.md)
+ * [CLI](zh-cn/cli.md)
+ * [GIT](zh-cn/newbs_git_best_practices.md)
+* **了解键映射**
+ * [层](zh-cn/feature_layers.md)
+ * [键码](zh-cn/keycodes.md)
+ * 含所有可用键码,一些会涉及进阶或高级的话题。
+* **配置IDE** - 可选的
+ * [Eclipse](zh-cn/other_eclipse.md)
+ * [VS Code](zh-cn/other_vscode.md)
+
+# 进阶话题
+
+包含窥探QMK主要功能内部原理的话题。你可以不用阅读这些,然而,跳过这些话题的话,去看高级话题的时候会让你很迷惑。
+
+* **各功能的配置**
+ <!-- * Configuration Overview FIXME(skullydazed/anyone): write this document -->
+ * [音频](zh-cn/feature_audio.md)
+ * 灯光
+ * [背光](zh-cn/feature_backlight.md)
+ * [LED矩阵](zh-cn/feature_led_matrix.md)
+ * [RGB灯光](zh-cn/feature_rgblight.md)
+ * [RGB矩阵](zh-cn/feature_rgb_matrix.md)
+ * [点按配置](zh-cn/tap_hold.md)
+ * [充分利用AVR的存储空间](zh-cn/squeezing_avr.md)
+* **深入键映射**
+ * [键映射](zh-cn/keymap.md)
+ * [键码与自定义函数](zh-cn/custom_quantum_functions.md)
+ * 宏
+ * [动态宏](zh-cn/feature_dynamic_macros.md)
+ * [宏](zh-cn/feature_macros.md)
+ * [Tap Dance](zh-cn/feature_tap_dance.md)
+ * [组合键](zh-cn/feature_combo.md)
+ * [用户空间](zh-cn/feature_userspace.md)
+ * [按键重定义](zh-cn/feature_key_overrides.md)
+
+# 高级话题
+
+这些话题需要较多基础知识,使用这些高级功能前,你应该对如何通过 `config.h` 和 `rules.mk` 来配置键盘选项非常熟悉。
+
+* **维护QMK键盘**
+ * [飞线指南](zh-cn/hand_wire.md)
+ * [键盘开发指引](zh-cn/hardware_keyboard_guidelines.md)
+ * [info.json参考资料](zh-cn/reference_info_json.md)
+ * [防抖API](zh-cn/feature_debounce_type.md)
+* **高级功能**
+ * [Unicode](zh-cn/feature_unicode.md)
+ * [API](zh-cn/api_overview.md)
+ * [Bootmagic Lite](zh-cn/feature_bootmagic.md)
+* **硬件相关**
+ * [键盘工作原理](zh-cn/how_keyboards_work.md)
+ * [键盘矩阵原理](zh-cn/how_a_matrix_works.md)
+ * [分体键盘](zh-cn/feature_split_keyboard.md)
+ * [速记](zh-cn/feature_stenography.md)
+ * [光标设备](zh-cn/feature_pointing_device.md)
+* **开发核心知识**
+ * [C编码规范](zh-cn/coding_conventions_c.md)
+ * [兼容的微处理器](zh-cn/compatible_microcontrollers.md)
+ * [自定义矩阵](zh-cn/custom_matrix.md)
+ * [理解QMK](zh-cn/understanding_qmk.md)
+* **CLI开发**
+ * [编码规范](zh-cn/coding_conventions_python.md)
+ * [CLI开发总览](zh-cn/cli_development.md)
diff --git a/docs/zh-cn/translating.md b/docs/zh-cn/translating.md
new file mode 100644
index 0000000000..fa80ffd7f8
--- /dev/null
+++ b/docs/zh-cn/translating.md
@@ -0,0 +1,60 @@
+# 翻译QMK文档
+
+<!---
+ original document: 0.15.12:docs/translating.md
+ git diff 0.15.12 HEAD -- docs/translating.md | cat
+-->
+
+根目录下(`docs/`)的所有文件应当是英语的 - 其它语言应使用 ISO 639-1 中定义的语言编码建立子目录,后跟随一个 `-` 以及必要的国家编码。[常见的语言编码可见这里](https://www.andiamo.co.uk/resources/iso-language-codes/)。如果此目录不存在,可以新建。每个翻译过的文件的文件名,都应保持与英语版本的一致,以确保超链接的退化兼容性。
+
+文件夹下的 `_summary.md` 文件中,有链接向其它文件的地址,在翻译过的名称后,跟随的链接前应添加该语言的目录名:
+
+```markdown
+ * [QMK简介](zh-cn/getting_started_introduction.md)
+```
+
+所有导向其它文档页面的链接也必须有语言目录名前缀,若还指向了页面指定位置(即特定的标题),必须使用标题的英文ID,如:
+
+```markdown
+[建立你的环境](zh-cn/newbs-getting-started.md#set-up-your-environment)
+
+## 建立你的环境 :id=set-up-your-environment
+```
+
+在翻译后,以下文件也需要进行修改:
+
+* [`docs/_langs.md`](https://github.com/qmk/qmk_firmware/blob/master/docs/_langs.md)
+ 中的每一行应包含该语言国家国旗的[GitHub emoji编码](https://github.com/ikatyang/emoji-cheat-sheet/blob/master/README.md#country-flag)标志:
+
+ ```markdown
+ - [:cn: 中文](/zh-cn/)
+ ```
+
+* [`docs/index.html`](https://github.com/qmk/qmk_firmware/blob/master/docs/index.html)
+ `placeholder` 及 `noData` 对象应有一个指向对应语言的入口项:
+
+ ```js
+ '/zh-cn/': '没有结果!',
+ ```
+
+ 用于 "QMK固件" 边栏标题链接的 `nameLink` 同样需要添加对应配置:
+
+ ```js
+ '/zh-cn/': '/#/zh-cn/',
+ ```
+
+ 最后确保在 `fallbackLanguages` 列表中添加该语言项,这样未翻译的文档链接将回退到英文版,而不是出现404页面:
+
+ ```js
+ fallbackLanguages: [
+ // ...
+ 'zh-cn',
+ // ...
+ ],
+ ```
+
+## 预览你的翻译成果
+
+请阅读[文档预览](zh-cn/contributing.md#previewing-the-documentation)来设置文档的本地预览 - 在页面右上角的 "Translations" 菜单中应当可以看到你翻译的语言的入口。
+
+当你觉得一切就绪了,请发起pull request给我们吧!
diff --git a/docs/zh-cn/zh_cn_doc_status.sh b/docs/zh-cn/zh_cn_doc_status.sh
new file mode 100644
index 0000000000..84693e5461
--- /dev/null
+++ b/docs/zh-cn/zh_cn_doc_status.sh
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Script to display Simplified Chinese translation status of documents
+# Copied from the japanese one
+#
+if [ ! -d docs/zh-cn ]; then
+ echo "'docs/zh-cn' not found."
+ echo "do:"
+ echo " cd \$(QMK_TOP)"
+ echo " ./docs/zh-cn/zh-cn_doc_status.sh"
+ exit 1
+fi
+
+en_docs=`cd docs;ls -1 [a-z]*.md`
+zh_cn_docs=`cd docs/zh-cn;ls -1 [a-z]*.md`
+en_count=`echo $en_docs | wc -w`
+zh_cn_count=`echo $zh_cn_docs | wc -w`
+echo "English documents $en_count files."
+echo "Simplified Chinese documents $zh_cn_count files."
+
+echo "Files that have not been translated yet:"
+for docfile in $en_docs
+do
+ if [ ! -f docs/zh-cn/$docfile ]; then
+ wc docs/$docfile
+ fi
+done | sort
+echo "Files that have not been updated yet:"
+grep --no-filename "^[ ]*git diff" docs/zh-cn/*.md | while read cmd
+do
+ cline=`echo $cmd | sh | wc -l`
+ if [ $cline -gt 0 ]; then
+ echo "$cline $cmd"
+ fi
+done | sort
diff --git a/drivers/ps2/ps2_busywait.c b/drivers/ps2/ps2_busywait.c
index 983194eea8..a426090155 100644
--- a/drivers/ps2/ps2_busywait.c
+++ b/drivers/ps2/ps2_busywait.c
@@ -125,11 +125,10 @@ uint8_t ps2_host_recv_response(void) {
// Command may take 25ms/20ms at most([5]p.46, [3]p.21)
// 250 * 100us(wait for start bit in ps2_host_recv)
uint8_t data = 0;
- uint8_t try
- = 250;
+ uint8_t try = 250;
do {
data = ps2_host_recv();
- } while (try --&&ps2_error);
+ } while (try-- && ps2_error);
return data;
}
diff --git a/drivers/sensors/analog_joystick.c b/drivers/sensors/analog_joystick.c
index 0f4d1d7a4c..1666bed047 100644
--- a/drivers/sensors/analog_joystick.c
+++ b/drivers/sensors/analog_joystick.c
@@ -30,7 +30,7 @@ int16_t xOrigin, yOrigin;
uint16_t lastCursor = 0;
-int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
+int16_t axisCoordinate(pin_t pin, uint16_t origin) {
int8_t direction;
int16_t distanceFromOrigin;
int16_t range;
@@ -60,7 +60,7 @@ int16_t axisCoordinate(uint8_t pin, uint16_t origin) {
}
}
-int8_t axisToMouseComponent(uint8_t pin, int16_t origin, uint8_t maxSpeed) {
+int8_t axisToMouseComponent(pin_t pin, int16_t origin, uint8_t maxSpeed) {
int16_t coordinate = axisCoordinate(pin, origin);
if (coordinate != 0) {
float percent = (float)coordinate / 100;
diff --git a/drivers/sensors/cirque_pinnacle_spi.c b/drivers/sensors/cirque_pinnacle_spi.c
index f3eee88758..ed40abd9fa 100644
--- a/drivers/sensors/cirque_pinnacle_spi.c
+++ b/drivers/sensors/cirque_pinnacle_spi.c
@@ -15,7 +15,7 @@ extern bool touchpad_init;
void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
uint8_t cmdByte = READ_MASK | address; // Form the READ command byte
if (touchpad_init) {
- if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
+ if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
spi_write(cmdByte);
spi_read(); // filler
spi_read(); // filler
@@ -27,7 +27,6 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
dprintf("error right touchpad\n");
#endif
touchpad_init = false;
- j
}
spi_stop();
}
@@ -38,7 +37,7 @@ void RAP_Write(uint8_t address, uint8_t data) {
uint8_t cmdByte = WRITE_MASK | address; // Form the WRITE command byte
if (touchpad_init) {
- if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_TRACKPAD_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
+ if (spi_start(CIRQUE_PINNACLE_SPI_CS_PIN, CIRQUE_PINNACLE_SPI_LSBFIRST, CIRQUE_PINNACLE_SPI_MODE, CIRQUE_PINNACLE_SPI_DIVISOR)) {
spi_write(cmdByte);
spi_write(data);
} else {
diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c
index 2b27dccbb6..50d1c35801 100644
--- a/drivers/sensors/pmw3360.c
+++ b/drivers/sensors/pmw3360.c
@@ -143,7 +143,7 @@ void pmw3360_set_cpi(uint16_t cpi) {
uint16_t pmw3360_get_cpi(void) {
uint8_t cpival = spi_read_adv(REG_Config1);
- return (uint16_t)(cpival & 0xFF) * 100;
+ return (uint16_t)((cpival + 1) & 0xFF) * 100;
}
bool pmw3360_init(void) {
@@ -186,6 +186,8 @@ bool pmw3360_init(void) {
spi_write_adv(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -30, 30));
+ spi_write_adv(REG_Lift_Config, PMW3360_LIFTOFF_DISTANCE);
+
bool init_success = pmw3360_check_signature();
writePinLow(PMW3360_CS_PIN);
diff --git a/drivers/sensors/pmw3360.h b/drivers/sensors/pmw3360.h
index 7b2bef5b80..9aa8e13f8e 100644
--- a/drivers/sensors/pmw3360.h
+++ b/drivers/sensors/pmw3360.h
@@ -46,6 +46,10 @@
# endif
#endif
+#ifndef PMW3360_LIFTOFF_DISTANCE
+# define PMW3360_LIFTOFF_DISTANCE 0x02
+#endif
+
#ifndef ROTATIONAL_TRANSFORM_ANGLE
# define ROTATIONAL_TRANSFORM_ANGLE 0x00
#endif
diff --git a/keyboards/0_sixty/rules.mk b/keyboards/0_sixty/rules.mk
index 51bb5e7354..7a09d99fdf 100644
--- a/keyboards/0_sixty/rules.mk
+++ b/keyboards/0_sixty/rules.mk
@@ -11,10 +11,7 @@ BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/0xc7/61key/rules.mk b/keyboards/0xc7/61key/rules.mk
index 8df0d8100d..361d8928ab 100644
--- a/keyboards/0xc7/61key/rules.mk
+++ b/keyboards/0xc7/61key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/0xcb/1337/config.h b/keyboards/0xcb/1337/config.h
index 21332c5585..d134d1ab49 100644
--- a/keyboards/0xcb/1337/config.h
+++ b/keyboards/0xcb/1337/config.h
@@ -37,10 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ E6, B4, B2 } \
}
#define TAP_CODE_DELAY 10
-#define ENCODER_DIRECTION_FLIP
#define ENCODER_RESOLUTION 4
-#define ENCODERS_PAD_A { F5 }
-#define ENCODERS_PAD_B { F6 }
+#define ENCODERS_PAD_A { F6 }
+#define ENCODERS_PAD_B { F5 }
#define BACKLIGHT_PIN B5
#define BACKLIGHT_BREATHING
diff --git a/keyboards/0xcb/1337/rules.mk b/keyboards/0xcb/1337/rules.mk
index 76a0c6d599..267c4d09ae 100644
--- a/keyboards/0xcb/1337/rules.mk
+++ b/keyboards/0xcb/1337/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/0xcb/static/config.h b/keyboards/0xcb/static/config.h
index 0d36b931ee..c30450b460 100644
--- a/keyboards/0xcb/static/config.h
+++ b/keyboards/0xcb/static/config.h
@@ -48,7 +48,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define TAP_CODE_DELAY 10
-#define ENCODER_DIRECTION_FLIP
#define ENCODER_RESOLUTION 4
#define ENCODERS_PAD_A { D0 }
#define ENCODERS_PAD_B { D1 }
diff --git a/keyboards/0xcb/static/keymaps/bongocat/keymap.c b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
index acdc521847..12cc75217e 100644
--- a/keyboards/0xcb/static/keymaps/bongocat/keymap.c
+++ b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
@@ -107,7 +107,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif
/* oled stuff :) */
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
#define IDLE_FRAMES 5
#define IDLE_SPEED 20 // below this wpm value your animation will idle
#define TAP_FRAMES 2
diff --git a/keyboards/0xcb/static/readme.md b/keyboards/0xcb/static/readme.md
index 8403b4450e..57e87b71a6 100644
--- a/keyboards/0xcb/static/readme.md
+++ b/keyboards/0xcb/static/readme.md
@@ -4,7 +4,7 @@ Macro keypad
* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns)
* Hardware Supported: https://github.com/0xCB-dev/0xcb-static
-* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D
+* Hardware Availability: On CandyKeys or order your own parts - the hardware in the repo is Open Source :D
* PCB renders :)
![](https://github.com/0xCB-dev/0xcb-static/blob/main/PCB/rev1.0/top.png)
diff --git a/keyboards/0xcb/static/rules.mk b/keyboards/0xcb/static/rules.mk
index c32b3252c9..a06dda50ba 100644
--- a/keyboards/0xcb/static/rules.mk
+++ b/keyboards/0xcb/static/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/10bleoledhub/rules.mk b/keyboards/10bleoledhub/rules.mk
index 5f2e79f5a3..33170c43a2 100644
--- a/keyboards/10bleoledhub/rules.mk
+++ b/keyboards/10bleoledhub/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/default/config.h b/keyboards/1upkeyboards/1up60hse/keymaps/default/config.h
deleted file mode 100644
index 99a7005607..0000000000
--- a/keyboards/1upkeyboards/1up60hse/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2018 MechMerlin
- * Copyright 2018 Logan Huskins
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/1upkeyboards/1up60hse/rules.mk b/keyboards/1upkeyboards/1up60hse/rules.mk
index 0f8c15bc02..2ea214a087 100644
--- a/keyboards/1upkeyboards/1up60hse/rules.mk
+++ b/keyboards/1upkeyboards/1up60hse/rules.mk
@@ -12,13 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
LAYOUTS = 60_ansi
diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk
index ccd93ce6d4..fec7fec345 100644
--- a/keyboards/1upkeyboards/1up60hte/rules.mk
+++ b/keyboards/1upkeyboards/1up60hte/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/1upkeyboards/1up60rgb/rules.mk b/keyboards/1upkeyboards/1up60rgb/rules.mk
index 609f8ee162..69953e30bc 100644
--- a/keyboards/1upkeyboards/1up60rgb/rules.mk
+++ b/keyboards/1upkeyboards/1up60rgb/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/1upkeyboards/super16/keymaps/default/config.h b/keyboards/1upkeyboards/super16/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/1upkeyboards/super16/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/1upkeyboards/super16/rules.mk b/keyboards/1upkeyboards/super16/rules.mk
index f461427842..e14c988d91 100644
--- a/keyboards/1upkeyboards/super16/rules.mk
+++ b/keyboards/1upkeyboards/super16/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/1upkeyboards/super16v2/config.h b/keyboards/1upkeyboards/super16v2/config.h
new file mode 100644
index 0000000000..4fd4238780
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/config.h
@@ -0,0 +1,151 @@
+/* Copyright 2022 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6F75 // OU
+#define PRODUCT_ID 0x5517
+#define DEVICE_VER 0x0001
+#define MANUFACTURER 1upkeyboards
+#define PRODUCT super16v2
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+
+// 0 1 2 3
+#define MATRIX_ROW_PINS { D1, D2, D3, D4 }
+#define MATRIX_COL_PINS { D5, D6, C2, D0 }
+
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN B5
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 20
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/1upkeyboards/super16v2/info.json b/keyboards/1upkeyboards/super16v2/info.json
new file mode 100644
index 0000000000..2a384f775d
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "super16v2",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_ortho_4x4": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}]
+ }
+ }
+ } \ No newline at end of file
diff --git a/keyboards/1upkeyboards/super16v2/keymaps/default/keymap.c b/keyboards/1upkeyboards/super16v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dc58023a37
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2022 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4( /* Base */
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PSLS,
+ MO(1), KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_ortho_4x4( /* Fn Layer */
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RESET
+ ),
+};
+
diff --git a/keyboards/1upkeyboards/super16v2/keymaps/default/readme.md b/keyboards/1upkeyboards/super16v2/keymaps/default/readme.md
new file mode 100644
index 0000000000..e229fcba74
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Super 16 V2
diff --git a/keyboards/1upkeyboards/super16v2/keymaps/via/keymap.c b/keyboards/1upkeyboards/super16v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..7e8f41b909
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2022 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4( /* Base */
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PSLS,
+ MO(1), KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_ortho_4x4( /* Fn Layer */
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RESET
+ ),
+
+ [2] = LAYOUT_ortho_4x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_ortho_4x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
diff --git a/keyboards/1upkeyboards/super16v2/keymaps/via/readme.md b/keyboards/1upkeyboards/super16v2/keymaps/via/readme.md
new file mode 100644
index 0000000000..e229fcba74
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default keymap for Super 16 V2
diff --git a/keyboards/frooastboard/keymaps/via/rules.mk b/keyboards/1upkeyboards/super16v2/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/frooastboard/keymaps/via/rules.mk
+++ b/keyboards/1upkeyboards/super16v2/keymaps/via/rules.mk
diff --git a/keyboards/1upkeyboards/super16v2/readme.md b/keyboards/1upkeyboards/super16v2/readme.md
new file mode 100644
index 0000000000..b2c0ca747b
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/readme.md
@@ -0,0 +1,25 @@
+# Super 16 V2
+
+A 4x4 macropad with RGB inswitch lighting and underglow.
+
+* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+* Hardware Supported: 1upkeyboards Super 16 V2
+* Hardware Availability: [1upkeyboards](https://1upkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 1upkeyboards/super16v2:default
+
+Flashing example for this keyboard:
+
+ make 1upkeyboards/super16v2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/1upkeyboards/super16v2/rules.mk b/keyboards/1upkeyboards/super16v2/rules.mk
new file mode 100644
index 0000000000..d31d53cead
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/1upkeyboards/super16v2/super16v2.c b/keyboards/1upkeyboards/super16v2/super16v2.c
new file mode 100644
index 0000000000..fc73f700c4
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/super16v2.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "super16v2.h"
diff --git a/keyboards/1upkeyboards/super16v2/super16v2.h b/keyboards/1upkeyboards/super16v2/super16v2.h
new file mode 100644
index 0000000000..58fd26ed8a
--- /dev/null
+++ b/keyboards/1upkeyboards/super16v2/super16v2.h
@@ -0,0 +1,39 @@
+/* Copyright 2022 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_4x4( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33 } \
+}
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk
index 76d8b3afc1..4abd80f20a 100644
--- a/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk
+++ b/keyboards/1upkeyboards/sweet16/keymaps/switchtester/rules.mk
@@ -1,12 +1,9 @@
-# Build Options
-# comment out to disable the options.
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = no
SRC += switches.c
diff --git a/keyboards/1upkeyboards/sweet16/rules.mk b/keyboards/1upkeyboards/sweet16/rules.mk
index 9e78a851d7..e5e771f051 100644
--- a/keyboards/1upkeyboards/sweet16/rules.mk
+++ b/keyboards/1upkeyboards/sweet16/rules.mk
@@ -6,7 +6,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/2key2crawl/rules.mk b/keyboards/2key2crawl/rules.mk
index fa92216a38..182637c7b7 100644
--- a/keyboards/2key2crawl/rules.mk
+++ b/keyboards/2key2crawl/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # [Crawlpad] Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # [Crawlpad] This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/30wer/keymaps/default/keymap.c b/keyboards/30wer/keymaps/default/keymap.c
index 9e39a500a3..d740391646 100644
--- a/keyboards/30wer/keymaps/default/keymap.c
+++ b/keyboards/30wer/keymaps/default/keymap.c
@@ -2,16 +2,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LT(1, KC_SPC) \
+[0] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LT(1, KC_SPC)
),
-[1] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UP, KC_DEL, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, \
- KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______ \
+[1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UP, KC_DEL,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______,
+ KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______
),
};
diff --git a/keyboards/30wer/rules.mk b/keyboards/30wer/rules.mk
index 22b187f406..aad55a7dfa 100644
--- a/keyboards/30wer/rules.mk
+++ b/keyboards/30wer/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h
index 16cbd00a42..4ca0e830ee 100644
--- a/keyboards/3keyecosystem/2key2/config.h
+++ b/keyboards/3keyecosystem/2key2/config.h
@@ -77,7 +77,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/3keyecosystem/2key2/rules.mk b/keyboards/3keyecosystem/2key2/rules.mk
index 0b933eb262..6322b40faf 100644
--- a/keyboards/3keyecosystem/2key2/rules.mk
+++ b/keyboards/3keyecosystem/2key2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Enable RGB matrix
diff --git a/keyboards/3w6/keymaps/helltm/combos.def b/keyboards/3w6/keymaps/helltm/combos.def
new file mode 100644
index 0000000000..49b95e5eb2
--- /dev/null
+++ b/keyboards/3w6/keymaps/helltm/combos.def
@@ -0,0 +1,18 @@
+CB(open_round_brackets_combo, KC_LPRN, KC_R, KC_T)
+CB(open_square_brackets_combo, KC_LBRC, KC_F, KC_G)
+CB(open_curly_brackets_combo, KC_LCBR, KC_V, KC_B)
+CB(close_round_brackets_combo, KC_RPRN, KC_Y, KC_U)
+CB(close_square_brackets_combo, KC_RBRC, KC_H, KC_J)
+CB(close_curly_brackets_combo, KC_RCBR, KC_N, KC_M)
+
+CB(esc_combo, KC_ESC, KC_Q, KC_A)
+CB(tab_combo, KC_TAB, KC_A, LSFT_T(KC_Z))
+
+CB(single_quote_combo, KC_QUOT, KC_P, KC_SCLN)
+CB(double_quote_combo, KC_DQUO, KC_SCLN, RSFT_T(KC_SLSH))
+
+CB(plus_combo, KC_PLUS, KC_T, KC_G)
+CB(asterisk_combo, KC_ASTR, KC_G, KC_B)
+
+CB(minus_combo, KC_MINS, KC_Y, KC_H)
+CB(equal_combo, KC_EQL, KC_H, KC_N)
diff --git a/keyboards/3w6/keymaps/helltm/combos.h b/keyboards/3w6/keymaps/helltm/combos.h
new file mode 100644
index 0000000000..85f44cd0d4
--- /dev/null
+++ b/keyboards/3w6/keymaps/helltm/combos.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 HellSingCoder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CB(name, action, ...) C_##name,
+enum user_combos {
+#include "combos.def"
+ COMBO_LENGTH
+};
+#undef CB
+uint16_t COMBO_LEN = COMBO_LENGTH;
+
+#define CB(name, action, ...) const uint16_t PROGMEM name##_combo[] = {__VA_ARGS__, COMBO_END};
+#include "combos.def"
+#undef CB
+
+combo_t key_combos[COMBO_LENGTH] = {
+#define CB(name, action, ...) COMBO(name##_combo, action),
+#include "combos.def"
+#undef CB
+};
diff --git a/keyboards/3w6/keymaps/helltm/config.h b/keyboards/3w6/keymaps/helltm/config.h
new file mode 100644
index 0000000000..9ccb616a03
--- /dev/null
+++ b/keyboards/3w6/keymaps/helltm/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2021 HellSingCoder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Combo timer */
+#define COMBO_TERM 15
diff --git a/keyboards/3w6/keymaps/helltm/keymap.c b/keyboards/3w6/keymaps/helltm/keymap.c
index 507085081f..83ac6f02de 100644
--- a/keyboards/3w6/keymaps/helltm/keymap.c
+++ b/keyboards/3w6/keymaps/helltm/keymap.c
@@ -16,6 +16,10 @@
#include QMK_KEYBOARD_H
+#ifdef COMBO_ENABLE
+# include "combos.h"
+#endif
+
enum layers
{
_ALPHA_QWERTY = 0,
@@ -35,18 +39,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* QWERTY
- * _____ _____
- * .-----| E |-----._____ _____.-----| I |-----.
- * .-----| W |_____| R | T | | Y | U |_____| O |-----.
- * | Q |-----| D |-----|_____| |_____|-----| K |-----| P |
- * |-----| S |_____| F | G | | H | J |_____| L |-----|
- * | A |-----| C |-----|_____| |_____|-----| , < |-----| ; : |
- * |-----| X |_____| V | B | | N | M |_____| . > |-----|
- * | Z |-----' '-----|_____| |_____|-----' '-----| / ? |
- * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
- * SHIFT | WIN ||CTRL | / / \ \ | BSp || Del | SHIFT
- * '-----':_____|/ ENT / \ SPC \|_____:'-----'
- * NUM '--.._/ \_..--' NAV SYM
+ *
+ * _____________________ _____________________
+ * __|__ | | __|__
+ * _____ | | v v | | _____
+ * .-----| E |-----._____ _____.-----| I |-----.
+ * .-----| W |_____| R | T | __ ( ) __ | Y | U |_____| O |-----.
+ * __ | Q |-----| D |-----|_____| __|--> + - <--|__ |_____|-----| K |-----| P | __
+ * ESC <--|__ |-----| S |_____| F | G | [ ] | H | J |_____| L |-----| __|--> '
+ * __ | A |-----| C |-----|_____| __ __ |_____|-----| , < |-----| ; : | __
+ * TAB <--|__ |-----| X |_____| V | B | __|--> * { } = <--|__ | N | M |_____| . > |-----| __|--> "
+ * | Z |-----' '-----|_____| |_____|-----' '-----| / ? |
+ * '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
+ * | | WIN ||CTRL | / / \ \ | BSp || Del | |
+ * SHIFT '-----':_____|/ ENT / \ SPC \|_____:'-----' SHIFT
+ * | '--.._/ \_..--' | |
+ * NUM NAV SYM
*/
[_ALPHA_QWERTY] = LAYOUT(
KC_Q, KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
@@ -85,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Esc |-----|Play |-----|_____| |_____|-----|Down |-----| BSp |
* |-----|Prev |_____|Next | | |Home |Left |_____|Right|-----|
* | Tab |-----|Stop |-----|_____| |_____|-----| |-----| ' " |
- * |-----| |_____| |Swap | | | |_____| End |-----|
+ * |-----| |_____| | | | | |_____| End |-----|
* | CPS |-----' '-----|_____| |_____|-----' '-----| Del |
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
* SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT
@@ -93,10 +101,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--.._/ \_..--'
*/
[_NAV] = LAYOUT(
- KC_ESC , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX , XXXXXXX, KC_PGDN, KC_UP , KC_PGUP, KC_BSPC,
- KC_TAB , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX , KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT,
- LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, KC_THUMB_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) ,
- XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
+ KC_ESC , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP , KC_PGUP, KC_BSPC,
+ KC_TAB , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT,
+ LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) ,
+ XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
),
/*
@@ -107,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 1 |-----| F3 |-----|_____| |_____|-----| F8 |-----| 0 |
* |-----| F2 |_____| F4 | F5 | | F6 | F7 |_____| F9 |-----|
* | F1 |-----| Scr |-----|_____| |_____|-----| |-----| F10 |
- * |-----| TMg |_____| | | | | |_____| F11 |-----|
+ * |-----| TMg |_____| |Swap | | | |_____| F11 |-----|
* |Shift|-----' '-----|_____| |_____|-----' '-----| F12 |
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
* | ||CTRL | / / \ \ | BSp || | SHIFT
@@ -115,10 +123,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--.._/ \_..--'
*/
[_NUM] = LAYOUT(
- KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
- KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
- KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) ,
- XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
+ KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
+ KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, KC_THUMB_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) ,
+ XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
),
};
diff --git a/keyboards/3w6/keymaps/helltm/rules.mk b/keyboards/3w6/keymaps/helltm/rules.mk
new file mode 100644
index 0000000000..df85626f5f
--- /dev/null
+++ b/keyboards/3w6/keymaps/helltm/rules.mk
@@ -0,0 +1,2 @@
+# Combos
+COMBO_ENABLE = yes
diff --git a/keyboards/3w6/rev1/rules.mk b/keyboards/3w6/rev1/rules.mk
index e44b34cb92..8f2613f9d3 100644
--- a/keyboards/3w6/rev1/rules.mk
+++ b/keyboards/3w6/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/3w6/rev2/rev2.c b/keyboards/3w6/rev2/rev2.c
index 17bfb9b8a7..224925111e 100644
--- a/keyboards/3w6/rev2/rev2.c
+++ b/keyboards/3w6/rev2/rev2.c
@@ -15,3 +15,20 @@
*/
#include "rev2.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ // Left
+ {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}},
+ // Right
+ {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}
+};
+#endif
+
diff --git a/keyboards/3w6/rev2/rules.mk b/keyboards/3w6/rev2/rules.mk
index e44b34cb92..8f2613f9d3 100644
--- a/keyboards/3w6/rev2/rules.mk
+++ b/keyboards/3w6/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h
index af25449abc..8ff5264671 100644
--- a/keyboards/40percentclub/25/config.h
+++ b/keyboards/40percentclub/25/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0F25
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/25/keymaps/default/config.h b/keyboards/40percentclub/25/keymaps/default/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/25/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/25/keymaps/default/keymap.c b/keyboards/40percentclub/25/keymaps/default/keymap.c
index bea66ea5a4..c762a36165 100644
--- a/keyboards/40percentclub/25/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/25/keymaps/default/keymap.c
@@ -42,11 +42,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_split(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LSFT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LSFT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Home | PgDn | PgUp | End |
* `---------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT_split( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_GRV, KC_SLSH, KC_UNDS, KC_PLUS, \
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TILD, KC_LBRC, KC_RBRC, KC_PIPE, \
- KC_ESC, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_DEL, \
- KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ [_LOWER] = LAYOUT_split(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_GRV, KC_SLSH, KC_UNDS, KC_PLUS,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TILD, KC_LBRC, KC_RBRC, KC_PIPE,
+ KC_ESC, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_DEL,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
};
diff --git a/keyboards/40percentclub/25/keymaps/macro/config.h b/keyboards/40percentclub/25/keymaps/macro/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/25/keymaps/macro/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/25/keymaps/macro/keymap.c b/keyboards/40percentclub/25/keymaps/macro/keymap.c
index a1711a3806..9e7b1ba61f 100644
--- a/keyboards/40percentclub/25/keymaps/macro/keymap.c
+++ b/keyboards/40percentclub/25/keymaps/macro/keymap.c
@@ -17,10 +17,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_macro(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, \
- KC_GRV, KC_Q, KC_W, KC_E, KC_R, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4,
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC
),
};
diff --git a/keyboards/40percentclub/25/rules.mk b/keyboards/40percentclub/25/rules.mk
index 48e3d766c4..d2e5d56c07 100644
--- a/keyboards/40percentclub/25/rules.mk
+++ b/keyboards/40percentclub/25/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/4pack/config.h b/keyboards/40percentclub/4pack/config.h
index db51715922..023df5fc4e 100644
--- a/keyboards/40percentclub/4pack/config.h
+++ b/keyboards/40percentclub/4pack/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER 40percentclub
diff --git a/keyboards/40percentclub/4pack/keymaps/default/config.h b/keyboards/40percentclub/4pack/keymaps/default/config.h
deleted file mode 100644
index c76819ce5e..0000000000
--- a/keyboards/40percentclub/4pack/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Arda Kilicdagi
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/4pack/rules.mk b/keyboards/40percentclub/4pack/rules.mk
index 1d49abd4f5..4b4bcf851f 100644
--- a/keyboards/40percentclub/4pack/rules.mk
+++ b/keyboards/40percentclub/4pack/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/4x4/config.h b/keyboards/40percentclub/4x4/config.h
index 77b6e7c58b..439aa1b147 100644
--- a/keyboards/40percentclub/4x4/config.h
+++ b/keyboards/40percentclub/4x4/config.h
@@ -5,7 +5,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered.
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x4444
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/4x4/keymaps/default/config.h b/keyboards/40percentclub/4x4/keymaps/default/config.h
deleted file mode 100644
index d533d806c9..0000000000
--- a/keyboards/40percentclub/4x4/keymaps/default/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/4x4/keymaps/via/keymap.c b/keyboards/40percentclub/4x4/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3c39e98545
--- /dev/null
+++ b/keyboards/40percentclub/4x4/keymaps/via/keymap.c
@@ -0,0 +1,105 @@
+ /* Copyright 2021 Milan Düwel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ PAD,
+ _QW,
+ NUM,
+ DIR
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Single 4x4 board only
+ * .-----------------------------------.
+ * | 7 | 8 | 9 | / |
+ * |--------+--------+--------+--------|
+ * | 4 | 5 | 6 | * |
+ * |--------+--------+--------+--------|
+ * | 1 | 2 | 3 | - |
+ * |--------+--------+--------+--------|
+ * | 0 | QWERTY | . | + |
+ * '-----------------------------------'
+ */
+
+ [PAD] = LAYOUT_ortho_4x4(
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS,
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS,
+ KC_KP_0, DF(_QW), KC_KP_DOT, KC_PPLS
+ ),
+
+/* QWERTY
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | ESC | Q | W | E | R | T | Y | U | I | O | P | BACKSP | 7 | 8 | 9 | / |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | A | S | D | F | G | H | J | K | L | ; | ' | 4 | 5 | 6 | * |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | SHIFT | Z | X | C | V | B | N | M | , | . | / | ENT/SFT| 1 | 2 | 3 | - |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LGUI | ALT | ALT | NUM | SHIFT | SPACE | DIR | RGUI | RALT | DEL | CTRL | 0 | 0 | . | + |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_QW] = LAYOUT_ortho_4x16(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, MO(NUM), KC_LSFT, KC_SPC, MO(DIR), KC_RGUI, KC_RALT, KC_DEL, KC_RCTL, KC_KP_0, KC_KP_0, KC_KP_DOT, KC_PPLS
+ ),
+
+/* NUMBERS
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | NUMLOCK| / | * | - | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | + | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F11 | F12 | | | | ENTER | SHIFT | RGUI | ./ALT | BKSC | | | | ENTER | |
+ * | | | | | | | | | | |CTRLhold| | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | ENTER | SHIFT | | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [NUM] = LAYOUT_ortho_4x16(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_PPLS, _______,
+ _______, KC_F11, KC_F12, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC), _______, _______, _______, KC_PENT, _______,
+ _______, _______, _______, _______, _______, _______, KC_ENT, KC_RSFT, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/* DIRECTIONS
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | RESET | TAB | up | | INS | CTRL | SHIFT | PgUp | Home | - | = | DEL | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPSLK | left | down | right | PrScr | SHIFT | CTRL | PgDn | End | [ | ] | \ | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | P-Brk | | | | | | | RGUI | ALT | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | KEYPAD | | | | | | | | | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [DIR] = LAYOUT_ortho_4x16(
+ RESET, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_LSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL, _______, _______, _______, _______,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_LCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______,
+ _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______, _______, _______, _______, _______,
+ DF(PAD), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/acheron/elongate/keymaps/via/rules.mk b/keyboards/40percentclub/4x4/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/acheron/elongate/keymaps/via/rules.mk
+++ b/keyboards/40percentclub/4x4/keymaps/via/rules.mk
diff --git a/keyboards/40percentclub/4x4/rules.mk b/keyboards/40percentclub/4x4/rules.mk
index 89c16be1ef..43375dc673 100644
--- a/keyboards/40percentclub/4x4/rules.mk
+++ b/keyboards/40percentclub/4x4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h
index 694a589852..c9a83de737 100644
--- a/keyboards/40percentclub/5x5/config.h
+++ b/keyboards/40percentclub/5x5/config.h
@@ -5,7 +5,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x05B5
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/5x5/keymaps/default/config.h b/keyboards/40percentclub/5x5/keymaps/default/config.h
deleted file mode 100644
index d533d806c9..0000000000
--- a/keyboards/40percentclub/5x5/keymaps/default/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/5x5/keymaps/via/keymap.c b/keyboards/40percentclub/5x5/keymaps/via/keymap.c
new file mode 100644
index 0000000000..735fa6b145
--- /dev/null
+++ b/keyboards/40percentclub/5x5/keymaps/via/keymap.c
@@ -0,0 +1,117 @@
+ /* Copyright 2021 Milan Düwel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ PAD,
+ _QW,
+ NUM,
+ DIR
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Single 5x5 board only
+ * .--------------------------------------------.
+ * | QWERTY | / | * | - | |
+ * |--------+--------+--------+--------+--------|
+ * | 7 | 8 | 9 | + | |
+ * |--------+--------+--------+--------+--------|
+ * | 4 | 5 | 6 | + | |
+ * |--------+--------+--------+--------+--------|
+ * | 1 | 2 | 3 | ENTER | |
+ * |--------+--------+--------+--------+--------|
+ * | 0 | 0 | . | ENTER | |
+ * '--------------------------------------------'
+ */
+
+ [PAD] = LAYOUT_ortho_5x5(
+ DF(_QW), KC_PSLS, KC_PAST, KC_PMNS, _______,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______,
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______,
+ KC_KP_0, KC_KP_0, KC_KP_DOT, KC_PENT, _______
+ ),
+
+/* QWERTY
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC | Q | W | E | R | T | Y | U | I | O | P | BACKSP | 7 | 8 | 9 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | A | S | D | F | G | H | J | K | L | ; | ' | 4 | 5 | 6 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | SHIFT | Z | X | C | V | B | N | M | , | . | / | ENT/SFT| 1 | 2 | 3 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LGUI | ALT | ALT | NUM | SHIFT | SPACE | DIR | RGUI | RALT | DEL | CTRL | 0 | 0 | . |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_QW] = LAYOUT_ortho_5x15(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), KC_KP_1, KC_KP_2, KC_KP_3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LALT, MO(NUM), KC_LSFT, KC_SPC, MO(DIR), KC_RGUI, KC_RALT, KC_DEL, KC_RCTL, KC_KP_0, KC_KP_0, KC_KP_DOT
+ ),
+
+/* NUMBERS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | NUMLOCK| / | * | - |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | + |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F11 | F12 | | | | ENTER | SHIFT | RGUI | ./ALT | BKSC | | | | ENTER |
+ * | | | | | | | | | | |CTRLhold| | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | ENTER | SHIFT | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [NUM] = LAYOUT_ortho_5x15(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_PPLS,
+ _______, KC_F11, KC_F12, _______, _______, _______, KC_ENT, KC_RSFT, KC_RGUI, ALT_T(KC_DOT), CTL_T(KC_BSPC), _______, _______, _______, KC_PENT,
+ _______, _______, _______, _______, _______, _______, KC_ENT, KC_RSFT, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/* DIRECTIONS
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RESET | TAB | up | | INS | CTRL | SHIFT | PgUp | Home | - | = | DEL | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPSLK | left | down | right | PrScr | SHIFT | CTRL | PgDn | End | [ | ] | \ | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | P-Brk | | | | | | | RGUI | ALT | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | KEYPAD | | | | | | | | | | | | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [DIR] = LAYOUT_ortho_5x15(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, KC_TAB, KC_UP, _______, KC_INS, KC_LCTL, KC_LSFT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_DEL, _______, _______, _______,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PSCR, KC_LSFT, KC_LCTL, KC_PGDN, KC_END, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______,
+ _______, KC_PAUS, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, _______, _______, _______, _______, _______,
+ DF(PAD), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mode/eighty/m80h/keymaps/via/rules.mk b/keyboards/40percentclub/5x5/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/mode/eighty/m80h/keymaps/via/rules.mk
+++ b/keyboards/40percentclub/5x5/keymaps/via/rules.mk
diff --git a/keyboards/40percentclub/5x5/rules.mk b/keyboards/40percentclub/5x5/rules.mk
index ded525e62d..800b383cc0 100644
--- a/keyboards/40percentclub/5x5/rules.mk
+++ b/keyboards/40percentclub/5x5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h
index ddf91a3ce5..f5c0ea3040 100644
--- a/keyboards/40percentclub/6lit/config.h
+++ b/keyboards/40percentclub/6lit/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0F61
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/6lit/keymaps/default/config.h b/keyboards/40percentclub/6lit/keymaps/default/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/6lit/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/6lit/keymaps/default/keymap.c b/keyboards/40percentclub/6lit/keymaps/default/keymap.c
index 076d07b5c9..910928e5b2 100644
--- a/keyboards/40percentclub/6lit/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/6lit/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split( /* Base */
- KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, \
- KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 \
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18,
+ KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24
),
};
diff --git a/keyboards/40percentclub/6lit/keymaps/macro/config.h b/keyboards/40percentclub/6lit/keymaps/macro/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/6lit/keymaps/macro/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/6lit/keymaps/macro/keymap.c b/keyboards/40percentclub/6lit/keymaps/macro/keymap.c
index f97288f516..f9b0be32e1 100644
--- a/keyboards/40percentclub/6lit/keymaps/macro/keymap.c
+++ b/keyboards/40percentclub/6lit/keymaps/macro/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_macro( /* Base */
- KC_F19, KC_F20, KC_F21, \
- KC_F22, KC_F23, KC_F24 \
+ KC_F19, KC_F20, KC_F21,
+ KC_F22, KC_F23, KC_F24
),
};
diff --git a/keyboards/40percentclub/6lit/rules.mk b/keyboards/40percentclub/6lit/rules.mk
index a15b02004f..2912f3e6d8 100644
--- a/keyboards/40percentclub/6lit/rules.mk
+++ b/keyboards/40percentclub/6lit/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h
index 999efef7f5..a65b6e51bf 100644
--- a/keyboards/40percentclub/foobar/config.h
+++ b/keyboards/40percentclub/foobar/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0F00
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/foobar/keymaps/macro/config.h b/keyboards/40percentclub/foobar/keymaps/macro/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/foobar/keymaps/macro/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/foobar/keymaps/macro/keymap.c b/keyboards/40percentclub/foobar/keymaps/macro/keymap.c
index a335b0a115..8eb0929387 100644
--- a/keyboards/40percentclub/foobar/keymaps/macro/keymap.c
+++ b/keyboards/40percentclub/foobar/keymaps/macro/keymap.c
@@ -17,8 +17,8 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_macro( /* Base */
- KC_F13, KC_F14, KC_F15, KC_F16, KC_INT1, \
- KC_F17, KC_F18, KC_F19, KC_F20, KC_INT2, \
- KC_F21, KC_F22, KC_F23, KC_F14, KC_INT5 \
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_INT1,
+ KC_F17, KC_F18, KC_F19, KC_F20, KC_INT2,
+ KC_F21, KC_F22, KC_F23, KC_F14, KC_INT5
),
};
diff --git a/keyboards/40percentclub/foobar/rules.mk b/keyboards/40percentclub/foobar/rules.mk
index 2b23dc2ec3..2b09df6fda 100644
--- a/keyboards/40percentclub/foobar/rules.mk
+++ b/keyboards/40percentclub/foobar/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/gherkin/config.h b/keyboards/40percentclub/gherkin/config.h
index 1307ca2e15..6373ea2e60 100644
--- a/keyboards/40percentclub/gherkin/config.h
+++ b/keyboards/40percentclub/gherkin/config.h
@@ -3,7 +3,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered.
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER 40 Percent Club
diff --git a/keyboards/40percentclub/gherkin/rules.mk b/keyboards/40percentclub/gherkin/rules.mk
index cb5b8b96f9..46deafe514 100644
--- a/keyboards/40percentclub/gherkin/rules.mk
+++ b/keyboards/40percentclub/gherkin/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h
index 3409af5f68..f79f83839c 100644
--- a/keyboards/40percentclub/half_n_half/config.h
+++ b/keyboards/40percentclub/half_n_half/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x4A1F
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/half_n_half/keymaps/default/config.h b/keyboards/40percentclub/half_n_half/keymaps/default/config.h
deleted file mode 100644
index c8e4334124..0000000000
--- a/keyboards/40percentclub/half_n_half/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c b/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c
index 323b903f04..97fc2b415e 100644
--- a/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/half_n_half/keymaps/default/keymap.c
@@ -23,9 +23,9 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LCTL, KC_RCTL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT, KC_RALT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_APP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LCTL, KC_RCTL, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT, KC_RALT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LGUI, KC_APP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_SPC, KC_SPC
),
};
diff --git a/keyboards/40percentclub/half_n_half/rules.mk b/keyboards/40percentclub/half_n_half/rules.mk
index 06eeb35b95..9e0c811799 100644
--- a/keyboards/40percentclub/half_n_half/rules.mk
+++ b/keyboards/40percentclub/half_n_half/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/i75/config.h b/keyboards/40percentclub/i75/config.h
index e89f4f5806..bacf9eb30f 100644
--- a/keyboards/40percentclub/i75/config.h
+++ b/keyboards/40percentclub/i75/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0175
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/i75/keymaps/default/config.h b/keyboards/40percentclub/i75/keymaps/default/config.h
deleted file mode 100644
index 6173b63272..0000000000
--- a/keyboards/40percentclub/i75/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/i75/keymaps/default/keymap.c b/keyboards/40percentclub/i75/keymaps/default/keymap.c
index e4c48bca43..e070c2e7d8 100644
--- a/keyboards/40percentclub/i75/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/i75/keymaps/default/keymap.c
@@ -22,12 +22,12 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ortho_5x15( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT_ortho_5x15(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/40percentclub/i75/rules.mk b/keyboards/40percentclub/i75/rules.mk
index 1d0cfaf6df..9bed1a37da 100644
--- a/keyboards/40percentclub/i75/rules.mk
+++ b/keyboards/40percentclub/i75/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/luddite/config.h b/keyboards/40percentclub/luddite/config.h
index 90d84c56e1..3f15523c89 100644
--- a/keyboards/40percentclub/luddite/config.h
+++ b/keyboards/40percentclub/luddite/config.h
@@ -3,7 +3,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3430 // "40"
+#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered
#define PRODUCT_ID 0x4C55 // "LU"
#define DEVICE_VER 0x1001
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/luddite/rules.mk b/keyboards/40percentclub/luddite/rules.mk
index 2ccac34f7a..82b22fd8c1 100644
--- a/keyboards/40percentclub/luddite/rules.mk
+++ b/keyboards/40percentclub/luddite/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/40percentclub/mf68/config.h b/keyboards/40percentclub/mf68/config.h
index 2307256154..7ebe5ae1b3 100644
--- a/keyboards/40percentclub/mf68/config.h
+++ b/keyboards/40percentclub/mf68/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3430 // "40"
+#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered
#define PRODUCT_ID 0x4D68 // "M68"
#define DEVICE_VER 0x0101
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/mf68/rules.mk b/keyboards/40percentclub/mf68/rules.mk
index 31bab31987..601989a338 100644
--- a/keyboards/40percentclub/mf68/rules.mk
+++ b/keyboards/40percentclub/mf68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/nano/config.h b/keyboards/40percentclub/nano/config.h
index aa4a64d07d..c6d66a1bb3 100644
--- a/keyboards/40percentclub/nano/config.h
+++ b/keyboards/40percentclub/nano/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCEEB
+#define VENDOR_ID 0x4025 //"40 %", to make it consistent with other 40percent.club boards.
#define PRODUCT_ID 0x0007
#define DEVICE_VER 0x0001
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/nano/rules.mk b/keyboards/40percentclub/nano/rules.mk
index b605df4153..bb1a873d64 100644
--- a/keyboards/40percentclub/nano/rules.mk
+++ b/keyboards/40percentclub/nano/rules.mk
@@ -5,19 +5,15 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/40percentclub/nein/config.h b/keyboards/40percentclub/nein/config.h
index 1dedb608f9..87c62673f9 100644
--- a/keyboards/40percentclub/nein/config.h
+++ b/keyboards/40percentclub/nein/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3430 // "40"
+#define VENDOR_ID 0x4025 // "40%", changed since 0x3430 is already officially registered
#define PRODUCT_ID 0x9999
#define DEVICE_VER 0x9999
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/nein/keymaps/default/keymap.c b/keyboards/40percentclub/nein/keymaps/default/keymap.c
index 674a8bb7fc..c1d4e8ef48 100644
--- a/keyboards/40percentclub/nein/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/nein/keymaps/default/keymap.c
@@ -17,13 +17,13 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_3x3(
- KC_MUTE, KC_HOME, KC_MPLY, \
- MO(1), KC_UP, KC_END, \
- KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_MUTE, KC_HOME, KC_MPLY,
+ MO(1), KC_UP, KC_END,
+ KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ortho_3x3(
- RESET, _______, KC_STOP, \
- _______, _______, RGB_MOD, \
- KC_MPRV, _______, KC_MNXT \
+ RESET, _______, KC_STOP,
+ _______, _______, RGB_MOD,
+ KC_MPRV, _______, KC_MNXT
),
};
diff --git a/keyboards/40percentclub/nein/rules.mk b/keyboards/40percentclub/nein/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/40percentclub/nein/rules.mk
+++ b/keyboards/40percentclub/nein/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/nori/config.h b/keyboards/40percentclub/nori/config.h
index 40225748ac..882da633e0 100644
--- a/keyboards/40percentclub/nori/config.h
+++ b/keyboards/40percentclub/nori/config.h
@@ -19,7 +19,7 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
+#define VENDOR_ID 0x4025
#define PRODUCT_ID 0x0A0C
#define DEVICE_VER 0x0444
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/nori/keymaps/default/keymap.c b/keyboards/40percentclub/nori/keymaps/default/keymap.c
index 6ed8567e73..3d379a8af6 100644
--- a/keyboards/40percentclub/nori/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/nori/keymaps/default/keymap.c
@@ -34,10 +34,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_4x12(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -51,11 +51,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -69,11 +69,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -105,11 +105,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -123,11 +123,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/40percentclub/nori/keymaps/macro/keymap.c b/keyboards/40percentclub/nori/keymaps/macro/keymap.c
index 8c5fa94104..fcb1c3dc83 100644
--- a/keyboards/40percentclub/nori/keymaps/macro/keymap.c
+++ b/keyboards/40percentclub/nori/keymaps/macro/keymap.c
@@ -17,9 +17,9 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x4( /* Base */
- KC_INT1, KC_INT2, KC_INT3, KC_INT5, \
- KC_F13, KC_F14, KC_F15, KC_F16, \
- KC_F17, KC_F18, KC_F19, KC_F20, \
- KC_F21, KC_F22, KC_F23, KC_F24 \
+ KC_INT1, KC_INT2, KC_INT3, KC_INT5,
+ KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_F17, KC_F18, KC_F19, KC_F20,
+ KC_F21, KC_F22, KC_F23, KC_F24
),
};
diff --git a/keyboards/40percentclub/nori/keymaps/wings_36key/config.h b/keyboards/40percentclub/nori/keymaps/wings_36key/config.h
new file mode 100644
index 0000000000..eacfacc5a7
--- /dev/null
+++ b/keyboards/40percentclub/nori/keymaps/wings_36key/config.h
@@ -0,0 +1,27 @@
+/* Copyright 2018
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define IGNORE_MOD_TAP_INTERRUPT // MT key must be held longer than tapping term for
+ // modifer to be registered
+#define RETRO_TAPPING_PER_KEY
+#define TAPPING_TERM_PER_KEY
+
+#define COMBO_COUNT 2 // number of combos used
+#define COMBO_TERM 40 // time out for combos in ms
+#define TAPPING_TERM 200 // time out for tap-hold in ms
+
diff --git a/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c b/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c
new file mode 100644
index 0000000000..7d9d516590
--- /dev/null
+++ b/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+#define _ESC MT(MOD_LGUI, KC_ESC) // escape on tap, gui on hold
+#define _SFT MT(MOD_LSFT, KC_ENT) // enter on tap, shift on hold
+#define _SPC MT(MOD_LCTL, KC_SPC) // space on tap, ctrl on hold
+
+const uint16_t PROGMEM df_tab[] = {KC_D, KC_F, COMBO_END};
+const uint16_t PROGMEM jk_alt[] = {KC_J, KC_K, COMBO_END};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * .-----------------------------------------------------------------------------------.
+ * | Q | W | E | R | T | | | Y | U | I | O | P |
+ * +------+------+------+------+-------------+------+------+------+------+------+------+
+ * | A | S | D | F | G | | | H | J | K | L | : ; |
+ * +------+------+------+------+------|------+------+------+------+------+------+------+
+ * | Z | X | C | V | B | | | N | M | < , | > . | ? / |
+ * +------+------+------+------+------+------+------+------+------+------+------+------+
+ * | | | Esc |Enter |Raise | | |Lower |Space |Delete| | |
+ * .-----------------------------------------------------------------------------------.
+ * esc on tap, gui on hold
+ * enter on tap, shift on hold
+ * space on tap, ctl on hold
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ XXXXXXX, XXXXXXX, _ESC, _SFT, RAISE, XXXXXXX, XXXXXXX, LOWER, _SPC, KC_BSPC, XXXXXXX, XXXXXXX
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | ! | @ | # | $ | | | % | ^ | & | * | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ~ | | | [ | ] | { | | | } | ( | ) | " | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |Shift | + | = | - | _ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | |RAISE | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, XXXXXXX, XXXXXXX, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_BSLS,
+ KC_TILD, KC_PIPE, KC_LBRC, KC_RBRC, KC_LCBR, XXXXXXX, XXXXXXX, KC_RCBR, KC_LPRN, KC_RPRN, KC_DQUO, KC_QUOT,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_PLUS, KC_EQL, KC_MINS, KC_UNDS,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | 1 | 2 | 3 | 4 | 5 | | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | | | | GUI | SFT | CTL | ALT |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | F6 | F7 | F8 | F9 | F10 | | | F11 | F12 | | | Esc |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |Lower |Space |Delete| | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, KC_LSFT, KC_LCTL, KC_LALT,
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_ESC,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, _SPC, KC_BSPC, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |PntSrn| | | PgUp |BrtUp | | | Mute |VolDw |VolUp |Ply/Ps|RESET |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | PgDw |BrtDw | | | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | Prev | Next | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+ KC_PSCR, XXXXXXX, XXXXXXX, KC_PGUP, KC_BRIU, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, RESET,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_BRID, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MNXT, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+)
+};
+
+combo_t key_combos[COMBO_COUNT] = {
+ COMBO(df_tab, KC_TAB),
+ COMBO(jk_alt, KC_LALT),
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case _SFT:
+ return TAPPING_TERM - 100;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/40percentclub/nori/keymaps/wings_36key/readme.md b/keyboards/40percentclub/nori/keymaps/wings_36key/readme.md
new file mode 100644
index 0000000000..16eb6d9e11
--- /dev/null
+++ b/keyboards/40percentclub/nori/keymaps/wings_36key/readme.md
@@ -0,0 +1,3 @@
+# 36 Key QWERTY Layout
+
+Offers more hand seperation with a 2 key gap down the middle of the board.
diff --git a/keyboards/40percentclub/nori/keymaps/wings_36key/rules.mk b/keyboards/40percentclub/nori/keymaps/wings_36key/rules.mk
new file mode 100644
index 0000000000..446213032e
--- /dev/null
+++ b/keyboards/40percentclub/nori/keymaps/wings_36key/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes # Custom chords
diff --git a/keyboards/40percentclub/nori/rules.mk b/keyboards/40percentclub/nori/rules.mk
index 1e76a7eed3..8ddc182935 100644
--- a/keyboards/40percentclub/nori/rules.mk
+++ b/keyboards/40percentclub/nori/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/polyandry/config.h b/keyboards/40percentclub/polyandry/config.h
new file mode 100644
index 0000000000..6f04d12297
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4025
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER di0ib
+#define PRODUCT Polypad
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+//more detailed config options start below:
+
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/40percentclub/polyandry/info.json b/keyboards/40percentclub/polyandry/info.json
new file mode 100644
index 0000000000..d0d1a00f86
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/info.json
@@ -0,0 +1,27 @@
+{
+ "keyboard_name": "Polyandry",
+ "url": "",
+ "maintainer": "QMK",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k000", "x": 0, "y": 0},
+ {"label": "k001", "x": 1, "y": 0},
+ {"label": "k002", "x": 2, "y": 0},
+
+ {"label": "k003", "x": 0, "y": 1},
+ {"label": "k004", "x": 1, "y": 1},
+ {"label": "k005", "x": 2, "y": 1},
+
+ {"label": "k006", "x": 0, "y": 2},
+ {"label": "k007", "x": 1, "y": 2},
+ {"label": "k008", "x": 2, "y": 2},
+
+ {"label": "k009", "x": 0, "y": 3},
+ {"label": "k010", "x": 1, "y": 3},
+ {"label": "k011", "x": 2, "y": 3}
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/40percentclub/polyandry/keymaps/default/keymap.c b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3e1f278b35
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, KC_9,
+ KC_0, KC_A, KC_B
+ ),
+
+};
+
+
+
diff --git a/keyboards/40percentclub/polyandry/polyandry.c b/keyboards/40percentclub/polyandry/polyandry.c
new file mode 100644
index 0000000000..2b4be589b8
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/polyandry.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "polyandry.h"
diff --git a/keyboards/40percentclub/polyandry/polyandry.h b/keyboards/40percentclub/polyandry/polyandry.h
new file mode 100644
index 0000000000..5baf87ba62
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/polyandry.h
@@ -0,0 +1,24 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_40percentclub_polyandry_promicro
+ #include "promicro.h"
+#elif KEYBOARD_40percentclub_polyandry_teensy2
+ #include "teensy2.h"
+#endif
diff --git a/keyboards/40percentclub/polyandry/promicro/config.h b/keyboards/40percentclub/polyandry/promicro/config.h
new file mode 100644
index 0000000000..e6f8643c44
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 12
+
+/* key matrix pins
+ * Direct pins is not used because there is not a shared ground position
+ * between all compatible microcontrollers.
+*/
+#define MATRIX_ROW_PINS { D7 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, E6, B4, F4, F5, F6, F7, B3, B2 }
+#define UNUSED_PINS
+
+/* doesn't really matter lol */
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.c b/keyboards/40percentclub/polyandry/promicro/promicro.c
new file mode 100644
index 0000000000..ea1dd51788
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/promicro.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "promicro.h"
diff --git a/keyboards/40percentclub/polyandry/promicro/promicro.h b/keyboards/40percentclub/polyandry/promicro/promicro.h
new file mode 100644
index 0000000000..65e2b4b9c2
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/promicro.h
@@ -0,0 +1,27 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "polyandry.h"
+
+#define LAYOUT( \
+ K000, K001, K002, \
+ K003, K004, K005, \
+ K006, K007, K008, \
+ K009, K010, K011 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \
+}
diff --git a/keyboards/40percentclub/polyandry/promicro/rules.mk b/keyboards/40percentclub/polyandry/promicro/rules.mk
new file mode 100644
index 0000000000..cf663a7ed6
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/promicro/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
diff --git a/keyboards/40percentclub/polyandry/readme.md b/keyboards/40percentclub/polyandry/readme.md
new file mode 100644
index 0000000000..b6acf3cd7f
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/readme.md
@@ -0,0 +1,53 @@
+# Polyandry/polypad
+
+![Polyandry](https://1.bp.blogspot.com/-97uoICZvZec/XSdpvCVFFlI/AAAAAAACVZY/BlCRjxjDqDAxOZa6C5ddQr0OsFQ9VZv5wCLcBGAs/s1600/d1.jpg)
+===
+
+3x4/4x3 grid layout, multiple controllers supported
+- Pro Micro
+- PJRC Teensy 2.0
+
+(**The below are not currently ported:**)
+
+- PJRC Teensy LC/3.2
+- PJRC Teensy 3.5/3.6
+- Adafruit ItsyBitsy ATMega32u4
+- Adafruit ItsyBitsy M0
+- Adafruit ItsyBitsy M4
+
+The matrix is electrically 1x12 with no diodes, with a thirteenth pin used for the column rather than a ground in order to be compatible with all the listed microcontrollers..
+
+The default keymap is a testing keymap that is intended to make sure all of the keys on the matrix are working and properly assigned.
+
+[The original (minimal arduino sketch) firmware, with support for some unsupported controllers](https://git.40percent.club/di0ib/Misc/src/branch/master/polyandry)
+
+Keyboard Maintainer: QMK Community
+Hardware Supported: Polyandry PCB
+Hardware Availability: [Polyandry gerbers are on 40percent.club](https://www.40percent.club/2019/07/polyandry.html)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 40percentclub/polyandry:default
+ or
+ qmk compile -kb 40percentclub/polyandry -km default
+
+Default firmware is for an Arduino Pro Micro knockoff.
+
+If you would like to specify a controller:
+
+ make 40percentclub/polyandry/promicro:default
+ or
+ qmk compile -kb 40percentclub/polyandry/promicro -km default
+ make 40percentclub/polyandry/teensy2:default
+ or
+ qmk compile -kb 40percentclub/polyandry/teensy2 -km default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key of the keyboard (top right or bottom left in horizontal configuration)
+* **Physical reset**: Briefly press the button on the bottom of the microcontroller or, if not present short the pin marked RST to a GND.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/40percentclub/polyandry/rules.mk b/keyboards/40percentclub/polyandry/rules.mk
new file mode 100644
index 0000000000..039076f59e
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+DEFAULT_FOLDER = 40percentclub/polyandry/promicro
diff --git a/keyboards/40percentclub/polyandry/teensy2/config.h b/keyboards/40percentclub/polyandry/teensy2/config.h
new file mode 100644
index 0000000000..d730ce6f94
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/config.h
@@ -0,0 +1,36 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 12
+
+/* key matrix pins */
+
+// Note from original contributor (ryjelsum):
+// Untested - don't have teensy2. if some keys do not function or are in wrong place,
+// please check the pin definitions. I may have screwed up. :)
+
+#define MATRIX_ROW_PINS { D3 }
+#define MATRIX_COL_PINS { B7, D0, D1, D2, C6, C7, F6, F7, B6, B5, D7, D6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/polyandry/teensy2/rules.mk b/keyboards/40percentclub/polyandry/teensy2/rules.mk
new file mode 100644
index 0000000000..320633f80f
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = halfkay
diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.c b/keyboards/40percentclub/polyandry/teensy2/teensy2.c
new file mode 100644
index 0000000000..33cfb6e553
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.c
@@ -0,0 +1,16 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "teensy2.h"
diff --git a/keyboards/40percentclub/polyandry/teensy2/teensy2.h b/keyboards/40percentclub/polyandry/teensy2/teensy2.h
new file mode 100644
index 0000000000..118eb353a4
--- /dev/null
+++ b/keyboards/40percentclub/polyandry/teensy2/teensy2.h
@@ -0,0 +1,32 @@
+/* Copyright 2021
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+//NOTE TO FUTURE FROM RYJELSUM (original contributor):
+//This has been unchanged from the promicro.h file.
+//I DO NOT HAVE A TEENSY 2.0 TO TEST WITH.
+//I believe this should still work - but it's not a sure thing.
+
+#include "polyandry.h"
+
+#define LAYOUT( \
+ K000, K001, K002, \
+ K003, K004, K005, \
+ K006, K007, K008, \
+ K009, K010, K011 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 } \
+}
diff --git a/keyboards/40percentclub/sixpack/config.h b/keyboards/40percentclub/sixpack/config.h
index 2ec676018c..edb123c4b9 100644
--- a/keyboards/40percentclub/sixpack/config.h
+++ b/keyboards/40percentclub/sixpack/config.h
@@ -20,7 +20,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3430 // "40"
+#define VENDOR_ID 0x4025 //"40 %", since 0x3430 is already registered.
#define PRODUCT_ID 0x5350 // "SP"
#define DEVICE_VER 0x1001
#define MANUFACTURER di0ib
diff --git a/keyboards/40percentclub/sixpack/rules.mk b/keyboards/40percentclub/sixpack/rules.mk
index b701535fa7..dea0f63ee9 100644
--- a/keyboards/40percentclub/sixpack/rules.mk
+++ b/keyboards/40percentclub/sixpack/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/40percentclub/tomato/config.h b/keyboards/40percentclub/tomato/config.h
index a083223a1f..8f06341aad 100644
--- a/keyboards/40percentclub/tomato/config.h
+++ b/keyboards/40percentclub/tomato/config.h
@@ -3,8 +3,8 @@
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
+#define VENDOR_ID 0x4025
+#define PRODUCT_ID 0x546F //"To", was duplicate with polyandry
#define DEVICE_VER 0x0001
#define MANUFACTURER 40 Percent Club
#define PRODUCT Tomato
diff --git a/keyboards/40percentclub/tomato/rules.mk b/keyboards/40percentclub/tomato/rules.mk
index a8461a35f7..96f92d8d25 100644
--- a/keyboards/40percentclub/tomato/rules.mk
+++ b/keyboards/40percentclub/tomato/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/40percentclub/ut47/config.h b/keyboards/40percentclub/ut47/config.h
index 9622f58bb3..7ead58e096 100644
--- a/keyboards/40percentclub/ut47/config.h
+++ b/keyboards/40percentclub/ut47/config.h
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
+#define VENDOR_ID 0x4025
+#define PRODUCT_ID 0x7574 //"ut"
#define DEVICE_VER 0x0001
#define MANUFACTURER 40percent.club
#define PRODUCT ut47
diff --git a/keyboards/40percentclub/ut47/keymaps/default/config.h b/keyboards/40percentclub/ut47/keymaps/default/config.h
deleted file mode 100644
index 023c753c27..0000000000
--- a/keyboards/40percentclub/ut47/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Carlos Filoteo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/40percentclub/ut47/keymaps/non-us/config.h b/keyboards/40percentclub/ut47/keymaps/non-us/config.h
deleted file mode 100644
index f88ebf7e80..0000000000
--- a/keyboards/40percentclub/ut47/keymaps/non-us/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2018 Carlos Filoteo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "config_common.h"
-
-// place overrides here
diff --git a/keyboards/40percentclub/ut47/keymaps/nordic/config.h b/keyboards/40percentclub/ut47/keymaps/nordic/config.h
deleted file mode 100644
index fcdd2c2322..0000000000
--- a/keyboards/40percentclub/ut47/keymaps/nordic/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2018 Carlos Filoteo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk
index dd4860b610..29cee474ff 100644
--- a/keyboards/40percentclub/ut47/rules.mk
+++ b/keyboards/40percentclub/ut47/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/45_ats/rules.mk b/keyboards/45_ats/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/45_ats/rules.mk
+++ b/keyboards/45_ats/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4by3/rules.mk b/keyboards/4by3/rules.mk
index 4fb3d71e4a..9610b90efd 100644
--- a/keyboards/4by3/rules.mk
+++ b/keyboards/4by3/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
EXTRAKEY_ENABLE = yes
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
diff --git a/keyboards/4pplet/aekiso60/rev_a/rules.mk b/keyboards/4pplet/aekiso60/rev_a/rules.mk
index 895a77853d..43eb792fc1 100644
--- a/keyboards/4pplet/aekiso60/rev_a/rules.mk
+++ b/keyboards/4pplet/aekiso60/rev_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4pplet/bootleg/rev_a/rules.mk b/keyboards/4pplet/bootleg/rev_a/rules.mk
index f155258a95..43eb792fc1 100644
--- a/keyboards/4pplet/bootleg/rev_a/rules.mk
+++ b/keyboards/4pplet/bootleg/rev_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
index 5c6e7c6131..35f765bc83 100644
--- a/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
+++ b/keyboards/4pplet/eagle_viper_rep/rev_a/rules.mk
@@ -1,16 +1,18 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = pwm
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/4pplet/steezy60/rev_a/rules.mk b/keyboards/4pplet/steezy60/rev_a/rules.mk
index 895a77853d..43eb792fc1 100644
--- a/keyboards/4pplet/steezy60/rev_a/rules.mk
+++ b/keyboards/4pplet/steezy60/rev_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4pplet/waffling60/rev_a/rules.mk b/keyboards/4pplet/waffling60/rev_a/rules.mk
index 895a77853d..43eb792fc1 100644
--- a/keyboards/4pplet/waffling60/rev_a/rules.mk
+++ b/keyboards/4pplet/waffling60/rev_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4pplet/waffling60/rev_b/rules.mk b/keyboards/4pplet/waffling60/rev_b/rules.mk
index 4fae5efa1e..88173a40c2 100644
--- a/keyboards/4pplet/waffling60/rev_b/rules.mk
+++ b/keyboards/4pplet/waffling60/rev_b/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/4pplet/waffling60/rev_c/config.h b/keyboards/4pplet/waffling60/rev_c/config.h
new file mode 100644
index 0000000000..e1862f4c0e
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/config.h
@@ -0,0 +1,64 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <mail@4pplet.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4444
+#define PRODUCT_ID 0x0008
+#define DEVICE_VER 0x0003
+#define MANUFACTURER 4pplet
+#define PRODUCT waffling60 Rev C
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS {C2,D0,B0,D6,D5}
+#define MATRIX_COL_PINS {C4,C5,D2,C6,C7,B7,B6,B5,B4,B3,B2,B1,D1,D4}
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define QMK_ESC_OUTPUT C2 // usually COL
+#define QMK_ESC_INPUT C4 // usually ROW
+
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 1
+#define BACKLIGHT_LEVELS 5
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/4pplet/waffling60/rev_c/readme.md b/keyboards/4pplet/waffling60/rev_c/readme.md
new file mode 100644
index 0000000000..3b6b9c94f2
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/readme.md
@@ -0,0 +1,20 @@
+# waffling60
+
+A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support.
+
+More info: https://geekhack.org/index.php?topic=103531.0
+
+* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
+* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 4pplet/waffling60/rev_c:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+How to enter bootloader (DFU):
+* Tap the physical reset button or short the reset-header (labled RESET) on tha back of the PCB for keyboard to enter DFU. When in DFU, it's ready to flash the firmware.
+
+Alternative option if the firmware is already pre-flashed:
+* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
diff --git a/keyboards/4pplet/waffling60/rev_c/rev_c.c b/keyboards/4pplet/waffling60/rev_c/rev_c.c
new file mode 100644
index 0000000000..f00cce06dc
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/rev_c.c
@@ -0,0 +1,31 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <mail@4pplet.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "rev_c.h"
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (CAPS_LOCK_ENABLE && res) {
+ if (led_state.caps_lock){
+ rgblight_enable();
+ rgblight_mode(1);
+ rgblight_sethsv_noeeprom(CAPS_LOCK_COLOR);
+ } else {
+ rgblight_disable_noeeprom();
+ }
+ }
+ return res;
+}
diff --git a/keyboards/4pplet/waffling60/rev_c/rev_c.h b/keyboards/4pplet/waffling60/rev_c/rev_c.h
new file mode 100644
index 0000000000..3df9419eb9
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/rev_c.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <mail@4pplet.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+// defines to set RGB-led behaviour. Off by default
+#define CAPS_LOCK_ENABLE false
+#define CAPS_LOCK_COLOR HSV_ORANGE
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k1d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k44, k46, k48, k4a, k4b, k4c, k4d \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
+ {k40, k41, k42, KC_NO, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d}, \
+}
diff --git a/keyboards/4pplet/waffling60/rev_c/rules.mk b/keyboards/4pplet/waffling60/rev_c/rules.mk
new file mode 100644
index 0000000000..88173a40c2
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/6ball/rules.mk b/keyboards/6ball/rules.mk
index 77c84c403f..bb1a873d64 100644
--- a/keyboards/6ball/rules.mk
+++ b/keyboards/6ball/rules.mk
@@ -5,19 +5,15 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/7c8/framework/rules.mk b/keyboards/7c8/framework/rules.mk
index 8c69e2cb8a..797b8072ca 100644
--- a/keyboards/7c8/framework/rules.mk
+++ b/keyboards/7c8/framework/rules.mk
@@ -4,13 +4,15 @@ MCU = atmega328p
# Bootloader selection
BOOTLOADER = usbasploader
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
-SLEEP_LED_ENABLE = no
-NKRO_ENABLE = no
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
AUDIO_ENABLE = no
diff --git a/keyboards/7skb/rules.mk b/keyboards/7skb/rules.mk
index e70348ec5e..ea7399dc75 100644
--- a/keyboards/7skb/rules.mk
+++ b/keyboards/7skb/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/7splus/rules.mk b/keyboards/7splus/rules.mk
index 659bea9fdd..b0a2799e4b 100644
--- a/keyboards/7splus/rules.mk
+++ b/keyboards/7splus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/8pack/rules.mk b/keyboards/8pack/rules.mk
index e6b4720fea..1d62765274 100644
--- a/keyboards/8pack/rules.mk
+++ b/keyboards/8pack/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c
index 5c08a42a56..944a48c0d3 100644
--- a/keyboards/9key/keymaps/bcat/keymap.c
+++ b/keyboards/9key/keymaps/bcat/keymap.c
@@ -16,22 +16,21 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
+#include "bcat.h"
-#define LY_FUNC MO(LAYER_FUNCTION)
-#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */
+#define KY_LOCK LGUI(KC_L) /* Chrome OS: Lock screen */
+#define KY_MICM LSG(KC_1) /* Meet Shortcuts: Mute mic */
+#define KY_MICU LSG(KC_2) /* Meet Shortcuts: Unmute mic */
+#define KY_RHAND LSG(KC_3) /* Meet Shortcuts: Raise/lower hand */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
[LAYER_DEFAULT] = LAYOUT(
- KC_MPLY, KC_VOLU, KC_MSTP,
- KC_MPRV, KC_VOLD, KC_MNXT,
- KY_LOCK, KC_MUTE, LY_FUNC
+ KC_MPLY, KC_VOLU, KY_RHAND,
+ KY_LOCK, KC_VOLD, KY_MICU,
+ LY_FN1, KC_MUTE, KY_MICM
),
- [LAYER_FUNCTION] = LAYOUT(
+ [LAYER_FUNCTION_1] = LAYOUT(
EEP_RST, _______, RESET,
_______, _______, _______,
_______, _______, _______
diff --git a/keyboards/9key/keymaps/bcat/readme.md b/keyboards/9key/keymaps/bcat/readme.md
index 2dee51de8b..d38ae5463b 100644
--- a/keyboards/9key/keymaps/bcat/readme.md
+++ b/keyboards/9key/keymaps/bcat/readme.md
@@ -1,5 +1,5 @@
# bcat's 9-Key layout
-This is a super simple PCB-mount macropad with nine keys, used at work for
-media keys and quick access to screen lock on Linux (Cinnamon desktop
-environment).
+This is a super simple PCB-mount macropad with nine keys, used on my
+work-from-home Chromebox for media/volume control and to activate some global
+shortcuts for Google Meet.
diff --git a/keyboards/9key/keymaps/default/keymap.c b/keyboards/9key/keymaps/default/keymap.c
index acc0350739..0d8e4c6900 100644
--- a/keyboards/9key/keymaps/default/keymap.c
+++ b/keyboards/9key/keymaps/default/keymap.c
@@ -11,10 +11,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 7/0 | 8 | 9/FN | 7/0 = Dbl Tap 7 for 0 - 9/FN = Hold 9 for FN
* `-----------------------'
*/
-[0] = LAYOUT( \
- KC_1, KC_2, KC_3, \
- KC_4, KC_5, KC_6, \
- KC_7, KC_8, LT(1, KC_9) \
+[0] = LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_7, KC_8, LT(1, KC_9)
),
/* LAYER 1
@@ -26,10 +26,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 00 | . | |
* `-----------------------'
*/
-[1] = LAYOUT( \
- KC_ESC, KC_PLUS, KC_MINS, \
- KC_ENTER, KC_ASTR, KC_SLSH, \
- KC_0, KC_DOT, KC_TRNS \
+[1] = LAYOUT(
+ KC_ESC, KC_PLUS, KC_MINS,
+ KC_ENTER, KC_ASTR, KC_SLSH,
+ KC_0, KC_DOT, KC_TRNS
)
};
diff --git a/keyboards/9key/keymaps/tap_dance/keymap.c b/keyboards/9key/keymaps/tap_dance/keymap.c
index a96880aa52..dc9b49f9af 100644
--- a/keyboards/9key/keymaps/tap_dance/keymap.c
+++ b/keyboards/9key/keymaps/tap_dance/keymap.c
@@ -22,10 +22,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 7/0 | 8 | 9/FN | 7/0 = Dbl Tap 7 for 0 - 9/FN = Hold 9 for FN
* `-----------------------'
*/
-[0] = LAYOUT( \
- KC_1, KC_2, KC_3, \
- KC_4, TD(ENT_5), KC_6, \
- TD(ZERO_7), KC_8, LT(1, KC_9) \
+[0] = LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, TD(ENT_5), KC_6,
+ TD(ZERO_7), KC_8, LT(1, KC_9)
),
/* LAYER 1
@@ -37,10 +37,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 00 | . | |
* `-----------------------'
*/
-[1] = LAYOUT( \
- KC_ESC, KC_PLUS, KC_MINS, \
- KC_BSPC, KC_ASTR, KC_SLSH, \
- DBL_0, KC_DOT, KC_TRNS \
+[1] = LAYOUT(
+ KC_ESC, KC_PLUS, KC_MINS,
+ KC_BSPC, KC_ASTR, KC_SLSH,
+ DBL_0, KC_DOT, KC_TRNS
)
};
diff --git a/keyboards/9key/rules.mk b/keyboards/9key/rules.mk
index 4ac3080214..003c95c69a 100644
--- a/keyboards/9key/rules.mk
+++ b/keyboards/9key/rules.mk
@@ -5,19 +5,15 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/a_dux/a_dux.c b/keyboards/a_dux/a_dux.c
index 69eae44285..16bac16fa9 100644
--- a/keyboards/a_dux/a_dux.c
+++ b/keyboards/a_dux/a_dux.c
@@ -1,4 +1,8 @@
-/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com>
+/* Copyright 2018-2020
+ * ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+ * David Philip Barr <@davidphilipbarr>
+ * Pierre Chevalier <pierrechevalier83@gmail.com>
+ * @filterpaper
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -14,3 +18,20 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "a_dux.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ // Left
+ {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}},
+ // Right
+ {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}}
+};
+#endif
+
diff --git a/keyboards/a_dux/a_dux.h b/keyboards/a_dux/a_dux.h
index d143295845..83c0a3692b 100644
--- a/keyboards/a_dux/a_dux.h
+++ b/keyboards/a_dux/a_dux.h
@@ -28,7 +28,7 @@
// readability
#define ___ KC_NO
-#define LAYOUT( \
+#define LAYOUT_split_3x5_2( \
L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
@@ -45,3 +45,5 @@
{ R16, R17, ___, ___, ___ } \
}
+#define LAYOUT LAYOUT_split_3x5_2
+
diff --git a/keyboards/a_dux/info.json b/keyboards/a_dux/info.json
index f1869f7332..e276128a62 100644
--- a/keyboards/a_dux/info.json
+++ b/keyboards/a_dux/info.json
@@ -3,7 +3,7 @@
"url": "https://github.com/tapioki/cephalopoda",
"maintainer": "@tapioki",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 1.33},
{"x": 1, "y": 0.31},
diff --git a/keyboards/a_dux/keymaps/default/config.h b/keyboards/a_dux/keymaps/default/config.h
deleted file mode 100644
index cf0fb7478e..0000000000
--- a/keyboards/a_dux/keymaps/default/config.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-Copyright 2020 Pierre Chevalier <pierrechevalier83@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-// Set the mouse settings to a comfortable speed/accuracy trade-off,
-// assuming a screen refresh rate of 60 Htz or higher
-// The default is 50. This makes the mouse ~3 times faster and more accurate
-#define MOUSEKEY_INTERVAL 16
-// The default is 20. Since we made the mouse about 3 times faster with the previous setting,
-// give it more time to accelerate to max speed to retain precise control over short distances.
-#define MOUSEKEY_TIME_TO_MAX 40
-// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive
-#define MOUSEKEY_DELAY 100
-// It makes sense to use the same delay for the mouseweel
-#define MOUSEKEY_WHEEL_DELAY 100
-// The default is 100
-#define MOUSEKEY_WHEEL_INTERVAL 50
-// The default is 40
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
-
-// Pick good defaults for enabling homerow modifiers
-#define TAPPING_TERM 200
-#define PERMISSIVE_HOLD
-#define IGNORE_MOD_TAP_INTERRUPT
-#define TAPPING_FORCE_HOLD
diff --git a/keyboards/a_dux/keymaps/default/keymap.c b/keyboards/a_dux/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b58c9d447f
--- /dev/null
+++ b/keyboards/a_dux/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2022 @filterpaper
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Seniply layout
+// https://stevep99.github.io/seniply
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_3x5_2(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LT(3,KC_TAB), KC_LSFT, KC_SPC, LT(1,KC_ENT)
+ ),
+ [1] = LAYOUT_split_3x5_2(
+ KC_EXLM, KC_AT, KC_SCLN, KC_COLN, KC_UNDS, KC_EQL, KC_7, KC_8, KC_9, KC_PLUS,
+ KC_BSLS, KC_PIPE, KC_LCBR, KC_LPRN, KC_LBRC, KC_ASTR, KC_4, KC_5, KC_6, KC_MINS,
+ KC_NO, KC_NO, KC_RCBR, KC_RPRN, KC_RBRC, KC_0, KC_1, KC_2, KC_3, KC_SLSH,
+ _______, MO(2), _______, _______
+ ),
+ [2] = LAYOUT_split_3x5_2(
+ RALT(KC_1), RALT(KC_2), RALT(KC_3), RALT(KC_4), KC_BRIU, KC_NO, KC_AMPR, KC_GRV, KC_TILD, KC_NO,
+ KC_MUTE, KC_VOLD, KC_MPLY, KC_VOLU, KC_BRID, KC_NO, KC_DLR, KC_PERC, KC_CIRC, KC_UNDS,
+ KC_EJCT, KC_MPRV, KC_MSTP, KC_MNXT, KC_NO, KC_NO, KC_EXLM, KC_AT, KC_HASH, KC_NO,
+ _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_split_3x5_2(
+ KC_ESC, LALT(KC_LEFT), LCTL(KC_F), LALT(KC_RGHT), KC_INS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_CAPS,
+ OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), OSM(MOD_RALT), KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL,
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_TAB, LCTL(KC_V), KC_ENT, KC_BSPC, KC_RCTL, KC_LALT, KC_APP,
+ _______, _______, _______, MO(4)
+ ),
+ [4] = LAYOUT_split_3x5_2(
+ KC_NO, KC_NO, RCS(KC_F), KC_PSCR, KC_NO, KC_F12, KC_F7, KC_F8, KC_F9, KC_NO,
+ OSM(MOD_LALT), OSM(MOD_LGUI), OSM(MOD_LSFT), OSM(MOD_LCTL), OSM(MOD_RALT), KC_F11, KC_F4, KC_F5, KC_F6, KC_NO,
+ RCS(KC_Z), RCS(KC_X), RCS(KC_C), LSFT(KC_TAB), RCS(KC_V), KC_F10, KC_F1, KC_F2, KC_F3, KC_NO,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/a_dux/keymaps/default/keymap.json b/keyboards/a_dux/keymaps/default/keymap.json
deleted file mode 100644
index 555a86c0b0..0000000000
--- a/keyboards/a_dux/keymaps/default/keymap.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{ "version": 1,
- "notes": "My awesome keymap",
- "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
- "keyboard": "a_dux",
- "keymap": "default",
- "layout": "LAYOUT",
- "layers": [
- ["KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T",
- "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P",
-
- "LSFT_T(KC_A)", "LT(5,KC_S)" , "LT(1,KC_D)" , "LT(3,KC_F)" , "KC_G",
- "KC_H" , "LT(4,KC_J)" , "LT(2,KC_K)" , "LT(6,KC_L)" , "LSFT_T(KC_SCLN)",
-
- "KC_Z" , "LCTL_T(KC_X)", "LALT_T(KC_C)" , "KC_V" , "KC_B",
- "KC_N" , "KC_M" , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)", "KC_SLSH",
-
- "KC_P0" , "KC_BSPC",
- "LT(7,KC_SPC)", "KC_P1"
- ],
- ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS",
-
- "KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS",
- "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R",
-
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS"
- ],
- ["KC_TRNS" , "KC_TRNS" , "KC_PGUP" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_LEFT" , "KC_UP" , "KC_DOWN" , "KC_RGHT" , "KC_TRNS",
- "KC_TRNS" , "KC_LGUI" , "KC_NO" , "LCTL(KC_LALT)" , "LCA(KC_LSFT)",
-
- "KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS"
- ],
- ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS",
-
- "KC_CIRC" , "KC_ASTR" , "KC_AMPR" , "KC_NO" , "KC_TRNS",
- "KC_HASH" , "KC_TILD" , "KC_SLSH" , "KC_DQUO" , "KC_DLR",
-
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS"
- ],
- ["KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_LCBR" , "KC_RCBR" , "KC_LPRN" , "KC_RPRN" , "KC_AT",
- "KC_TRNS" , "KC_NO" , "KC_EQL" , "KC_PLUS" , "KC_PERC",
-
- "KC_TRNS" , "KC_EXLM" , "KC_LBRC" , "KC_RBRC" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_VOLD" , "KC_TRNS",
- "KC_TRNS" , "KC_VOLU"
- ],
- ["KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10",
-
- "KC_TRNS" , "KC_NO" , "LCTL(KC_LALT)" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F11",
-
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F12",
-
- "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS"
- ],
- ["KC_PSLS" , "KC_7" , "KC_8" , "KC_9" , "KC_PPLS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_PMNS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO" , "KC_TRNS",
-
- "KC_PAST" , "KC_4" , "KC_5" , "KC_6" , "KC_PEQL",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS"
- ],
- ["KC_TRNS" , "KC_TRNS" , "KC_COLN" , "KC_ESC" , "KC_TRNS",
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_DEL",
-
- "KC_TRNS" , "KC_PERC" , "KC_SLSH" , "KC_ENT" , "KC_TRNS",
- "DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_EXLM" , "KC_TRNS",
- "DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)", "RESET",
-
- "KC_TRNS" , "KC_TAB",
- "KC_NO" , "KC_TRNS"
- ]
- ],
- "author": "@pierrec83"
-}
diff --git a/keyboards/a_dux/keymaps/default/readme.md b/keyboards/a_dux/keymaps/default/readme.md
deleted file mode 100644
index 5f67a69cb2..0000000000
--- a/keyboards/a_dux/keymaps/default/readme.md
+++ /dev/null
@@ -1,122 +0,0 @@
-A usable default keymap for the A. Dux keyboard
-===============================================
-
-Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user.
-
-This keymap makes heavy use of keys behaving differently when tapped and held, so that all the keys one may need remain accessible despite the low number of thumb keys.
-
-It comes with a number of layers to give access to most of the keys one may need on a keyboard. It is not meant to be the best possible keymap, but rather a good base on which to build a keymap that works for you.
-
-This is not the only way to make 34 keys a comfortable typing experience, but it is one way to do so. If you don't already know of a better way, this may be as good a starting point as any :)
-
-Note that this keymap was built from the perspective that it is OK to take a steep learning curve if it results in a keymap that is easier to use in the long run. This means that it may take more effort to learn this keymap than some alternatives. "Easy to use" was assessed against the workflow of the author, so your mileage may vary on some of the details.
-
-What do all these layers do?
-----------------------------
-
-### Layer 0: Base layer
-
-![Layer 0](https://i.imgur.com/HjNHUPL.png)
-
-On tapping the keys, our base layer is qwerty with space on the right homing thumb and backspace on the left homing thumb.
-
-In this layer, the non-homing-thumb positions have 0 and 1. I recommend modifying this to some frequently accessed shortcut such as copy/paste, previous/next tab or anything that makes most sense in your own workflow. O and 1 are place-holders and make it easy to troubleshoot that all keys are working properly before soldering in the switches.
-The reason I recommend convenience shortcuts instead of more commonly used keys like tab or meta is that unhoming of the thumbs was a frequent source of typos for me when I used more than one thumb key frequently in the context of typing.
-
-Despite being missing on this layer, "meta", "tab", "esc" and such are accessible from any other layer: see Layer 7.
-
-The behaviour of some keys differ when held:
-* Both homing pinkies behave as shift.
-* Both bottom-row ring fingers behave as ctrl.
-* Both bottom-row middle fingers behave as alt.
-
-* The homing left ring finger gives access to the Function keys layer
-* The homing right ring finger gives access to the Numbers layer
-* The homing left middle finger gives access to the Mouse layer
-* The homing right middle finger gives access to the Navigation layer
-* The homing left index finger gives access to the Right symbols layer
-* The homing right index finger gives access to the Left symbols layer
-* The homing right thumb gives access to the Always accessible layer
-
-### Layer 1: Mouse
-
-![Layer 1](https://i.imgur.com/0fvTuB9.png)
-
-Layer 1 is a mouse layer: it can be used one-handed or two-handed. The most common way to use it is two handed, with left and right click on the homerow of the left hand and directions on the homerow of the right hand.
-Scrolling is available on the right hand with mid finger up and down for vertical scroll and index and ring finger down for horizontal scroll.
-On the right hand, left click and right click are also available with index and ring finger up to allow one handed operation. This can be particularly handy when enabling the mouse layer permanently (no need to hold the left middle finger), which can be done from Layer 7.
-
-Note that thanks to the transparency, shift, ctrl and alt are all accessible on the left hand while operating the mouse.
-
-### Layer 2: Navigation
-
-![Layer 2](https://i.imgur.com/ZquQJRq.png)
-
-The navigation layer somewhat mirrors the mouse layer. It is accessed by holding the right middle finger and gives access to arrow keys on the left homerow. Page up and down, Home and End mirror the vertical scrolling and horizontal scrolling on the mouse layer.
-
-On the right hand, in addition to ctrl and alt which are available through transparency, ctrl + alt, ctrl + alt + shift and meta are accessible on the homerow to enable common shortcuts in some window managers. This part is quite workflow dependent, so make sure to adapt it to your own workflow as appropriate.
-
-### Layer 3: Right symbols
-
-![Layer 3](https://i.imgur.com/9tLAUqG.png)
-
-When holding down the left index, one may access about half of the symbols. The pinkies store `^` and `$` symbols that represent begin and end in vim. The left homerow hosts `*` and `&`, symbols which are related in the way that they represent some form of indirection in programming languages such as rust. On the right hand, most symbols used when navigating the command line are stored together, organized by columns of related symbols.
-
-### Layer 4: Left symbols
-
-![Layer 4](https://i.imgur.com/CkjUSW6.png)
-
-When holding down the right index, one may access the other symbols. On the left hand, most of the different brackets are laid out. The most frequent ones (round brackets and curly brackets) get a spot on the homerow. The rest of the layer hosts the remaining symbols that are easier to access here than on any other layers.
-
-### Layer 5: Function keys
-
-![Layer 5](https://i.imgur.com/fWgVqc4.png)
-
-By holding down the left ring finger, one may access the function keys, roughly in a numpad layout.
-This means that alt+F4 is easy to type, with F4 being on the homerow.
-There is a shortcut for ctrl+alt on the left hand to enable convenient switching between virtual terminals on Linux.
-
-### Layer 6: Numbers
-
-![Layer 6](https://i.imgur.com/S8gq9Kj.png)
-
-The number layer is accessed by holding the right ring finger. It hosts the numbers and some duplicated symbols that are commonly accessed next to numbers, such as mathematical operators.
-The number are layed out similarly to a numpad, but with the middle row and the homerow swapped so that the most used numbers: 0, 1, 2 and 3 are all available in homing positions.
-
-### Layer 7: Always accessible
-
-![Layer 7](https://i.imgur.com/twqBeBb.png)
-
-Layer 7 is accessed by holding the right homing thumb down. Because this position is left transparent from every other layer, this layer is always accessible.
-It gives access to some essential keys that would typically be accessed on a thumb cluster or pinkies, such as meta, enter, tab, esc and delete.
-
-As the layer hosting esc, we duplicated some symbols here to allow for fast navigation in vim. For instance, esc, :, w, q can be done in a single roll.
-
-Where is the keymap.c?
-----------------------
-
-The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system.
-
-This avoids duplicating information and allow users to edit their keymap from the qmk configurator web interface.
-
-How do I edit and update the keymap?
-------------------------------------
-
-The `keymap.json` file is generated from the qmk configurator interface and formatted for better readability in the context of the A. Dux keyboard.
-
-To edit it, you may:
-* Edit it directly from a text editor.
-* Edit it from the qmk configurator.
-
-If you decide to use the latter workflow, here are the steps to follow:
-
-* From the qmk configurator, hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it).
-* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/a_dux/keymaps/default/keymap.json`)
-* Perform any modification to the keymap in the web UI
-* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it)
-* Override your original keymap with the output of formatting the exported keymap by running a command such as this one from the root of your qmk repo:
- ```
- ./keyboards/a_dux/keymaps/json2crab.py --input <Your download directory>/default.json > ./keyboards/a_dux/keymaps/default/keymap.json
- ```
- Note that you may first need to make json2crab executable by using `chmod +x` on it.
- Also note that you may then want to remove the exported keymap from your dowload directory.
diff --git a/keyboards/a_dux/readme.md b/keyboards/a_dux/readme.md
index ae06fa9faa..f709542b31 100644
--- a/keyboards/a_dux/readme.md
+++ b/keyboards/a_dux/readme.md
@@ -28,7 +28,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Setting Handedness
-Keyboard uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default. The make commands are:
+Firmware uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default and it must be *configured once* on each side. The make commands are:
make a_dux:default:dfu-split-left
make a_dux:default:dfu-split-right
diff --git a/keyboards/a_dux/rules.mk b/keyboards/a_dux/rules.mk
index c3712c647a..f4f3aaf382 100644
--- a/keyboards/a_dux/rules.mk
+++ b/keyboards/a_dux/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
-UNICODE_ENABLE = yes
-SPLIT_KEYBOARD = yes
+SPLIT_KEYBOARD = yes # Use shared split_common code
+LAYOUTS = split_3x5_2
diff --git a/keyboards/abacus/rules.mk b/keyboards/abacus/rules.mk
index 91873f39e4..96fe1ab97a 100644
--- a/keyboards/abacus/rules.mk
+++ b/keyboards/abacus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/absinthe/config.h b/keyboards/absinthe/config.h
index 3000a4b8a1..d6acd350cc 100644
--- a/keyboards/absinthe/config.h
+++ b/keyboards/absinthe/config.h
@@ -44,10 +44,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D3, D0 }
#define UNUSED_PINS
-#define ENCODERS_PAD_A { D5 }
-#define ENCODERS_PAD_B { B7 }
-
-#define ENCODER_DIRECTION_FLIP
+#define ENCODERS_PAD_A { B7 }
+#define ENCODERS_PAD_B { D5 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/absinthe/keymaps/ansi/config.h b/keyboards/absinthe/keymaps/ansi/config.h
deleted file mode 100644
index 102e290a41..0000000000
--- a/keyboards/absinthe/keymaps/ansi/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 cfbender
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/absinthe/keymaps/default/config.h b/keyboards/absinthe/keymaps/default/config.h
deleted file mode 100644
index 102e290a41..0000000000
--- a/keyboards/absinthe/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 cfbender
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/absinthe/rules.mk b/keyboards/absinthe/rules.mk
index 3b482f12ab..5b1bf3cdf3 100644
--- a/keyboards/absinthe/rules.mk
+++ b/keyboards/absinthe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/abstract/ellipse/keymaps/default/config.h b/keyboards/abstract/ellipse/keymaps/default/config.h
deleted file mode 100644
index e406c488b5..0000000000
--- a/keyboards/abstract/ellipse/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 AbstractKB
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/abstract/ellipse/rev1/rules.mk b/keyboards/abstract/ellipse/rev1/rules.mk
index ebe491e7fc..c3d7b41630 100644
--- a/keyboards/abstract/ellipse/rev1/rules.mk
+++ b/keyboards/abstract/ellipse/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acekeyboard/titan60/rules.mk b/keyboards/acekeyboard/titan60/rules.mk
index 4a6f5a95fc..f50e297051 100644
--- a/keyboards/acekeyboard/titan60/rules.mk
+++ b/keyboards/acekeyboard/titan60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acheron/arctic/rules.mk b/keyboards/acheron/arctic/rules.mk
index f68afca696..fd44980786 100644
--- a/keyboards/acheron/arctic/rules.mk
+++ b/keyboards/acheron/arctic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acheron/austin/rules.mk b/keyboards/acheron/austin/rules.mk
index c0c730767b..89a416941f 100644
--- a/keyboards/acheron/austin/rules.mk
+++ b/keyboards/acheron/austin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acheron/elongate/beta/beta.c b/keyboards/acheron/elongate/beta/beta.c
new file mode 100644
index 0000000000..ffa13d4fe1
--- /dev/null
+++ b/keyboards/acheron/elongate/beta/beta.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "beta.h"
diff --git a/keyboards/acheron/elongate/beta/beta.h b/keyboards/acheron/elongate/beta/beta.h
new file mode 100644
index 0000000000..6ff32b4f75
--- /dev/null
+++ b/keyboards/acheron/elongate/beta/beta.h
@@ -0,0 +1,44 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the Keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define KNO KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K49, K41, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K4A, K42, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, K44, \
+ K30, K31, K32, K34, K37, K3A, K3B, K3C, K3D, K4C, K47 \
+)\
+{\
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KNO, K1B, K1C }, \
+ { K20, KNO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
+ { K30, K31, K32, KNO, K34, KNO, KNO, K37, KNO, K3A, K3B, K3C, K3D }, \
+ { KNO, K41, K42, KNO, K44, KNO, KNO, K47, KNO, K49, K4A, K4B, K4C } \
+}
diff --git a/keyboards/acheron/elongate/beta/config.h b/keyboards/acheron/elongate/beta/config.h
new file mode 100644
index 0000000000..c02cf08979
--- /dev/null
+++ b/keyboards/acheron/elongate/beta/config.h
@@ -0,0 +1,150 @@
+/*
+Copyright 2020 Gondolindrim
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4150 //AP for AcheronProject
+#define PRODUCT_ID 0x454C // EL for Elongate
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Acheron Project
+#define PRODUCT Elongate
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 13
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D3, B7, D5, B5, D6 }
+#define MATRIX_COL_PINS { F5, F6, F4, F1, F0, B2, B1, C6, B0, B3, E6, D4, B4}
+//#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN D7
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 16
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+ #define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
+
+#define LED_NUM_LOCK_PIN D2
+#define LED_CAPS_LOCK_PIN D1
+#define LED_SCROLL_LOCK_PIN D0
diff --git a/keyboards/acheron/elongate/info.json b/keyboards/acheron/elongate/beta/info.json
index bfb9db9b3a..bfb9db9b3a 100644
--- a/keyboards/acheron/elongate/info.json
+++ b/keyboards/acheron/elongate/beta/info.json
diff --git a/keyboards/acheron/elongate/keymaps/default/keymap.c b/keyboards/acheron/elongate/beta/keymaps/default/keymap.c
index c2b809b744..c2b809b744 100644
--- a/keyboards/acheron/elongate/keymaps/default/keymap.c
+++ b/keyboards/acheron/elongate/beta/keymaps/default/keymap.c
diff --git a/keyboards/acheron/elongate/keymaps/default/readme.md b/keyboards/acheron/elongate/beta/keymaps/default/readme.md
index a154ac5915..a154ac5915 100644
--- a/keyboards/acheron/elongate/keymaps/default/readme.md
+++ b/keyboards/acheron/elongate/beta/keymaps/default/readme.md
diff --git a/keyboards/acheron/elongate/keymaps/via/config.h b/keyboards/acheron/elongate/beta/keymaps/via/config.h
index a3b77a5b4d..a3b77a5b4d 100644
--- a/keyboards/acheron/elongate/keymaps/via/config.h
+++ b/keyboards/acheron/elongate/beta/keymaps/via/config.h
diff --git a/keyboards/acheron/elongate/keymaps/via/keymap.c b/keyboards/acheron/elongate/beta/keymaps/via/keymap.c
index c2b809b744..c2b809b744 100644
--- a/keyboards/acheron/elongate/keymaps/via/keymap.c
+++ b/keyboards/acheron/elongate/beta/keymaps/via/keymap.c
diff --git a/keyboards/mode/eighty/m80s/keymaps/via/rules.mk b/keyboards/acheron/elongate/beta/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/mode/eighty/m80s/keymaps/via/rules.mk
+++ b/keyboards/acheron/elongate/beta/keymaps/via/rules.mk
diff --git a/keyboards/acheron/elongate/beta/readme.md b/keyboards/acheron/elongate/beta/readme.md
new file mode 100755
index 0000000000..8a8949fdfe
--- /dev/null
+++ b/keyboards/acheron/elongate/beta/readme.md
@@ -0,0 +1,43 @@
+# Acheron Elongate rev. Beta QMK firmware repository
+
+![](https://i.imgur.com/G9LESkUh.jpg)
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: [open-source PCB](https://github.com/AcheronProject/Elongate) powered by STM32F072 microcontroller
+* Hardware Availability: the revision beta of Elongate was never publicly sold.
+
+## Introduction
+
+This is the QMK firmware repository for the Elongate PCB revision Beta and pre-revision Beta versions, which was the initial revision PCB for this keyboard; hence it was never sold publicly.
+
+The Elongate PCB is an Open-Hardware-guideline-compliant PCB which files can be found at [this repository](https://github.com/AcheronProject/Elongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim).
+
+## How to flash
+
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: press the button on the front of the PCB.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
+
+## Compile firmware
+
+You can build the default layout firwmare for Elongate after setting up your build environment by using:
+
+ make acheron/elongate/beta:default
+
+After entering DFU state in your PCB, you can download the binary file generated through `dfu-util` or a GUI like QMK Toolbox.
+
+To directly flash the PCB after it is put into a DFU state, use
+
+ make acheron/elongate/beta:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## PCB Documentation
+
+See the [AcheronDocs](https://acheronproject.com/pcbs/elongate/) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/AcheronProject/Elongate).
+
+Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.4](https://acheronproject.com/AOHL14/) under which the Elongate PCB is published.
diff --git a/keyboards/acheron/elongate/beta/rules.mk b/keyboards/acheron/elongate/beta/rules.mk
new file mode 100644
index 0000000000..976f6aecc1
--- /dev/null
+++ b/keyboards/acheron/elongate/beta/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/acheron/elongate/config.h b/keyboards/acheron/elongate/config.h
deleted file mode 100644
index 434e62cd86..0000000000
--- a/keyboards/acheron/elongate/config.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-Copyright 2020 Gondolindrim
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4150 //AP for AcheronProject
-#define PRODUCT_ID 0x454C // EL for Elongate
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Acheron Project
-#define PRODUCT Elongate
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 13
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-#define MATRIX_ROW_PINS { D3, B7, D5, B5, D6 }
-#define MATRIX_COL_PINS { F5, F6, F4, F1, F0, B2, B1, C6, B0, B3, E6, D4, B4}
-//#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION COL2ROW
-
-/*
- * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
- */
-// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
-
-// #define BACKLIGHT_PIN B7
-// #define BACKLIGHT_BREATHING
-// #define BACKLIGHT_LEVELS 3
-
-#define RGB_DI_PIN D7
-#ifdef RGB_DI_PIN
- #define RGBLED_NUM 16
- #define RGBLIGHT_HUE_STEP 8
- #define RGBLIGHT_SAT_STEP 8
- #define RGBLIGHT_VAL_STEP 8
- #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
- #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
-/*== all animations enable ==*/
- #define RGBLIGHT_ANIMATIONS
-/*== or choose animations ==*/
-// #define RGBLIGHT_EFFECT_BREATHING
-// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
-// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-// #define RGBLIGHT_EFFECT_SNAKE
-// #define RGBLIGHT_EFFECT_KNIGHT
-// #define RGBLIGHT_EFFECT_CHRISTMAS
-// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
-// #define RGBLIGHT_EFFECT_RGB_TEST
-// #define RGBLIGHT_EFFECT_ALTERNATING
-/*== customize breathing effect ==*/
- /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
- #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
- /*==== use exp() and sin() ====*/
-// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
-// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
-#endif
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 5
-
-/* define if matrix has ghost (lacks anti-ghosting diodes) */
-//#define MATRIX_HAS_GHOST
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
- * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
- */
-// #define GRAVE_ESC_CTRL_OVERRIDE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-
-/* disable these deprecated features by default */
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
-
-/* Bootmagic Lite key configuration */
-// #define BOOTMAGIC_LITE_ROW 0
-// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/acheron/elongate/delta/chconf.h b/keyboards/acheron/elongate/delta/chconf.h
new file mode 100755
index 0000000000..cbbae31079
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/chconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/acheron/elongate/delta/config.h b/keyboards/acheron/elongate/delta/config.h
new file mode 100755
index 0000000000..957a6e39cd
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/config.h
@@ -0,0 +1,81 @@
+/*
+Copyright 2020 Gondolindrim
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4150 //AP for AcheronProject
+#define PRODUCT_ID 0x454D // EL+1 for Elongate revision Delta
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Acheron Project
+#define PRODUCT Elongate
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { A10, A9, A8, B14, B12, B11, B10, B2, B1, A7, A5, B9, B8, B7, B6 }
+#define MATRIX_ROW_PINS { B3, A15, B0, B4, B5 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN A6
+#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_CHANNEL 1
+#define BACKLIGHT_PAL_MODE 1
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 20
+#define BACKLIGHT_DEFAULT_LEVEL 10
+#define BREATHING_PERIOD 3
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 16
+#define RGBLIGHT_LIMIT_VAL 200
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 5)
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+// Elongate has six indicator LEDs. These def's are the indicator pin defs. The LEDs are distributed in two clusters: one next to the numpad and another between spacebars; LEDs are numbered top-to-bottom.
+
+#define LED1_PIN A2
+#define LED2_PIN A1
+#define LED3_PIN A0
+#define LED4_PIN A4
+#define LED5_PIN A3
+#define LED6_PIN F1
diff --git a/keyboards/acheron/elongate/delta/delta.c b/keyboards/acheron/elongate/delta/delta.c
new file mode 100755
index 0000000000..520dde4e24
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/delta.c
@@ -0,0 +1,78 @@
+/* Copyright 2021 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "delta.h"
+
+#define LED_PIN_ON_STATE 1
+// Inits all indicator LEDs as push-pull outputs
+void led_init_ports(void) {
+ palSetLineMode(LED1_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetLineMode(LED2_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetLineMode(LED3_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetLineMode(LED4_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetLineMode(LED5_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+ palSetLineMode(LED6_PIN, PAL_MODE_OUTPUT_PUSHPULL);
+}
+
+// This function updates LEDs 1, 2 and 3 according to num, caps and scroll lock states
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ writePin(LED1_PIN, !led_state.num_lock);
+ writePin(LED2_PIN, !led_state.caps_lock);
+ writePin(LED3_PIN, !led_state.scroll_lock);
+ }
+ return res;
+}
+
+// Turns off all bottom LEDs
+void turn_off_bottom_leds(void){
+ writePin(LED4_PIN, 1);
+ writePin(LED5_PIN, 1);
+ writePin(LED6_PIN, 1);
+}
+
+/*
+Here the bottom LEDs get updated. The idea being that LED4 is lit when the default layer is active, LED5 when layer 1 is active and LED6 when layer 2.
+Before updating, however, all bottom LEDs are turned off.
+*/
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ turn_off_bottom_leds();
+ switch (get_highest_layer(state)) {
+// The base layer, or layer zero, will be handled by the default case.
+ case 1:
+ writePin(LED4_PIN, 1);
+ writePin(LED5_PIN, 0);
+ writePin(LED6_PIN, 1);
+ break;
+ case 2:
+ writePin(LED4_PIN, 1);
+ writePin(LED5_PIN, 1);
+ writePin(LED6_PIN, 0);
+ break;
+ default:
+ writePin(LED4_PIN, 0);
+ writePin(LED5_PIN, 1);
+ writePin(LED6_PIN, 1);
+ break;
+ }
+ return state;
+}
+
+// Since the keyboard starts at layer 0, the init function starts LED4 as lit up.
+void keyboard_post_init_kb(void){
+ writePin(LED4_PIN, 0);
+}
diff --git a/keyboards/acheron/elongate/delta/delta.h b/keyboards/acheron/elongate/delta/delta.h
new file mode 100755
index 0000000000..119521215f
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/delta.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K1D, K1E, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K4B, K4C, K4D, K4E, \
+ K30, K31, K32, K34, K37, K39, K3A, K3B, K3C, K3D, K3E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, ___, K1B, K1C, K1D, K1E }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, ___, ___, ___, ___ }, \
+ { K30, K31, K32, ___, K34, ___, ___, K37, ___, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/acheron/elongate/delta/halconf.h b/keyboards/acheron/elongate/delta/halconf.h
new file mode 100755
index 0000000000..2a91ab9737
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/halconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/elongate/delta/keymaps/default/keymap.c b/keyboards/acheron/elongate/delta/keymaps/default/keymap.c
new file mode 100755
index 0000000000..a701d9ed9b
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#define SPC_L2 LT(2, KC_SPACE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER, KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MO(1) , KC_UP, KC_KP_1, KC_KP_2, KC_KP_3,
+ KC_LCTL, KC_LWIN, KC_LALT, SPC_L2, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_0, KC_DOT
+),
+[1] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, KC_F2, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_NLCK, KC_SLCK, KC_CAPS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_SLSH, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS
+),
+[2] = LAYOUT_all( /* Base */
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[3] = LAYOUT_all( /* Base */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/acheron/elongate/delta/keymaps/via/keymap.c b/keyboards/acheron/elongate/delta/keymaps/via/keymap.c
new file mode 100755
index 0000000000..a701d9ed9b
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2020 Gondolindrim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#define SPC_L2 LT(2, KC_SPACE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER, KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MO(1) , KC_UP, KC_KP_1, KC_KP_2, KC_KP_3,
+ KC_LCTL, KC_LWIN, KC_LALT, SPC_L2, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_0, KC_DOT
+),
+[1] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, KC_F2, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_NLCK, KC_SLCK, KC_CAPS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_SLSH, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS
+),
+[2] = LAYOUT_all( /* Base */
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[3] = LAYOUT_all( /* Base */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+)
+};
diff --git a/keyboards/acheron/elongate/delta/keymaps/via/rules.mk b/keyboards/acheron/elongate/delta/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/elongate/delta/mcuconf.h b/keyboards/acheron/elongate/delta/mcuconf.h
new file mode 100755
index 0000000000..d712a1e5a7
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 TRUE
diff --git a/keyboards/acheron/elongate/delta/readme.md b/keyboards/acheron/elongate/delta/readme.md
new file mode 100755
index 0000000000..055b02ee04
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/readme.md
@@ -0,0 +1,43 @@
+# Acheron Elongate rev. Delta QMK firmware repository
+
+![](https://i.imgur.com/G9LESkUh.jpg)
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: [open-source PCB](https://github.com/AcheronProject/Elongate) powered by STM32F072 microcontroller
+* Hardware Availability: as of december 2021, the group buy for Elongate is already over and extras sales are pending.
+
+## Introduction
+
+This is the QMK firmware repository for the Elongate PCB revision Delta, which was the revision publicly sold at the group buy. Revisions Alpha and Beta were sold in private group buys and never ran publicly.
+
+The Elongate PCB is an Open-Hardware-guideline-compliant PCB which files can be found at [this repository](https://github.com/AcheronProject/Elongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim).
+
+## How to flash
+
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (escape key at layer 2 in the default firmware)
+
+## Compile firmware
+
+You can build the default layout firwmare for Elongate after setting up your build environment by using:
+
+ make acheron/elongate/delta:default
+
+After entering DFU state in your PCB, you can download the binary file generated through `dfu-util` or a GUI like QMK Toolbox.
+
+To directly flash the PCB after it is put into a DFU state, use
+
+ make acheron/elongate/delta:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## PCB Documentation
+
+See the [AcheronDocs](https://acheronproject.com/pcbs/elongate/) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/AcheronProject/Elongate).
+
+Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.4](https://acheronproject.com/AOHL14/) under which the Elongate PCB is published.
diff --git a/keyboards/acheron/elongate/delta/rules.mk b/keyboards/acheron/elongate/delta/rules.mk
new file mode 100755
index 0000000000..20a0bab85e
--- /dev/null
+++ b/keyboards/acheron/elongate/delta/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/acheron/elongate/elongate.c b/keyboards/acheron/elongate/elongate.c
index 31c4720360..9bf0d893a9 100644
--- a/keyboards/acheron/elongate/elongate.c
+++ b/keyboards/acheron/elongate/elongate.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Gondolindrim
+/* Copyright 2021 Gondolindrim
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -9,18 +9,6 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "elongate.h"
-bool led_update_kb(led_t led_state) {
- bool res = led_update_user(led_state);
- if(res) {
- writePin(D2, led_state.num_lock);
- writePin(D1, led_state.caps_lock);
- writePin(D0, led_state.scroll_lock);
- }
- return res;
-}
diff --git a/keyboards/acheron/elongate/elongate.h b/keyboards/acheron/elongate/elongate.h
index 6ff32b4f75..2e58871643 100644
--- a/keyboards/acheron/elongate/elongate.h
+++ b/keyboards/acheron/elongate/elongate.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Gondolindrim
+/* Copyright 2020-2022 Gondolindrim
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,27 +18,8 @@
#include "quantum.h"
-/* This is a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the Keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
- */
-
-#define KNO KC_NO
-
-#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K49, K41, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K4A, K42, \
- K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, K44, \
- K30, K31, K32, K34, K37, K3A, K3B, K3C, K3D, K4C, K47 \
-)\
-{\
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KNO, K1B, K1C }, \
- { K20, KNO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
- { K30, K31, K32, KNO, K34, KNO, KNO, K37, KNO, K3A, K3B, K3C, K3D }, \
- { KNO, K41, K42, KNO, K44, KNO, KNO, K47, KNO, K49, K4A, K4B, K4C } \
-}
+#if defined(KEYBOARD_acheron_elongate_beta)
+ #include "beta.h"
+#elif defined(KEYBOARD_acheron_elongate_delta)
+ #include "delta.h"
+#endif
diff --git a/keyboards/acheron/elongate/readme.md b/keyboards/acheron/elongate/readme.md
deleted file mode 100644
index 83c0eeada1..0000000000
--- a/keyboards/acheron/elongate/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Acheron Aχξρων 45-S-ATMEGA-MX-TH-WI (codename "Elongate") QMK firmware
-
-<p align="center">
- <img align="middle" src="https://raw.githubusercontent.com/Gondolindrim/acheronLibrary/master/graphics/acheronLong.png" width="400">
-</p>
-
-## Introduction
-
-This is the QMK firmware repository for the ElongatePCN, compatible with revisions Beta and pre-Beta.
-
-The ElongatePCB is an Open-Hardware guidelines compliant PCB which files can be found at [this link](https://github.com/Gondolindrim/AElongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim).
-
-## PCB Documentation
-
-See the [AcheronDocs](https://gondolindrim.github.io/AcheronDocs/elongate/introduction.html) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/Gondolindrim/Elongate).
-
-Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.2](https://gondolindrim.github.io/AcheronDocs/license/license.html) under which the Austin PCB is published.
-
-## How to compile
-
-After setting up your build environment, you can compile the Austin default keymap by using:
-
- make acheron/elongate:default
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/acheron/elongate/rules.mk b/keyboards/acheron/elongate/rules.mk
deleted file mode 100644
index 5396152569..0000000000
--- a/keyboards/acheron/elongate/rules.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-LTO_ENABLE = yes
diff --git a/keyboards/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk
index ae1f29e35e..978e6b6a8f 100644
--- a/keyboards/acheron/keebspcb/rules.mk
+++ b/keyboards/acheron/keebspcb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acheron/lasgweloth/rules.mk b/keyboards/acheron/lasgweloth/rules.mk
index 197c40da23..e8b4e15c69 100644
--- a/keyboards/acheron/lasgweloth/rules.mk
+++ b/keyboards/acheron/lasgweloth/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acheron/shark/keymaps/ajp10304/readme.md b/keyboards/acheron/shark/keymaps/ajp10304/readme.md
index cb8bcdae90..e091e5d318 100644
--- a/keyboards/acheron/shark/keymaps/ajp10304/readme.md
+++ b/keyboards/acheron/shark/keymaps/ajp10304/readme.md
@@ -22,6 +22,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +82,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/keyboards/acheron/shark/keymaps/default/keymap.c b/keyboards/acheron/shark/keymaps/default/keymap.c
index a661b835b1..926fc26f02 100644
--- a/keyboards/acheron/shark/keymaps/default/keymap.c
+++ b/keyboards/acheron/shark/keymaps/default/keymap.c
@@ -38,11 +38,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Alt | GUI | |Lower | Space| Space|Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -56,11 +56,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_TOGG, BL_INC , BL_DEC , _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_TOGG, BL_INC , BL_DEC , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -74,11 +74,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -92,11 +92,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, BL_TOGG, BL_INC, BL_DEC , _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_INC, BL_DEC , _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/acheron/shark/keymaps/via/keymap.c b/keyboards/acheron/shark/keymaps/via/keymap.c
index 806d242b07..e005da9544 100644
--- a/keyboards/acheron/shark/keymaps/via/keymap.c
+++ b/keyboards/acheron/shark/keymaps/via/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Alt | GUI | |Lower | Space| Space|Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_TOGG, BL_INC , BL_DEC , _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_TOGG, BL_INC , BL_DEC , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -73,11 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -91,10 +91,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, BL_TOGG, BL_INC, BL_DEC , _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_INC, BL_DEC , _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/acheron/shark/rules.mk b/keyboards/acheron/shark/rules.mk
index 9e9f539765..507f362b26 100644
--- a/keyboards/acheron/shark/rules.mk
+++ b/keyboards/acheron/shark/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/acr60/rules.mk b/keyboards/acr60/rules.mk
index d45a04dedf..9ccce6abf4 100644
--- a/keyboards/acr60/rules.mk
+++ b/keyboards/acr60/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ada/infinity81/config.h b/keyboards/ada/infinity81/config.h
new file mode 100644
index 0000000000..1cbce84720
--- /dev/null
+++ b/keyboards/ada/infinity81/config.h
@@ -0,0 +1,126 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xADA0
+#define PRODUCT_ID 0x0081
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ada
+#define PRODUCT infinity81
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B3, B2, B1, B0, F6, B7 }
+#define MATRIX_COL_PINS { D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F5, F1, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D0
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 107
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/ada/infinity81/infinity81.c b/keyboards/ada/infinity81/infinity81.c
new file mode 100644
index 0000000000..7e20a1d705
--- /dev/null
+++ b/keyboards/ada/infinity81/infinity81.c
@@ -0,0 +1,4 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "infinity81.h"
diff --git a/keyboards/ada/infinity81/infinity81.h b/keyboards/ada/infinity81/infinity81.h
new file mode 100644
index 0000000000..199c6f3642
--- /dev/null
+++ b/keyboards/ada/infinity81/infinity81.h
@@ -0,0 +1,30 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K510, K511, K512, K513, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, KC_NO }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 } \
+}
diff --git a/keyboards/ada/infinity81/info.json b/keyboards/ada/infinity81/info.json
new file mode 100644
index 0000000000..71fb774721
--- /dev/null
+++ b/keyboards/ada/infinity81/info.json
@@ -0,0 +1,92 @@
+{
+ "keyboard_name": "infinity81",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00 (B3,D1)", "x": 0, "y": 0 },
+ { "label": "K01 (B3,D2)", "x": 1.25, "y": 0 },
+ { "label": "K02 (B3,D3)", "x": 2.25, "y": 0 },
+ { "label": "K03 (B3,D5)", "x": 3.25, "y": 0 },
+ { "label": "K04 (B3,D4)", "x": 4.25, "y": 0 },
+ { "label": "K05 (B3,D6)", "x": 5.5, "y": 0 },
+ { "label": "K06 (B3,D7)", "x": 6.5, "y": 0 },
+ { "label": "K07 (B3,B4)", "x": 7.5, "y": 0 },
+ { "label": "K08 (B3,B5)", "x": 8.5, "y": 0 },
+ { "label": "K09 (B3,B6)", "x": 9.75, "y": 0 },
+ { "label": "K0A (B3,C6)", "x": 10.75, "y": 0 },
+ { "label": "K0B (B3,C7)", "x": 11.75, "y": 0 },
+ { "label": "K0C (B3,F5)", "x": 12.75, "y": 0 },
+ { "label": "K10 (B2,D1)", "x": 0, "y": 1.25 },
+ { "label": "K11 (B2,D2)", "x": 1, "y": 1.25 },
+ { "label": "K12 (B2,D3)", "x": 2, "y": 1.25 },
+ { "label": "K13 (B2,D5)", "x": 3, "y": 1.25 },
+ { "label": "K14 (B2,D4)", "x": 4, "y": 1.25 },
+ { "label": "K15 (B2,D6)", "x": 5, "y": 1.25 },
+ { "label": "K16 (B2,D7)", "x": 6, "y": 1.25 },
+ { "label": "K17 (B2,B4)", "x": 7, "y": 1.25 },
+ { "label": "K18 (B2,B5)", "x": 8, "y": 1.25 },
+ { "label": "K19 (B2,B6)", "x": 9, "y": 1.25 },
+ { "label": "K1A (B2,C6)", "x": 10, "y": 1.25 },
+ { "label": "K1B (B2,C7)", "x": 11, "y": 1.25 },
+ { "label": "K1C (B2,F5)", "x": 12, "y": 1.25 },
+ { "label": "K1D (B2,F1)", "x": 13, "y": 1.25, "w": 2 },
+ { "label": "K1E (B2,F4)", "x": 15, "y": 1.25 },
+ { "label": "K20 (B1,D1)", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "K21 (B1,D2)", "x": 1.5, "y": 2.25 },
+ { "label": "K22 (B1,D3)", "x": 2.5, "y": 2.25 },
+ { "label": "K23 (B1,D5)", "x": 3.5, "y": 2.25 },
+ { "label": "K24 (B1,D4)", "x": 4.5, "y": 2.25 },
+ { "label": "K25 (B1,D6)", "x": 5.5, "y": 2.25 },
+ { "label": "K26 (B1,D7)", "x": 6.5, "y": 2.25 },
+ { "label": "K27 (B1,B4)", "x": 7.5, "y": 2.25 },
+ { "label": "K28 (B1,B5)", "x": 8.5, "y": 2.25 },
+ { "label": "K29 (B1,B6)", "x": 9.5, "y": 2.25 },
+ { "label": "K2A (B1,C6)", "x": 10.5, "y": 2.25 },
+ { "label": "K2B (B1,C7)", "x": 11.5, "y": 2.25 },
+ { "label": "K2C (B1,F5)", "x": 12.5, "y": 2.25 },
+ { "label": "K2D (B1,F1)", "x": 13.5, "y": 2.25, "w": 1.5 },
+ { "label": "K2E (B1,F4)", "x": 15, "y": 2.25 },
+ { "label": "K30 (B0,D1)", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "K31 (B0,D2)", "x": 1.75, "y": 3.25 },
+ { "label": "K32 (B0,D3)", "x": 2.75, "y": 3.25 },
+ { "label": "K33 (B0,D5)", "x": 3.75, "y": 3.25 },
+ { "label": "K34 (B0,D4)", "x": 4.75, "y": 3.25 },
+ { "label": "K35 (B0,D6)", "x": 5.75, "y": 3.25 },
+ { "label": "K36 (B0,D7)", "x": 6.75, "y": 3.25 },
+ { "label": "K37 (B0,B4)", "x": 7.75, "y": 3.25 },
+ { "label": "K38 (B0,B5)", "x": 8.75, "y": 3.25 },
+ { "label": "K39 (B0,B6)", "x": 9.75, "y": 3.25 },
+ { "label": "K3A (B0,C6)", "x": 10.75, "y": 3.25 },
+ { "label": "K3B (B0,C7)", "x": 11.75, "y": 3.25 },
+ { "label": "K3D (B0,F1)", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "K3E (B0,F4)", "x": 15, "y": 3.25 },
+ { "label": "K40 (F6,D1)", "x": 0, "y": 4.25, "w": 2.25 },
+ { "label": "K41 (F6,D2)", "x": 2.25, "y": 4.25 },
+ { "label": "K42 (F6,D3)", "x": 3.25, "y": 4.25 },
+ { "label": "K43 (F6,D5)", "x": 4.25, "y": 4.25 },
+ { "label": "K44 (F6,D4)", "x": 5.25, "y": 4.25 },
+ { "label": "K45 (F6,D6)", "x": 6.25, "y": 4.25 },
+ { "label": "K46 (F6,D7)", "x": 7.25, "y": 4.25 },
+ { "label": "K47 (F6,B4)", "x": 8.25, "y": 4.25 },
+ { "label": "K48 (F6,B5)", "x": 9.25, "y": 4.25 },
+ { "label": "K49 (F6,B6)", "x": 10.25, "y": 4.25 },
+ { "label": "K4A (F6,C6)", "x": 11.25, "y": 4.25 },
+ { "label": "K4B (F6,C7)", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "K4D (F6,F1)", "x": 14, "y": 4.25 },
+ { "label": "K4E (F6,F4)", "x": 15, "y": 4.25 },
+ { "label": "K50 (B7,D1)", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "K51 (B7,D2)", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "K52 (B7,D3)", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "K55 (B7,D6)", "x": 3.75, "y": 5.25, "w": 6.25 },
+ { "label": "K5A (B7,C6)", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "K5B (B7,C7)", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "K5C (B7,F5)", "x": 13, "y": 5.25 },
+ { "label": "K5D (B7,F1)", "x": 14, "y": 5.25 },
+ { "label": "K5E (B7,F4)", "x": 15, "y": 5.25 }
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/ada/infinity81/keymaps/default/keymap.c b/keyboards/ada/infinity81/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0a6aae93f4
--- /dev/null
+++ b/keyboards/ada/infinity81/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/ada/infinity81/keymaps/default/readme.md b/keyboards/ada/infinity81/keymaps/default/readme.md
new file mode 100644
index 0000000000..1b6598c1df
--- /dev/null
+++ b/keyboards/ada/infinity81/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for infinity81
diff --git a/keyboards/ada/infinity81/readme.md b/keyboards/ada/infinity81/readme.md
new file mode 100644
index 0000000000..a134379ce5
--- /dev/null
+++ b/keyboards/ada/infinity81/readme.md
@@ -0,0 +1,27 @@
+# infinity81
+
+![infinity81](https://i.imgur.com/9d6IcuA.jpg)
+
+A per key RGB 75% with blocker keyboard
+
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
+* Hardware Supported: infinity81
+* Hardware Availability: no longer avaliable - future groupbuy possible
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ada/infinity81:default
+
+Flashing example for this keyboard:
+
+ make ada/infinity81:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/ada/infinity81/rules.mk b/keyboards/ada/infinity81/rules.mk
new file mode 100644
index 0000000000..3ff392a61f
--- /dev/null
+++ b/keyboards/ada/infinity81/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/adalyn/adalyn.c b/keyboards/adalyn/adalyn.c
new file mode 100644
index 0000000000..837cb9c98a
--- /dev/null
+++ b/keyboards/adalyn/adalyn.c
@@ -0,0 +1,16 @@
+ /* Copyright TJ Campie
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "adalyn.h"
diff --git a/keyboards/adalyn/adalyn.h b/keyboards/adalyn/adalyn.h
new file mode 100644
index 0000000000..d9c1c68504
--- /dev/null
+++ b/keyboards/adalyn/adalyn.h
@@ -0,0 +1,33 @@
+ /* Copyright TJ Campie
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ K30, K31, K33, K36, K37, K39 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { K30, K31, XXX, K33, XXX, XXX, K36, K37, XXX, K39 } \
+}
diff --git a/keyboards/adalyn/config.h b/keyboards/adalyn/config.h
new file mode 100644
index 0000000000..c34337f245
--- /dev/null
+++ b/keyboards/adalyn/config.h
@@ -0,0 +1,54 @@
+ /* Copyright TJ Campie
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7431
+#define PRODUCT_ID 0x6164
+#define DEVICE_VER 0x0001
+#define MANUFACTURER tominabox1
+#define PRODUCT Adalyn
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { C7, D6, B7, B3 }
+#define MATRIX_COL_PINS { D7, B4, B5, B6, C6, F7, F6, F5, F4, F1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/adalyn/info.json b/keyboards/adalyn/info.json
new file mode 100644
index 0000000000..b8cc6640af
--- /dev/null
+++ b/keyboards/adalyn/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "adalyn",
+ "url": "https://github.com/MarvFPV/Adalyn",
+ "maintainer": "tominabox1",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.5, "y":0}, {"x":10.5, "y":0, "w":1.25}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}, {"x":2.25, "y":1}, {"x":3.25, "y":1}, {"x":4.25, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "y":2}, {"x":8.25, "y":2}, {"x":9.25, "y":2}, {"x":10.25, "y":2, "w":1.5}, {"x":0, "y":3}, {"x":2.5, "y":3}, {"x":3.5, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3}, {"x":10.75, "y":3}]
+ }
+}
+}
diff --git a/keyboards/adalyn/keymaps/default/config.h b/keyboards/adalyn/keymaps/default/config.h
new file mode 100644
index 0000000000..d8b87f9478
--- /dev/null
+++ b/keyboards/adalyn/keymaps/default/config.h
@@ -0,0 +1,21 @@
+ /* Copyright TJ Campie
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#ifdef COMBO_ENABLE
+# define COMBO_COUNT 5
+# define COMBO_TERM 200
+#endif
diff --git a/keyboards/adalyn/keymaps/default/keymap.c b/keyboards/adalyn/keymaps/default/keymap.c
new file mode 100644
index 0000000000..21cc74fa9f
--- /dev/null
+++ b/keyboards/adalyn/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+ /* Copyright TJ Campie
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ #include QMK_KEYBOARD_H
+
+enum layers{
+ _BASE,
+ _NUM_SYM,
+ _NAV
+};
+enum combo_events {
+ COMBO_BSPC,
+ COMBO_NUMBAK,
+ COMBO_TAB,
+ COMBO_ESC,
+ COMBO_DEL,
+};
+
+#define KC_NUM_SPC LT(_NUM_SYM, KC_SPC)
+#define KC_GA LGUI_T(KC_A)
+#define KC_AS LALT_T(KC_S)
+#define KC_CD LCTL_T(KC_D)
+#define KC_SF LSFT_T(KC_F)
+#define KC_SJ RSFT_T(KC_J)
+#define KC_CK RCTL_T(KC_K)
+#define KC_AL RALT_T(KC_L)
+#define KC_GSCLN RGUI_T(KC_SCLN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_GA, KC_AS, KC_CD, KC_SF, KC_G, KC_H, KC_SJ, KC_CK, KC_AL, KC_ENT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,
+ KC_LCTL, KC_LALT, KC_BSPC, LT(_NUM_SYM,KC_SPACE), KC_RGUI, KC_RCTL
+ ),
+
+ [_NUM_SYM] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_EQUAL, KC_MINS,
+ KC_LCBR, KC_LBRC, KC_LPRN, KC_UNDS, KC_NO, KC_RPRN, KC_RBRC, KC_RCBR, KC_SCLN, KC_QUOTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+#ifdef COMBO_ENABLE
+const uint16_t PROGMEM combo_bspc[] = {KC_O, KC_P, COMBO_END};
+const uint16_t PROGMEM combo_numbak[] = {KC_0, KC_9, COMBO_END};
+const uint16_t PROGMEM combo_tab[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM combo_esc[] = {KC_E, KC_W, COMBO_END};
+const uint16_t PROGMEM combo_del[] = {KC_MINS, KC_EQL, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [COMBO_BSPC] = COMBO(combo_bspc,KC_BSPC),
+ [COMBO_NUMBAK] = COMBO(combo_numbak,KC_BSPC),
+ [COMBO_TAB] = COMBO(combo_tab,KC_TAB),
+ [COMBO_ESC] = COMBO(combo_esc,KC_ESC),
+ [COMBO_DEL] = COMBO(combo_del,KC_DEL),
+
+};
+#endif
diff --git a/keyboards/adalyn/keymaps/default/readme.md b/keyboards/adalyn/keymaps/default/readme.md
new file mode 100644
index 0000000000..fb85d36e28
--- /dev/null
+++ b/keyboards/adalyn/keymaps/default/readme.md
@@ -0,0 +1 @@
+# Default QAZ Layout
diff --git a/keyboards/adalyn/keymaps/default/rules.mk b/keyboards/adalyn/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/adalyn/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/adalyn/readme.md b/keyboards/adalyn/readme.md
new file mode 100644
index 0000000000..ee24bead61
--- /dev/null
+++ b/keyboards/adalyn/readme.md
@@ -0,0 +1,19 @@
+# Adalyn
+
+![Adalyn](https://i.imgur.com/3mGQlh2.jpg)
+
+*A cool QAZ-Alice hybrid designed by [Marv](https://github.com/MarvFPV/Adalyn) with a PCB by [tominabox1](https://github.com/tominabox1)*
+* Keyboard Maintainer: [tominabox1](https://github.com/tominabox1)
+* Hardware Supported: Adalyn PCB, atmega32u4
+* Hardware Availability: Open source on @tominabox1 GitHub
+
+Make example for this keyboard (after setting up your build environment):
+ make adalyn:default
+Flashing example for this keyboard:
+ make adalyn:default:flash
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+## Bootloader
+Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/adalyn/rules.mk b/keyboards/adalyn/rules.mk
new file mode 100644
index 0000000000..078a9bca06
--- /dev/null
+++ b/keyboards/adalyn/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+COMBO_ENABLE = no
diff --git a/keyboards/adelheid/rules.mk b/keyboards/adelheid/rules.mk
index e187e07c64..9fa10e8fbf 100644
--- a/keyboards/adelheid/rules.mk
+++ b/keyboards/adelheid/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/adkb96/rules.mk b/keyboards/adkb96/rules.mk
index 7a83f7c484..723dc134c9 100644
--- a/keyboards/adkb96/rules.mk
+++ b/keyboards/adkb96/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/adpenrose/kintsugi/config.h b/keyboards/adpenrose/kintsugi/config.h
new file mode 100644
index 0000000000..cbd38b6664
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/config.h
@@ -0,0 +1,146 @@
+/*
+Copyright 2021 adpenrose
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4450 // "ADP"
+#define PRODUCT_ID 0x0001 // 'Cause it's my first keeb
+#define DEVICE_VER 0x0001
+#define MANUFACTURER adpenrose
+#define PRODUCT Kintsugi
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B0, E6, D7, C6, D4, D2, F4, F5, B5, B4 }
+#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6, F0 }
+#define UNUSED_PINS { D3, C7 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*Rotary encoder - set the resolution fitting your encoder.
+Most will need a value of 4. If 1 encoder click results in 2 keycodes sent
+increase the value. If you need 2 clicks for 1 keycode, decrease*/
+#define ENCODER_RESOLUTION 4
+#define ENCODERS_PAD_A { B7 }
+#define ENCODERS_PAD_B { D5 }
+#define TAP_CODE_DELAY 10
+
+/* Underglow options: */
+#define RGB_DI_PIN F1
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 16
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+// # define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/adpenrose/kintsugi/info.json b/keyboards/adpenrose/kintsugi/info.json
new file mode 100644
index 0000000000..0e76187335
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/info.json
@@ -0,0 +1,80 @@
+{
+ "keyboard_name": "Kintsugi",
+ "url": "https://github.com/ADPenrose/kintsugi_keeb",
+ "maintainer": "adpenrose",
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"\\", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Enc", "x":15, "y":2},
+
+ {"label":"LShift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"RShift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Up", "x":14, "y":3},
+ {"label":"M1", "x":15, "y":3},
+
+ {"label":"LCtrl", "x":0, "y":4, "w":1.25},
+ {"label":"LSuper", "x":1.25, "y":4, "w":1.25},
+ {"label":"LAlt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"L1", "x":10, "y":4, "w":1.5},
+ {"label":"L2", "x":11.5, "y":4, "w":1.5},
+ {"label":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/adpenrose/kintsugi/keymaps/default/keymap.c b/keyboards/adpenrose/kintsugi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7e03701461
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+/* Base layout:
+ * ,---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED|
+ * |--------------------------------------------------------------- |
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED|
+ * |---------------------------------------------------------------------|
+ * |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC |
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 |
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |Alt |MO(1)| |Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_A, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MUTE,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_VAI, RGB_VAD, RGB_MODE_FORWARD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/adpenrose/kintsugi/keymaps/default/readme.md b/keyboards/adpenrose/kintsugi/keymaps/default/readme.md
new file mode 100644
index 0000000000..83bc48086d
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Kintsugi
diff --git a/keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c b/keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c
new file mode 100644
index 0000000000..55098afbfd
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/franky/keymap.c
@@ -0,0 +1,164 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+/* Base layout:
+ * ,---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED|
+ * |--------------------------------------------------------------- |
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED|
+ * |---------------------------------------------------------------------|
+ * |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC |
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 |
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MUTE,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(3), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_65_ansi_blocker(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
+ ),
+};
+
+/* Encoder */
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ static uint8_t selected_layer = 0; /* Used to change the layer using the encoder. */
+
+ if (clockwise){
+ /* Check if left shift is pressed: */
+ if (selected_layer < 3 && get_mods() & MOD_BIT(KC_LSFT)){
+ selected_layer ++;
+ layer_move(selected_layer); /* Jump up one layer. */
+ } else {
+ /* If shift isn't pressed, encoder will do this stuff: */
+ switch (get_highest_layer(layer_state)){
+ case 3:
+ tap_code(KC_MNXT);
+ break;
+ default:
+ tap_code(KC_VOLU);
+ break;
+ }
+ }
+ } else {
+ /* Check if left shift is pressed: */
+ if (selected_layer > 0 && get_mods() & MOD_BIT(KC_LSFT)){
+ selected_layer --;
+ layer_move(selected_layer); /* Go down one layer. */
+ } else {
+ /* If shift isn't pressed, encoder will do this stuff: */
+ switch (get_highest_layer(layer_state)){
+ case 3:
+ tap_code(KC_MPRV);
+ break;
+ default:
+ tap_code(KC_VOLD);
+ break;
+ }
+ }
+ }
+ return false;
+}
+#endif
+
+/* Rotation of the OLED: */
+#ifdef OLED_ENABLE
+/* Function that renders the kintsugi logo in the desired order. */
+static void render_logo(void) {
+ static const char PROGMEM logo_1[] = {
+ 0x83, 0x84, 0x85, 0x86, 0x87, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0x00
+ };
+ static const char PROGMEM logo_2[] = {
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0x00
+ };
+ static const char PROGMEM logo_3[] = {
+ 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0x00
+ };
+ oled_set_cursor(1,0);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(1,4);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(1,8);
+ oled_write_P(logo_3, false);
+}
+
+/* Function that renders the current layer to the user. */
+void render_layer(void) {
+ oled_set_cursor(0,12);
+ switch (get_highest_layer(layer_state)){
+ case 0:
+ oled_write_P(PSTR("_BASE"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("_KCAD"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("_NMPD"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("_FNCT"), false);
+ break;
+ default:
+ oled_write_P(PSTR("_OhNo"), false);
+ break;
+ }
+}
+
+/* The following function displays wpm to the user. */
+void render_wpm(void) {
+ oled_set_cursor(1,14);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ oled_set_cursor(1,15);
+ oled_write_P(PSTR("WPM"), false);
+}
+
+/* Function that renders stuff on the oled: */
+bool oled_task_user(void) {
+ render_logo();
+ render_layer();
+ render_wpm();
+ return false;
+}
+#endif
diff --git a/keyboards/adpenrose/kintsugi/keymaps/franky/readme.md b/keyboards/adpenrose/kintsugi/keymaps/franky/readme.md
new file mode 100644
index 0000000000..9f44122306
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/franky/readme.md
@@ -0,0 +1 @@
+# Franky keymap for Kintsugi. Here to serve as a way to test snippets of code.
diff --git a/keyboards/adpenrose/kintsugi/keymaps/franky/rules.mk b/keyboards/adpenrose/kintsugi/keymaps/franky/rules.mk
new file mode 100644
index 0000000000..7e72249a18
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/franky/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+WPM_ENABLE = yes
diff --git a/keyboards/adpenrose/kintsugi/keymaps/via/keymap.c b/keyboards/adpenrose/kintsugi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..80764047df
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/via/keymap.c
@@ -0,0 +1,62 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+/* Base layout:
+ * ,---------------------------------------------------------------------|
+ * |` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= |Backspace| OLED|
+ * |--------------------------------------------------------------- |
+ * |Tab |Q |W |E |R |T |Y |U |I |O |P |[ | ] | \ OLED|
+ * |---------------------------------------------------------------------|
+ * |Caps |A |S |D |F |G |H |J |K |L |; |' | Enter | ENC |
+ * |---------------------------------------------------------------------|
+ * |Shft |Z |X |C |V |B |N |M |, |. |/ |Shift |Up| M1 |
+ * |---------------------------------------------------------------------|
+ * |Ctrl|GUI |Alt | Space |MO(2) |MO(3)| |Lt |Dn |Rt |
+ * `---------------------------------------------------------------------|'
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MUTE,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/adpenrose/kintsugi/keymaps/via/readme.md b/keyboards/adpenrose/kintsugi/keymaps/via/readme.md
new file mode 100644
index 0000000000..afdea1ca5b
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/keymaps/via/readme.md
@@ -0,0 +1 @@
+# VIA keymap for Kintsugi
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/via/rules.mk b/keyboards/adpenrose/kintsugi/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/via/rules.mk
+++ b/keyboards/adpenrose/kintsugi/keymaps/via/rules.mk
diff --git a/keyboards/adpenrose/kintsugi/kintsugi.c b/keyboards/adpenrose/kintsugi/kintsugi.c
new file mode 100644
index 0000000000..c697793172
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/kintsugi.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kintsugi.h"
+
+/* Encoder */
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+/* The switch case allows for different encoder mappings on different layers, "default" map gets applied for all unspecified layers */
+ switch(get_highest_layer(layer_state)){
+ case 1:
+ if (clockwise) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+ break;
+ default:
+ if (clockwise){
+ tap_code(KC_VOLU);
+ } else{
+ tap_code(KC_VOLD);
+ }
+ break;
+ }
+ return true;
+}
+#endif
+
+/* Rotation of the OLED: */
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ /* Kintsugi logo render: */
+ static const char PROGMEM logo_1[] = {
+ 0x83, 0x84, 0x85, 0x86, 0x87, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0x00
+ };
+ static const char PROGMEM logo_2[] = {
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0x00
+ };
+ static const char PROGMEM logo_3[] = {
+ 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0x00
+ };
+ oled_set_cursor(1,3);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(1,7);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(1,11);
+ oled_write_P(logo_3, false);
+ return true;
+}
+#endif
diff --git a/keyboards/adpenrose/kintsugi/kintsugi.h b/keyboards/adpenrose/kintsugi/kintsugi.h
new file mode 100644
index 0000000000..37ce6cc6e5
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/kintsugi.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K50, K51, K52, K53, K54, K55, K56, \
+ K10, K11, K12, K13, K14, K15, K16, K60, K61, K62, K63, K64, K65, K66, \
+ K20, K21, K22, K23, K24, K25, K26, K70, K71, K72, K73, K74, K75, K76, \
+ K30, K31, K32, K33, K34, K35, K36, K80, K81, K82, K83, K84, K85, K86, \
+ K40, K41, K42, K46, K92, K93, K94, K95, K96 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06 }, \
+ { K10, K11, K12, K13, K14, K15, K16 }, \
+ { K20, K21, K22, K23, K24, K25, K26 }, \
+ { K30, K31, K32, K33, K34, K35, K36 }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46 }, \
+ { K50, K51, K52, K53, K54, K55, K56 }, \
+ { K60, K61, K62, K63, K64, K65, K66 }, \
+ { K70, K71, K72, K73, K74, K75, K76 }, \
+ { K80, K81, K82, K83, K84, K85, K86 }, \
+ { KC_NO, KC_NO, K92, K93, K94, K95, K96 } \
+}
diff --git a/keyboards/adpenrose/kintsugi/lib/kintsugifont.c b/keyboards/adpenrose/kintsugi/lib/kintsugifont.c
new file mode 100644
index 0000000000..bfa05d53a4
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/lib/kintsugifont.c
@@ -0,0 +1,244 @@
+/* Copyright 2021 adpenrose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "progmem.h"
+
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
+ 0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xBC,
+ 0x9E, 0x9E, 0xBC, 0xFC, 0xF8, 0xF0,
+ 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xF0, 0xFC, 0xFE, 0x8E,
+ 0xE6, 0x70, 0x00, 0xFC, 0xFE, 0xFE,
+ 0xFC, 0x00, 0x38, 0x78, 0xF0, 0xFE,
+ 0xFE, 0xF0, 0x78, 0x38, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x78, 0x78, 0x78, 0x78, 0x78,
+ 0x78, 0x78, 0x7E, 0x7E, 0xFE, 0xFC,
+ 0xFC, 0x7C, 0x18, 0x00, 0x9E, 0xBC,
+ 0x1C, 0x02, 0x0F, 0x1E, 0x0C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+ 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+ 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+ 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+ 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+ 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0xE1, 0xE1, 0xE1,
+ 0xE1, 0xE3, 0xE7, 0xE7, 0xE3, 0xE3,
+ 0xFF, 0xFF, 0xE3, 0xE3, 0xE7, 0xE7,
+ 0xE3, 0xE1, 0xE1, 0xE1, 0xE1, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0xF1, 0xFB, 0xFF, 0xFF, 0xE7,
+ 0xF3, 0xF8, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x87, 0xC7, 0xE7, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xE7, 0xC7, 0x87, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x8E, 0x9E, 0x9E, 0x1E, 0x1E,
+ 0x1E, 0x1E, 0x1E, 0x1E, 0x9F, 0xDF,
+ 0xFF, 0xFF, 0xFE, 0xCF, 0x0F, 0x0F,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+ 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+ 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+ 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+ 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x70, 0x71, 0x73,
+ 0x73, 0x7F, 0x7E, 0x7C, 0x70, 0x70,
+ 0x7F, 0x7F, 0x70, 0x70, 0x7C, 0x7E,
+ 0x7F, 0x73, 0x73, 0x71, 0x70, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x7C, 0x3E, 0x01, 0x3E, 0x61,
+ 0x0E, 0x1E, 0x00, 0x3F, 0x7F, 0x7F,
+ 0x7F, 0x73, 0x73, 0x71, 0x70, 0x77,
+ 0x77, 0x70, 0x71, 0x73, 0x73, 0x73,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1F, 0x7F, 0x7F, 0x78, 0x78,
+ 0x78, 0x78, 0x78, 0x78, 0x79, 0x7B,
+ 0x7B, 0x7B, 0x03, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/adpenrose/kintsugi/post_config.h b/keyboards/adpenrose/kintsugi/post_config.h
new file mode 100644
index 0000000000..e1f92f9e60
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/post_config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 adpenrose
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef OLED_FONT_H
+# define OLED_FONT_H "lib/kintsugifont.c"
+# define OLED_TIMEOUT 120000
+#endif \ No newline at end of file
diff --git a/keyboards/adpenrose/kintsugi/readme.md b/keyboards/adpenrose/kintsugi/readme.md
new file mode 100644
index 0000000000..2aa402543e
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/readme.md
@@ -0,0 +1,37 @@
+# Kintsugi
+
+![kintsugi](https://i.imgur.com/HPdmzdCl.jpeg)
+
+A 65%-ish keyboard with some extra features.
+
+## Features
+
+* Powered by an ATmega32u4 microcontroller (current version needs an Elite-C to work).
+* Encoder.
+* OLED screen.
+* Underglow.
+* Hotswap sockets.
+
+## General info
+
+* Keyboard Maintainer: [Arturo Avila](https://github.com/ADPenrose)
+* Hardware Supported: Kintsugi V1 PCB
+* Hardware Availability: [Arturo Avila](https://github.com/ADPenrose)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kintsugi:default
+
+Flashing example for this keyboard:
+
+ make kintsugi:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the front of the Elite-C microcontroller _**before soldering**_ it to the PCB- some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/adpenrose/kintsugi/rules.mk b/keyboards/adpenrose/kintsugi/rules.mk
new file mode 100644
index 0000000000..fe95a9b72b
--- /dev/null
+++ b/keyboards/adpenrose/kintsugi/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Encoder functionality
+OLED_ENABLE = yes # OLED functionality
+OLED_DRIVER = SSD1306
diff --git a/keyboards/aeboards/aegis/rules.mk b/keyboards/aeboards/aegis/rules.mk
index 2eb8c5dbde..2e24be64ba 100644
--- a/keyboards/aeboards/aegis/rules.mk
+++ b/keyboards/aeboards/aegis/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aeboards/constellation/rev1/rules.mk b/keyboards/aeboards/constellation/rev1/rules.mk
index a4ff057a2e..d2950ac2b2 100755
--- a/keyboards/aeboards/constellation/rev1/rules.mk
+++ b/keyboards/aeboards/constellation/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes
diff --git a/keyboards/aeboards/constellation/rev2/rules.mk b/keyboards/aeboards/constellation/rev2/rules.mk
index 5e3bd4ae49..6751ce2c27 100755
--- a/keyboards/aeboards/constellation/rev2/rules.mk
+++ b/keyboards/aeboards/constellation/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aeboards/ext65/rev1/rules.mk b/keyboards/aeboards/ext65/rev1/rules.mk
index 2eb8c5dbde..2e24be64ba 100644
--- a/keyboards/aeboards/ext65/rev1/rules.mk
+++ b/keyboards/aeboards/ext65/rev1/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aeboards/ext65/rev2/rules.mk b/keyboards/aeboards/ext65/rev2/rules.mk
index 2d3aaa1761..b2f7139899 100644
--- a/keyboards/aeboards/ext65/rev2/rules.mk
+++ b/keyboards/aeboards/ext65/rev2/rules.mk
@@ -5,20 +5,18 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk
index 5b5de19eed..85ec1feb66 100644
--- a/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk
+++ b/keyboards/afternoonlabs/breeze/keymaps/via/rules.mk
@@ -7,4 +7,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Support USB N-key roll over.
+NKRO_ENABLE = yes
diff --git a/keyboards/afternoonlabs/breeze/rev0/rules.mk b/keyboards/afternoonlabs/breeze/rev0/rules.mk
index d77fba8561..29c562ba0a 100644
--- a/keyboards/afternoonlabs/breeze/rev0/rules.mk
+++ b/keyboards/afternoonlabs/breeze/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/afternoonlabs/breeze/rev1/rules.mk b/keyboards/afternoonlabs/breeze/rev1/rules.mk
index 19e0f238cd..7f174335f6 100644
--- a/keyboards/afternoonlabs/breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/breeze/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/afternoonlabs/gust/rev1/rules.mk b/keyboards/afternoonlabs/gust/rev1/rules.mk
index 958a30e948..b33e485f99 100644
--- a/keyboards/afternoonlabs/gust/rev1/rules.mk
+++ b/keyboards/afternoonlabs/gust/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
index a66da7d65e..bad16e0237 100644
--- a/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/oceanbreeze/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk
index 51cdf0b040..414d019d98 100644
--- a/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk
+++ b/keyboards/afternoonlabs/southern_breeze/keymaps/default/rules.mk
@@ -6,4 +6,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Support USB N-key roll over.
+NKRO_ENABLE = yes
diff --git a/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk
index 5b5de19eed..85ec1feb66 100644
--- a/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk
+++ b/keyboards/afternoonlabs/southern_breeze/keymaps/via/rules.mk
@@ -7,4 +7,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Support USB N-key roll over.
+NKRO_ENABLE = yes
diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
index d77fba8561..29c562ba0a 100644
--- a/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/southern_breeze/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk
index 51cdf0b040..414d019d98 100644
--- a/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk
+++ b/keyboards/afternoonlabs/summer_breeze/keymaps/default/rules.mk
@@ -6,4 +6,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Support USB N-key roll over.
+NKRO_ENABLE = yes
diff --git a/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk
index 5b5de19eed..85ec1feb66 100644
--- a/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk
+++ b/keyboards/afternoonlabs/summer_breeze/keymaps/via/rules.mk
@@ -7,4 +7,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Support USB N-key roll over.
+NKRO_ENABLE = yes
diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
index d77fba8561..29c562ba0a 100644
--- a/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
+++ b/keyboards/afternoonlabs/summer_breeze/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/andromeda/config.h b/keyboards/ai03/andromeda/config.h
index e04fb8a56f..f88eb02123 100644
--- a/keyboards/ai03/andromeda/config.h
+++ b/keyboards/ai03/andromeda/config.h
@@ -41,3 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
+
+#define LED_CAPS_LOCK_PIN A2
+#define LED_SCROLL_LOCK_PIN A1
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk
index f68afca696..fd44980786 100644
--- a/keyboards/ai03/andromeda/rules.mk
+++ b/keyboards/ai03/andromeda/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/equinox/keymaps/default/keymap.c b/keyboards/ai03/equinox/keymaps/default/keymap.c
index 3c2ae4d1a3..a7c358a37a 100644
--- a/keyboards/ai03/equinox/keymaps/default/keymap.c
+++ b/keyboards/ai03/equinox/keymaps/default/keymap.c
@@ -14,12 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-/*
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K304, K306, K308, K309, K310, K311 \
-*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( /* Base */
diff --git a/keyboards/ai03/equinox/keymaps/via/keymap.c b/keyboards/ai03/equinox/keymaps/via/keymap.c
index a3dc67bb83..e0da041f79 100644
--- a/keyboards/ai03/equinox/keymaps/via/keymap.c
+++ b/keyboards/ai03/equinox/keymaps/via/keymap.c
@@ -14,12 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-/*
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
- K300, K301, K302, K304, K306, K308, K309, K310, K311 \
-*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( /* Base */
diff --git a/keyboards/ai03/equinox/rev0/rules.mk b/keyboards/ai03/equinox/rev0/rules.mk
index 7d36ae3c45..9d7635000a 100644
--- a/keyboards/ai03/equinox/rev0/rules.mk
+++ b/keyboards/ai03/equinox/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/equinox/rev1/rules.mk b/keyboards/ai03/equinox/rev1/rules.mk
index 7d36ae3c45..9d7635000a 100644
--- a/keyboards/ai03/equinox/rev1/rules.mk
+++ b/keyboards/ai03/equinox/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/jp60/rules.mk b/keyboards/ai03/jp60/rules.mk
index 2dcf0bf77c..c37bcf9b2f 100644
--- a/keyboards/ai03/jp60/rules.mk
+++ b/keyboards/ai03/jp60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/lunar/rules.mk b/keyboards/ai03/lunar/rules.mk
index 3c536c4ba4..3305f83bb5 100644
--- a/keyboards/ai03/lunar/rules.mk
+++ b/keyboards/ai03/lunar/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/orbit/keymaps/default/keymap.c b/keyboards/ai03/orbit/keymaps/default/keymap.c
index 6d4eef27c7..fa383d7c00 100644
--- a/keyboards/ai03/orbit/keymaps/default/keymap.c
+++ b/keyboards/ai03/orbit/keymaps/default/keymap.c
@@ -23,24 +23,24 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- TO(1), KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_BSPC, \
- TO(1), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, KC_BSLS, \
- KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_NO, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_PSCR, KC_DEL, \
+ TO(1), KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_BSPC,
+ TO(1), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, KC_BSLS,
+ KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_NO, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_PSCR, KC_DEL,
KC_LCTL, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_GRV, KC_MENU, KC_MINS, KC_EQL
),
[1] = LAYOUT( /* Fn, Arrowkeys, Media control, Backlight */
- TO(2), _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLU, _______, \
- TO(2), _______, _______, KC_PGUP, _______, _______, KC_F11, KC_F12, _______, KC_UP, _______, _______, KC_VOLD, BL_STEP, \
- TO(0), _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MPLY, _______, \
- TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
+ TO(2), _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLU, _______,
+ TO(2), _______, _______, KC_PGUP, _______, _______, KC_F11, KC_F12, _______, KC_UP, _______, _______, KC_VOLD, BL_STEP,
+ TO(0), _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MPLY, _______,
+ TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT( /* Mousekeys and Numpad */
- KC_NO, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, _______, \
- KC_NO, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______, \
- TO(1), _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______, \
- TO(1), _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_BTN3, _______, DBLZERO, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, _______, MANUAL, \
+ KC_NO, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, _______,
+ KC_NO, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______,
+ TO(1), _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______,
+ TO(1), _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_BTN3, _______, DBLZERO, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, _______, MANUAL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/ai03/orbit/rules.mk b/keyboards/ai03/orbit/rules.mk
index fc66f9f6d0..f98e2382f1 100644
--- a/keyboards/ai03/orbit/rules.mk
+++ b/keyboards/ai03/orbit/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/orbit_x/keymaps/default/keymap.c b/keyboards/ai03/orbit_x/keymaps/default/keymap.c
index 6b62d2a748..619310bd6a 100644
--- a/keyboards/ai03/orbit_x/keymaps/default/keymap.c
+++ b/keyboards/ai03/orbit_x/keymaps/default/keymap.c
@@ -23,13 +23,6 @@ enum layer_names {
_FN
};
-/*
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
-*/
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
diff --git a/keyboards/ai03/orbit_x/keymaps/via/keymap.c b/keyboards/ai03/orbit_x/keymaps/via/keymap.c
index 90a8ef7663..efab115038 100644
--- a/keyboards/ai03/orbit_x/keymaps/via/keymap.c
+++ b/keyboards/ai03/orbit_x/keymaps/via/keymap.c
@@ -23,13 +23,6 @@ enum layer_names {
_FN
};
-/*
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
-*/
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
diff --git a/keyboards/ai03/orbit_x/rules.mk b/keyboards/ai03/orbit_x/rules.mk
index 269b3cb4f4..3a4ae980b0 100644
--- a/keyboards/ai03/orbit_x/rules.mk
+++ b/keyboards/ai03/orbit_x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/polaris/rules.mk b/keyboards/ai03/polaris/rules.mk
index 4fe9f0b6e3..235f02969b 100644
--- a/keyboards/ai03/polaris/rules.mk
+++ b/keyboards/ai03/polaris/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/quasar/keymaps/default/keymap.c b/keyboards/ai03/quasar/keymaps/default/keymap.c
index 0d871d9251..8d3d2e4358 100644
--- a/keyboards/ai03/quasar/keymaps/default/keymap.c
+++ b/keyboards/ai03/quasar/keymaps/default/keymap.c
@@ -15,16 +15,6 @@
*/
#include QMK_KEYBOARD_H
-
-/*
- * K702, K503, K504, K604, K704, K706, K708, K609, K509, K506, K406, K411, K412, K415, K315, K114, \
- * K502, K402, K403, K404, K405, K505, K507, K407, K408, K409, K410, K510, K508, K606, K512, K514, K513, \
- * K602, K302, K303, K304, K305, K605, K607, K307, K308, K309, K310, K610, K608, K206, K511, K414, K413, \
- * K603, K202, K203, K204, K205, K705, K707, K207, K208, K209, K210, K710, K106, \
- * K601, K102, K103, K104, K105, K005, K007, K107, K108, K109, K010, K101, K714, \
- * K500, K715, K006, K015, K100, K014, K011, K012 \
- */
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
diff --git a/keyboards/ai03/quasar/rules.mk b/keyboards/ai03/quasar/rules.mk
index 799a157df9..0a33c7213c 100644
--- a/keyboards/ai03/quasar/rules.mk
+++ b/keyboards/ai03/quasar/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/soyuz/keymaps/default/keymap.c b/keyboards/ai03/soyuz/keymaps/default/keymap.c
index c145fc3b52..830d4ea3e3 100644
--- a/keyboards/ai03/soyuz/keymaps/default/keymap.c
+++ b/keyboards/ai03/soyuz/keymaps/default/keymap.c
@@ -17,10 +17,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_5x4( /* Base */
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_P0, KC_PDOT, KC_PENT \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/ai03/soyuz/rules.mk b/keyboards/ai03/soyuz/rules.mk
index ff29dfaf49..1d7270bb01 100644
--- a/keyboards/ai03/soyuz/rules.mk
+++ b/keyboards/ai03/soyuz/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/vega/rules.mk b/keyboards/ai03/vega/rules.mk
index f68afca696..fd44980786 100644
--- a/keyboards/ai03/vega/rules.mk
+++ b/keyboards/ai03/vega/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ai03/voyager60_alps/rules.mk b/keyboards/ai03/voyager60_alps/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/ai03/voyager60_alps/rules.mk
+++ b/keyboards/ai03/voyager60_alps/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ajisai74/rules.mk b/keyboards/ajisai74/rules.mk
index 0ce4c12edd..8f9772df22 100644
--- a/keyboards/ajisai74/rules.mk
+++ b/keyboards/ajisai74/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/akb/eb46/rules.mk b/keyboards/akb/eb46/rules.mk
index 5c194d1aeb..717cc07b4b 100644
--- a/keyboards/akb/eb46/rules.mk
+++ b/keyboards/akb/eb46/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/akb/raine/rules.mk b/keyboards/akb/raine/rules.mk
index 5c194d1aeb..717cc07b4b 100644
--- a/keyboards/akb/raine/rules.mk
+++ b/keyboards/akb/raine/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/akegata_denki/device_one/rules.mk b/keyboards/akegata_denki/device_one/rules.mk
index ec74cb2e80..e049b06252 100644
--- a/keyboards/akegata_denki/device_one/rules.mk
+++ b/keyboards/akegata_denki/device_one/rules.mk
@@ -6,7 +6,7 @@ BOARD = ST_NUCLEO32_F042K6
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
@@ -14,7 +14,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
LAYOUTS = 60_ansi 60_iso
diff --git a/keyboards/al1/rules.mk b/keyboards/al1/rules.mk
index 41c696a043..670712f661 100644
--- a/keyboards/al1/rules.mk
+++ b/keyboards/al1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aleblazer/zodiark/rules.mk b/keyboards/aleblazer/zodiark/rules.mk
index b91bc280ec..5f68f998d3 100644
--- a/keyboards/aleblazer/zodiark/rules.mk
+++ b/keyboards/aleblazer/zodiark/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aleth42/rev0/rules.mk b/keyboards/aleth42/rev0/rules.mk
index 52fc79e2b1..fd5789116d 100644
--- a/keyboards/aleth42/rev0/rules.mk
+++ b/keyboards/aleth42/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
diff --git a/keyboards/aleth42/rev1/rules.mk b/keyboards/aleth42/rev1/rules.mk
index 423adb206a..5ff179b0eb 100644
--- a/keyboards/aleth42/rev1/rules.mk
+++ b/keyboards/aleth42/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
diff --git a/keyboards/alf/dc60/keymaps/default/config.h b/keyboards/alf/dc60/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/alf/dc60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/alf/dc60/rules.mk b/keyboards/alf/dc60/rules.mk
index 4fe63f4f8b..8434db38dd 100644
--- a/keyboards/alf/dc60/rules.mk
+++ b/keyboards/alf/dc60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/alf/x11/keymaps/default/config.h b/keyboards/alf/x11/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/alf/x11/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/alf/x11/rules.mk b/keyboards/alf/x11/rules.mk
index b38b4e961a..d1f8584cb9 100644
--- a/keyboards/alf/x11/rules.mk
+++ b/keyboards/alf/x11/rules.mk
@@ -12,11 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/alf/x2/rules.mk b/keyboards/alf/x2/rules.mk
index 5635a02825..b27013f863 100644
--- a/keyboards/alf/x2/rules.mk
+++ b/keyboards/alf/x2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/alfredslab/swift65/solder/rules.mk b/keyboards/alfredslab/swift65/solder/rules.mk
index 776f7f0f2d..374b6c8b4a 100644
--- a/keyboards/alfredslab/swift65/solder/rules.mk
+++ b/keyboards/alfredslab/swift65/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/alicia_cook/alicia_cook.c b/keyboards/alicia_cook/alicia_cook.c
new file mode 100644
index 0000000000..39f17e4a7d
--- /dev/null
+++ b/keyboards/alicia_cook/alicia_cook.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "alicia_cook.h"
diff --git a/keyboards/alicia_cook/alicia_cook.h b/keyboards/alicia_cook/alicia_cook.h
new file mode 100644
index 0000000000..35c803b3ae
--- /dev/null
+++ b/keyboards/alicia_cook/alicia_cook.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k3b, k3c \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c }, \
+ { k30, k31, XXX, k33, k34, k35, k36, k37, k38, XXX, XXX, k3b, k3c } \
+}
diff --git a/keyboards/alicia_cook/config.h b/keyboards/alicia_cook/config.h
new file mode 100644
index 0000000000..28db5f3420
--- /dev/null
+++ b/keyboards/alicia_cook/config.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2021 Ibnu D. Aji
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6955
+#define DEVICE_VER 0x0899
+#define MANUFACTURER Ibnu D. Aji
+#define PRODUCT Alicia Cook
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 13
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D2, D3, F4, F5 }
+#define MATRIX_COL_PINS { B5, F6, F7, B1, B3, B2, B4, E6, D7, C6, D4, D0, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alicia_cook/info.json b/keyboards/alicia_cook/info.json
new file mode 100644
index 0000000000..c07be77190
--- /dev/null
+++ b/keyboards/alicia_cook/info.json
@@ -0,0 +1,62 @@
+{
+ "keyboard_name": "Alicia Cook",
+ "url": "https://github.com/ibnuda/alicia-cook",
+ "maintainer": "ibnuda",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0,"y":0},
+ {"x":1,"y":0},
+ {"x":2,"y":0},
+ {"x":3,"y":0},
+ {"x":4,"y":0},
+ {"x":5,"y":0},
+ {"x":7,"y":0},
+ {"x":8,"y":0},
+ {"x":9,"y":0},
+ {"x":10,"y":0},
+ {"x":11,"y":0},
+ {"x":12,"y":0},
+ {"x":13,"y":0},
+
+ {"x":0,"y":1,"w":1.25},
+ {"x":1.25,"y":1},
+ {"x":2.25,"y":1},
+ {"x":3.25,"y":1},
+ {"x":4.25,"y":1},
+ {"x":5.25,"y":1},
+ {"x":7.25,"y":1},
+ {"x":8.25,"y":1},
+ {"x":9.25,"y":1},
+ {"x":10.25,"y":1},
+ {"x":11.25,"y":1},
+ {"x":12.25,"y":1,"w":1.75},
+
+ {"x":0,"y":2,"w":1.75},
+ {"x":1.75,"y":2},
+ {"x":2.75,"y":2},
+ {"x":3.75,"y":2},
+ {"x":4.75,"y":2},
+ {"x":5.75,"y":2},
+ {"x":6.75,"y":2},
+ {"x":7.75,"y":2},
+ {"x":8.75,"y":2},
+ {"x":9.75,"y":2},
+ {"x":10.75,"y":2},
+ {"x":11.75,"y":2},
+ {"x":12.75,"y":2,"w":1.25},
+
+ {"x":0,"y":3,"w":1.25},
+ {"x":1.25,"y":3,"w":1.25},
+ {"x":3.5,"y":3,"w":1.25},
+ {"x":4.75,"y":3},
+ {"x":5.75,"y":3},
+ {"x":6.75,"y":3,"w":1.25},
+ {"x":8,"y":3},
+ {"x":9,"y":3,"w":1.25},
+ {"x":11.5,"y":3,"w":1.25},
+ {"x":12.75,"y":3,"w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/alicia_cook/keymaps/default/keymap.c b/keyboards/alicia_cook/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c28967f381
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/*
+Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#define LW_BSPC LT(2, KC_BSPC)
+#define RS_SPC LT(1, KC_SPC)
+
+#define ALT_ENT ALT_T(KC_ENT)
+#define SFT_ESC SFT_T(KC_ESC)
+
+// home row mods.
+#define CT_S RCTL_T(KC_S)
+#define CT_L RCTL_T(KC_L)
+#define SH_A RSFT_T(KC_A)
+#define SH_SCLN RSFT_T(KC_SCLN)
+#define AL_D RALT_T(KC_D)
+#define AL_K RALT_T(KC_K)
+#define GU_G RGUI_T(KC_G)
+#define GU_H RGUI_T(KC_H)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_LCTL,SH_A, CT_S, AL_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_SCLN,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,MO(1),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+ [1] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC,
+ KC_LCTL,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, KC_SCLN,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,MO(2),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+ [2] = LAYOUT_all(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+ KC_LCTL,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, KC_SCLN,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, RESET, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,MO(1),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+};
diff --git a/keyboards/alicia_cook/keymaps/default/readme.md b/keyboards/alicia_cook/keymaps/default/readme.md
new file mode 100644
index 0000000000..18f516f6fb
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for alicia_cook
diff --git a/keyboards/alicia_cook/keymaps/rick/config.h b/keyboards/alicia_cook/keymaps/rick/config.h
new file mode 100644
index 0000000000..fc9cdfe786
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/rick/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define COMBO_TERM 50
+#define COMBO_COUNT 50
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
+#define TAPPING_TERM 175
+#define TAPPING_TERM 175
diff --git a/keyboards/alicia_cook/keymaps/rick/keymap.c b/keyboards/alicia_cook/keymaps/rick/keymap.c
new file mode 100644
index 0000000000..35e0e1db97
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/rick/keymap.c
@@ -0,0 +1,246 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#ifdef CONSOLE_ENABLE
+#include "print.h"
+#endif
+
+// enum for combos.
+enum combos {
+ // left hand combinations.
+ L_U_PINKY_RING,
+ L_U_RING_MIDDLE,
+ L_U_RING_INDEX,
+ L_U_MIDDLE_INDEX,
+ L_U_MIDDLE_INNER_INDEX,
+ L_U_INDEX_INNER_INDEX,
+ L_L_PINKY_RING,
+ L_L_RING_MIDDLE,
+ L_L_RING_INDEX,
+ L_L_MIDDLE_INDEX,
+ L_L_INDEX_INNER_INDEX,
+
+ L_U_RING_MIDDLE_INDEX,
+ L_L_RING_MIDDLE_INDEX,
+
+ // right hand combinations.
+ R_U_PINKY_RING,
+ R_U_RING_MIDDLE,
+ R_U_RING_INDEX,
+ R_U_MIDDLE_INDEX,
+ R_U_MIDDLE_INNER_INDEX,
+ R_U_INNER_INNER_INDEX,
+ R_L_PINKY_RING,
+ R_L_RING_MIDDLE,
+ R_L_MIDDLE_INDEX,
+ R_L_RING_INDEX,
+ R_L_INDEX_INNER_INDEX,
+
+ R_U_RING_MIDDLE_INDEX,
+ R_L_RING_MIDDLE_INDEX,
+
+ // both hands combinations.
+ B_L_MIDDLE_MIDDLE,
+};
+
+enum {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ BASE = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+};
+
+// keycode abstraction
+#define LUP KC_Q
+#define LUR KC_V
+#define LUM KC_C
+#define LUI KC_P
+#define LUII KC_B
+#define LMP KC_R
+#define LMR KC_S
+#define LMM KC_T
+#define LMI KC_H
+#define LMII KC_D
+#define LLP KC_QUOT
+#define LLR KC_J
+#define LLM KC_G
+#define LLI KC_K
+#define LLII KC_X
+
+#define RUP KC_Z
+#define RUR KC_Y
+#define RUM KC_U
+#define RUI KC_L
+#define RUII KC_DOT
+#define RMP KC_O
+#define RMR KC_I
+#define RMM KC_A
+#define RMI KC_N
+#define RMII KC_F
+#define RLP KC_SLSH
+#define RLR KC_COMM
+#define RLM KC_W
+#define RLI KC_M
+#define RLII KC_SCLN
+
+// thumb keys.
+#define TRAISE TG(_RAISE)
+#define AL_ENT ALT_T(KC_ENT)
+#define SF_BSPC SFT_T(KC_BSPC)
+#define CT_ESC CTL_T(KC_ESC)
+
+// home row mods.
+#define CTLR LCTL_T(LMR)
+#define CTRR RCTL_T(RMR)
+#define CT_LEFT LCTL_T(KC_LEFT)
+#define CT_SIX RCTL_T(KC_6)
+
+#define SHLP LSFT_T(LMP)
+#define SHRP RSFT_T(RMP)
+#define SH_HASH LSFT_T(KC_HASH)
+#define SH_ZERO RSFT_T(KC_0)
+
+#define ALLM LALT_T(LMM)
+#define ALRM RALT_T(RMM)
+#define AL_DOWN LALT_T(KC_DOWN)
+#define AL_FIVE RALT_T(KC_5)
+
+#define GULII RGUI_T(LMII)
+#define GURII LGUI_T(RMII)
+#define GU_DLR RGUI_T(KC_DLR)
+#define GU_EQL LGUI_T(KC_EQL)
+
+// layer toggle.
+#define LW_E LT(_LOWER, KC_E)
+#define RS_SPC LT(_RAISE, KC_SPC)
+#define LW_RMI LT(_LOWER, RMI)
+#define RS_LMI LT(_RAISE, LMI)
+
+// idk, man. not used, i guess.
+#define ADDDD MO(_ADJUST)
+
+// common shortcuts for windows and linux that i use.
+#define NXTTAB LCTL(KC_PGDN)
+#define PRVTAB LCTL(KC_PGUP)
+#define UPTAB LCTL(LSFT(KC_PGUP))
+#define DNTAB LCTL(LSFT(KC_PGDN))
+#define NXTWIN LALT(KC_TAB)
+#define PRVWIN LALT(LSFT(KC_TAB))
+#define CALDL LCTL(LALT(KC_DELT))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+#define EXPLR LGUI(KC_E)
+#define LCKGUI LGUI(KC_L)
+#define CONPST LSFT(KC_INS)
+#define CLSGUI LALT(KC_F4)
+
+// left hand combinations.
+const uint16_t PROGMEM lu_p_r_combo[] = {LUP, LUR, COMBO_END};
+const uint16_t PROGMEM lu_r_m_combo[] = {LUR, LUM, COMBO_END};
+const uint16_t PROGMEM lu_r_i_combo[] = {LUR, LUI, COMBO_END};
+const uint16_t PROGMEM lu_m_i_combo[] = {LUM, LUI, COMBO_END};
+const uint16_t PROGMEM lu_m_ii_combo[] = {LUM, LUII, COMBO_END};
+const uint16_t PROGMEM lu_i_ii_combo[] = {LUI, LUII, COMBO_END};
+const uint16_t PROGMEM ll_p_r_combo[] = {LLP, LLR, COMBO_END};
+const uint16_t PROGMEM ll_r_m_combo[] = {LLR, LLM, COMBO_END};
+const uint16_t PROGMEM ll_r_i_combo[] = {LLR, LLI, COMBO_END};
+const uint16_t PROGMEM ll_m_i_combo[] = {LLM, LLI, COMBO_END};
+const uint16_t PROGMEM ll_i_ii_combo[] = {LLI, LLII, COMBO_END};
+
+const uint16_t PROGMEM lu_r_m_i_combo[] = {LUR, LUM, LUI, COMBO_END};
+const uint16_t PROGMEM ll_r_m_i_combo[] = {LLR, LLM, LLI, COMBO_END};
+
+// right hand combinations.
+const uint16_t PROGMEM ru_p_r_combo[] = {RUP, RUR, COMBO_END};
+const uint16_t PROGMEM ru_r_m_combo[] = {RUR, RUM, COMBO_END};
+const uint16_t PROGMEM ru_r_i_combo[] = {RUR, RUI, COMBO_END};
+const uint16_t PROGMEM ru_m_i_combo[] = {RUM, RUI, COMBO_END};
+const uint16_t PROGMEM ru_m_ii_combo[] = {RUM, RUII, COMBO_END};
+const uint16_t PROGMEM ru_i_ii_combo[] = {RUI, RUII, COMBO_END};
+const uint16_t PROGMEM rl_p_r_combo[] = {RLP, RLR, COMBO_END};
+const uint16_t PROGMEM rl_r_m_combo[] = {RLR, RLM, COMBO_END};
+const uint16_t PROGMEM rl_r_i_combo[] = {RLR, RLI, COMBO_END};
+const uint16_t PROGMEM rl_m_i_combo[] = {RLM, RLI, COMBO_END};
+const uint16_t PROGMEM rl_i_ii_combo[] = {RLI, RLII, COMBO_END};
+
+const uint16_t PROGMEM ru_r_m_i_combo[] = {RUR, RUM, RUI, COMBO_END};
+const uint16_t PROGMEM rl_r_m_i_combo[] = {RLR, RLM, RLI, COMBO_END};
+
+// both hand combinations.
+const uint16_t PROGMEM bl_m_m_combo[] = {LLM, RLM, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ // left hand combinations.
+ [L_U_PINKY_RING] = COMBO(lu_p_r_combo, KC_TAB),
+ [L_U_RING_MIDDLE] = COMBO(lu_r_m_combo, KC_QUES),
+ [L_U_RING_INDEX] = COMBO(lu_r_i_combo, PRVTAB),
+ [L_U_MIDDLE_INDEX] = COMBO(lu_m_i_combo, KC_UNDS),
+ [L_U_MIDDLE_INNER_INDEX] = COMBO(lu_m_ii_combo, KC_ENT),
+ [L_U_INDEX_INNER_INDEX] = COMBO(lu_i_ii_combo, KC_PIPE),
+ [L_L_PINKY_RING] = COMBO(ll_p_r_combo, KC_ENT),
+ [L_L_RING_MIDDLE] = COMBO(ll_r_m_combo, LCTL(KC_W)),
+ [L_L_RING_INDEX] = COMBO(ll_r_i_combo, KC_TAB),
+ [L_L_MIDDLE_INDEX] = COMBO(ll_m_i_combo, KC_DELT),
+ [L_L_INDEX_INNER_INDEX] = COMBO(ll_i_ii_combo, KC_TILD),
+
+ [L_U_RING_MIDDLE_INDEX] = COMBO(lu_r_m_i_combo, KC_PIPE),
+ [L_L_RING_MIDDLE_INDEX] = COMBO(ll_r_m_i_combo, KC_TILD),
+
+ // right hand combinations.
+ [R_U_PINKY_RING] = COMBO(ru_p_r_combo, KC_BSPC),
+ [R_U_RING_MIDDLE] = COMBO(ru_r_m_combo, KC_SLSH),
+ [R_U_RING_INDEX] = COMBO(ru_r_i_combo, NXTTAB),
+ [R_U_MIDDLE_INDEX] = COMBO(ru_m_i_combo, KC_MINS),
+ [R_U_MIDDLE_INNER_INDEX] = COMBO(ru_m_ii_combo, KC_ENT),
+ [R_U_INNER_INNER_INDEX] = COMBO(ru_i_ii_combo, KC_BSLS),
+ [R_L_PINKY_RING] = COMBO(rl_p_r_combo, KC_BSLS),
+ [R_L_RING_MIDDLE] = COMBO(rl_r_m_combo, KC_APP),
+ [R_L_RING_INDEX] = COMBO(rl_r_i_combo, LSFT(KC_TAB)),
+ [R_L_MIDDLE_INDEX] = COMBO(rl_m_i_combo, KC_DELT),
+ [R_L_INDEX_INNER_INDEX] = COMBO(rl_i_ii_combo, KC_GRV),
+
+ [R_U_RING_MIDDLE_INDEX] = COMBO(ru_r_m_i_combo, KC_BSLS),
+ [R_L_RING_MIDDLE_INDEX] = COMBO(rl_r_m_i_combo, KC_GRV),
+
+ // both hand combinations.
+ [B_L_MIDDLE_MIDDLE] = COMBO(bl_m_m_combo, KC_ENT),
+};
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, LUP, LUR, LUM, LUI, LUII, RUII, RUI, RUM, RUR, RUP, KC_BSPC, KC_BSPC,
+ KC_LCTL,SHLP, CTLR, ALLM, RS_LMI, GULII, GURII, LW_RMI, ALRM, CTRR, SHRP, KC_ENT,
+ KC_LSFT,LLP, LLR, LLM, LLI, LLII, RLII, RLI, RLM, RLR, RLP, KC_RSFT,MO(1),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_E, SF_BSPC, AL_ENT, RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+ [1] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC,
+ KC_LCTL,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, KC_SCLN,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,MO(2),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_E, SF_BSPC, AL_ENT, RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+ [2] = LAYOUT_all(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+ KC_LCTL,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, KC_SCLN,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, RESET, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,MO(1),
+ KC_LGUI,KC_LALT, KC_LGUI,LW_E, SF_BSPC, AL_ENT, RS_SPC, KC_LALT, KC_RGUI,KC_RCTL
+ ),
+};
diff --git a/keyboards/alicia_cook/keymaps/rick/readme.md b/keyboards/alicia_cook/keymaps/rick/readme.md
new file mode 100644
index 0000000000..2bfb2a96fa
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/rick/readme.md
@@ -0,0 +1 @@
+# Rick's Keymap for Alicia Cook
diff --git a/keyboards/alicia_cook/keymaps/rick/rules.mk b/keyboards/alicia_cook/keymaps/rick/rules.mk
new file mode 100644
index 0000000000..6ecc620954
--- /dev/null
+++ b/keyboards/alicia_cook/keymaps/rick/rules.mk
@@ -0,0 +1,2 @@
+COMBO_ENABLE = yes
+CONSOLE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/alicia_cook/readme.md b/keyboards/alicia_cook/readme.md
new file mode 100644
index 0000000000..4e37a366e7
--- /dev/null
+++ b/keyboards/alicia_cook/readme.md
@@ -0,0 +1,26 @@
+# Alicia Cook
+
+![Alicia Cook](https://raw.githubusercontent.com/ibnuda/alicia-cook/master-of-puppets/alicia-cook.jpg)
+
+40% Alice-style keyboard that can be split and uses IDC connector.
+
+* Keyboard Maintainer: [Ibnu D. Aji](https://github.com/ibnuda)
+* Hardware Supported: [Alicia Cook](https://github.com/ibnuda/alicia-cook)
+* Hardware Availability: [Alicia Cook](https://github.com/ibnuda/alicia-cook)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make alicia_cook:default
+
+Flashing example for this keyboard:
+
+ make alicia_cook:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+To enter the bootloader, there's only one way to do it:
+
+* **Keycode in layout**: Hold left spacebar and then tap `B` key in the default keymap.
+
diff --git a/keyboards/alicia_cook/rules.mk b/keyboards/alicia_cook/rules.mk
new file mode 100644
index 0000000000..f35bef0a63
--- /dev/null
+++ b/keyboards/alicia_cook/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/allison/rules.mk b/keyboards/allison/rules.mk
index 5f180ae00d..1c4073c9ce 100644
--- a/keyboards/allison/rules.mk
+++ b/keyboards/allison/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/allison_numpad/rules.mk b/keyboards/allison_numpad/rules.mk
index 3e72995f71..3bf8aba9f4 100644
--- a/keyboards/allison_numpad/rules.mk
+++ b/keyboards/allison_numpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/alpha/rules.mk b/keyboards/alpha/rules.mk
index c6fa214089..e1a53a1521 100755
--- a/keyboards/alpha/rules.mk
+++ b/keyboards/alpha/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/alpine65/rules.mk b/keyboards/alpine65/rules.mk
index 70187a2491..5b7d4e4de4 100644
--- a/keyboards/alpine65/rules.mk
+++ b/keyboards/alpine65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = no
diff --git a/keyboards/alps64/keymaps/default/keymap.c b/keyboards/alps64/keymaps/default/keymap.c
index 72d29a06fe..e307cf742f 100644
--- a/keyboards/alps64/keymaps/default/keymap.c
+++ b/keyboards/alps64/keymaps/default/keymap.c
@@ -2,11 +2,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: qwerty */
- LAYOUT_all( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NUHS, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_ESC, \
+ LAYOUT_all(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NUHS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_ESC,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_APP, KC_RALT, KC_RGUI, KC_RCTL
),
};
diff --git a/keyboards/alps64/rules.mk b/keyboards/alps64/rules.mk
index 4eee16c408..347d50f26d 100644
--- a/keyboards/alps64/rules.mk
+++ b/keyboards/alps64/rules.mk
@@ -5,14 +5,13 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# change to no to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = no # Enable N-Key Rollover
LAYOUTS = 60_ansi
diff --git a/keyboards/alu84/rules.mk b/keyboards/alu84/rules.mk
index 90e8db917e..323c6a1b87 100755
--- a/keyboards/alu84/rules.mk
+++ b/keyboards/alu84/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
LAYOUTS = 75_ansi
diff --git a/keyboards/amag23/keymaps/via/keymap.c b/keyboards/amag23/keymaps/via/keymap.c
new file mode 100644
index 0000000000..aa248a039c
--- /dev/null
+++ b/keyboards/amag23/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2022
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ BASE,
+ FN1,
+ FN2,
+ FN3
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC
+ ),
+ [FN1] = LAYOUT_all(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ _______, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, _______,
+ _______, _______, RGB_VAD, RGB_RMOD,RGB_HUD, _______,
+ _______, _______, _______, _______, _______
+ ),
+ [FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+ [FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+};
+// clang-format on
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk b/keyboards/amag23/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/rules.mk
+++ b/keyboards/amag23/keymaps/via/rules.mk
diff --git a/keyboards/amag23/rules.mk b/keyboards/amag23/rules.mk
index 8f11a2b9f1..517e4cd38d 100644
--- a/keyboards/amag23/rules.mk
+++ b/keyboards/amag23/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk
index aeff331e7e..b27013f863 100755
--- a/keyboards/amj40/rules.mk
+++ b/keyboards/amj40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/amj60/rules.mk b/keyboards/amj60/rules.mk
index d24abe0b06..602667e948 100644
--- a/keyboards/amj60/rules.mk
+++ b/keyboards/amj60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/amj96/rules.mk b/keyboards/amj96/rules.mk
index f780706a0e..9e9f03f764 100644
--- a/keyboards/amj96/rules.mk
+++ b/keyboards/amj96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/amjkeyboard/amj66/keymaps/default/config.h b/keyboards/amjkeyboard/amj66/keymaps/default/config.h
deleted file mode 100644
index 6d42fc568a..0000000000
--- a/keyboards/amjkeyboard/amj66/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Alex Peters
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/amjkeyboard/amj66/rules.mk b/keyboards/amjkeyboard/amj66/rules.mk
index 550796f861..04386dd84c 100644
--- a/keyboards/amjkeyboard/amj66/rules.mk
+++ b/keyboards/amjkeyboard/amj66/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/amjkeyboard/amj84/amj84.c b/keyboards/amjkeyboard/amj84/amj84.c
new file mode 100644
index 0000000000..49116c48c3
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/amj84.c
@@ -0,0 +1,4 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "amj84.h"
diff --git a/keyboards/amjkeyboard/amj84/amj84.h b/keyboards/amjkeyboard/amj84/amj84.h
new file mode 100644
index 0000000000..19718da8cd
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/amj84.h
@@ -0,0 +1,30 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K50, K51, K52, K55, K58, K59, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52,KC_NO,KC_NO,K55,KC_NO,KC_NO,K58,K59,K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/amjkeyboard/amj84/config.h b/keyboards/amjkeyboard/amj84/config.h
new file mode 100644
index 0000000000..279d1268e8
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/config.h
@@ -0,0 +1,112 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00D8 //A+M+J
+#define PRODUCT_ID 0x6068
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Han Chen
+#define PRODUCT AMJ84
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D0, F7, F6, F5, F4, D5 }
+#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B2
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/amjkeyboard/amj84/info.json b/keyboards/amjkeyboard/amj84/info.json
new file mode 100644
index 0000000000..484823fcca
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "AMJ84",
+ "maintainer": "peepeetee",
+ "url": "",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 15, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+ { "w": 2, "x": 13, "y": 1 },
+ { "x": 15, "y": 1 },
+ { "w": 1.5, "x": 0, "y": 2 },
+ { "x": 1.5, "y": 2 },
+ { "x": 2.5, "y": 2 },
+ { "x": 3.5, "y": 2 },
+ { "x": 4.5, "y": 2 },
+ { "x": 5.5, "y": 2 },
+ { "x": 6.5, "y": 2 },
+ { "x": 7.5, "y": 2 },
+ { "x": 8.5, "y": 2 },
+ { "x": 9.5, "y": 2 },
+ { "x": 10.5, "y": 2 },
+ { "x": 11.5, "y": 2 },
+ { "x": 12.5, "y": 2 },
+ { "w": 1.5, "x": 13.5, "y": 2 },
+ { "x": 15, "y": 2 },
+ { "w": 1.75, "x": 0, "y": 3 },
+ { "x": 1.75, "y": 3 },
+ { "x": 2.75, "y": 3 },
+ { "x": 3.75, "y": 3 },
+ { "x": 4.75, "y": 3 },
+ { "x": 5.75, "y": 3 },
+ { "x": 6.75, "y": 3 },
+ { "x": 7.75, "y": 3 },
+ { "x": 8.75, "y": 3 },
+ { "x": 9.75, "y": 3 },
+ { "x": 10.75, "y": 3 },
+ { "x": 11.75, "y": 3 },
+ { "x": 12.75, "y": 3 },
+ { "w": 1.25, "x": 13.75, "y": 3 },
+ { "x": 15, "y": 3 },
+ { "w": 2.25, "x": 0, "y": 4 },
+ { "x": 2.25, "y": 4 },
+ { "x": 3.25, "y": 4 },
+ { "x": 4.25, "y": 4 },
+ { "x": 5.25, "y": 4 },
+ { "x": 6.25, "y": 4 },
+ { "x": 7.25, "y": 4 },
+ { "x": 8.25, "y": 4 },
+ { "x": 9.25, "y": 4 },
+ { "x": 10.25, "y": 4 },
+ { "x": 11.25, "y": 4 },
+ { "w": 1.75, "x": 12.25, "y": 4 },
+ { "x": 14, "y": 4 },
+ { "x": 15, "y": 4 },
+ { "w": 1.25, "x": 0, "y": 5 },
+ { "w": 1.25, "x": 1.25, "y": 5 },
+ { "w": 1.25, "x": 2.5, "y": 5 },
+ { "w": 5.25, "x": 3.75, "y": 5 },
+ { "x": 9, "y": 5 },
+ { "x": 10, "y": 5 },
+ { "x": 11, "y": 5 },
+ { "x": 12, "y": 5 },
+ { "x": 13, "y": 5 },
+ { "x": 14, "y": 5 },
+ { "x": 15, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/amjkeyboard/amj84/keymaps/default/keymap.c b/keyboards/amjkeyboard/amj84/keymaps/default/keymap.c
new file mode 100644
index 0000000000..11f8482352
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ /* Keymap 0: Default Layer
+ * ,----------------------------------------------------------------.
+ * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Home |Del|
+ * |------------------------------------------------------------|---|
+ * |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |PgU|
+ * |------------------------------------------------------------|---|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PgD|
+ * |------------------------------------------------------------|---|
+ * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |Ins|
+ * |------------------------------------------------------------|---|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Up |Fn0|
+ * |------------------------------------------------------------|---|
+ * |Ctrl|Win |Alt | Space |END|Alt |Ctrl|Left |Down|Rig|
+ * `----------------------------------------------------------------'
+ */
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME,KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NO, KC_ENT, KC_INS,
+ KC_LSFT,KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_UP, MO(1),
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_END, KC_NO, KC_RALT,KC_RCTL,KC_LEFT,KC_DOWN,KC_RIGHT),
+ /* Keymap 1: Fn Layer
+ * ,-----------------------------------------------------------.
+ * | `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+ * |-----------------------------------------------------------|
+ * | | |Up | | | |Cal| |Ins| |Psc|Slk|Pau| |
+ * |-----------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | | | |Hom|PgU| |
+ * |-----------------------------------------------------------|
+ * | | |App|Fn1|Fn2|Fn3|VoD|VoU|Mut|End|PgD| | |
+ * |-----------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------------'
+ */
+ [1] = LAYOUT(
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_UP, KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_TRNS,KC_INS, KC_TRNS,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS,KC_TRNS,
+ BL_BRTG,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_PGUP,KC_TRNS,KC_TRNS,KC_TRNS,
+ BL_STEP,KC_NO, KC_TRNS,KC_APP, KC_FN1, KC_FN2, KC_FN3, KC_VOLD,KC_VOLU,KC_MUTE,KC_END, KC_PGDN,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_SLEP,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS)
+
+};
diff --git a/keyboards/amjkeyboard/amj84/keymaps/default/readme.md b/keyboards/amjkeyboard/amj84/keymaps/default/readme.md
new file mode 100644
index 0000000000..9233dcbfdb
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for amj84
diff --git a/keyboards/amjkeyboard/amj84/readme.md b/keyboards/amjkeyboard/amj84/readme.md
new file mode 100644
index 0000000000..c0df110eb0
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/readme.md
@@ -0,0 +1,27 @@
+# amj84
+
+![amj84](https://i.imgur.com/oKAkyBW.jpeg)
+
+A 84 key keyboard by AMJ
+
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
+* Hardware Supported: AMJ84
+* Hardware Availability: no longer available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make amjkeyboard/amj84:default
+
+Flashing example for this keyboard:
+
+ make amjkeyboard/amj84:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/amjkeyboard/amj84/rules.mk b/keyboards/amjkeyboard/amj84/rules.mk
new file mode 100644
index 0000000000..8649486da6
--- /dev/null
+++ b/keyboards/amjkeyboard/amj84/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/amjpad/keymaps/default/keymap.c b/keyboards/amjpad/keymaps/default/keymap.c
index 1c9122c9ec..9df4317bb0 100644
--- a/keyboards/amjpad/keymaps/default/keymap.c
+++ b/keyboards/amjpad/keymaps/default/keymap.c
@@ -25,12 +25,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_BL] = LAYOUT_numpad_6x4(
- KC_ESC, KC_TAB, KC_BSPC, KC_PEQL, \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
- KC_P0, LT(_FL,KC_PDOT), KC_PENT \
+ KC_ESC, KC_TAB, KC_BSPC, KC_PEQL,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, LT(_FL,KC_PDOT), KC_PENT
),
/* Keymap _FL: Function Layer
@@ -49,11 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------'
*/
[_FL] = LAYOUT_numpad_6x4(
- KC_ESC, KC_TAB, KC_BSPC, KC_PEQL, \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, RESET, \
- KC_P1, KC_P2, KC_P3, \
- KC_P0, LT(_FL,KC_PDOT), KC_PENT \
+ KC_ESC, KC_TAB, KC_BSPC, KC_PEQL,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, RESET,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, LT(_FL,KC_PDOT), KC_PENT
),
};
diff --git a/keyboards/amjpad/rules.mk b/keyboards/amjpad/rules.mk
index e1c547fa67..c56fff39b3 100644
--- a/keyboards/amjpad/rules.mk
+++ b/keyboards/amjpad/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/anavi/macropad8/rules.mk b/keyboards/anavi/macropad8/rules.mk
index 5916e594b6..c0f0e7f857 100644
--- a/keyboards/anavi/macropad8/rules.mk
+++ b/keyboards/anavi/macropad8/rules.mk
@@ -12,12 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/angel17/alpha/rules.mk b/keyboards/angel17/alpha/rules.mk
index f52bd82b85..4ee22403e9 100644
--- a/keyboards/angel17/alpha/rules.mk
+++ b/keyboards/angel17/alpha/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/angel17/keymaps/default/config.h b/keyboards/angel17/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/angel17/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/angel17/rev1/rules.mk b/keyboards/angel17/rev1/rules.mk
index c34cd11180..d0813eb5c3 100644
--- a/keyboards/angel17/rev1/rules.mk
+++ b/keyboards/angel17/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/angel17/rules.mk b/keyboards/angel17/rules.mk
index 3ca11a92d8..6c73399ec1 100644
--- a/keyboards/angel17/rules.mk
+++ b/keyboards/angel17/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/angel64/alpha/keymaps/default/config.h b/keyboards/angel64/alpha/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/angel64/alpha/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/angel64/rev1/keymaps/default/config.h b/keyboards/angel64/rev1/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/angel64/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/angel64/rules.mk b/keyboards/angel64/rules.mk
index 473f9047be..9bf41a18cc 100644
--- a/keyboards/angel64/rules.mk
+++ b/keyboards/angel64/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/anomalykb/a65i/rules.mk b/keyboards/anomalykb/a65i/rules.mk
index 22fb8d3fe7..557477e929 100644
--- a/keyboards/anomalykb/a65i/rules.mk
+++ b/keyboards/anomalykb/a65i/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aos/tkl/rules.mk b/keyboards/aos/tkl/rules.mk
index 98872ee082..a0a1e94e36 100644
--- a/keyboards/aos/tkl/rules.mk
+++ b/keyboards/aos/tkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aozora/rules.mk b/keyboards/aozora/rules.mk
index 59dae222fb..fab20c6c97 100644
--- a/keyboards/aozora/rules.mk
+++ b/keyboards/aozora/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aplyard/aplx6/rev1/rules.mk b/keyboards/aplyard/aplx6/rev1/rules.mk
index 8097d5b399..2f485606c2 100644
--- a/keyboards/aplyard/aplx6/rev1/rules.mk
+++ b/keyboards/aplyard/aplx6/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aplyard/aplx6/rev2/config.h b/keyboards/aplyard/aplx6/rev2/config.h
index b4bb7d62ad..2b30e67e09 100644
--- a/keyboards/aplyard/aplx6/rev2/config.h
+++ b/keyboards/aplyard/aplx6/rev2/config.h
@@ -41,9 +41,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM 200
/* Encoder */
-#define ENCODERS_PAD_A { F4 }
-#define ENCODERS_PAD_B { F5 }
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F4 }
#define ENCODER_RESOLUTION 4
-#define ENCODER_DIRECTION_FLIP
#define TAP_CODE_DELAY 50
diff --git a/keyboards/aplyard/aplx6/rev2/rules.mk b/keyboards/aplyard/aplx6/rev2/rules.mk
index f016f7816f..22ada747ff 100644
--- a/keyboards/aplyard/aplx6/rev2/rules.mk
+++ b/keyboards/aplyard/aplx6/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/arabica37/keymaps/default/keymap.c b/keyboards/arabica37/keymaps/default/keymap.c
index 5a7a3c2738..92e8a46598 100644
--- a/keyboards/arabica37/keymaps/default/keymap.c
+++ b/keyboards/arabica37/keymaps/default/keymap.c
@@ -20,54 +20,54 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
+ [_QWERTY] = LAYOUT(
//,-----------------------------------------------. ,-----------------------------------------------.
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC,\
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,\
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- ADJUST, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_BSLS,\
+ ADJUST, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_BSLS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_LSFT, LOWER,KC_LGUI, KC_LALT, RAISE, KC_RSFT,\
+ KC_LSFT, LOWER,KC_LGUI, KC_LALT, RAISE, KC_RSFT,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
KC_SPC, KC_ENT
//`-----------------------------------------------' `-----------------------------------------------'
),
- [_LOWER] = LAYOUT( \
+ [_LOWER] = LAYOUT(
//,-----------------------------------------------. ,-----------------------------------------------.
- KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_TRNS,\
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_TRNS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS,KC_HOME,KC_LEFT, KC_UP,KC_RGHT,KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,\
+ KC_TRNS,KC_HOME,KC_LEFT, KC_UP,KC_RGHT,KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS, KC_END,KC_PSCR,KC_DOWN, KC_INS,KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\
+ KC_TRNS, KC_END,KC_PSCR,KC_DOWN, KC_INS,KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
KC_TRNS, KC_TRNS
//`-----------------------------------------------' `-----------------------------------------------'
),
- [_RAISE] = LAYOUT( \
+ [_RAISE] = LAYOUT(
//,-----------------------------------------------. ,-----------------------------------------------.
- KC_TRNS,KC_EXLM, KC_AT,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_PSLS,KC_PAST,KC_PMNS,KC_PPLS,KC_TRNS,\
+ KC_TRNS,KC_EXLM, KC_AT,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_PSLS,KC_PAST,KC_PMNS,KC_PPLS,KC_TRNS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS,KC_RBRC,KC_LABK,KC_ASTR,KC_SCLN,KC_LBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,\
+ KC_TRNS,KC_RBRC,KC_LABK,KC_ASTR,KC_SCLN,KC_LBRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS,KC_BSLS,KC_RABK,KC_LPRN,KC_JYEN,KC_UNDS, KC_6, KC_7, KC_8, KC_9, KC_0,KC_PENT,\
+ KC_TRNS,KC_BSLS,KC_RABK,KC_LPRN,KC_JYEN,KC_UNDS, KC_6, KC_7, KC_8, KC_9, KC_0,KC_PENT,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+--- ---+-------+-------|
- KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+--- ---+-------+-------|
KC_TRNS, KC_TRNS
//`-----------------------------------------------' `-----------------------------------------------'
),
- [_ADJUST] = LAYOUT( \
+ [_ADJUST] = LAYOUT(
//,-----------------------------------------------. ,-----------------------------------------------.
- KC_TRNS, RGBRST,RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
+ KC_TRNS, RGBRST,RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS,RGB_HUI,RGB_SAI,RGB_VAI,AG_SWAP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
+ KC_TRNS,RGB_HUI,RGB_SAI,RGB_VAI,AG_SWAP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS,RGB_HUD,RGB_SAD,RGB_VAD,AG_NORM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
+ KC_TRNS,RGB_HUD,RGB_SAD,RGB_VAD,AG_NORM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
KC_TRNS, KC_TRNS
//`-----------------------------------------------' `-----------------------------------------------'
diff --git a/keyboards/arabica37/rev1/rules.mk b/keyboards/arabica37/rev1/rules.mk
index 400d254e27..7997604e23 100644
--- a/keyboards/arabica37/rev1/rules.mk
+++ b/keyboards/arabica37/rev1/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/arch_36/rules.mk b/keyboards/arch_36/rules.mk
index 8dbadb59af..9631a0323e 100644
--- a/keyboards/arch_36/rules.mk
+++ b/keyboards/arch_36/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
OLED_ENABLE = yes
diff --git a/keyboards/ares/rules.mk b/keyboards/ares/rules.mk
index bd8029ae8d..194c38c5ca 100644
--- a/keyboards/ares/rules.mk
+++ b/keyboards/ares/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/arisu/rules.mk b/keyboards/arisu/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/arisu/rules.mk
+++ b/keyboards/arisu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/arrayperipherals/1x4p1/rules.mk b/keyboards/arrayperipherals/1x4p1/rules.mk
index 2c15412036..04c446ae15 100644
--- a/keyboards/arrayperipherals/1x4p1/rules.mk
+++ b/keyboards/arrayperipherals/1x4p1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ash1800/rules.mk b/keyboards/ash1800/rules.mk
index 390fda9c3b..475f266699 100644
--- a/keyboards/ash1800/rules.mk
+++ b/keyboards/ash1800/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ash_xiix/rules.mk b/keyboards/ash_xiix/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/ash_xiix/rules.mk
+++ b/keyboards/ash_xiix/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ashpil/modelm_usbc/rules.mk b/keyboards/ashpil/modelm_usbc/rules.mk
index f731f5e3e3..bfa55a3d39 100644
--- a/keyboards/ashpil/modelm_usbc/rules.mk
+++ b/keyboards/ashpil/modelm_usbc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/at101_bh/rules.mk b/keyboards/at101_bh/rules.mk
index 5517774dcf..16dc2697bb 100644
--- a/keyboards/at101_bh/rules.mk
+++ b/keyboards/at101_bh/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk
index e0d442ed3c..46b3df66bc 100644
--- a/keyboards/at_at/660m/rules.mk
+++ b/keyboards/at_at/660m/rules.mk
@@ -6,17 +6,14 @@ BOARD = GENERIC_STM32_F072XB
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes
# RGBLIGHT_ENABLE = yes
NO_USB_STARTUP_CHECK = yes # Workaround for issue 6369
diff --git a/keyboards/atlantis/ak81_ve/ak81_ve.c b/keyboards/atlantis/ak81_ve/ak81_ve.c
new file mode 100644
index 0000000000..fcf279ed46
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/ak81_ve.c
@@ -0,0 +1,61 @@
+/* Copyright 2022 @fOmey
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ak81_ve.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 12, 11, 10, 9, 8, 7, 6, 5, 4, NO_LED, 3, 2, 1, 0 }, // 13 keys
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13 }, // 15 keys
+ { 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28 }, // 15 keys
+ { 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, NO_LED, 43 }, // 14 keys
+ { 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, NO_LED, 58, 57 }, // 14 keys
+ { 79, 78, 77, NO_LED, NO_LED, NO_LED, 76, NO_LED, NO_LED, NO_LED, 75, 74, 73, 72, 71 } // 9 keys
+}, {
+ // LED Index to Physical Positon
+ { 240, 0 }, { 224, 0 }, { 208, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 32, 0 },
+ { 240, 13 }, { 224, 13 }, { 208, 13 }, { 192 , 13 }, { 176, 13 }, { 160, 13 }, { 144, 13 }, { 128, 13 }, { 112, 13 }, { 96, 13 }, { 80, 13 }, { 64, 13}, { 48, 13 }, { 32, 13 }, { 16, 13 },
+ { 240, 26 }, { 224, 26 }, { 208, 26 }, { 192 , 26 }, { 176, 26 }, { 160, 26 }, { 144, 26 }, { 128, 26 }, { 112, 26 }, { 96, 26 }, { 80, 26 }, { 64, 26}, { 48, 26 }, { 32, 26 }, { 16, 26 },
+ { 240, 39 }, { 216, 39 }, { 192 , 39 }, { 176, 39 }, { 160, 39 }, { 144, 39 }, { 128, 39 }, { 112, 39 }, { 96, 39 }, { 80, 39 }, { 64, 39}, { 48, 39 }, { 32, 39 }, { 16, 39 },
+ { 240, 52 }, { 224, 52 }, { 208, 52 }, { 192 , 52 }, { 176, 52 }, { 160, 52 }, { 144, 52 }, { 128, 52 }, { 112, 52 }, { 96, 52 }, { 80, 52 }, { 64, 52}, { 48, 52 }, { 24, 52 },
+ { 240, 64 }, { 224, 64 }, { 208, 64 }, { 192, 64 }, { 176, 64 }, { 112, 64 }, { 48, 64 }, { 32, 64 }, { 16, 64 },
+ { 0, 26 }, { 0, 46 }, { 0, 64 }, { 48, 64 }, { 72, 64 }, { 104, 64 }, { 136, 64 }, { 168, 64 }, { 208, 64 }, { 232, 58 }, { 232, 45 }, { 232, 32 }, { 232, 20 }, { 232, 7 }, { 176, 0 }, { 112, 0 }
+}, {
+ // LED Index to Flag
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8,
+ 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 1, 1, 4, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
+
+#if !defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ return true;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/ak81_ve.h b/keyboards/atlantis/ak81_ve/ak81_ve.h
new file mode 100644
index 0000000000..c43f477c0a
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/ak81_ve.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 @fOmey
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "quantum.h"
+#include "encoder_actions.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K506, K510, K511, K512, K513, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, KC_NO, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \
+ { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 } \
+}
diff --git a/keyboards/atlantis/ak81_ve/config.h b/keyboards/atlantis/ak81_ve/config.h
new file mode 100644
index 0000000000..44507c47f7
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/config.h
@@ -0,0 +1,117 @@
+/* Copyright 2022 @fOmey
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x416B
+#define PRODUCT_ID 0x0081
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Atlantis
+#define PRODUCT AK81_VE
+
+/* Key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { F1, F7, F6, F5, F4, D5 }
+#define MATRIX_COL_PINS { F0, C7, C6, B6, B5, B4, D7, D6, B2, B7, D3, D2, D1, D0, B3 }
+#define UNUSED_PINS
+
+/* Encoder pins */
+#define ENCODERS_PAD_A { B0 }
+#define ENCODERS_PAD_B { E6 }
+#define ENCODER_RESOLUTION 4
+#define ENCODERS 1
+#define ENCODERS_CCW_KEY { { 3, 5 } } // Note: array is { col, row )
+#define ENCODERS_CW_KEY { { 4, 5 } } // Note: array is { col, row )
+
+/* LED pins */
+#define LED_CAPS_LOCK_PIN D4
+#define LED_PIN_ON_STATE 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+#define FORCE_NKRO
+
+#define RGB_DI_PIN B1
+#ifdef RGB_DI_PIN
+
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_DISABLE_WHEN_USB_SUSPENDED true
+#define DRIVER_LED_TOTAL 96
+#define RGB_MATRIX_STARTUP_HUE 170
+#define RGB_MATRIX_STARTUP_SAT 255
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130
+#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
+#define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+#define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
+#define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+#define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+#define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+#define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+#define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
+#define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Single hue fractal filled keys pulsing horizontally out to edges
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN // Randomly light keys with random hues
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
+#define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+#define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
+
+#endif \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/info.json b/keyboards/atlantis/ak81_ve/info.json
new file mode 100644
index 0000000000..8d4a8ebf59
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "AK81_VE",
+ "maintainer": "fOmey",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 2, "y": 0 },
+ { "label": "F2", "x": 3, "y": 0 },
+ { "label": "F3", "x": 4, "y": 0 },
+ { "label": "F4", "x": 5, "y": 0 },
+ { "label": "F5", "x": 6.5, "y": 0 },
+ { "label": "F6", "x": 7.5, "y": 0 },
+ { "label": "F7", "x": 8.5, "y": 0 },
+ { "label": "F8", "x": 9.5, "y": 0 },
+ { "label": "F9", "x": 11, "y": 0 },
+ { "label": "F10", "x": 12, "y": 0 },
+ { "label": "F11", "x": 13, "y": 0 },
+ { "label": "F12", "x": 14, "y": 0 },
+ { "label": "Del", "x": 16.25, "y": 0 },
+ { "label": "~", "x": 0, "y": 1 },
+ { "label": "!", "x": 1, "y": 1 },
+ { "label": "@", "x": 2, "y": 1 },
+ { "label": "#", "x": 3, "y": 1 },
+ { "label": "$", "x": 4, "y": 1 },
+ { "label": "%", "x": 5, "y": 1 },
+ { "label": "^", "x": 6, "y": 1 },
+ { "label": "&", "x": 7, "y": 1 },
+ { "label": "*", "x": 8, "y": 1 },
+ { "label": "(", "x": 9, "y": 1 },
+ { "label": ")", "x": 10, "y": 1 },
+ { "label": "_", "x": 11, "y": 1 },
+ { "label": "+", "x": 12, "y": 1 },
+ { "label": "Backspace", "w": 2, "x": 13, "y": 1 },
+ { "label": "Home", "x": 16.25, "y": 1 },
+ { "label": "Tab", "w": 1.5, "x": 0, "y": 2 },
+ { "label": "Q", "x": 1.5, "y": 2 },
+ { "label": "W", "x": 2.5, "y": 2 },
+ { "label": "E", "x": 3.5, "y": 2 },
+ { "label": "R", "x": 4.5, "y": 2 },
+ { "label": "T", "x": 5.5, "y": 2 },
+ { "label": "Y", "x": 6.5, "y": 2 },
+ { "label": "U", "x": 7.5, "y": 2 },
+ { "label": "I", "x": 8.5, "y": 2 },
+ { "label": "O", "x": 9.5, "y": 2 },
+ { "label": "P", "x": 10.5, "y": 2 },
+ { "label": "{", "x": 11.5, "y": 2 },
+ { "label": "}", "x": 12.5, "y": 2 },
+ { "label": "|", "w": 1.5, "x": 13.5, "y": 2 },
+ { "label": "PageUp", "x": 16.25, "y": 2 },
+ { "label": "Capslock", "w": 1.75, "x": 0, "y": 3 },
+ { "label": "A", "x": 1.75, "y": 3 },
+ { "label": "S", "x": 2.75, "y": 3 },
+ { "label": "D", "x": 3.75, "y": 3 },
+ { "label": "F", "x": 4.75, "y": 3 },
+ { "label": "G", "x": 5.75, "y": 3 },
+ { "label": "H", "x": 6.75, "y": 3 },
+ { "label": "J", "x": 7.75, "y": 3 },
+ { "label": "K", "x": 8.75, "y": 3 },
+ { "label": "L", "x": 9.75, "y": 3 },
+ { "label": ":", "x": 10.75, "y": 3 },
+ { "label": "\"", "x": 11.75, "y": 3 },
+ { "label": "Enter", "w": 2.25, "x": 12.75, "y": 3 },
+ { "label": "PageDown", "x": 16.25, "y": 3 },
+ { "label": "Shift", "w": 2.25, "x": 0, "y": 4 },
+ { "label": "Z", "x": 2.25, "y": 4 },
+ { "label": "X", "x": 3.25, "y": 4 },
+ { "label": "C", "x": 4.25, "y": 4 },
+ { "label": "V", "x": 5.25, "y": 4 },
+ { "label": "B", "x": 6.25, "y": 4 },
+ { "label": "N", "x": 7.25, "y": 4 },
+ { "label": "M", "x": 8.25, "y": 4 },
+ { "label": ",", "x": 9.25, "y": 4 },
+ { "label": ".", "x": 10.25, "y": 4 },
+ { "label": "?", "x": 11.25, "y": 4 },
+ { "label": "Shift", "w": 1.75, "x": 12.25, "y": 4 },
+ { "label": "Up", "x": 14.25, "y": 4.25 },
+ { "label": "End", "x": 16.25, "y": 4 },
+ { "label": "Ctrl", "w": 1.25, "x": 0, "y": 5 },
+ { "label": "Win", "w": 1.25, "x": 1.25, "y": 5 },
+ { "label": "Alt", "w": 1.25, "x": 2.5, "y": 5 },
+ { "w": 6.25, "x": 3.75, "y": 5 },
+ { "label": "Alt", "w": 1.25, "x": 10, "y": 5 },
+ { "label": "Fn", "w": 1.25, "x": 11.25, "y": 5 },
+ { "label": "Left", "x": 13.25, "y": 5.25 },
+ { "label": "Down", "x": 14.25, "y": 5.25 },
+ { "label": "Right", "x": 15.25, "y": 5.25 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/keymaps/default/keymap.c b/keyboards/atlantis/ak81_ve/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a11091c8b9
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2022 @fOmey
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT(
+ KC_SYSTEM_SLEEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI)
+
+}; \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/keymaps/via/keymap.c b/keyboards/atlantis/ak81_ve/keymaps/via/keymap.c
new file mode 100644
index 0000000000..106d966fa7
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/keymaps/via/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2022 @fOmey
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define LAYOUT_via( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K503, K504, K506, K510, K511, K512, K513, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, KC_NO, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \
+ { K500, K501, K502, K503, K504, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 } \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_via(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLU, KC_VOLD, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_via(
+ KC_SYSTEM_SLEEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SPD,
+ _______, _______, _______, RGB_MOD, RGB_RMOD, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI),
+
+ [2] = LAYOUT_via(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT_via(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+
+}; \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/keymaps/via/rules.mk b/keyboards/atlantis/ak81_ve/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f74ca2c244
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += encoder_actions.c \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/readme.md b/keyboards/atlantis/ak81_ve/readme.md
new file mode 100644
index 0000000000..d9a6f9627c
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/readme.md
@@ -0,0 +1,23 @@
+# ATLANTIS AK81_VE
+
+![ATLANTIS AK81_VE](https://i.imgur.com/nfuocgS.jpeg)
+
+A 75% hotswap keyboard with per key RGB backlighting, RGB underglow and a rotary encoder.
+
+* Keyboard Maintainer: [fOmey](https://github.com/fOmey)
+* Hardware Supported: AK75X@AK81_VE
+* Hardware Availability: [AliExpress.com](https://aliexpress.com), [Shopee](https://shopee.com.my)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atlantis/ak81_ve:default
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Physical reset pins**: Briefly short the reset pins using tweezers, a paperclip, or any other conductive material.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/atlantis/ak81_ve/rules.mk b/keyboards/atlantis/ak81_ve/rules.mk
new file mode 100644
index 0000000000..f0a3589a4b
--- /dev/null
+++ b/keyboards/atlantis/ak81_ve/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+LTO_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes
+ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/atlantis/encoder_actions.c b/keyboards/atlantis/encoder_actions.c
new file mode 100644
index 0000000000..b41a248a83
--- /dev/null
+++ b/keyboards/atlantis/encoder_actions.c
@@ -0,0 +1,68 @@
+/* Copyright 2020 Neil Brian Ramirez
+ * Copyright 2021 drashna jael're (@drashna)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "encoder_actions.h"
+
+#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+
+# ifdef ENCODERS
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+# endif
+
+void encoder_action_unregister(void) {
+# ifdef ENCODERS
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+# endif
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+# ifdef ENCODERS
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+# endif
+}
+
+void matrix_scan_kb(void) {
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ // don't return user actions, because they are in the keymap
+ // encoder_update_user(index, clockwise);
+ return true;
+};
+
+#endif
diff --git a/keyboards/atlantis/encoder_actions.h b/keyboards/atlantis/encoder_actions.h
new file mode 100644
index 0000000000..2484af52ae
--- /dev/null
+++ b/keyboards/atlantis/encoder_actions.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 Neil Brian Ramirez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+void encoder_action_unregister(void);
+
+void encoder_action_register(uint8_t index, bool clockwise);
diff --git a/keyboards/atlantis/readme.md b/keyboards/atlantis/readme.md
new file mode 100644
index 0000000000..50a2cc2fed
--- /dev/null
+++ b/keyboards/atlantis/readme.md
@@ -0,0 +1,7 @@
+# Atlantis
+
+A company that has been known to create some unorthodox and unique styled keyboard layouts, a great example of this is the AK82. The AK82 is a 60% layout with a numpad (numpad pictured commonly on the left, however a right side variant the AK82_VE exists).
+
+Atlantis also produce some more traditional layouts like the AK81 a 75% layout (AK81_VE variant includes a rotary enconder) and a large range of macro pads.
+
+Atlantis seem to be operating mainly out of Malaysia, products can be difficult to source internationally. \ No newline at end of file
diff --git a/keyboards/atlas_65/atlas_65.c b/keyboards/atlas_65/atlas_65.c
new file mode 100644
index 0000000000..536d8edf71
--- /dev/null
+++ b/keyboards/atlas_65/atlas_65.c
@@ -0,0 +1,16 @@
+/* Copyright 2020 Joshua Nguyen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "atlas_65.h"
diff --git a/keyboards/atlas_65/atlas_65.h b/keyboards/atlas_65/atlas_65.h
new file mode 100644
index 0000000000..c54140fd7d
--- /dev/null
+++ b/keyboards/atlas_65/atlas_65.h
@@ -0,0 +1,42 @@
+/* Copyright 2020 Joshua Nguyen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define XXX KC_NO
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, \
+ k40, k42, k44, k45, k46, k47, k49, k4C, k4D, k4E \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, XXX, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E }, \
+ { k40, XXX, k42, XXX, k44, k45, k46, k47, XXX, k49, XXX, XXX, k4C, k4D, k4E } \
+}
diff --git a/keyboards/atlas_65/config.h b/keyboards/atlas_65/config.h
new file mode 100644
index 0000000000..d96c2c3976
--- /dev/null
+++ b/keyboards/atlas_65/config.h
@@ -0,0 +1,130 @@
+/* Copyright 2020 Joshua Nguyen
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6565
+#define PRODUCT_ID 0x1000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Joshua Nguyen
+#define PRODUCT atlas_65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B7, B5, B4, D7, D6, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+// #define RGB_DI_PIN E2
+// #ifdef RGB_DI_PIN
+// #define RGBLED_NUM 16
+// #define RGBLIGHT_HUE_STEP 8
+// #define RGBLIGHT_SAT_STEP 8
+// #define RGBLIGHT_VAL_STEP 8
+// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+// /*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/atlas_65/info.json b/keyboards/atlas_65/info.json
new file mode 100644
index 0000000000..e95b25511c
--- /dev/null
+++ b/keyboards/atlas_65/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "atlas-65",
+ "url": "https://github.com/ryanstevensmith/atlas-65",
+ "maintainer": "Joshua Nguyen",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0, "w":2},
+ {"x":17.3, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1},
+ {"x":14.5, "y":1},
+ {"x":15.5, "y":1, "w":1.5},
+ {"x":17.3, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":2},
+ {"x":14.75, "y":2, "w":2.25},
+ {"x":17.3, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3},
+ {"x":13.25, "y":3},
+ {"x":14.25, "y":3, "w":1.75},
+ {"x":16.3, "y":3.25},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":3.25, "y":4, "w":1.5},
+ {"x":4.75, "y":4, "w":2},
+ {"x":6.75, "y":4, "w":1.25},
+ {"x":8.75, "y":4, "w":2.75},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":15.3, "y":4.25},
+ {"x":16.3, "y":4.25},
+ {"x":17.3, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/atlas_65/keymaps/default/keymap.c b/keyboards/atlas_65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..55406a165f
--- /dev/null
+++ b/keyboards/atlas_65/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2020 Joshua Nguyen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LNUM,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_B, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ) ,
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ) ,
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ) ,
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+} ;
diff --git a/keyboards/atlas_65/keymaps/default/readme.md b/keyboards/atlas_65/keymaps/default/readme.md
new file mode 100644
index 0000000000..5086db264b
--- /dev/null
+++ b/keyboards/atlas_65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for atlas-65 \ No newline at end of file
diff --git a/keyboards/atlas_65/keymaps/via/keymap.c b/keyboards/atlas_65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d519682cc9
--- /dev/null
+++ b/keyboards/atlas_65/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2020 Joshua Nguyen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LNUM,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_B, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ) ,
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ) ,
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ) ,
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+} ;
diff --git a/keyboards/atlas_65/keymaps/via/rules.mk b/keyboards/atlas_65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/atlas_65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/atlas_65/readme.md b/keyboards/atlas_65/readme.md
new file mode 100644
index 0000000000..3bc401db39
--- /dev/null
+++ b/keyboards/atlas_65/readme.md
@@ -0,0 +1,26 @@
+
+# atlas_65
+
+A version of an Alice Keyboard with a full sized backspace and an extra B key.
+
+* Keyboard Maintainer: Joshua Nguyen
+* Hardware Supported: atlas-65 keyboards
+* Hardware Availability: Message Josh
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atlas_65:default
+
+Flashing example for this keyboard:
+
+ make atlas_65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file
diff --git a/keyboards/atlas_65/rules.mk b/keyboards/atlas_65/rules.mk
new file mode 100644
index 0000000000..476cf49f27
--- /dev/null
+++ b/keyboards/atlas_65/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/atomic/rules.mk b/keyboards/atomic/rules.mk
index b9a9b09fe5..8ceb73de87 100644
--- a/keyboards/atomic/rules.mk
+++ b/keyboards/atomic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
index 0c9ab59a92..dbe39a38bc 100644
--- a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
@@ -122,9 +122,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[BROWSER_CONTROL] = LAYOUT(
- MEH(KC_0), KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, MEH(KC_9),
- MEH(KC_1), KC_MS_L, KC_MS_D, KC_MS_R, MEH(KC_6), KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT),
- MEH(KC_2), W10_TASKVIEW, W10_WORKSPACE_LEFT, W10_WORKSPACE_RIGHT, MEH(KC_7), MEH(KC_8), RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5,
+ MEH(KC_C), KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, MEH(KC_9),
+ MEH(KC_D), KC_MS_L, KC_MS_D, KC_MS_R, MEH(KC_6), KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT),
+ MEH(KC_E), W10_TASKVIEW, W10_WORKSPACE_LEFT, W10_WORKSPACE_RIGHT, MEH(KC_7), MEH(KC_8), RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_W), RCTL(KC_T), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
diff --git a/keyboards/atreus/rules.mk b/keyboards/atreus/rules.mk
index a8b1249efb..9e5565ea49 100644
--- a/keyboards/atreus/rules.mk
+++ b/keyboards/atreus/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/atreus62/keymaps/scheiklp/config.h b/keyboards/atreus62/keymaps/scheiklp/config.h
index dc7629b622..d8b7abe8d3 100644
--- a/keyboards/atreus62/keymaps/scheiklp/config.h
+++ b/keyboards/atreus62/keymaps/scheiklp/config.h
@@ -29,15 +29,15 @@
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
// Cursor offset per movement (unmodified)
-#define MK_C_OFFSET_UNMOD 16
+#define MK_C_OFFSET_UNMOD 20
// Time between cursor movements (unmodified)
-#define MK_C_INTERVAL_UNMOD 10
+#define MK_C_INTERVAL_UNMOD 1
/* #define MK_C_INTERVAL_UNMOD 16 */
// Cursor offset per movement (KC_ACL0)
#define MK_C_OFFSET_0 1
// Time between cursor movements (KC_ACL0)
-#define MK_C_INTERVAL_0 32
+#define MK_C_INTERVAL_0 10
// Cursor offset per movement (KC_ACL1)
#define MK_C_OFFSET_1 4
diff --git a/keyboards/atreus62/keymaps/scheiklp/keymap.c b/keyboards/atreus62/keymaps/scheiklp/keymap.c
index 0c3208db86..58bacaab91 100644
--- a/keyboards/atreus62/keymaps/scheiklp/keymap.c
+++ b/keyboards/atreus62/keymaps/scheiklp/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_3] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
- KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, KC_TRNS,
+ KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, N_ACUT,
KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/atreus62/rules.mk b/keyboards/atreus62/rules.mk
index 7ed0e63685..5e80a7e5df 100644
--- a/keyboards/atreus62/rules.mk
+++ b/keyboards/atreus62/rules.mk
@@ -5,17 +5,13 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
UNICODE_ENABLE = yes # Unicode
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/atxkb/1894/rules.mk b/keyboards/atxkb/1894/rules.mk
index 7f128bc58e..f6b7180fb0 100644
--- a/keyboards/atxkb/1894/rules.mk
+++ b/keyboards/atxkb/1894/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aves60/aves60.c b/keyboards/aves60/aves60.c
new file mode 100644
index 0000000000..4931deb7c9
--- /dev/null
+++ b/keyboards/aves60/aves60.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "aves60.h"
diff --git a/keyboards/aves60/aves60.h b/keyboards/aves60/aves60.h
new file mode 100644
index 0000000000..7340114306
--- /dev/null
+++ b/keyboards/aves60/aves60.h
@@ -0,0 +1,122 @@
+// Copyright 2021 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k44, k46, k47, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, k44, XXX, k46, k47, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_ansi_split_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k2c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k44, k46, k47, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, k44, XXX, k46, k47, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_iso_split_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k1d, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k44, k46, k47, k4a, k4b, k4c, k4d \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, XXX, k44, XXX, k46, k47, XXX, XXX, k4a, k4b, k4c, k4d } \
+}
diff --git a/keyboards/aves60/config.h b/keyboards/aves60/config.h
new file mode 100644
index 0000000000..9f90b2109e
--- /dev/null
+++ b/keyboards/aves60/config.h
@@ -0,0 +1,139 @@
+// Copyright 2021 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x9991
+#define PRODUCT_ID 0xD408
+#define DEVICE_VER 0x0001
+#define MANUFACTURER I/O Keyboards
+#define PRODUCT Aves 60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F6, F7, F5, F1, F4 }
+#define MATRIX_COL_PINS { B2, B3, D0, D1, D2, D3, C7, C6, B6, B5, B4, D7, D6, D4 }
+#define UNUSED_PINS { B0, B7, E6, F0 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D5
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 9
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 4
+#define BOOTMAGIC_LITE_COLUMN 6
diff --git a/keyboards/aves60/info.json b/keyboards/aves60/info.json
new file mode 100644
index 0000000000..f921de058a
--- /dev/null
+++ b/keyboards/aves60/info.json
@@ -0,0 +1,512 @@
+{
+ "keyboard_name": "Aves60",
+ "url": "https://iokeyboards.eu/",
+ "maintainer": "evyd13",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.75},
+ {"x":6.5, "y":4, "w":1.25},
+ {"x":7.75, "y":4, "w":2.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift_space": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.75},
+ {"x":6.5, "y":4, "w":1.25},
+ {"x":7.75, "y":4, "w":2.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift_space": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.75},
+ {"x":6.5, "y":4, "w":1.25},
+ {"x":7.75, "y":4, "w":2.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/aves60/keymaps/default/keymap.c b/keyboards/aves60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ae27fadb71
--- /dev/null
+++ b/keyboards/aves60/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+// Copyright 2021 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
+
+[_FN1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/aves60/keymaps/default/readme.md b/keyboards/aves60/keymaps/default/readme.md
new file mode 100644
index 0000000000..ad8b72772a
--- /dev/null
+++ b/keyboards/aves60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Aves60
diff --git a/keyboards/aves60/keymaps/via/keymap.c b/keyboards/aves60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..35fd15723e
--- /dev/null
+++ b/keyboards/aves60/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2021 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
+
+[_FN1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+[_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+[_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/aves60/keymaps/via/rules.mk b/keyboards/aves60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/aves60/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/aves60/readme.md b/keyboards/aves60/readme.md
new file mode 100644
index 0000000000..5a96d2b2eb
--- /dev/null
+++ b/keyboards/aves60/readme.md
@@ -0,0 +1,27 @@
+# aves60
+
+![Aves60](https://i.imgur.com/U5UpFAVl.jpg)
+
+A universally compatible 60% PCB.
+
+* Keyboard Maintainer: [Evelien Dekkers](https://github.com/evyd13)
+* Hardware Supported: Aves60 PCB
+* Hardware Availability: [I/O Keyboards](https://iokeyboards.eu/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aves60:default
+
+Flashing example for this keyboard:
+
+ make aves60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the space bar and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/aves60/rules.mk b/keyboards/aves60/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/aves60/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aves65/rules.mk b/keyboards/aves65/rules.mk
index 9bbae521a4..a6f37454f0 100644
--- a/keyboards/aves65/rules.mk
+++ b/keyboards/aves65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/axolstudio/helpo/rules.mk b/keyboards/axolstudio/helpo/rules.mk
index 9354e10b87..fe2be33f82 100644
--- a/keyboards/axolstudio/helpo/rules.mk
+++ b/keyboards/axolstudio/helpo/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/axolstudio/yeti/rules.mk b/keyboards/axolstudio/yeti/rules.mk
index 9182c69fdd..62fee62591 100644
--- a/keyboards/axolstudio/yeti/rules.mk
+++ b/keyboards/axolstudio/yeti/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/aya/config.h b/keyboards/aya/config.h
index 1ad9716d45..0381f224ca 100644
--- a/keyboards/aya/config.h
+++ b/keyboards/aya/config.h
@@ -18,8 +18,8 @@
#include "config_common.h"
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0x0003
+#define VENDOR_ID 0x1209
+#define PRODUCT_ID 0x2925
#define DEVICE_VER 0x0001
#define MANUFACTURER DanNixon
#define PRODUCT Aya
diff --git a/keyboards/aya/rules.mk b/keyboards/aya/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/aya/rules.mk
+++ b/keyboards/aya/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/baguette/keymaps/default/keymap.c b/keyboards/baguette/keymaps/default/keymap.c
index 1ad1000003..5c54daf298 100644
--- a/keyboards/baguette/keymaps/default/keymap.c
+++ b/keyboards/baguette/keymaps/default/keymap.c
@@ -17,16 +17,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_INS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, KC_RSFT, KC_UP, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, KC_RSFT, KC_UP,
KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_ansi( /* FN */
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/baguette/keymaps/iso/keymap.c b/keyboards/baguette/keymaps/iso/keymap.c
index fb6d472d60..fa971123d3 100644
--- a/keyboards/baguette/keymaps/iso/keymap.c
+++ b/keyboards/baguette/keymaps/iso/keymap.c
@@ -17,16 +17,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_INS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, KC_RSFT, KC_UP, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, KC_RSFT, KC_UP,
KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[0] = LAYOUT_iso( /* FN */
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/baguette/rules.mk b/keyboards/baguette/rules.mk
index d77ba07eb7..6c3cc413f9 100644
--- a/keyboards/baguette/rules.mk
+++ b/keyboards/baguette/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bakeneko60/rules.mk b/keyboards/bakeneko60/rules.mk
index abec374090..157a9de50e 100644
--- a/keyboards/bakeneko60/rules.mk
+++ b/keyboards/bakeneko60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bakeneko65/rev2/rules.mk b/keyboards/bakeneko65/rev2/rules.mk
index e881cb0011..26af9d2afc 100644
--- a/keyboards/bakeneko65/rev2/rules.mk
+++ b/keyboards/bakeneko65/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bakeneko65/rev3/rules.mk b/keyboards/bakeneko65/rev3/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/bakeneko65/rev3/rules.mk
+++ b/keyboards/bakeneko65/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bakeneko80/rules.mk b/keyboards/bakeneko80/rules.mk
index 29534f6570..2661317d2a 100644
--- a/keyboards/bakeneko80/rules.mk
+++ b/keyboards/bakeneko80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bandominedoni/bandominedoni.c b/keyboards/bandominedoni/bandominedoni.c
index 1b0365ac6a..eacbb40fa0 100644
--- a/keyboards/bandominedoni/bandominedoni.c
+++ b/keyboards/bandominedoni/bandominedoni.c
@@ -119,33 +119,53 @@ static enum { UNKNOWN, LEFT, RIGHT } hand_side = UNKNOWN;
}
#ifdef ENCODER_ENABLE
-const uint16_t rt_matrix[2][2] = {
- {5, 5}, {5, 6}
-};
-
-bool encoder_update_kb(uint8_t index, bool clockwise) {
- if (index == 1) { /* An encoder on the right side */
- keypos_t key;
- int cw = 0;
- cw = clockwise ? 1 : 0;
- key.row = rt_matrix[cw][0];
- key.col = rt_matrix[cw][1];
- uint8_t layer = layer_switch_get_layer(key);
- uint16_t keycode = keymap_key_to_keycode(layer, key);
- keyrecord_t record;
- record.event.key = key;
+# ifdef ENCODERS
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+# endif
- if (keycode < MI_ON){
- tap_code16(keycode);
- } else {
- record.event.pressed = true;
- process_midi(keycode, &record);
- wait_ms(TAP_CODE_DELAY);
- record.event.pressed = false;
- process_midi(keycode, &record);
+void encoder_action_unregister(void) {
+# ifdef ENCODERS
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
}
-
}
- return true;
+# endif
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+# ifdef ENCODERS
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+# ifdef CONSOLE_ENABLE
+ uprintf("encoder_action_register index = %u, clockwise = %u, row = %u, col = %u\n", index, clockwise, encoder_event.key.row, encoder_event.key.col);
+# endif
+ action_exec(encoder_event);
+# endif
}
-#endif // ENCODER_ENABLE
+
+void matrix_scan_kb(void) {
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ // don't return user actions, because they are in the keymap
+ // encoder_update_user(index, clockwise);
+ return true;
+};
+
+#endif
diff --git a/keyboards/bandominedoni/bandominedoni.h b/keyboards/bandominedoni/bandominedoni.h
index 8e2470826c..1eca4f8d98 100644
--- a/keyboards/bandominedoni/bandominedoni.h
+++ b/keyboards/bandominedoni/bandominedoni.h
@@ -82,3 +82,7 @@
// reason: bandoMIneDonI has no space on right hand side to use "SPLIT_HAND_MATRIX_GRID".
// However, It enables to decide the handedness by the HW by adding one condition: "not to press any keys (especially r30) dusing startup."
bool is_keyboard_left(void);
+
+void encoder_action_unregister(void);
+
+void encoder_action_register(uint8_t index, bool clockwise);
diff --git a/keyboards/bandominedoni/config.h b/keyboards/bandominedoni/config.h
index 629c6af884..e1e4d87405 100644
--- a/keyboards/bandominedoni/config.h
+++ b/keyboards/bandominedoni/config.h
@@ -133,120 +133,54 @@
// Enable suspend mode.
# define RGB_DISABLE_WHEN_USB_SUSPENDED true
-// // enable below to shrink the firmware size ( -1974 bytes )
-// # define REDUCE_RGB_MATRIX_EFFECTS
-
-// enable below to shrink the firmware size ( -1574 bytes )
-// # define REDUCE_RGB_MATRIX_EFFECTS_2
-
-// # ifdef AUDIO_ENABLE
-# ifdef CONSOLE_ENABLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# else
+# ifdef CONSOLE_ENABLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# else
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_FRACTAL
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-# if !defined(REDUCE_RGB_MATRIX_EFFECTS) && !defined(VIA_ENABLE)
-// # ifdef REDUCE_RGB_MATRIX_EFFECTS
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# endif
-
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_FRACTAL
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-
-# if !defined(REDUCE_RGB_MATRIX_EFFECTS_2) && !defined(VIA_ENABLE)
-// # ifdef REDUCE_RGB_MATRIX_EFFECTS_2
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-# endif
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# endif // AUDIO_ENABLE
-
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-// #define ENABLE_RGB_MATRIX_CYCLE_ALL
-// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-// #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-// #define ENABLE_RGB_MATRIX_DUAL_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// RAINDROPS don't match well with layer LED indicator (oc) using rgb_matrix_set_color().
// #define ENABLE_RGB_MATRIX_RAINDROPS
// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_FRACTAL
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
-
-// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// #define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
+// Recommendend not to use these.
+# ifndef VIA_ENABLE
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# endif
+# endif // CONSOLE_ENABLE
#endif // RGB_MATRIX_ENABLE
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
@@ -330,4 +264,7 @@
# define ENCODERS_PAD_B_RIGHT { F4 }
# define ENCODER_RESOLUTION 4
# define TAP_CODE_DELAY 10
+# define ENCODERS 2
+# define ENCODERS_CW_KEY { {4, 5}, {6, 5} }
+# define ENCODERS_CCW_KEY { {3, 5}, {5, 5} }
#endif // ENCODER_ENABLE
diff --git a/keyboards/bandominedoni/keymaps/led/keymap.c b/keyboards/bandominedoni/keymaps/led/keymap.c
index 7693557df3..305756b5b1 100644
--- a/keyboards/bandominedoni/keymaps/led/keymap.c
+++ b/keyboards/bandominedoni/keymaps/led/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
@@ -149,23 +149,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-void eeconfig_init_user(void) { // EEPROM is getting reset!
- #ifdef RGB_MATRIX_ENABLE
- rgb_matrix_enable();
- rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
- rgb_matrix_sethsv(HSV_BLUE);
-
- rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE);
- // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
- #endif
-}
-
-void keyboard_post_init_user(void) {
+void my_init(void){
// Set octave to MI_OCT_0
midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
// avoid using 127 since it is used as a special number in some sound sources.
midi_config.velocity = MIDI_INITIAL_VELOCITY;
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+ my_init();
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_enable();
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
+ rgb_matrix_sethsv(HSV_BLUE);
+
+ rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE);
+ // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
+#endif
+}
+
+void keyboard_post_init_user(void) {
+ my_init();
// party mode (for LED soldering test. Enable rainbow color effect, and disable led_indicator to check all LEDs)
rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
diff --git a/keyboards/bandominedoni/keymaps/led/rules.mk b/keyboards/bandominedoni/keymaps/led/rules.mk
index a7583d38c8..08ed472ad6 100644
--- a/keyboards/bandominedoni/keymaps/led/rules.mk
+++ b/keyboards/bandominedoni/keymaps/led/rules.mk
@@ -1,2 +1,2 @@
-RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
-RGB_MATRIX_CUSTOM_USER = yes #
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
diff --git a/keyboards/bandominedoni/keymaps/via/config.h b/keyboards/bandominedoni/keymaps/via/config.h
index 99e39626ce..4dcac5104f 100644
--- a/keyboards/bandominedoni/keymaps/via/config.h
+++ b/keyboards/bandominedoni/keymaps/via/config.h
@@ -15,4 +15,4 @@
*/
#pragma once
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
diff --git a/keyboards/bandominedoni/keymaps/via/keymap.c b/keyboards/bandominedoni/keymaps/via/keymap.c
index 59e074228b..ad6833d692 100644
--- a/keyboards/bandominedoni/keymaps/via/keymap.c
+++ b/keyboards/bandominedoni/keymaps/via/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, MI_OCTD, MI_OCTU, MI_VELD, MI_VELU, _______,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
@@ -90,23 +90,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-void eeconfig_init_user(void) { // EEPROM is getting reset!
- #ifdef RGB_MATRIX_ENABLE
- rgb_matrix_enable();
- rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
- rgb_matrix_sethsv(HSV_BLUE);
-
- rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE);
- // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
- #endif
-}
-
-void keyboard_post_init_user(void) {
+void my_init(void){
// Set octave to MI_OCT_0
midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
// avoid using 127 since it is used as a special number in some sound sources.
midi_config.velocity = MIDI_INITIAL_VELOCITY;
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+ my_init();
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_enable();
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
+ rgb_matrix_sethsv(HSV_BLUE);
+
+ rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE);
+ // rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
+#endif
+}
+
+void keyboard_post_init_user(void) {
+ my_init();
};
#ifdef RGB_MATRIX_ENABLE
diff --git a/keyboards/bandominedoni/keymaps/via/rules.mk b/keyboards/bandominedoni/keymaps/via/rules.mk
index 925056c3dc..71eb1ebf8e 100644
--- a/keyboards/bandominedoni/keymaps/via/rules.mk
+++ b/keyboards/bandominedoni/keymaps/via/rules.mk
@@ -1,3 +1,3 @@
-RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
VIA_ENABLE = yes
-MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/bandominedoni/rgb_matrix_user.inc b/keyboards/bandominedoni/rgb_matrix_kb.inc
index 77ad22c1ce..77ad22c1ce 100644
--- a/keyboards/bandominedoni/rgb_matrix_user.inc
+++ b/keyboards/bandominedoni/rgb_matrix_kb.inc
diff --git a/keyboards/bandominedoni/rules.mk b/keyboards/bandominedoni/rules.mk
index 5618c1ca93..29599b3246 100644
--- a/keyboards/bandominedoni/rules.mk
+++ b/keyboards/bandominedoni/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bantam44/keymaps/default/keymap.c b/keyboards/bantam44/keymaps/default/keymap.c
index 430bdb850b..9907cec1cf 100644
--- a/keyboards/bantam44/keymaps/default/keymap.c
+++ b/keyboards/bantam44/keymaps/default/keymap.c
@@ -2,24 +2,24 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, \
- KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, MO(2), KC_SCLN, KC_QUOT, KC_SLSH \
+ [0] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, MO(2), KC_SCLN, KC_QUOT, KC_SLSH
),
/* LOWER */
- [1] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_ENT, \
- KC_CAPS, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_HOME, KC_PGUP, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_END, KC_PGDN, KC_EXLM \
+ [1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_LSFT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NO, KC_HOME, KC_PGUP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_END, KC_PGDN, KC_EXLM
),
/* RAISE */
- [2] = LAYOUT( \
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_ENT, \
- KC_CAPS, KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_UP, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT \
+ [2] = LAYOUT(
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_ENT,
+ KC_CAPS, KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_SPC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/bantam44/rules.mk b/keyboards/bantam44/rules.mk
index 209890d9a2..eee48d6ef9 100644
--- a/keyboards/bantam44/rules.mk
+++ b/keyboards/bantam44/rules.mk
@@ -5,14 +5,12 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/barleycorn/rules.mk b/keyboards/barleycorn/rules.mk
index 3a6d577687..c7d4310cb2 100644
--- a/keyboards/barleycorn/rules.mk
+++ b/keyboards/barleycorn/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk
index 1cb4022709..f054947008 100644
--- a/keyboards/barleycorn_smd/rules.mk
+++ b/keyboards/barleycorn_smd/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/barracuda/rules.mk b/keyboards/barracuda/rules.mk
index 19b49ab12f..781cebc8f0 100644
--- a/keyboards/barracuda/rules.mk
+++ b/keyboards/barracuda/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/basekeys/slice/rev1/rules.mk b/keyboards/basekeys/slice/rev1/rules.mk
index 8208c0f04c..01089b4529 100644
--- a/keyboards/basekeys/slice/rev1/rules.mk
+++ b/keyboards/basekeys/slice/rev1/rules.mk
@@ -15,7 +15,4 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
diff --git a/keyboards/basekeys/slice/rev1_rgb/rules.mk b/keyboards/basekeys/slice/rev1_rgb/rules.mk
index f9228e6016..d4dade7602 100644
--- a/keyboards/basekeys/slice/rev1_rgb/rules.mk
+++ b/keyboards/basekeys/slice/rev1_rgb/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Disable OLED driver.
diff --git a/keyboards/basekeys/trifecta/rules.mk b/keyboards/basekeys/trifecta/rules.mk
index 6842277d2d..d82233c750 100644
--- a/keyboards/basekeys/trifecta/rules.mk
+++ b/keyboards/basekeys/trifecta/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/basketweave/config.h b/keyboards/basketweave/config.h
index afe66c6b14..cdaffe4ca3 100644
--- a/keyboards/basketweave/config.h
+++ b/keyboards/basketweave/config.h
@@ -50,10 +50,9 @@
*/
// #define GRAVE_ESC_CTRL_OVERRIDE
-#define ENCODERS_PAD_A { D7 }
-#define ENCODERS_PAD_B { C0 }
+#define ENCODERS_PAD_A { C0 }
+#define ENCODERS_PAD_B { D7 }
#define ENCODER_RESOLUTION 4
-#define ENCODER_DIRECTION_FLIP
#define TAP_CODE_DELAY 10
/* Bootmagic Lite key configuration */
diff --git a/keyboards/basketweave/rules.mk b/keyboards/basketweave/rules.mk
index ce023436b4..138ccfe3e2 100644
--- a/keyboards/basketweave/rules.mk
+++ b/keyboards/basketweave/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.c b/keyboards/bastardkb/charybdis/3x5/3x5.c
new file mode 100644
index 0000000000..d896cf6923
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/3x5.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Publicw License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "3x5.h"
+
+// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+/**
+ * \brief LEDs index.
+ *
+ * ╭────────────────────╮ ╭────────────────────╮
+ * 2 3 8 9 12 30 27 26 21 20
+ * ├────────────────────┤ ├────────────────────┤
+ * 1 4 7 10 13 31 28 25 22 19
+ * ├────────────────────┤ ├────────────────────┤
+ * 0 5 6 11 14 32 29 24 23 18
+ * ╰────────────────────╯ ╰────────────────────╯
+ * 15 16 17 33 34 XX
+ * ╰────────────╯ ╰────────────╯
+ */
+led_config_t g_led_config = { {
+ /* Key Matrix to LED index. */
+ // Left split.
+ { 2, 3, 8, 9, 12 }, // Top row
+ { 1, 4, 7, 10, 13 }, // Middle row
+ { 0, 5, 6, 11, 14 }, // Bottom row
+ { 17, NO_LED, 15, 16, NO_LED }, // Thumb cluster
+ // Right split.
+ { 20, 21, 26, 27, 30 }, // Top row
+ { 19, 22, 25, 28, 31 }, // Middle row
+ { 18, 23, 24, 29, 32 }, // Bottom row
+ { 33, NO_LED, 34, NO_LED, NO_LED }, // Thumb cluster
+}, {
+ /* LED index to physical position. */
+ // Left split.
+ /* index=0 */ { 0, 42 }, { 0, 21 }, { 0, 0 }, // col 1 (left most)
+ /* index=3 */ { 18, 0 }, { 18, 21 }, { 18, 42 }, // col 2
+ /* index=6 */ { 36, 42 }, { 36, 21 }, { 36, 0 },
+ /* index=9 */ { 54, 0 }, { 54, 21 }, { 54, 42 },
+ /* index=12 */ { 72, 0 }, { 72, 21 }, { 72, 42 },
+ /* index=15 */ { 72, 64 }, { 90, 64 }, { 108, 64 }, // Thumb cluster
+ // Right split.
+ /* index=18 */ { 224, 42 }, { 224, 21 }, { 224, 0 }, // col 10 (right most)
+ /* index=21 */ { 206, 0 }, { 206, 21 }, { 206, 42 }, // col 9
+ /* index=24 */ { 188, 42 }, { 188, 21 }, { 188, 0 },
+ /* index=27 */ { 170, 0 }, { 170, 21 }, { 170, 42 },
+ /* index=30 */ { 152, 0 }, { 152, 21 }, { 152, 42 },
+ /* index=33 */ { 152, 64 }, { 134, 64 },
+}, {
+ /* LED index to flag. */
+ // Left split.
+ /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1
+ /* index=3 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2
+ /* index=6 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=9 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=15 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster
+ // Right split.
+ /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10
+ /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9
+ /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=27 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=30 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
+} };
+#endif
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.h b/keyboards/bastardkb/charybdis/3x5/3x5.h
new file mode 100644
index 0000000000..665fcbeec2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/3x5.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "charybdis.h"
+
+// clang-format off
+#define LAYOUT_charybdis_3x5( \
+ k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
+ k32, k33, k30, k70, k72 \
+) \
+{ \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, KC_NO, k32, k33, KC_NO }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, k54 }, \
+ { k60, k61, k62, k63, k64 }, \
+ { k70, KC_NO, k72, KC_NO, KC_NO }, \
+}
+
+/**
+ * \brief Compatibility layout with the split_3x5_3 community layout.
+ *
+ * This effectively renders the Charbdis Nano compatible with existing layout
+ * implementations relying on the `split_3x5_3` layout, which includes, among
+ * others, Manna-Harbour's (@manna_harbour) Miryoku layout.
+ *
+ * The last key on the layout is ignored, to transform the input 36-keys layout
+ * into the Charybdis Nano's 35-keys layout.
+ */
+#define LAYOUT_split_3x5_3( \
+ k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
+ k32, k33, k30, k70, k72, ___ \
+) \
+{ \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, KC_NO, k32, k33, KC_NO }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, k54 }, \
+ { k60, k61, k62, k63, k64 }, \
+ { k70, KC_NO, k72, KC_NO, KC_NO }, \
+}
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x5/config.h b/keyboards/bastardkb/charybdis/3x5/config.h
new file mode 100644
index 0000000000..9c69f7c358
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/config.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define VENDOR_ID 0xA8F8
+#define PRODUCT_ID 0x1832
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Bastard Keyboards
+#define PRODUCT Charybdis Nano
+
+/* Key matrix configuration. */
+
+// Rows are doubled-up.
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// Wiring configuration for each half.
+#define MATRIX_ROW_PINS \
+ { B7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { C7, F0, D7, E6, B4 }
+
+#define MATRIX_ROW_PINS_RIGHT \
+ { F0, C6, D4, B5 }
+#define MATRIX_COL_PINS_RIGHT \
+ { C7, B7, D7, E6, B4 }
+
+#define DIODE_DIRECTION ROW2COL
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* Bootmagic Lite configuration. */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 4
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
+
+/* serial.c configuration (for split keyboard) */
+#define SOFT_SERIAL_PIN D2
+
+/* Set 0 if debouncing isn't needed. */
+#define DEBOUNCE 5
+
+/* Disable action features. */
+#define NO_ACTION_MACRO // Disable old-style macro handling.
+#define NO_ACTION_FUNCTION // Disable old-style function handling.
+
+/* PMW3360 settings. */
+#define PMW3360_CS_PIN B0
+
+// Trackball angle adjustment.
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+
+/* RGB settings. */
+
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 35
+#define RGBLED_SPLIT \
+ { 18, 17 }
+
+/* RGB matrix support. */
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+#endif
diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json
new file mode 100644
index 0000000000..03fb05664f
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "Charybdis Nano",
+ "url": "https://www.bastardkb.com",
+ "maintainer": "Quentin Lebastard",
+ "layouts": {
+ "LAYOUT_charybdis_3x5": {
+ "layout": [
+ { "label": "L00", "x": 0, "y": 0 },
+ { "label": "L01", "x": 1, "y": 0 },
+ { "label": "L02", "x": 2, "y": 0 },
+ { "label": "L03", "x": 3, "y": 0 },
+ { "label": "L04", "x": 4, "y": 0 },
+ { "label": "R00", "x": 11, "y": 0 },
+ { "label": "R01", "x": 12, "y": 0 },
+ { "label": "R02", "x": 13, "y": 0 },
+ { "label": "R03", "x": 14, "y": 0 },
+ { "label": "R04", "x": 15, "y": 0 },
+ { "label": "L10", "x": 0, "y": 1 },
+ { "label": "L11", "x": 1, "y": 1 },
+ { "label": "L12", "x": 2, "y": 1 },
+ { "label": "L13", "x": 3, "y": 1 },
+ { "label": "L14", "x": 4, "y": 1 },
+ { "label": "R10", "x": 11, "y": 1 },
+ { "label": "R11", "x": 12, "y": 1 },
+ { "label": "R12", "x": 13, "y": 1 },
+ { "label": "R13", "x": 14, "y": 1 },
+ { "label": "R14", "x": 15, "y": 1 },
+ { "label": "L20", "x": 0, "y": 2 },
+ { "label": "L21", "x": 1, "y": 2 },
+ { "label": "L22", "x": 2, "y": 2 },
+ { "label": "L23", "x": 3, "y": 2 },
+ { "label": "L24", "x": 4, "y": 2 },
+ { "label": "R20", "x": 11, "y": 2 },
+ { "label": "R21", "x": 12, "y": 2 },
+ { "label": "R22", "x": 13, "y": 2 },
+ { "label": "R23", "x": 14, "y": 2 },
+ { "label": "R24", "x": 15, "y": 2 },
+ { "label": "L30", "x": 4, "y": 3 },
+ { "label": "L31", "x": 5, "y": 3 },
+ { "label": "L32", "x": 6, "y": 3 },
+ { "label": "R30", "x": 9, "y": 3 },
+ { "label": "R31", "x": 10, "y": 3 }
+ ]
+ },
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ { "label": "L00", "x": 0, "y": 0 },
+ { "label": "L01", "x": 1, "y": 0 },
+ { "label": "L02", "x": 2, "y": 0 },
+ { "label": "L03", "x": 3, "y": 0 },
+ { "label": "L04", "x": 4, "y": 0 },
+ { "label": "R00", "x": 11, "y": 0 },
+ { "label": "R01", "x": 12, "y": 0 },
+ { "label": "R02", "x": 13, "y": 0 },
+ { "label": "R03", "x": 14, "y": 0 },
+ { "label": "R04", "x": 15, "y": 0 },
+ { "label": "L10", "x": 0, "y": 1 },
+ { "label": "L11", "x": 1, "y": 1 },
+ { "label": "L12", "x": 2, "y": 1 },
+ { "label": "L13", "x": 3, "y": 1 },
+ { "label": "L14", "x": 4, "y": 1 },
+ { "label": "R10", "x": 11, "y": 1 },
+ { "label": "R11", "x": 12, "y": 1 },
+ { "label": "R12", "x": 13, "y": 1 },
+ { "label": "R13", "x": 14, "y": 1 },
+ { "label": "R14", "x": 15, "y": 1 },
+ { "label": "L20", "x": 0, "y": 2 },
+ { "label": "L21", "x": 1, "y": 2 },
+ { "label": "L22", "x": 2, "y": 2 },
+ { "label": "L23", "x": 3, "y": 2 },
+ { "label": "L24", "x": 4, "y": 2 },
+ { "label": "R20", "x": 11, "y": 2 },
+ { "label": "R21", "x": 12, "y": 2 },
+ { "label": "R22", "x": 13, "y": 2 },
+ { "label": "R23", "x": 14, "y": 2 },
+ { "label": "R24", "x": 15, "y": 2 },
+ { "label": "L30", "x": 4, "y": 3 },
+ { "label": "L31", "x": 5, "y": 3 },
+ { "label": "L32", "x": 6, "y": 3 },
+ { "label": "R30", "x": 9, "y": 3 },
+ { "label": "R31", "x": 10, "y": 3 },
+ { "label": "R32", "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/default/config.h
new file mode 100644
index 0000000000..f2dd86c653
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/config.h
@@ -0,0 +1,54 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#ifndef TAPPING_TERM
+/**
+ * \brief Configure the global tapping term (default: 200ms).
+ *
+ * If you have a lot of accidental mod activations, crank up the tapping term.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
+ */
+# define TAPPING_TERM 200
+#endif // TAPPING_TERM
+
+/* RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+// Disable control of RGB matrix by keycodes (must use firmware implementation
+// to control the feature).
+# define RGB_MATRIX_DISABLE_KEYCODES
+
+// Limit maximum brightness to keep power consumption reasonable, and avoid
+// disconnects.
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
+
+// Rainbow swirl as startup mode.
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Slow swirl at startup.
+# define RGB_MATRIX_STARTUP_SPD 32
+
+// Startup values.
+# define RGB_MATRIX_STARTUP_HUE 0
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_STARTUP_HSV RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
new file mode 100644
index 0000000000..18fe860527
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
@@ -0,0 +1,70 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum charybdis_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_LOWER,
+ LAYER_RAISE,
+};
+
+#define LOWER MO(LAYER_LOWER)
+#define RAISE MO(LAYER_RAISE)
+
+#define CTL_BSP CTL_T(KC_BSPC)
+#define SFT_SPC SFT_T(KC_SPC)
+#define GUI_ENT GUI_T(KC_ENT)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_charybdis_3x5(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ CTL_BSP, SFT_SPC, LOWER, RAISE, GUI_ENT
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_LOWER] = LAYOUT_charybdis_3x5(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ RGB_TOG, KC_MNXT, KC_MPLY, KC_MPRV, XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_RAISE] = LAYOUT_charybdis_3x5(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, XXXXXXX,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, RESET, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ _______, _______, XXXXXXX, _______, XXXXXXX
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+};
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md
new file mode 100644
index 0000000000..3908656820
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# Charybdis (3x5) default keymap
+
+> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout.
+
+The Charydbis (3x5) default keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap.
+
+This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect.
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/chconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/chconf.h
new file mode 100644
index 0000000000..8b55eaeef0
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/chconf.h
@@ -0,0 +1,38 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f411/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
+
+#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
+
+#define CH_CFG_FACTORY_SEMAPHORES TRUE
+
+#define CH_CFG_FACTORY_MAILBOXES TRUE
+
+#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
+
+#define CH_CFG_FACTORY_PIPES TRUE
+
+#include_next <chconf.h>
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
new file mode 100644
index 0000000000..4633db2fc6
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
@@ -0,0 +1,109 @@
+/*
+
+Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#undef PRODUCT
+#define PRODUCT Charybdis Nano (Blackpill)
+
+#undef MATRIX_ROW_PINS
+#define MATRIX_ROW_PINS \
+ { B12, B13, B14, B15 }
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS \
+ { A15, B3, B4, B5, B6 }
+
+
+#undef MATRIX_ROW_PINS_RIGHT
+#define MATRIX_ROW_PINS_RIGHT \
+ { B12, B13, B14, B15 }
+#undef MATRIX_COL_PINS_RIGHT
+#define MATRIX_COL_PINS_RIGHT \
+ { A15, B3, B4, B5, B6 }
+
+#define USB_VBUS_PIN B10
+#define SPLIT_HAND_PIN C14 // high = left, low = right
+
+// WS2812 RGB LED strip input and number of LEDs
+#undef RGB_DI_PIN
+#define RGB_DI_PIN A1
+#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+#define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
+#define WS2812_PWM_CHANNEL 2 // default: 2
+#define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+#define WS2812_EXTERNAL_PULLUP
+//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy).
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+#define DEBUG_LED_PIN C13
+
+/* Audio config */
+#define AUDIO_PIN B1
+#define AUDIO_PWM_DRIVER PWMD3
+#define AUDIO_PWM_CHANNEL 4
+#define AUDIO_PWM_PAL_MODE 2
+#define AUDIO_STATE_TIMER GPTD4
+
+/* serial.c configuration for split keyboard */
+#undef SOFT_SERIAL_PIN
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+#define SERIAL_USART_TX_PIN A2
+#define SERIAL_USART_RX_PIN A3
+#define SERIAL_USART_DRIVER SD2
+#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+// #define SERIAL_USART_PIN_SWAP // swap RX and TX pins on master
+// To use the highest possible baudrate (3.75Mbit/s) uncomment the following
+// line, this can result in dropped communications so lower the speed if there
+// are many timeouts.
+// #define SERIAL_USART_SPEED (STM32_PCLK2 >> 4)
+
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* spi config for eeprom and pmw3360 sensor */
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN A5
+#define SPI_SCK_PAL_MODE 5
+#define SPI_MOSI_PIN A7
+#define SPI_MOSI_PAL_MODE 5
+#define SPI_MISO_PIN A6
+#define SPI_MISO_PAL_MODE 5
+
+/* eeprom config */
+#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4
+#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
+// #define EXTERNAL_EEPROM_BYTE_COUNT 8196
+// #define EXTERNAL_EEPROM_PAGE_SIZE 32
+// #define EXTERNAL_EEPROM_ADDRESS_SIZE 2
+
+/* pmw3360 config */
+#undef PMW3360_CS_PIN
+#define PMW3360_CS_PIN B0
+#define PMW3360_SPI_MODE 3
+#define PMW3360_SPI_DIVISOR 64
+
+
+# define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+# define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+# define CHARYBDIS_MINIMUM_SNIPING_DPI 200
+# define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h
new file mode 100644
index 0000000000..39644726c3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+#define HAL_USE_GPT TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c
new file mode 100644
index 0000000000..aba169dbb5
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Drashna Jael're @drashna
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "drashna.h"
+
+#define LAYOUT_charybdis_3x5_wrapper(...) LAYOUT_charybdis_3x5(__VA_ARGS__)
+#define LAYOUT_charybdis_3x5_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_charybdis_3x5 ( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ ALT_T(K11), K12, K13, K14, GUI_T(K15), LGUI_T(K16), K17, K18, K19, LALT_T(K1A), \
+ CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), \
+ LSFT_T(KC_GRV), KC_SPC, BK_LWER, DL_RAIS, RSFT_T(KC_ENT) \
+ )
+#define LAYOUT_charybdis_3x5_base_wrapper(...) LAYOUT_charybdis_3x5_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_DEFAULT_LAYER_1] = LAYOUT_charybdis_3x5_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+ [_DEFAULT_LAYER_2] = LAYOUT_charybdis_3x5_base_wrapper(
+ ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
+ ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
+ ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
+ ),
+ [_DEFAULT_LAYER_3] = LAYOUT_charybdis_3x5_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DEFAULT_LAYER_4] = LAYOUT_charybdis_3x5_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_MOUSE] = LAYOUT_charybdis_3x5(
+ _______, _______, _______, S_D_MOD, DPI_MOD, KC_WH_U, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6,
+ _______, _______, _______, S_D_RMOD,DPI_RMOD, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______,
+ _______, SNIPING, _______, _______, _______
+ ),
+ [_LOWER] = LAYOUT_charybdis_3x5_wrapper(
+ _________________LOWER_L1__________________, _________________LOWER_R1__________________,
+ _________________LOWER_L2__________________, _________________LOWER_R2__________________,
+ _________________LOWER_L3__________________, _________________LOWER_R3__________________,
+ _______, _______, _______, _______, AUTO_CTN
+ ),
+ [_RAISE] = LAYOUT_charybdis_3x5_wrapper(
+ _________________RAISE_L1__________________, _________________RAISE_R1__________________,
+ _________________RAISE_L2__________________, _________________RAISE_R2__________________,
+ _________________RAISE_L3__________________, _________________RAISE_R3__________________,
+ REBOOT, KEYLOCK, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT_charybdis_3x5_wrapper(
+ _________________ADJUST_L1_________________, _________________ADJUST_R1_________________,
+ _________________ADJUST_L2_________________, _________________ADJUST_R2_________________,
+ _________________ADJUST_L3_________________, _________________ADJUST_R3_________________,
+ EEP_RST, KC_NUKE, _______, _______, RESET
+ ),
+};
+
+void matrix_init_keyemap(void) { setPinInputHigh(A0); }
+
+void matrix_scan_keymap(void) {
+ if (!readPin(A0)) {
+ reset_keyboard();
+ }
+}
+
+#ifdef USB_VBUS_PIN
+bool usb_vbus_state(void) {
+ setPinInputLow(USB_VBUS_PIN);
+ wait_us(5);
+ return readPin(USB_VBUS_PIN);
+}
+#endif
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h
new file mode 100644
index 0000000000..d868eae48e
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h
@@ -0,0 +1,55 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_I2C_I2C1_RX_DMA_STREAM
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#undef STM32_I2C_I2C1_TX_DMA_STREAM
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1)
+
+#undef STM32_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
+
+#undef STM32_SPI_SPI1_RX_DMA_STREAM
+#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
+#undef STM32_SPI_SPI1_TX_DMA_STREAM
+#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
+
+#undef STM32_SERIAL_USE_USART2
+#define STM32_SERIAL_USE_USART2 TRUE
+
+#undef STM32_UART_USART2_RX_DMA_STREAM
+#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#undef STM32_UART_USART2_TX_DMA_STREAM
+#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+
+#undef STM32_GPT_USE_TIM4
+#define STM32_GPT_USE_TIM4 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 5
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
new file mode 100644
index 0000000000..d23bf99aac
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+KEYBOARD_SHARED_EP = yes
+MOUSE_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+AUDIO_DRIVER = pwm_hardware
+
+AUDIO_SUPPORTED = yes
+AUDIO_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
+CONSOLE_ENABLE = yes
+
+AUTOCORRECTION_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h
new file mode 100644
index 0000000000..f515d85334
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h
@@ -0,0 +1,118 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#ifdef VIA_ENABLE
+/* VIA configuration. */
+# define DYNAMIC_KEYMAP_LAYER_COUNT 7
+#endif // VIA_ENABLE
+
+/* Disable unused features. */
+#define NO_ACTION_ONESHOT
+
+#ifndef TAPPING_TERM
+/**
+ * \brief Configure the global tapping term (default: 200ms).
+ *
+ * If you have a lot of accidental mod activations, crank up the tapping term.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
+ */
+# define TAPPING_TERM 200
+#endif // TAPPING_TERM
+
+/**
+ * \brief Enable rapid switch from tap to hold.
+ *
+ * Note that a side-effect of this setting is to disable auto-repeat when
+ * pressing key twice, except for one-shot keys.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-force-hold
+ */
+#define TAPPING_FORCE_HOLD
+
+/*
+ * Tap-or-Hold decision modes.
+ *
+ * Note that the following flags behave differently when combined (ie. when 2 or
+ * more are enabled).
+ *
+ * See bit.ly/tap-or-hold for a visual explanation of the following tap-or-hold
+ * decision modes.
+ */
+
+/**
+ * \brief Faster tap-hold trigger.
+ *
+ * Without `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ ae
+ * With `PERMISSIVE_HOLD`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 e🠕 Mod(a)🠕 ➞ Mod+e
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#permissive-hold
+ */
+#define PERMISSIVE_HOLD
+
+/**
+ * \brief Prevent normal rollover on alphas from accidentally triggering mods.
+ *
+ * Ignores key presses that interrupt a mod-tap. Must-have for Home Row mod.
+ *
+ * Without `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ Mod+e
+ * With `IGNORE_MOD_TAP_INTERRUPT`, within `TAPPING_TERM`:
+ * Mod(a)🠗 e🠗 Mod(a)🠕 e🠕 ➞ ae
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#ignore-mod-tap-interrupt
+ */
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Charybdis-specific features. */
+
+#ifdef POINTING_DEVICE_ENABLE
+// Enable pointer acceleration, which increases the speed by ~2x for large
+// displacement, while maintaining 1x speed for slow movements. See also:
+// - `CHARYBDIS_POINTER_ACCELERATION_FACTOR`
+# define CHARYBDIS_POINTER_ACCELERATION_ENABLE
+
+// Automatically enable the pointer layer when moving the trackball. See also:
+// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS`
+// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD`
+// #define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+#endif // POINTING_DEVICE_ENABLE
+
+/* RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+// Limit maximum brightness to keep power consumption reasonable, and avoid
+// disconnects.
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
+
+// Rainbow swirl as startup mode.
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Slow swirl at startup.
+# define RGB_MATRIX_STARTUP_SPD 32
+
+// Startup values.
+# define RGB_MATRIX_STARTUP_HUE 0
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_STARTUP_HSV RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ba549deecf
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
@@ -0,0 +1,263 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+# include "timer.h"
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+enum charybdis_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_FUNCTION,
+ LAYER_NAVIGATION,
+ LAYER_MEDIA,
+ LAYER_POINTER,
+ LAYER_NUMERAL,
+ LAYER_SYMBOLS,
+};
+
+// Automatically enable sniping-mode on the pointer layer.
+#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+
+#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+static uint16_t auto_pointer_layer_timer = 0;
+
+# ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+# define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+
+# ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+# define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+#define ESC_MED LT(LAYER_MEDIA, KC_ESC)
+#define SPC_NAV LT(LAYER_NAVIGATION, KC_SPC)
+#define TAB_FUN LT(LAYER_FUNCTION, KC_TAB)
+#define ENT_SYM LT(LAYER_SYMBOLS, KC_ENT)
+#define BSP_NUM LT(LAYER_NUMERAL, KC_BSPC)
+#define _L_PTR(KC) LT(LAYER_POINTER, KC)
+
+// clang-format off
+/** \brief QWERTY layout (3 rows, 10 columns). */
+#define LAYOUT_LAYER_BASE \
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
+ ESC_MED, SPC_NAV, TAB_FUN, ENT_SYM, BSP_NUM
+
+/** Convenience row shorthands. */
+#define _______________DEAD_HALF_ROW_______________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define ______________HOME_ROW_GACS_L______________ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX
+#define ______________HOME_ROW_GACS_R______________ XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI
+
+/*
+ * Layers used on the Charybdis Nano.
+ *
+ * These layers started off heavily inspired by the Miryoku layout, but trimmed
+ * down and tailored for a stock experience that is meant to be fundation for
+ * further personalization.
+ *
+ * See https://github.com/manna-harbour/miryoku for the original layout.
+ */
+
+/**
+ * \brief Function layer.
+ *
+ * Secondary right-hand layer has function keys mirroring the numerals on the
+ * primary layer with extras on the pinkie column, plus system keys on the inner
+ * column. App is on the tertiary thumb key and other thumb keys are duplicated
+ * from the base layer to enable auto-repeat.
+ */
+#define LAYOUT_LAYER_FUNCTION \
+ _______________DEAD_HALF_ROW_______________, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12, \
+ ______________HOME_ROW_GACS_L______________, KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, \
+ _______________DEAD_HALF_ROW_______________, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10, \
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX
+
+/**
+ * \brief Media layer.
+ *
+ * Tertiary left- and right-hand layer is media and RGB control. This layer is
+ * symmetrical to accomodate the left- and right-hand trackball.
+ */
+#define LAYOUT_LAYER_MEDIA \
+ XXXXXXX,RGB_RMOD, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX,RGB_RMOD, RGB_TOG, RGB_MOD, XXXXXXX, \
+ KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, \
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, RESET, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, KC_MPLY, KC_MSTP, KC_MSTP, KC_MPLY
+
+/** \brief Mouse emulation and pointer functions. */
+#define LAYOUT_LAYER_POINTER \
+ XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, \
+ ______________HOME_ROW_GACS_L______________, ______________HOME_ROW_GACS_R______________, \
+ _______, DRGSCRL, SNIPING, EEP_RST, RESET, RESET, EEP_RST, SNIPING, DRGSCRL, _______, \
+ KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1
+
+/**
+ * \brief Navigation layer.
+ *
+ * Primary right-hand layer (left home thumb) is navigation and editing. Cursor
+ * keys are on the home position, line and page movement below, clipboard above,
+ * caps lock and insert on the inner column. Thumb keys are duplicated from the
+ * base layer to avoid having to layer change mid edit and to enable auto-repeat.
+ */
+#define LAYOUT_LAYER_NAVIGATION \
+ _______________DEAD_HALF_ROW_______________, _______________DEAD_HALF_ROW_______________, \
+ ______________HOME_ROW_GACS_L______________, KC_CLCK, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+ _______________DEAD_HALF_ROW_______________, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+ XXXXXXX, _______, XXXXXXX, KC_ENT, KC_BSPC
+
+/**
+ * \brief Numeral layout.
+ *
+ * Primary left-hand layer (right home thumb) is numerals and symbols. Numerals
+ * are in the standard numpad locations with symbols in the remaining positions.
+ * `KC_DOT` is duplicated from the base layer.
+ */
+#define LAYOUT_LAYER_NUMERAL \
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______________DEAD_HALF_ROW_______________, \
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, ______________HOME_ROW_GACS_R______________, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, _______________DEAD_HALF_ROW_______________, \
+ KC_DOT, KC_0, KC_MINS, XXXXXXX, _______
+
+/**
+ * \brief Symbols layer.
+ *
+ * Secondary left-hand layer has shifted symbols in the same locations to reduce
+ * chording when using mods with shifted symbols. `KC_LPRN` is duplicated next to
+ * `KC_RPRN`.
+ */
+#define LAYOUT_LAYER_SYMBOLS \
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, _______________DEAD_HALF_ROW_______________, \
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GACS_R______________, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, _______________DEAD_HALF_ROW_______________, \
+ KC_LPRN, KC_RPRN, KC_UNDS, _______, XXXXXXX
+
+/**
+ * \brief Add Home Row mod to a layout.
+ *
+ * Expects a 10-key per row layout. Adds support for GACS (Gui, Alt, Ctl, Shift)
+ * home row. The layout passed in parameter must contain at least 20 keycodes.
+ *
+ * This is meant to be used with `LAYER_ALPHAS_QWERTY` defined above, eg.:
+ *
+ * HOME_ROW_MOD_GACS(LAYER_ALPHAS_QWERTY)
+ */
+#define _HOME_ROW_MOD_GACS( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ LGUI_T(L10), LALT_T(L11), LCTL_T(L12), LSFT_T(L13), L14, \
+ R15, RSFT_T(R16), RCTL_T(R17), LALT_T(R18), RGUI_T(R19), \
+ __VA_ARGS__
+#define HOME_ROW_MOD_GACS(...) _HOME_ROW_MOD_GACS(__VA_ARGS__)
+
+/**
+ * \brief Add pointer layer keys to a layout.
+ *
+ * Expects a 10-key per row layout. The layout passed in parameter must contain
+ * at least 30 keycodes.
+ *
+ * This is meant to be used with `LAYER_ALPHAS_QWERTY` defined above, eg.:
+ *
+ * POINTER_MOD(LAYER_ALPHAS_QWERTY)
+ */
+#define _POINTER_MOD( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, R15, R16, R17, R18, R19, \
+ L20, L21, L22, L23, L24, R25, R26, R27, R28, R29, \
+ ...) \
+ L00, L01, L02, L03, L04, \
+ R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, \
+ R15, R16, R17, R18, R19, \
+ _L_PTR(L20), L21, L22, L23, L24, \
+ R25, R26, R27, R28, _L_PTR(R29), \
+ __VA_ARGS__
+#define POINTER_MOD(...) _POINTER_MOD(__VA_ARGS__)
+
+#define LAYOUT_wrapper(...) LAYOUT_charybdis_3x5(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_wrapper(
+ POINTER_MOD(HOME_ROW_MOD_GACS(LAYOUT_LAYER_BASE))
+ ),
+ [LAYER_FUNCTION] = LAYOUT_wrapper(LAYOUT_LAYER_FUNCTION),
+ [LAYER_NAVIGATION] = LAYOUT_wrapper(LAYOUT_LAYER_NAVIGATION),
+ [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
+ [LAYER_NUMERAL] = LAYOUT_wrapper(LAYOUT_LAYER_NUMERAL),
+ [LAYER_POINTER] = LAYOUT_wrapper(LAYOUT_LAYER_POINTER),
+ [LAYER_SYMBOLS] = LAYOUT_wrapper(LAYOUT_LAYER_SYMBOLS),
+};
+// clang-format on
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (abs(mouse_report.x) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD || abs(mouse_report.y) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD) {
+ if (auto_pointer_layer_timer == 0) {
+ layer_on(LAYER_POINTER);
+# ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_NONE);
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+# endif // RGB_MATRIX_ENABLE
+ }
+ auto_pointer_layer_timer = timer_read();
+ }
+ return mouse_report;
+}
+
+void matrix_scan_kb(void) {
+ if (auto_pointer_layer_timer != 0 && TIMER_DIFF_16(timer_read(), auto_pointer_layer_timer) >= CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS) {
+ auto_pointer_layer_timer = 0;
+ layer_off(LAYER_POINTER);
+# ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_STARTUP_MODE);
+# endif // RGB_MATRIX_ENABLE
+ }
+ matrix_scan_user();
+}
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+# ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+# endif // CHARYBDIS_AUTO_SNIPING_ON_LAYER
+#endif // POINTING_DEVICE_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+// Forward-declare this helper function since it is defined in rgb_matrix.c.
+void rgb_matrix_update_pwm_buffers(void);
+#endif
+
+void shutdown_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_setrgb_red();
+#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_set_color_all(RGB_RED);
+ rgb_matrix_update_pwm_buffers();
+#endif // RGB_MATRIX_ENABLE
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/readme.md b/keyboards/bastardkb/charybdis/3x5/keymaps/via/readme.md
new file mode 100644
index 0000000000..dc7f6f2d30
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/readme.md
@@ -0,0 +1,63 @@
+# Charybdis (3x5) `via` keymap
+
+The Charydbis (3x5) `via` keymap is based on a QWERTY layout with [home row mods](https://precondition.github.io/home-row-mods) and [Miryoku-inspired layers](https://github.com/manna-harbour/miryoku), and some features and changes specific to the Charybdis.
+
+This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect.
+
+This layout also supports VIA.
+
+## Customizing the keymap
+
+### Dynamic DPI scaling
+
+Use the following keycodes to change the default DPI:
+
+- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 16 possible values for the sniping mode DPI. See the [Charybdis documentation](../../README.md) for more information.
+
+Use the following keycodes to change the sniping mode DPI:
+
+- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 4 possible values for the sniping mode DPI. See the [Charybdis documentation](../../README.md) for more information.
+
+### Drag-scroll
+
+Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
+
+### Sniping
+
+Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
+
+Change the value of `CHARYBDIS_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
+
+```c
+#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+```
+
+### Auto pointer layer
+
+The pointer layer can be automatically enabled when moving the trackball. To enable or disable this behavior, add or remove the following define:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+```
+
+By default, the layer is turned off 1 second after the last registered trackball movement:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+```
+
+The trigger sensibility can also be tuned. The lower the value, the more sensible the trigger:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+```
+
+## Layout
+
+![Keymap layout (generated with keyboard-layout-editor.com)](https://i.imgur.com/uHEnqEN.png)
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x5/readme.md b/keyboards/bastardkb/charybdis/3x5/readme.md
new file mode 100644
index 0000000000..7a91035bea
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/readme.md
@@ -0,0 +1,15 @@
+# Charybdis Nano (3x5)
+
+An ergonomic keyboard with integrated trackball.
+
+The Charybdis is available in 4x6 and 3x5 form factor at [bastardkb.com](https://bastardkb.com).
+
+## Keymaps
+
+### [`default`](keymaps/default)
+
+A simple QWERTY layout with 4 layers.
+
+### [`via`](keymaps/via)
+
+A [Miryoku-inspired](https://github.com/manna-harbour/miryoku), feature-rich, keymap with VIA support.
diff --git a/keyboards/bastardkb/charybdis/3x5/rules.mk b/keyboards/bastardkb/charybdis/3x5/rules.mk
new file mode 100644
index 0000000000..c5f3f0fb8c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/rules.mk
@@ -0,0 +1,38 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+AUDIO_SUPPORTED = no # Audio is not supported
+RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default
+RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality
+RGB_MATRIX_DRIVER = WS2812
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
+
+# Charybdis nano is a split 3x5 keyboard with a maximum of 3 thumb keys (2 on
+# the trackball side).
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3 # Support community layout, in particular Manna-Harbour's Miryoku layout
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+# https://qmk.fm/changes/2018-11-16-use-a-single-endpoint-for-hid-reports
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
diff --git a/keyboards/bastardkb/charybdis/4x6/4x6.c b/keyboards/bastardkb/charybdis/4x6/4x6.c
new file mode 100644
index 0000000000..6cd8fffee7
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/4x6.c
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Publicw License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "4x6.h"
+
+// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+/**
+ * \brief LEDs index.
+ *
+ * ╭────────────────────────╮ ╭────────────────────────╮
+ * 0 7 8 15 16 20 49 45 44 37 36 29
+ * ├────────────────────────┤ ├────────────────────────┤
+ * 1 6 9 14 17 21 50 46 43 38 35 30
+ * ├────────────────────────┤ ├────────────────────────┤
+ * 2 5 10 13 18 22 51 47 42 39 34 31
+ * ├────────────────────────┤ ├────────────────────────┤
+ * 3 4 11 12 19 23 52 48 41 40 33 32
+ * ╰────────────────────────╯ ╰────────────────────────╯
+ * 26 27 28 53 54 XX
+ * 25 24 55 XX
+ * ╰────────────╯ ╰────────────╯
+ */
+led_config_t g_led_config = { {
+ /* Key Matrix to LED index. */
+ // Left split.
+ { 0, 7, 8, 15, 16, 20 }, // Num row
+ { 1, 6, 9, 14, 17, 21 }, // Top row
+ { 2, 5, 10, 13, 18, 22 }, // Middle row
+ { 3, 4, 11, 12, 19, 23 }, // Bottom row
+ { NO_LED, 28, 24, 26, 27, 25 }, // Thumb cluster
+ // Right split.
+ { 29, 36, 37, 44, 45, 49 }, // Num row
+ { 30, 35, 38, 43, 46, 50 }, // Top row
+ { 31, 34, 39, 42, 47, 51 }, // Middle row
+ { 32, 33, 40, 41, 48, 52 }, // Bottom row
+ { NO_LED, 53, 55, 54, NO_LED, NO_LED }, // Thumb cluster
+}, {
+ /* LED index to physical position. */
+ // Left split.
+ /* index=0 */ { 0, 0 }, { 0, 12 }, { 0, 24 }, { 0, 36 }, // col 1 (left most)
+ /* index=4 */ { 16, 36 }, { 16, 24 }, { 16, 12 }, { 16, 0 }, // col 2
+ /* index=8 */ { 32, 0 }, { 32, 12 }, { 32, 24 }, { 32, 36 },
+ /* index=12 */ { 48, 36 }, { 48, 24 }, { 48, 12 }, { 48, 0 },
+ /* index=16 */ { 64, 0 }, { 64, 12 }, { 64, 24 }, { 64, 36 },
+ /* index=20 */ { 80, 0 }, { 80, 12 }, { 80, 24 }, { 80, 36 },
+ /* index=24 */ { 112, 64 }, { 96, 64 }, { 80, 52 },
+ /* index=27 */ { 96, 52 }, { 112, 52 },
+ // Right split.
+ /* index=29 */ { 224, 0 }, { 224, 12 }, { 224, 24 }, { 224, 36 }, // col 12 (right most)
+ /* index=33 */ { 208, 36 }, { 208, 24 }, { 208, 12 }, { 208, 0 }, // col 11
+ /* index=37 */ { 192, 0 }, { 192, 12 }, { 192, 24 }, { 192, 36 },
+ /* index=41 */ { 176, 36 }, { 176, 24 }, { 176, 12 }, { 176, 0 },
+ /* index=45 */ { 160, 0 }, { 160, 12 }, { 160, 24 }, { 160, 36 },
+ /* index=49 */ { 144, 0 }, { 144, 12 }, { 144, 24 }, { 144, 36 },
+ /* index=53 */ { 112, 52 }, { 128, 64 }, { 112, 64 },
+}, {
+ /* LED index to flag. */
+ // Left split.
+ /* index=0 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 1
+ /* index=4 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 2
+ /* index=8 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=12 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=16 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=20 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=24 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster top
+ /* index=27 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster bottom
+ // Right split.
+ /* index=29 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 12
+ /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 11
+ /* index=37 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=41 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=45 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=49 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=53 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
+} };
+#endif
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/4x6/4x6.h b/keyboards/bastardkb/charybdis/4x6/4x6.h
new file mode 100644
index 0000000000..c26d356d69
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/4x6.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "charybdis.h"
+
+// clang-format off
+#define LAYOUT_charybdis_4x6( \
+ k00, k01, k02, k03, k04, k05, k55, k54, k53, k52, k51, k50, \
+ k10, k11, k12, k13, k14, k15, k65, k64, k63, k62, k61, k60, \
+ k20, k21, k22, k23, k24, k25, k75, k74, k73, k72, k71, k70, \
+ k30, k31, k32, k33, k34, k35, k85, k84, k83, k82, k81, k80, \
+ k43, k44, k41, k91, k93, \
+ k45, k42, k95 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { KC_NO, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { k70, k71, k72, k73, k74, k75 }, \
+ { k80, k81, k82, k83, k84, k85 }, \
+ { KC_NO, k91, KC_NO, k93, KC_NO, k95 }, \
+}
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h
new file mode 100644
index 0000000000..f00fb382f6
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/config.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define VENDOR_ID 0xA8F8
+#define PRODUCT_ID 0x1833
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Bastard Keyboards
+#define PRODUCT Charybdis
+
+/* Key matrix configuration. */
+
+// Rows are doubled-up.
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// Wiring configuration for each half.
+#define MATRIX_ROW_PINS \
+ { F1, B7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { D5, C7, F0, D7, E6, B4 }
+
+#define MATRIX_ROW_PINS_RIGHT \
+ { D5, F0, C6, D4, B5 }
+#define MATRIX_COL_PINS_RIGHT \
+ { F1, C7, B7, D7, E6, B4 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* Bootmagic Lite configuration. */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
+
+/* serial.c configuration (for split keyboard) */
+#define SOFT_SERIAL_PIN D2
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Disable action features. */
+#define NO_ACTION_MACRO // Disable old-style macro handling.
+#define NO_ACTION_FUNCTION // Disable old-style function handling.
+
+/* PMW3360 settings. */
+#define PMW3360_CS_PIN B0
+
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 56
+#define RGBLED_SPLIT \
+ { 29, 27 }
+
+/* RGB matrix support. */
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+#endif
diff --git a/keyboards/bastardkb/charybdis/4x6/info.json b/keyboards/bastardkb/charybdis/4x6/info.json
new file mode 100644
index 0000000000..956dfe88f5
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/info.json
@@ -0,0 +1,67 @@
+{
+ "keyboard_name": "Charybdis",
+ "url": "https://www.bastardkb.com",
+ "maintainer": "Quentin Lebastard",
+ "layouts": {
+ "LAYOUT_charybdis_4x6": {
+ "layout": [
+ { "label": "L00", "x": 0, "y": 0 },
+ { "label": "L01", "x": 1, "y": 0 },
+ { "label": "L02", "x": 2, "y": 0 },
+ { "label": "L03", "x": 3, "y": 0 },
+ { "label": "L04", "x": 4, "y": 0 },
+ { "label": "L05", "x": 5, "y": 0 },
+ { "label": "R00", "x": 11, "y": 0 },
+ { "label": "R01", "x": 12, "y": 0 },
+ { "label": "R02", "x": 13, "y": 0 },
+ { "label": "R03", "x": 14, "y": 0 },
+ { "label": "R04", "x": 15, "y": 0 },
+ { "label": "R05", "x": 16, "y": 0 },
+ { "label": "L10", "x": 0, "y": 1 },
+ { "label": "L11", "x": 1, "y": 1 },
+ { "label": "L12", "x": 2, "y": 1 },
+ { "label": "L13", "x": 3, "y": 1 },
+ { "label": "L14", "x": 4, "y": 1 },
+ { "label": "L15", "x": 5, "y": 1 },
+ { "label": "R10", "x": 11, "y": 1 },
+ { "label": "R11", "x": 12, "y": 1 },
+ { "label": "R12", "x": 13, "y": 1 },
+ { "label": "R13", "x": 14, "y": 1 },
+ { "label": "R14", "x": 15, "y": 1 },
+ { "label": "R15", "x": 16, "y": 1 },
+ { "label": "L20", "x": 0, "y": 2 },
+ { "label": "L21", "x": 1, "y": 2 },
+ { "label": "L22", "x": 2, "y": 2 },
+ { "label": "L23", "x": 3, "y": 2 },
+ { "label": "L24", "x": 4, "y": 2 },
+ { "label": "L25", "x": 5, "y": 2 },
+ { "label": "R20", "x": 11, "y": 2 },
+ { "label": "R21", "x": 12, "y": 2 },
+ { "label": "R22", "x": 13, "y": 2 },
+ { "label": "R23", "x": 14, "y": 2 },
+ { "label": "R24", "x": 15, "y": 2 },
+ { "label": "R25", "x": 16, "y": 2 },
+ { "label": "L30", "x": 0, "y": 3 },
+ { "label": "L31", "x": 1, "y": 3 },
+ { "label": "L32", "x": 2, "y": 3 },
+ { "label": "L33", "x": 3, "y": 3 },
+ { "label": "L34", "x": 4, "y": 3 },
+ { "label": "L35", "x": 5, "y": 3 },
+ { "label": "R30", "x": 11, "y": 3 },
+ { "label": "R31", "x": 12, "y": 3 },
+ { "label": "R32", "x": 13, "y": 3 },
+ { "label": "R33", "x": 14, "y": 3 },
+ { "label": "R34", "x": 15, "y": 3 },
+ { "label": "R35", "x": 16, "y": 3 },
+ { "label": "L40", "x": 5, "y": 4 },
+ { "label": "L41", "x": 6, "y": 4 },
+ { "label": "L42", "x": 7, "y": 4 },
+ { "label": "R40", "x": 9, "y": 4 },
+ { "label": "R41", "x": 10, "y": 4 },
+ { "label": "L50", "x": 6, "y": 5 },
+ { "label": "L51", "x": 7, "y": 5 },
+ { "label": "R50", "x": 9, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/default/config.h
new file mode 100644
index 0000000000..383b3f9dc3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/config.h
@@ -0,0 +1,39 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+/* RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+// Limit maximum brightness to keep power consumption reasonable, and avoid
+// disconnects.
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
+
+// Rainbow swirl as startup mode.
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Slow swirl at startup.
+# define RGB_MATRIX_STARTUP_SPD 32
+
+// Startup values.
+# define RGB_MATRIX_STARTUP_HUE 0
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_STARTUP_HSV RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c
new file mode 100644
index 0000000000..de8eed9c03
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c
@@ -0,0 +1,75 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum charybdis_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_LOWER,
+ LAYER_RAISE,
+};
+
+#define LOWER MO(LAYER_LOWER)
+#define RAISE MO(LAYER_RAISE)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT,
+ KC_LALT, KC_BSPC, KC_DEL
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_LOWER] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, KC_P0
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_RAISE] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, RESET, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ _______, _______, XXXXXXX, _______, XXXXXXX,
+ _______, _______, XXXXXXX
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+};
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md
new file mode 100644
index 0000000000..23a85e54d5
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# Charybdis (4x6) default keymap
+
+> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout.
+
+The Charydbis (4x6) default keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap.
+
+This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect.
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h
new file mode 100644
index 0000000000..75eb2240f3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#ifdef VIA_ENABLE
+/* VIA configuration. */
+# define DYNAMIC_KEYMAP_LAYER_COUNT 4
+#endif // VIA_ENABLE
+
+/* Disable unused features. */
+#define NO_ACTION_ONESHOT
+
+#ifndef TAPPING_TERM
+/**
+ * \brief Configure the global tapping term (default: 200ms).
+ *
+ * If you have a lot of accidental mod activations, crank up the tapping term.
+ *
+ * See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
+ */
+# define TAPPING_TERM 200
+#endif // TAPPING_TERM
+
+/* Charybdis-specific features. */
+
+#ifdef POINTING_DEVICE_ENABLE
+// Enable pointer acceleration, which increases the speed by ~2x for large
+// displacement, while maintaining 1x speed for slow movements.
+// - `CHARYBDIS_POINTER_ACCELERATION_FACTOR`
+# define CHARYBDIS_POINTER_ACCELERATION_ENABLE
+
+// Automatically enable the pointer layer when moving the trackball. See also:
+// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS`
+// - `CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD`
+// #define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+#endif // POINTING_DEVICE_ENABLE
+
+/* RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+// Limit maximum brightness to keep power consumption reasonable, and avoid
+// disconnects.
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64
+
+// Rainbow swirl as startup mode.
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Slow swirl at startup.
+# define RGB_MATRIX_STARTUP_SPD 32
+
+// Startup values.
+# define RGB_MATRIX_STARTUP_HUE 0
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_STARTUP_HSV RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT, RGB_MATRIX_STARTUP_VAL
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d53d580a48
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
@@ -0,0 +1,166 @@
+/**
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+# include "timer.h"
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+enum charybdis_keymap_layers {
+ LAYER_BASE = 0,
+ LAYER_LOWER,
+ LAYER_RAISE,
+ LAYER_POINTER,
+};
+
+/** \brief Automatically enable sniping-mode on the pointer layer. */
+#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+
+#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+static uint16_t auto_pointer_layer_timer = 0;
+
+# ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+# define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS
+
+# ifndef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+# define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+#define LOWER MO(LAYER_LOWER)
+#define RAISE MO(LAYER_RAISE)
+#define PT_Z LT(LAYER_POINTER, KC_Z)
+#define PT_SLSH LT(LAYER_POINTER, KC_SLSH)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LCTL, PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH, KC_LALT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_LGUI, KC_SPC, LOWER, RAISE, KC_ENT,
+ KC_LALT, KC_BSPC, KC_DEL
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_LOWER] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, KC_P0
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_RAISE] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ _______, _______, XXXXXXX, _______, XXXXXXX,
+ _______, _______, XXXXXXX
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_POINTER] = LAYOUT_charybdis_4x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, _______, DRGSCRL, SNIPING, EEP_RST, RESET, RESET, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1,
+ XXXXXXX, KC_BTN2, KC_BTN2
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+};
+// clang-format on
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (abs(mouse_report.x) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD || abs(mouse_report.y) > CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD) {
+ if (auto_pointer_layer_timer == 0) {
+ layer_on(LAYER_POINTER);
+# ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_NONE);
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+# endif // RGB_MATRIX_ENABLE
+ }
+ auto_pointer_layer_timer = timer_read();
+ }
+ return mouse_report;
+}
+
+void matrix_scan_kb(void) {
+ if (auto_pointer_layer_timer != 0 && TIMER_DIFF_16(timer_read(), auto_pointer_layer_timer) >= CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS) {
+ auto_pointer_layer_timer = 0;
+ layer_off(LAYER_POINTER);
+# ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_STARTUP_MODE);
+# endif // RGB_MATRIX_ENABLE
+ }
+ matrix_scan_user();
+}
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+# ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ charybdis_set_pointer_sniping_enabled(layer_state_cmp(state, CHARYBDIS_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+# endif // CHARYBDIS_AUTO_SNIPING_ON_LAYER
+#endif // POINTING_DEVICE_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+// Forward-declare this helper function since it is defined in rgb_matrix.c.
+void rgb_matrix_update_pwm_buffers(void);
+#endif
+
+void shutdown_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb_red();
+#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_set_color_all(RGB_RED);
+ rgb_matrix_update_pwm_buffers();
+#endif // RGB_MATRIX_ENABLE
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/readme.md b/keyboards/bastardkb/charybdis/4x6/keymaps/via/readme.md
new file mode 100644
index 0000000000..ad2634ef0c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/readme.md
@@ -0,0 +1,61 @@
+# Charybdis (4x6) `via` keymap
+
+The Charydbis (4x6) `via` keymap is inspired from the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap, with some features and changes specific to the Charybdis.
+
+This layout supports RGB matrix. However, due to space constraints on the MCU, only a limited number of effect can be enabled at once. Look at the `config.h` file and enable your favorite effect.
+
+## Customizing the keymap
+
+### Dynamic DPI scaling
+
+Use the following keycodes to change the default DPI:
+
+- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 16 possible values for the sniping mode DPI. See the [Charybdis documentation](../../README.md) for more information.
+
+Use the following keycodes to change the sniping mode DPI:
+
+- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
+- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
+
+There's a maximum of 4 possible values for the sniping mode DPI. See the [Charybdis documentation](../../README.md) for more information.
+
+### Drag-scroll
+
+Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
+
+### Sniping
+
+Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
+
+Change the value of `CHARYBDIS_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
+
+```c
+#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_POINTER
+```
+
+### Auto pointer layer
+
+The pointer layer can be automatically enabled when moving the trackball. To enable or disable this behavior, add or remove the following define:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+```
+
+By default, the layer is turned off 1 second after the last registered trackball movement:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_TIMEOUT_MS 1000
+```
+
+The trigger sensibility can also be tuned. The lower the value, the more sensible the trigger:
+
+```c
+#define CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_THRESHOLD 8
+```
+
+## Layout
+
+![Keymap layout (generated with keyboard-layout-editor.com)](https://i.imgur.com/qI7phR7.png)
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/4x6/readme.md b/keyboards/bastardkb/charybdis/4x6/readme.md
new file mode 100644
index 0000000000..af2396cd6d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/readme.md
@@ -0,0 +1,15 @@
+# Charybdis (4x6)
+
+An ergonomic keyboard with integrated trackball.
+
+The Charybdis is available in 4x6 and 3x5 form factor at [bastardkb.com](https://bastardkb.com).
+
+## Keymaps
+
+### [`default`](keymaps/default)
+
+A simple QWERTY layout with 3 layers.
+
+### [`via`](keymaps/via)
+
+Same as the [default](keymaps/default) keymap, but with VIA support.
diff --git a/keyboards/bastardkb/charybdis/4x6/rules.mk b/keyboards/bastardkb/charybdis/4x6/rules.mk
new file mode 100644
index 0000000000..e137f5d4cc
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+AUDIO_SUPPORTED = no # Audio is not supported.
+RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default.
+RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default.
+RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix functionality
+RGB_MATRIX_DRIVER = WS2812
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
+
+# Charybdis is a split 4x6 keyboard with a maximum of 5 thumb keys (3 on the
+# trackball side).
+SPLIT_KEYBOARD = yes
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+# https://qmk.fm/changes/2018-11-16-use-a-single-endpoint-for-hid-reports
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c
new file mode 100644
index 0000000000..f94682ba41
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/charybdis.c
@@ -0,0 +1,343 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Publicw License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "charybdis.h"
+
+#ifdef CONSOLE_ENABLE
+# include "print.h"
+#endif // CONSOLE_ENABLE
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef CHARYBDIS_MINIMUM_DEFAULT_DPI
+# define CHARYBDIS_MINIMUM_DEFAULT_DPI 400
+# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI
+
+# ifndef CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+# define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+
+# ifndef CHARYBDIS_MINIMUM_SNIPING_DPI
+# define CHARYBDIS_MINIMUM_SNIPING_DPI 200
+# endif // CHARYBDIS_MINIMUM_SNIPER_MODE_DPI
+
+# ifndef CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+# define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+
+// Fixed DPI for drag-scroll.
+# ifndef CHARYBDIS_DRAGSCROLL_DPI
+# define CHARYBDIS_DRAGSCROLL_DPI 100
+# endif // CHARYBDIS_DRAGSCROLL_DPI
+
+# ifndef CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+# define CHARYBDIS_DRAGSCROLL_BUFFER_SIZE 6
+# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+
+# ifndef CHARYBDIS_POINTER_ACCELERATION_FACTOR
+# define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24
+# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR
+
+typedef union {
+ uint8_t raw;
+ struct {
+ uint8_t pointer_default_dpi : 4; // 16 steps available.
+ uint8_t pointer_sniping_dpi : 2; // 4 steps available.
+ bool is_dragscroll_enabled : 1;
+ bool is_sniping_enabled : 1;
+ } __attribute__((packed));
+} charybdis_config_t;
+
+static charybdis_config_t g_charybdis_config = {0};
+
+/**
+ * \brief Set the value of `config` from EEPROM.
+ *
+ * Note that `is_dragscroll_enabled` and `is_sniping_enabled` are purposefully
+ * ignored since we do not want to persist this state to memory. In practice,
+ * this state is always written to maximize write-performances. Therefore, we
+ * explicitly set them to `false` in this function.
+ */
+static void read_charybdis_config_from_eeprom(charybdis_config_t* config) {
+ config->raw = eeconfig_read_kb() & 0xff;
+ config->is_dragscroll_enabled = false;
+ config->is_sniping_enabled = false;
+}
+
+/**
+ * \brief Save the value of `config` to eeprom.
+ *
+ * Note that all values are written verbatim, including whether drag-scroll
+ * and/or sniper mode are enabled. `read_charybdis_config_from_eeprom(…)`
+ * resets these 2 values to `false` since it does not make sense to persist
+ * these across reboots of the board.
+ */
+static void write_charybdis_config_to_eeprom(charybdis_config_t* config) { eeconfig_update_kb(config->raw); }
+
+/** \brief Return the current value of the pointer's default DPI. */
+static uint16_t get_pointer_default_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_default_dpi * CHARYBDIS_DEFAULT_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_DEFAULT_DPI; }
+
+/** \brief Return the current value of the pointer's sniper-mode DPI. */
+static uint16_t get_pointer_sniping_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_sniping_dpi * CHARYBDIS_SNIPING_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_SNIPING_DPI; }
+
+/** \brief Set the appropriate DPI for the input config. */
+static void maybe_update_pointing_device_cpi(charybdis_config_t* config) {
+ if (config->is_dragscroll_enabled) {
+ pointing_device_set_cpi(CHARYBDIS_DRAGSCROLL_DPI);
+ } else if (config->is_sniping_enabled) {
+ pointing_device_set_cpi(get_pointer_sniping_dpi(config));
+ } else {
+ pointing_device_set_cpi(get_pointer_default_dpi(config));
+ }
+}
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ */
+static void step_pointer_default_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_default_dpi += forward ? 1 : -1;
+ maybe_update_pointing_device_cpi(config);
+}
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ */
+static void step_pointer_sniping_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_sniping_dpi += forward ? 1 : -1;
+ maybe_update_pointing_device_cpi(config);
+}
+
+uint16_t charybdis_get_pointer_default_dpi(void) { return get_pointer_default_dpi(&g_charybdis_config); }
+
+uint16_t charybdis_get_pointer_sniping_dpi(void) { return get_pointer_sniping_dpi(&g_charybdis_config); }
+
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward) { step_pointer_default_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_default_dpi(bool forward) {
+ step_pointer_default_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward) { step_pointer_sniping_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_sniping_dpi(bool forward) {
+ step_pointer_sniping_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_sniping_enabled(void) { return g_charybdis_config.is_sniping_enabled; }
+
+void charybdis_set_pointer_sniping_enabled(bool enable) {
+ g_charybdis_config.is_sniping_enabled = enable;
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_dragscroll_enabled(void) { return g_charybdis_config.is_dragscroll_enabled; }
+
+void charybdis_set_pointer_dragscroll_enabled(bool enable) {
+ g_charybdis_config.is_dragscroll_enabled = enable;
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+void pointing_device_init_kb(void) { maybe_update_pointing_device_cpi(&g_charybdis_config); }
+
+# ifndef CONSTRAIN_HID
+# define CONSTRAIN_HID(value) ((value) < -127 ? -127 : ((value) > 127 ? 127 : (value)))
+# endif // !CONSTRAIN_HID
+
+/**
+ * \brief Add optional acceleration effect.
+ *
+ * If `CHARYBDIS_ENABLE_POINTER_ACCELERATION` is defined, add a simple and naive
+ * acceleration effect to the provided value. Return the value unchanged
+ * otherwise.
+ */
+# ifndef DISPLACEMENT_WITH_ACCELERATION
+# ifdef CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (CONSTRAIN_HID(d > 0 ? d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d : -d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d))
+# else // !CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (d)
+# endif // CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# endif // !DISPLACEMENT_WITH_ACCELERATION
+
+/**
+ * \brief Augment the pointing device behavior.
+ *
+ * Implement the Charybdis-specific features for pointing devices:
+ * - Drag-scroll
+ * - Sniping
+ * - Acceleration
+ */
+static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+ if (g_charybdis_config.is_dragscroll_enabled) {
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+ } else if (!g_charybdis_config.is_sniping_enabled) {
+ mouse_report->x = DISPLACEMENT_WITH_ACCELERATION(mouse_report->x);
+ mouse_report->y = DISPLACEMENT_WITH_ACCELERATION(mouse_report->y);
+ }
+}
+
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ if (is_keyboard_master()) {
+ pointing_device_task_charybdis(&mouse_report);
+ mouse_report = pointing_device_task_user(mouse_report);
+ }
+ return mouse_report;
+}
+
+# if defined(POINTING_DEVICE_ENABLE) && !defined(NO_CHARYBDIS_KEYCODES)
+/** \brief Whether SHIFT mod is enabled. */
+static bool has_shift_mod(void) {
+# ifdef NO_ACTION_ONESHOT
+ return mod_config(get_mods()) & MOD_MASK_SHIFT;
+# else
+ return mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT;
+# endif // NO_ACTION_ONESHOT
+}
+# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES
+
+/**
+ * \brief Outputs the Charybdis configuration to console.
+ *
+ * Prints the in-memory configuration structure to console, for debugging.
+ * Includes:
+ * - raw value
+ * - drag-scroll: on/off
+ * - sniping: on/off
+ * - default DPI: internal table index/actual DPI
+ * - sniping DPI: internal table index/actual DPI
+ */
+static void debug_charybdis_config_to_console(charybdis_config_t* config) {
+# ifdef CONSOLE_ENABLE
+ dprintf("(charybdis) process_record_kb: config = {\n"
+ "\traw = 0x%04X,\n"
+ "\t{\n"
+ "\t\tis_dragscroll_enabled=%b\n"
+ "\t\tis_sniping_enabled=%b\n"
+ "\t\tdefault_dpi=0x%02X (%ld)\n"
+ "\t\tsniping_dpi=0x%01X (%ld)\n"
+ "\t}\n"
+ "}\n",
+ config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config));
+# endif // CONSOLE_ENABLE
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ if (!process_record_user(keycode, record)) {
+ debug_charybdis_config_to_console(&g_charybdis_config);
+ return false;
+ }
+# ifdef POINTING_DEVICE_ENABLE
+# ifndef NO_CHARYBDIS_KEYCODES
+ switch (keycode) {
+ case POINTER_DEFAULT_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case SNIPING_MODE:
+ charybdis_set_pointer_sniping_enabled(record->event.pressed);
+ break;
+ case SNIPING_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_sniping_enabled(!charybdis_get_pointer_sniping_enabled());
+ }
+ break;
+ case DRAGSCROLL_MODE:
+ charybdis_set_pointer_dragscroll_enabled(record->event.pressed);
+ break;
+ case DRAGSCROLL_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_dragscroll_enabled(!charybdis_get_pointer_dragscroll_enabled());
+ }
+ break;
+ }
+# endif // !NO_CHARYBDIS_KEYCODES
+# ifndef MOUSEKEY_ENABLE
+ // Simulate mouse keys if full support is not enabled (reduces firmware size
+ // while maintaining support for mouse keys).
+ if (IS_MOUSEKEY_BUTTON(keycode)) {
+ report_mouse_t mouse_report = pointing_device_get_report();
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, record->event.pressed, keycode - KC_MS_BTN1);
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+ }
+# endif // !MOUSEKEY_ENABLE
+# endif // POINTING_DEVICE_ENABLE
+ debug_charybdis_config_to_console(&g_charybdis_config);
+ return true;
+}
+
+void eeconfig_init_kb(void) {
+ g_charybdis_config.raw = 0;
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+ eeconfig_init_user();
+}
+
+void matrix_init_kb(void) {
+ read_charybdis_config_from_eeprom(&g_charybdis_config);
+ matrix_init_user();
+}
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/charybdis/charybdis.h b/keyboards/bastardkb/charybdis/charybdis.h
new file mode 100644
index 0000000000..42423c0c92
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/charybdis.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// clang-format off
+#if defined(KEYBOARD_bastardkb_charybdis_3x5)
+# include "3x5.h"
+#elif defined(KEYBOARD_bastardkb_charybdis_4x6)
+# include "4x6.h"
+#else
+# error "Unsuported format"
+#endif
+// clang-format on
+
+#include "quantum.h"
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef NO_CHARYBDIS_KEYCODES
+enum charybdis_keycodes {
+# ifdef VIA_ENABLE
+ POINTER_DEFAULT_DPI_FORWARD = USER00,
+# else
+ POINTER_DEFAULT_DPI_FORWARD = SAFE_RANGE,
+# endif // VIA_ENABLE
+ POINTER_DEFAULT_DPI_REVERSE,
+ POINTER_SNIPING_DPI_FORWARD,
+ POINTER_SNIPING_DPI_REVERSE,
+ SNIPING_MODE,
+ SNIPING_MODE_TOGGLE,
+ DRAGSCROLL_MODE,
+ DRAGSCROLL_MODE_TOGGLE,
+ CHARYBDIS_SAFE_RANGE,
+};
+
+# define DPI_MOD POINTER_DEFAULT_DPI_FORWARD
+# define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE
+# define S_D_MOD POINTER_SNIPING_DPI_FORWARD
+# define S_D_RMOD POINTER_SNIPING_DPI_REVERSE
+# define SNIPING SNIPING_MODE
+# define SNP_TOG SNIPING_MODE_TOGGLE
+# define DRGSCRL DRAGSCROLL_MODE
+# define DRG_TOG DRAGSCROLL_MODE_TOGGLE
+# endif // !NO_CHARYBDIS_KEYCODES
+
+/** \brief Return the current DPI value for the pointer's default mode. */
+uint16_t charybdis_get_pointer_default_dpi(void);
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_default_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_default_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward);
+
+/** \brief Return the current DPI value for the pointer's sniper-mode. */
+uint16_t charybdis_get_pointer_sniping_dpi(void);
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_sniping_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_sniping_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward);
+
+/** \brief Whether sniper-mode is enabled. */
+bool charybdis_get_pointer_sniping_enabled(void);
+
+/**
+ * \brief Enable/disable sniper mode.
+ *
+ * When sniper mode is enabled the dpi is reduced to slow down the pointer for
+ * more accurate movements.
+ */
+void charybdis_set_pointer_sniping_enabled(bool enable);
+
+/** \brief Whether drag-scroll is enabled. */
+bool charybdis_get_pointer_dragscroll_enabled(void);
+
+/**
+ * \brief Enable/disable drag-scroll mode.
+ *
+ * When drag-scroll mode is enabled, horizontal and vertical pointer movements
+ * are translated into horizontal and vertical scroll movements.
+ */
+void charybdis_set_pointer_dragscroll_enabled(bool enable);
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/charybdis/config.h b/keyboards/bastardkb/charybdis/config.h
new file mode 100644
index 0000000000..c88451335e
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/config.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* Pointing device configuration. */
+
+// Enable use of pointing device on slave split.
+#define SPLIT_POINTING_ENABLE
+
+// Pointing device is on the right split.
+#define POINTING_DEVICE_RIGHT
+
+// Limits the frequency that the sensor is polled for motion.
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+
+/** \brief Invert X axis on mouse reports. */
+#define POINTING_DEVICE_INVERT_X
diff --git a/keyboards/bastardkb/charybdis/post_config.h b/keyboards/bastardkb/charybdis/post_config.h
new file mode 100644
index 0000000000..540751f6c6
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/post_config.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2012 Jun Wako <wakojun@gmail.com>
+ * Copyright 2015 Jack Humbert
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Mouse config. */
+
+#ifndef MOUSEKEY_MOVE_DELTA
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_MOVE_DELTA 5
+# else // MK_KINETIC_SPEED
+# define MOUSEKEY_MOVE_DELTA 25
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_MOVE_DELTA
+
+#ifndef MOUSEKEY_DELAY
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_DELAY 300
+# else // MK_KINETIC_SPEED
+# define MOUSEKEY_DELAY 8
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_DELAY
+
+#ifndef MOUSEKEY_INTERVAL
+# ifndef MK_KINETIC_SPEED
+# define MOUSEKEY_INTERVAL 50
+# else // MK_KINETIC_SPEED
+# define MOUSEKEY_INTERVAL 20
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_INTERNAL
+
+#ifndef MOUSEKEY_MAX_SPEED
+# define MOUSEKEY_MAX_SPEED 7
+#endif // !MOUSEKEY_MAX_SPEED
+
+#ifndef MOUSEKEY_TIME_TO_MAX
+# define MOUSEKEY_TIME_TO_MAX 60
+#endif // !MOUSEKEY_TIME_TO_MAX
+
+#ifndef MOUSEKEY_INITIAL_SPEED
+# define MOUSEKEY_INITIAL_SPEED 100
+#endif // !MOUSEKEY_INITIAL_SPEED
+
+#ifndef MOUSEKEY_BASE_SPEED
+# define MOUSEKEY_BASE_SPEED 1000
+#endif // !MOUSEKEY_BASE_SPEED
+
+#ifndef MOUSEKEY_DECELERATED_SPEED
+# define MOUSEKEY_DECELERATED_SPEED 400
+#endif // !MOUSEKEY_DECELERATED_SPEED
+
+#ifndef MOUSEKEY_ACCELERATED_SPEED
+# define MOUSEKEY_ACCELERATED_SPEED 3000
+#endif // !MOUSEKEY_ACCELERATED_SPEED
+
+/* Mouse scroll config. */
+
+#ifndef MOUSEKEY_WHEEL_DELAY
+# define MOUSEKEY_WHEEL_DELAY 15
+#endif // !MOUSEKEY_WHEEL_DELAY
+
+#ifndef MOUSEKEY_WHEEL_DELTA
+# define MOUSEKEY_WHEEL_DELTA 1
+#endif // !MOUSEKEY_WHEEL_DELTA
+
+#ifndef MOUSEKEY_WHEEL_INTERVAL
+# define MOUSEKEY_WHEEL_INTERVAL 50
+#endif // !MOUSEKEY_WHEEL_INTERVAL
+
+#ifndef MOUSEKEY_WHEEL_MAX_SPEED
+# define MOUSEKEY_WHEEL_MAX_SPEED 8
+#endif // !MOUSEKEY_WHEEL_MAX_SPEED
+
+#ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
+# define MOUSEKEY_WHEEL_TIME_TO_MAX 80
+#endif // !MOUSEKEY_WHEEL_TIME_TO_MAX
+
+#ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
+# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8
+#endif // !MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
+
+#ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
+# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48
+#endif // !MOUSEKEY_WHEEL_BASE_MOVEMENTS
+
+#ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
+# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
+#endif // !MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
+
+#ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
+# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
+#endif // !MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
diff --git a/keyboards/bastardkb/charybdis/readme.md b/keyboards/bastardkb/charybdis/readme.md
new file mode 100644
index 0000000000..461f33117c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/readme.md
@@ -0,0 +1,178 @@
+# Charybdis (6x4, 5x3 "Nano")
+
+An ergonomic keyboard with integrated trackball.
+
+Engineered to be a full mouse replacement solution with high-quality, custom-developed components.
+
+There are 6x4 and 5x3 "Nano" versions.
+
+- Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb)
+- Hardware Supported: elite-C V4
+- Hardware Availability: [Bastard Keyboards](https://bastardkb.com)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+
+Brand new to QMK? Start with the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+Check out the [keyboard build guides](https://docs.bastardkb.com) for the Charybdis and other ergonomic keyboards.
+
+## Building the firmware
+
+### Charybdis (4x6)
+
+The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
+
+```shell
+qmk compile -kb bastardkb/charybdis/4x6 -km default
+```
+
+Check out the `via` layout if you're looking for VIA support:
+
+```shell
+qmk compile -kb bastardkb/charybdis/4x6 -km via
+```
+
+### Charybdis (3x5)
+
+The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
+
+```shell
+qmk compile -kb bastardkb/charybdis/3x5 -km default
+```
+
+Check out the `via` layout if you're looking for VIA support:
+
+```shell
+qmk compile -kb bastardkb/charybdis/3x5 -km via
+```
+
+## Customizing the firmware
+
+### Dynamic DPI scaling
+
+The pointer's DPI can be changed at runtime.
+
+By default, the DPI is set to `400`. The Charybdis supports up to 16 different DPI values. By default, it cycles between `400` and `3400`, with a step of `200` (_ie._ `400`, `600`, `800`, …, `3400`).
+
+Calling `charybdis_cycle_pointer_default_dpi(bool forward)` will cycle forward or backward the possible values.
+
+Use `charybdis_cycle_pointer_default_dpi_noeeprom(bool forward)` to change the DPI value without persisting the change to EEPROM (_ie._ resetting the board will revert to the last saved value).
+
+`charybdis_get_pointer_default_dpi()` returns the current DPI value.
+
+This behavior can be further customized with the following defines:
+
+```c
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 400
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+```
+
+### Drag-scroll
+
+Drag-scroll enables scrolling with the trackball. When drag-scroll is enabled, the trackball's `x` and `y` movements are converted into `h` (horizontal) and `v` (vertical) movement, effectively sending scroll instructions to the host system.
+
+Call `charybdis_set_pointer_dragscroll_enabled(bool enable)` to enable/disable drag-scroll.
+
+`charybdis_get_pointer_dragscroll_enabled()` returns whether sniping mode is currently enabled.
+
+To invert the horizontal scrolling direction, define `CHARYBDIS_DRAGSCROLL_REVERSE_X`:
+
+```c
+#define CHARYBDIS_DRAGSCROLL_REVERSE_X
+```
+
+To invert the vertical scrolling direction (_ie._ mimic macOS "natural" scroll direction), define `CHARYBDIS_DRAGSCROLL_REVERSE_Y`:
+
+```c
+#define CHARYBDIS_DRAGSCROLL_REVERSE_Y
+```
+
+This only affects the vertical scroll direction.
+
+### Sniping mode
+
+Sniping mode slows down the pointer for more precise gestures. It is useful when combined with a higher default DPI.
+
+Call `charybdis_set_pointer_sniping_enabled(bool enable)` to enable/disable sniping mode.
+
+`charybdis_get_pointer_sniping_enabled()` returns whether sniping mode is currently enabled.
+
+Like the default pointer's DPI, the sniper mode DPI can be changed at runtime.
+
+By default, sniping mode lowers the DPI to `200`. This can be changed at runtime: the Charybdis supports up to 4 different DPI values for sniping mode. By default, it cycles between `200`, `300`, `400` and `500`.
+
+Calling `charybdis_cycle_pointer_sniping_dpi(bool forward)` will cycle forward or backward the possible values.
+
+Use `charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward)` to change the sniping mode DPI value without persisting the change to EEPROM (_ie._ resetting the board will revert to the last saved value).
+
+`charybdis_get_pointer_sniping_dpi()` returns the current sniping mode DPI value.
+
+This behavior can be further customized with the following defines:
+
+```c
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 200
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+```
+
+### Acceleration
+
+By default, the pointer's movements are linear. To enable acceleration, add the following define:
+
+```c
+#define CHARYBDIS_POINTER_ACCELERATION_ENABLE
+```
+
+The acceleration factor can be further tune _via_ the `CHARYBDIS_POINTER_ACCELERATION_FACTOR`:
+
+```c
+#define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24
+```
+
+### Custom keycodes
+
+The Charybdis firmware defines a number of keycodes to leverage its features, namely:
+
+```
+#ifndef NO_CHARYBDIS_KEYCODES
+enum charybdis_keycodes {
+ POINTER_DEFAULT_DPI_FORWARD = SAFE_RANGE,
+ POINTER_DEFAULT_DPI_REVERSE,
+ POINTER_SNIPING_DPI_FORWARD,
+ POINTER_SNIPING_DPI_REVERSE,
+ SNIPING_MODE,
+ SNIPING_MODE_TOGGLE,
+ DRAGSCROLL_MODE,
+ DRAGSCROLL_MODE_TOGGLE,
+ CHARYBDIS_SAFE_RANGE,
+};
+
+#define DPI_MOD POINTER_DEFAULT_DPI_FORWARD
+#define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE
+#define S_D_MOD POINTER_SNIPING_DPI_FORWARD
+#define S_D_RMOD POINTER_SNIPING_DPI_REVERSE
+#define SNIPING SNIPING_MODE
+#define SNP_TOG SNIPING_MODE_TOGGLE
+#define DRGSCRL DRAGSCROLL_MODE
+#define DRG_TOG DRAGSCROLL_MODE_TOGGLE
+#endif // !NO_CHARYBDIS_KEYCODES
+```
+
+Users extending the keycode set themselves (either in their keymap, or in their userspace) must start at `CHARYBDIS_SAFE_RANGE` to avoid conflicts, _eg._:
+
+```c
+enum userspace_keycodes {
+#ifndef NO_CHARYBDIS_KEYCODES
+ MY_FIRST_KEYCODE = CHARYBDIS_SAFE_RANGE,
+#else
+ MY_FIRST_KEYCODE = SAFE_RANGE,
+#endif // !NO_CHARYBDIS_KEYCODES
+ MY_SECOND_KEYCODE,
+ …
+};
+```
+
+To disable the custom keycodes, and reduce binary size, simply add a definition in `config.h`:
+
+```c
+#define NO_CHARYBDIS_KEYCODES
+```
diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk
index 5d35ab22ba..fe2991040d 100644
--- a/keyboards/bastardkb/scylla/rules.mk
+++ b/keyboards/bastardkb/scylla/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
diff --git a/keyboards/bastardkb/skeletyl/rules.mk b/keyboards/bastardkb/skeletyl/rules.mk
index f66d8f4494..808b59c93d 100644
--- a/keyboards/bastardkb/skeletyl/rules.mk
+++ b/keyboards/bastardkb/skeletyl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
diff --git a/keyboards/bastardkb/tbk/rules.mk b/keyboards/bastardkb/tbk/rules.mk
index aeb183666e..070c6b27ad 100644
--- a/keyboards/bastardkb/tbk/rules.mk
+++ b/keyboards/bastardkb/tbk/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bastardkb/tbkmini/rules.mk b/keyboards/bastardkb/tbkmini/rules.mk
index 5ea23a33a5..2892f5dd6e 100644
--- a/keyboards/bastardkb/tbkmini/rules.mk
+++ b/keyboards/bastardkb/tbkmini/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/bat43/rules.mk b/keyboards/bat43/rules.mk
index a9e1a6d2b0..7bd7394e4f 100644
--- a/keyboards/bat43/rules.mk
+++ b/keyboards/bat43/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bear_face/rules.mk b/keyboards/bear_face/rules.mk
index 323f872a26..f198cf7cc2 100644
--- a/keyboards/bear_face/rules.mk
+++ b/keyboards/bear_face/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/beatervan/rules.mk b/keyboards/beatervan/rules.mk
index f835a7c2d0..1f2745a03a 100644
--- a/keyboards/beatervan/rules.mk
+++ b/keyboards/beatervan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bemeier/bmek/rev1/rules.mk b/keyboards/bemeier/bmek/rev1/rules.mk
index 9e6bcd7653..770446f52a 100755
--- a/keyboards/bemeier/bmek/rev1/rules.mk
+++ b/keyboards/bemeier/bmek/rev1/rules.mk
@@ -15,7 +15,7 @@ COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes
diff --git a/keyboards/bemeier/bmek/rev2/rules.mk b/keyboards/bemeier/bmek/rev2/rules.mk
index 9e6bcd7653..770446f52a 100755
--- a/keyboards/bemeier/bmek/rev2/rules.mk
+++ b/keyboards/bemeier/bmek/rev2/rules.mk
@@ -15,7 +15,7 @@ COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes
diff --git a/keyboards/bemeier/bmek/rev3/rules.mk b/keyboards/bemeier/bmek/rev3/rules.mk
index 9e6bcd7653..770446f52a 100755
--- a/keyboards/bemeier/bmek/rev3/rules.mk
+++ b/keyboards/bemeier/bmek/rev3/rules.mk
@@ -15,7 +15,7 @@ COMMAND_ENABLE = no
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = no
BACKLIGHT_ENABLE = no
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
LTO_ENABLE = yes
diff --git a/keyboards/bfake/rules.mk b/keyboards/bfake/rules.mk
index 5b70617255..eb4db8cd61 100644
--- a/keyboards/bfake/rules.mk
+++ b/keyboards/bfake/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/bigseries/1key/rules.mk b/keyboards/bigseries/1key/rules.mk
index 1cecb0fb1d..49ff0998f6 100755
--- a/keyboards/bigseries/1key/rules.mk
+++ b/keyboards/bigseries/1key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bigseries/2key/rules.mk b/keyboards/bigseries/2key/rules.mk
index 1cecb0fb1d..49ff0998f6 100755
--- a/keyboards/bigseries/2key/rules.mk
+++ b/keyboards/bigseries/2key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bigseries/3key/rules.mk b/keyboards/bigseries/3key/rules.mk
index 1cecb0fb1d..49ff0998f6 100755
--- a/keyboards/bigseries/3key/rules.mk
+++ b/keyboards/bigseries/3key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bigseries/4key/rules.mk b/keyboards/bigseries/4key/rules.mk
index 1cecb0fb1d..49ff0998f6 100755
--- a/keyboards/bigseries/4key/rules.mk
+++ b/keyboards/bigseries/4key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/binepad/bn003/rules.mk b/keyboards/binepad/bn003/rules.mk
index 10e9616d6f..73ac281e0b 100644
--- a/keyboards/binepad/bn003/rules.mk
+++ b/keyboards/binepad/bn003/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/binepad/bn009/rules.mk b/keyboards/binepad/bn009/rules.mk
index 10e9616d6f..73ac281e0b 100644
--- a/keyboards/binepad/bn009/rules.mk
+++ b/keyboards/binepad/bn009/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bioi/f60/rules.mk b/keyboards/bioi/f60/rules.mk
index e364e7939c..32e5d0de3a 100644
--- a/keyboards/bioi/f60/rules.mk
+++ b/keyboards/bioi/f60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bioi/g60/rules.mk b/keyboards/bioi/g60/rules.mk
index 43a65a3d36..3cbf7621f2 100644
--- a/keyboards/bioi/g60/rules.mk
+++ b/keyboards/bioi/g60/rules.mk
@@ -23,10 +23,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bioi/g60ble/rules.mk b/keyboards/bioi/g60ble/rules.mk
index 58cfbb46ad..f610ca3b39 100644
--- a/keyboards/bioi/g60ble/rules.mk
+++ b/keyboards/bioi/g60ble/rules.mk
@@ -8,15 +8,14 @@ F_CPU = 8000000
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
LTO_ENABLE = yes
diff --git a/keyboards/bioi/morgan65/rules.mk b/keyboards/bioi/morgan65/rules.mk
index 43a65a3d36..3cbf7621f2 100644
--- a/keyboards/bioi/morgan65/rules.mk
+++ b/keyboards/bioi/morgan65/rules.mk
@@ -23,10 +23,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bioi/s65/rules.mk b/keyboards/bioi/s65/rules.mk
index 9c35a83c20..aaead314e9 100644
--- a/keyboards/bioi/s65/rules.mk
+++ b/keyboards/bioi/s65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bkf/info.json b/keyboards/bkf/info.json
index 1ab228c1c2..c7b109d651 100644
--- a/keyboards/bkf/info.json
+++ b/keyboards/bkf/info.json
@@ -9,7 +9,7 @@
"LAYOUT_2x3uC": {
"layout": [{"label":"Tab", "x":0, "y":0, "w":1.5}, {"label":"Q", "x":1.5, "y":0}, {"label":"W", "x":2.5, "y":0}, {"label":"E", "x":3.5, "y":0}, {"label":"R", "x":4.5, "y":0}, {"label":"T", "x":5.5, "y":0}, {"label":"Y", "x":6.5, "y":0}, {"label":"U", "x":7.5, "y":0}, {"label":"I", "x":8.5, "y":0}, {"label":"O", "x":9.5, "y":0}, {"label":"P", "x":10.5, "y":0}, {"label":"{", "x":11.5, "y":0}, {"label":"}", "x":12.5, "y":0}, {"label":"Caps Lock", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"S", "x":2.75, "y":1}, {"label":"D", "x":3.75, "y":1}, {"label":"F", "x":4.75, "y":1}, {"label":"G", "x":5.75, "y":1}, {"label":"H", "x":6.75, "y":1}, {"label":"J", "x":7.75, "y":1}, {"label":"K", "x":8.75, "y":1}, {"label":"L", "x":9.75, "y":1}, {"label":":", "x":10.75, "y":1}, {"label":"Control", "x":11.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":2.25}, {"label":"Z", "x":2.25, "y":2}, {"label":"X", "x":3.25, "y":2}, {"label":"C", "x":4.25, "y":2}, {"label":"V", "x":5.25, "y":2}, {"label":"B", "x":6.25, "y":2}, {"label":"N", "x":7.25, "y":2}, {"label":"M", "x":8.25, "y":2}, {"label":"<", "x":9.25, "y":2}, {"label":">", "x":10.25, "y":2}, {"label":"?", "x":11.25, "y":2}, {"label":"Shift", "x":12.25, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"label":"", "x":3.75, "y":3, "w":3}, {"label":"", "x":6.75, "y":3, "w":3}, {"label":"Alt", "x":9.75, "y":3, "w":1.25}, {"label":"Win", "x":11, "y":3, "w":1.25}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}]
- },
+ }
}
}
diff --git a/keyboards/bkf/rules.mk b/keyboards/bkf/rules.mk
index b39830826d..9861cf0ad6 100644
--- a/keyboards/bkf/rules.mk
+++ b/keyboards/bkf/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/blackplum/keymaps/default/keymap.c b/keyboards/blackplum/keymaps/default/keymap.c
index 5eccfd66b5..e7d3272b97 100644
--- a/keyboards/blackplum/keymaps/default/keymap.c
+++ b/keyboards/blackplum/keymaps/default/keymap.c
@@ -15,18 +15,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_68_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDOWN,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDOWN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , MO(_FN) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN] = LAYOUT_68_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY, KC_HOME,\
- _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, _______, KC_MUTE, KC_END,\
- _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY, KC_HOME,
+ _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUSE, _______, KC_MUTE, KC_END,
+ _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, TG_GUI,_______, RESET, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/blackplum/keymaps/via/keymap.c b/keyboards/blackplum/keymaps/via/keymap.c
index 6c68a2fad5..e0cc689cd4 100644
--- a/keyboards/blackplum/keymaps/via/keymap.c
+++ b/keyboards/blackplum/keymaps/via/keymap.c
@@ -2,34 +2,34 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_68_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDOWN,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDOWN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL , KC_LGUI , KC_LALT , KC_SPC , KC_RALT , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_68_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MPLY, KC_HOME,\
- KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_TRNS, KC_MUTE, KC_END,\
- KC_TRNS, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MPLY, KC_HOME,
+ KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, KC_TRNS, KC_MUTE, KC_END,
+ KC_TRNS, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT_68_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_68_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
diff --git a/keyboards/blackplum/rules.mk b/keyboards/blackplum/rules.mk
index 49822a44ea..119591faaf 100644
--- a/keyboards/blackplum/rules.mk
+++ b/keyboards/blackplum/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/blank/blank01/rules.mk b/keyboards/blank/blank01/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/blank/blank01/rules.mk
+++ b/keyboards/blank/blank01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/blank_tehnologii/manibus/rules.mk b/keyboards/blank_tehnologii/manibus/rules.mk
index 41beb220a7..3ad1939d71 100644
--- a/keyboards/blank_tehnologii/manibus/rules.mk
+++ b/keyboards/blank_tehnologii/manibus/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/blockey/keymaps/default/keymap.c b/keyboards/blockey/keymaps/default/keymap.c
index 804500cd0f..5715881f84 100644
--- a/keyboards/blockey/keymaps/default/keymap.c
+++ b/keyboards/blockey/keymaps/default/keymap.c
@@ -22,18 +22,18 @@ extern rgblight_config_t rgblight_config;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(1), \
- KC_ESC, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(1),
+ KC_ESC, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
- _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/blockey/rules.mk b/keyboards/blockey/rules.mk
index ee608e96ea..7afe6055f0 100644
--- a/keyboards/blockey/rules.mk
+++ b/keyboards/blockey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardrun/bizarre/rules.mk b/keyboards/boardrun/bizarre/rules.mk
index 0acd19e670..42e7cc3f2e 100644
--- a/keyboards/boardrun/bizarre/rules.mk
+++ b/keyboards/boardrun/bizarre/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardrun/classic/rules.mk b/keyboards/boardrun/classic/rules.mk
index a488e3dc0b..b5761555d4 100644
--- a/keyboards/boardrun/classic/rules.mk
+++ b/keyboards/boardrun/classic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/3x4/rules.mk b/keyboards/boardsource/3x4/rules.mk
index b4c8b293e0..3915b035eb 100644
--- a/keyboards/boardsource/3x4/rules.mk
+++ b/keyboards/boardsource/3x4/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/4x12/rules.mk b/keyboards/boardsource/4x12/rules.mk
index d505368b0b..061f93abf6 100644
--- a/keyboards/boardsource/4x12/rules.mk
+++ b/keyboards/boardsource/4x12/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/5x12/rules.mk b/keyboards/boardsource/5x12/rules.mk
index ba1884fa8a..0727732ac6 100644
--- a/keyboards/boardsource/5x12/rules.mk
+++ b/keyboards/boardsource/5x12/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/beiwagon/config.h b/keyboards/boardsource/beiwagon/config.h
index eb30e5535c..797da34613 100644
--- a/keyboards/boardsource/beiwagon/config.h
+++ b/keyboards/boardsource/beiwagon/config.h
@@ -114,9 +114,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
+//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
+//#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
diff --git a/keyboards/boardsource/beiwagon/rules.mk b/keyboards/boardsource/beiwagon/rules.mk
index 575227a36e..612dcfcfb6 100644
--- a/keyboards/boardsource/beiwagon/rules.mk
+++ b/keyboards/boardsource/beiwagon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/holiday/spooky/rules.mk b/keyboards/boardsource/holiday/spooky/rules.mk
index 509ede75ad..ce35761cc9 100644
--- a/keyboards/boardsource/holiday/spooky/rules.mk
+++ b/keyboards/boardsource/holiday/spooky/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/lulu/config.h b/keyboards/boardsource/lulu/config.h
new file mode 100644
index 0000000000..8cd240179e
--- /dev/null
+++ b/keyboards/boardsource/lulu/config.h
@@ -0,0 +1,47 @@
+// Copyright 2022 Cole Smith <cole@boadsource.xyz>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0x4273
+#define PRODUCT_ID 0x7685
+#define DEVICE_VER 0x0000
+#define MANUFACTURER Boardsource
+#define PRODUCT lulu
+
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+#define MATRIX_ROW_PINS {C6, D7, E6, B4, B5}
+
+// wiring of each half
+#define MATRIX_COL_PINS {F6, F7, B1, B3, B2, B6}
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+#define SPLIT_USB_DETECT
+#define RGB_DI_PIN D3
+
+#define ENCODERS_PAD_A { F0 }
+#define ENCODERS_PAD_B { F1 }
+#define ENCODERS_PAD_A_RIGHT { F0 }
+#define ENCODERS_PAD_B_RIGHT { F1 }
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+#define DIODE_DIRECTION COL2ROW
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+ #define RGBLED_NUM 70 // Number of LEDs
+ #define DRIVER_LED_TOTAL RGBLED_NUM
+ #define RGB_MATRIX_SPLIT { 35, 35 }
+ #define SPLIT_TRANSPORT_MIRROR
+ #define RGBLIGHT_LIMIT_VAL 150
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_BREATHING
+ #define ENABLE_RGB_MATRIX_BAND_SAT
+ #define ENABLE_RGB_MATRIX_BAND_VAL
+#endif
+
diff --git a/keyboards/boardsource/lulu/info.json b/keyboards/boardsource/lulu/info.json
new file mode 100644
index 0000000000..156a7cea98
--- /dev/null
+++ b/keyboards/boardsource/lulu/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Lulu",
+ "url": "https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb",
+ "maintainer": "boardsource",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5},
+ {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5},
+ {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5},
+ {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5},
+ {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.15}
+ ]
+ }
+ }
+}
diff --git a/keyboards/boardsource/lulu/keymaps/default/keymap.c b/keyboards/boardsource/lulu/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8624b51b6a
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/default/keymap.c
@@ -0,0 +1,129 @@
+// Copyright 2022 Cole Smith <cole@boadsource.xyz>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _RAISE,
+ _LOWER,
+ _ADJUST
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI
+),
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | _ | + | { | } | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * |MOD | MODR | S+ | S- | B+ | B- | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|RGB_TOG| | ] |------+------+------+------+------+------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+[_RAISE] = LAYOUT(
+ RGB_MOD, RGB_RMOD,RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ // Page up/Page down
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/boardsource/lulu/keymaps/via/keymap.c b/keyboards/boardsource/lulu/keymaps/via/keymap.c
new file mode 100644
index 0000000000..912ea38559
--- /dev/null
+++ b/keyboards/boardsource/lulu/keymaps/via/keymap.c
@@ -0,0 +1,105 @@
+// Copyright 2022 Cole Smith <cole@boadsource.xyz>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _RAISE,
+ _LOWER,
+ _ADJUST
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI
+),
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | _ | + | { | } | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * |MOD | MODR | S+ | S- | B+ | B- | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|RGB_TOG| | ] |------+------+------+------+------+------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+[_RAISE] = LAYOUT(
+ RGB_MOD, RGB_RMOD,RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk b/keyboards/boardsource/lulu/keymaps/via/rules.mk
index 036bd6d1c3..036bd6d1c3 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/via/rules.mk
+++ b/keyboards/boardsource/lulu/keymaps/via/rules.mk
diff --git a/keyboards/boardsource/lulu/lulu.c b/keyboards/boardsource/lulu/lulu.c
new file mode 100644
index 0000000000..390815795a
--- /dev/null
+++ b/keyboards/boardsource/lulu/lulu.c
@@ -0,0 +1,280 @@
+// Copyright 2022 Cole Smith <cole@boadsource.xyz>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "lulu.h"
+#ifdef RGB_MATRIX_ENABLE
+
+led_config_t g_led_config = { {
+ {12,11,10,9 ,8 ,7 },
+ {18,17,16,15,14,13},
+ {24,23,22,21,20,19},
+ {30,29,28,27,26,25},
+ {NO_LED,35,34,33,32,31},
+ {42,43,44,45,46,47},
+ {48,49,50,51,52,53},
+ {54,55,56,57,58,59},
+ {60,61,62,63,64,65},
+ {NO_LED,66,67,68,69,70}
+},{
+
+ {86,55},{51,55},{17,40},{17,10},{51,10},{86,10},
+ {0,0}, {17,0}, {34,0}, {51,0}, {68,0}, {86,0},
+ {0,16},{17,16},{34,16},{51,16},{68,16},{86,16},
+ {0,32},{17,32},{34,32},{51,32},{68,32},{86,32},
+ {0,48},{17,48},{34,48},{51,48},{68,48},{86,48},{103,48},
+ {34,64},{51,64},{68,64},{86,64},
+
+
+ {137,55},{172,55},{206,40},{206,10},{172,10},{137,10},
+ {137,0}, {155,0}, {172,0}, {189,0}, {206,0}, {224,0},
+ {137,16},{155,16},{172,16},{189,16},{206,16},{224,16},
+ {137,32},{155,32},{172,32},{189,32},{206,32},{224,32},
+ {137,48},{155,48},{172,48},{189,48},{155,48},{137,48},{120,48},
+ {172,64},{189,64},{155,64},{137,64}
+},{2,2,2,2,2,2,
+ 4,4,4,4,4,1,
+ 1,4,4,4,4,4,
+ 4,4,4,4,4,1,
+ 1,4,4,4,4,4,
+ 1,4,1,1,1,
+ 2,2,2,2,2,2,
+ 4,4,4,4,4,1,
+ 1,4,4,4,4,4,
+ 4,4,4,4,4,1,
+ 1,4,4,4,4,4,
+ 1,4,1,1,1
+}};
+
+#endif
+
+
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+void render_layer1_logo(void){
+ static const char PROGMEM layer_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
+0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+0xfc, 0x0e, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
+0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
+0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
+0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00,
+0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(layer_logo, sizeof(layer_logo));
+}
+void render_layer2_logo(void){
+ static const char PROGMEM layer_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
+0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
+0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
+0x3f, 0x70, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
+0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
+0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00,
+0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(layer_logo, sizeof(layer_logo));
+}
+void render_layer3_logo(void){
+ static const char PROGMEM layer_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
+0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
+0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x38, 0x1f, 0x07,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
+0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
+0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00,
+0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(layer_logo, sizeof(layer_logo));
+}
+void render_layer4_logo(void){
+ static const char PROGMEM layer_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
+0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
+0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0e, 0xfc, 0xf0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
+0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
+0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
+0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00,
+0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(layer_logo, sizeof(layer_logo));
+}
+
+void render_logo(void) {
+ static const char PROGMEM logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x60, 0x60, 0x60,
+0x60, 0x60, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
+0x00, 0xe0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xc0,
+0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff,
+0xe0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
+0x00, 0x1f, 0xff, 0xff, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x78, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0x78, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03,
+0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(logo, sizeof(logo));
+}
+enum Layers{
+ _QWERTY,
+ _RAISE,
+ _LOWER,
+ _ADJUST
+};
+
+void process_layer_state(void) {
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ render_layer1_logo();
+ break;
+ case _LOWER:
+ render_layer2_logo();
+ break;
+ case _RAISE:
+ render_layer3_logo();
+ break;
+ case _ADJUST:
+ render_layer4_logo();
+ break;
+ }
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_master()) {
+ process_layer_state();
+ } else {
+ render_logo();
+ }
+ return false;
+}
+#endif
+
diff --git a/keyboards/boardsource/lulu/lulu.h b/keyboards/boardsource/lulu/lulu.h
new file mode 100644
index 0000000000..bda65f63e0
--- /dev/null
+++ b/keyboards/boardsource/lulu/lulu.h
@@ -0,0 +1,29 @@
+// Copyright 2022 Cole Smith <cole@boadsource.xyz>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+#include "split_util.h"
+#define has_usb() is_keyboard_master()
+#define is_master is_keyboard_master()
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, L45, R40, R30, R31, R32, R33, R34, R35, \
+ L41, L42, L43, L44, R41, R42, R43, R44 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { KC_NO, L41, L42, L43, L44, L45 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30 }, \
+ { KC_NO, R44, R43, R42, R41, R40 } \
+ }
+
diff --git a/keyboards/boardsource/lulu/readme.md b/keyboards/boardsource/lulu/readme.md
new file mode 100644
index 0000000000..e7c530161b
--- /dev/null
+++ b/keyboards/boardsource/lulu/readme.md
@@ -0,0 +1,24 @@
+# Lulu
+
+![boardsource Lulu](https://i.imgur.com/tjvUoXTh.png)
+
+The lulu is what the ergo community has needed for a long time, a high-end aesthetic split ergo 60%. With this project we not only tried to create a beautiful product but we also wanted to unify the some what split 60% community. With hotswap, per key rgb & underglow, swappable encoder and adjustable tenting with out giving up anything.
+
+
+* Keyboard Maintainer: [Boardsource](https://github.com/daysgobye)
+* Hardware Supported: lulu v1
+* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make boardsource/lulu:default
+
+Flashing example for this keyboard:
+
+ make boardsource/lulu:default:flash
+
+Reset keyboard by holding down top left key while you plug in the usb cable. Or by pushing the reset switch on the pcb.
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/boardsource/lulu/rules.mk b/keyboards/boardsource/lulu/rules.mk
new file mode 100644
index 0000000000..06d206cb55
--- /dev/null
+++ b/keyboards/boardsource/lulu/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+RGB_MATRIX_SUPPORTED = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/boardsource/microdox/rules.mk b/keyboards/boardsource/microdox/rules.mk
index 0e77b8a92c..52f90150ee 100644
--- a/keyboards/boardsource/microdox/rules.mk
+++ b/keyboards/boardsource/microdox/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/technik_o/config.h b/keyboards/boardsource/technik_o/config.h
index 3b9bf20217..51c9529da4 100644
--- a/keyboards/boardsource/technik_o/config.h
+++ b/keyboards/boardsource/technik_o/config.h
@@ -114,9 +114,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
+//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
+//#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
diff --git a/keyboards/boardsource/technik_o/rules.mk b/keyboards/boardsource/technik_o/rules.mk
index ced26ad699..c1a93c1f38 100644
--- a/keyboards/boardsource/technik_o/rules.mk
+++ b/keyboards/boardsource/technik_o/rules.mk
@@ -8,14 +8,11 @@ BOOTLOADER = atmel-dfu
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
+MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/technik_o/technik_o.c b/keyboards/boardsource/technik_o/technik_o.c
index 706939a58b..1488d55f59 100644
--- a/keyboards/boardsource/technik_o/technik_o.c
+++ b/keyboards/boardsource/technik_o/technik_o.c
@@ -1,4 +1,5 @@
/* Copyright 2020 Boardsource
+ * Copyright 2021 @filterpaper
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15,6 +16,7 @@
*/
#include "technik_o.h"
+
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
{ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
@@ -36,3 +38,13 @@ led_config_t g_led_config = { {
} };
#endif
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}
+};
+#endif
+
diff --git a/keyboards/boardsource/technik_s/config.h b/keyboards/boardsource/technik_s/config.h
index 4f665330a3..7b5f297c9e 100644
--- a/keyboards/boardsource/technik_s/config.h
+++ b/keyboards/boardsource/technik_s/config.h
@@ -114,9 +114,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
+//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
+//#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
diff --git a/keyboards/boardsource/technik_s/rules.mk b/keyboards/boardsource/technik_s/rules.mk
index efc63b4d56..33488b9d3a 100644
--- a/keyboards/boardsource/technik_s/rules.mk
+++ b/keyboards/boardsource/technik_s/rules.mk
@@ -8,14 +8,11 @@ BOOTLOADER = atmel-dfu
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
+MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/the_mark/info.json b/keyboards/boardsource/the_mark/info.json
index 07e3a34e54..792585d12a 100644
--- a/keyboards/boardsource/the_mark/info.json
+++ b/keyboards/boardsource/the_mark/info.json
@@ -1,229 +1,393 @@
{
"keyboard_name": "The Mark: 65",
"url": "",
- "maintainer": "Boardsource",
+ "maintainer": "daysgobye, Boardsource",
"layouts": {
"LAYOUT_all": {
"layout": [
- { "x": 0, "y": 0, "w": 1 },
- { "x": 1, "y": 0, "w": 1 },
- { "x": 2, "y": 0, "w": 1 },
- { "x": 3, "y": 0, "w": 1 },
- { "x": 4, "y": 0, "w": 1 },
- { "x": 5, "y": 0, "w": 1 },
- { "x": 6, "y": 0, "w": 1 },
- { "x": 7, "y": 0, "w": 1 },
- { "x": 8, "y": 0, "w": 1 },
- { "x": 9, "y": 0, "w": 1 },
- { "x": 10, "y": 0, "w": 1 },
- { "x": 11, "y": 0, "w": 1 },
- { "x": 12, "y": 0, "w": 1 },
- { "x": 13, "y": 0, "w": 1 },
- { "x": 14, "y": 0, "w": 1 },
- { "x": 15.25, "y": 0, "w": 1 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1, "w": 1 },
- { "x": 2.5, "y": 1, "w": 1 },
- { "x": 3.5, "y": 1, "w": 1 },
- { "x": 4.5, "y": 1, "w": 1 },
- { "x": 5.5, "y": 1, "w": 1 },
- { "x": 6.5, "y": 1, "w": 1 },
- { "x": 7.5, "y": 1, "w": 1 },
- { "x": 8.5, "y": 1, "w": 1 },
- { "x": 9.5, "y": 1, "w": 1 },
- { "x": 10.5, "y": 1, "w": 1 },
- { "x": 11.5, "y": 1, "w": 1 },
- { "x": 12.5, "y": 1, "w": 1 },
- { "x": 13.5, "y": 1, "w": 1.5 },
- { "x": 15.25, "y": 1, "w": 1 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2, "w": 1 },
- { "x": 2.75, "y": 2, "w": 1 },
- { "x": 3.75, "y": 2, "w": 1 },
- { "x": 4.75, "y": 2, "w": 1 },
- { "x": 5.75, "y": 2, "w": 1 },
- { "x": 6.75, "y": 2, "w": 1 },
- { "x": 7.75, "y": 2, "w": 1 },
- { "x": 8.75, "y": 2, "w": 1 },
- { "x": 9.75, "y": 2, "w": 1 },
- { "x": 10.75, "y": 2, "w": 1 },
- { "x": 11.75, "y": 2, "w": 1 },
- { "x": 12.75, "y": 2, "w": 2.25 },
- { "x": 15.25, "y": 2, "w": 1 },
- { "x": 0, "y": 3, "w": 1.25 },
- { "x": 1.25, "y": 3, "w": 1 },
- { "x": 2.25, "y": 3, "w": 1 },
- { "x": 3.25, "y": 3, "w": 1 },
- { "x": 4.25, "y": 3, "w": 1 },
- { "x": 5.25, "y": 3, "w": 1 },
- { "x": 6.25, "y": 3, "w": 1 },
- { "x": 7.25, "y": 3, "w": 1 },
- { "x": 8.25, "y": 3, "w": 1 },
- { "x": 9.25, "y": 3, "w": 1 },
- { "x": 10.25, "y": 3, "w": 1 },
- { "x": 11.25, "y": 3, "w": 1 },
- { "x": 12.25, "y": 3, "w": 1.75 },
- { "x": 14.25, "y": 3.25, "w": 1 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 2.25 },
- { "x": 6, "y": 4, "w": 1.25 },
- { "x": 7.25, "y": 4, "w": 2.75 },
- { "x": 10, "y": 4, "w": 1 },
- { "x": 11, "y": 4, "w": 1 },
- { "x": 12, "y": 4, "w": 1 },
- { "x": 13.25, "y": 4.25, "w": 1 },
- { "x": 14.25, "y": 4.25, "w": 1 },
- { "x": 15.25, "y": 4.25, "w": 1 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"Toggle RGB", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"RGB Mode +", "x":15.25, "y":1},
+
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Fn", "x":15.25, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"`~", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25}
]
},
"LAYOUT_ansi": {
"layout": [
- { "x": 0, "y": 0, "w": 1 },
- { "x": 1, "y": 0, "w": 1 },
- { "x": 2, "y": 0, "w": 1 },
- { "x": 3, "y": 0, "w": 1 },
- { "x": 4, "y": 0, "w": 1 },
- { "x": 5, "y": 0, "w": 1 },
- { "x": 6, "y": 0, "w": 1 },
- { "x": 7, "y": 0, "w": 1 },
- { "x": 8, "y": 0, "w": 1 },
- { "x": 9, "y": 0, "w": 1 },
- { "x": 10, "y": 0, "w": 1 },
- { "x": 11, "y": 0, "w": 1 },
- { "x": 12, "y": 0, "w": 1 },
- { "x": 13, "y": 0, "w": 2 },
- { "x": 15.25, "y": 0, "w": 1 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1, "w": 1 },
- { "x": 2.5, "y": 1, "w": 1 },
- { "x": 3.5, "y": 1, "w": 1 },
- { "x": 4.5, "y": 1, "w": 1 },
- { "x": 5.5, "y": 1, "w": 1 },
- { "x": 6.5, "y": 1, "w": 1 },
- { "x": 7.5, "y": 1, "w": 1 },
- { "x": 8.5, "y": 1, "w": 1 },
- { "x": 9.5, "y": 1, "w": 1 },
- { "x": 10.5, "y": 1, "w": 1 },
- { "x": 11.5, "y": 1, "w": 1 },
- { "x": 12.5, "y": 1, "w": 1 },
- { "x": 13.5, "y": 1, "w": 1.5 },
- { "x": 15.25, "y": 1, "w": 1 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2, "w": 1 },
- { "x": 2.75, "y": 2, "w": 1 },
- { "x": 3.75, "y": 2, "w": 1 },
- { "x": 4.75, "y": 2, "w": 1 },
- { "x": 5.75, "y": 2, "w": 1 },
- { "x": 6.75, "y": 2, "w": 1 },
- { "x": 7.75, "y": 2, "w": 1 },
- { "x": 8.75, "y": 2, "w": 1 },
- { "x": 9.75, "y": 2, "w": 1 },
- { "x": 10.75, "y": 2, "w": 1 },
- { "x": 11.75, "y": 2, "w": 1 },
- { "x": 12.75, "y": 2, "w": 2.25 },
- { "x": 15.25, "y": 2, "w": 1 },
- { "x": 0, "y": 3, "w": 2.25 },
- { "x": 2.25, "y": 3, "w": 1 },
- { "x": 3.25, "y": 3, "w": 1 },
- { "x": 4.25, "y": 3, "w": 1 },
- { "x": 5.25, "y": 3, "w": 1 },
- { "x": 6.25, "y": 3, "w": 1 },
- { "x": 7.25, "y": 3, "w": 1 },
- { "x": 8.25, "y": 3, "w": 1 },
- { "x": 9.25, "y": 3, "w": 1 },
- { "x": 10.25, "y": 3, "w": 1 },
- { "x": 11.25, "y": 3, "w": 1 },
- { "x": 12.25, "y": 3, "w": 1.75 },
- { "x": 14.25, "y": 3.25, "w": 1 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 6.25 },
- { "x": 10, "y": 4, "w": 1 },
- { "x": 11, "y": 4, "w": 1 },
- { "x": 12, "y": 4, "w": 1 },
- { "x": 13.25, "y": 4.25, "w": 1 },
- { "x": 14.25, "y": 4.25, "w": 1 },
- { "x": 15.25, "y": 4.25, "w": 1 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Toggle RGB", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"RGB Mode +", "x":15.25, "y":1},
+
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Fn", "x":15.25, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"`~", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_space": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"Toggle RGB", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"RGB Mode +", "x":15.25, "y":1},
+
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Fn", "x":15.25, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"`~", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25}
]
},
"LAYOUT_iso": {
"layout": [
- { "x": 0, "y": 0, "w": 1 },
- { "x": 1, "y": 0, "w": 1 },
- { "x": 2, "y": 0, "w": 1 },
- { "x": 3, "y": 0, "w": 1 },
- { "x": 4, "y": 0, "w": 1 },
- { "x": 5, "y": 0, "w": 1 },
- { "x": 6, "y": 0, "w": 1 },
- { "x": 7, "y": 0, "w": 1 },
- { "x": 8, "y": 0, "w": 1 },
- { "x": 9, "y": 0, "w": 1 },
- { "x": 10, "y": 0, "w": 1 },
- { "x": 11, "y": 0, "w": 1 },
- { "x": 12, "y": 0, "w": 1 },
- { "x": 13, "y": 0, "w": 2 },
- { "x": 15.25, "y": 0, "w": 1 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1, "w": 1 },
- { "x": 2.5, "y": 1, "w": 1 },
- { "x": 3.5, "y": 1, "w": 1 },
- { "x": 4.5, "y": 1, "w": 1 },
- { "x": 5.5, "y": 1, "w": 1 },
- { "x": 6.5, "y": 1, "w": 1 },
- { "x": 7.5, "y": 1, "w": 1 },
- { "x": 8.5, "y": 1, "w": 1 },
- { "x": 9.5, "y": 1, "w": 1 },
- { "x": 10.5, "y": 1, "w": 1 },
- { "x": 11.5, "y": 1, "w": 1 },
- { "x": 12.5, "y": 1, "w": 1 },
- { "x": 15.25, "y": 1, "w": 1 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2, "w": 1 },
- { "x": 2.75, "y": 2, "w": 1 },
- { "x": 3.75, "y": 2, "w": 1 },
- { "x": 4.75, "y": 2, "w": 1 },
- { "x": 5.75, "y": 2, "w": 1 },
- { "x": 6.75, "y": 2, "w": 1 },
- { "x": 7.75, "y": 2, "w": 1 },
- { "x": 8.75, "y": 2, "w": 1 },
- { "x": 9.75, "y": 2, "w": 1 },
- { "x": 10.75, "y": 2, "w": 1 },
- { "x": 11.75, "y": 2, "w": 1 },
- { "x": 12.75, "y": 2, "w": 1 },
- {
- "x": 13.75,
- "y": 1,
- "w": 1.25,
- "h": 2
- },
- { "x": 15.25, "y": 2, "w": 1 },
- { "x": 0, "y": 3, "w": 1.25 },
- { "x": 1.25, "y": 3, "w": 1 },
- { "x": 2.25, "y": 3, "w": 1 },
- { "x": 3.25, "y": 3, "w": 1 },
- { "x": 4.25, "y": 3, "w": 1 },
- { "x": 5.25, "y": 3, "w": 1 },
- { "x": 6.25, "y": 3, "w": 1 },
- { "x": 7.25, "y": 3, "w": 1 },
- { "x": 8.25, "y": 3, "w": 1 },
- { "x": 9.25, "y": 3, "w": 1 },
- { "x": 10.25, "y": 3, "w": 1 },
- { "x": 11.25, "y": 3, "w": 1 },
- { "x": 12.25, "y": 3, "w": 1.75 },
- { "x": 14.25, "y": 3.25, "w": 1 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 6.25 },
- { "x": 10, "y": 4, "w": 1 },
- { "x": 11, "y": 4, "w": 1 },
- { "x": 12, "y": 4, "w": 1 },
- { "x": 13.25, "y": 4.25, "w": 1 },
- { "x": 14.25, "y": 4.25, "w": 1 },
- { "x": 15.25, "y": 4.25, "w": 1 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Toggle RGB", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"RGB Mode +", "x":15.25, "y":1},
+
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Fn", "x":15.25, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"`\u00ac", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25}
+ ]
+ },
+ "LAYOUT_iso_split_bs_space": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"Toggle RGB", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"RGB Mode +", "x":15.25, "y":1},
+
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Fn", "x":15.25, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"`\u00ac", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25}
]
}
}
diff --git a/keyboards/boardsource/the_mark/keymaps/default/keymap.c b/keyboards/boardsource/the_mark/keymaps/default/keymap.c
index ead93baf55..148795b0c3 100644
--- a/keyboards/boardsource/the_mark/keymaps/default/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default/keymap.c
@@ -21,24 +21,20 @@ enum layer_names {
_FN
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, RGB_MOD,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN),
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-[_FN] = LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-)
-
-
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, RGB_MOD,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN),
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
-
diff --git a/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
index 250ecf7669..4174e03603 100644
--- a/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
@@ -21,24 +21,20 @@ enum layer_names {
_FN
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, RGB_MOD,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN),
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-[_FN] = LAYOUT_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, _______, KC_END,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-)
-
-
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, RGB_MOD,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, _______, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
-
diff --git a/keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c
new file mode 100644
index 0000000000..d59378c78f
--- /dev/null
+++ b/keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2020 Boardsource
+ * 2022 QMK / James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_ansi_split_bs_space(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, RGB_MOD,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_ansi_split_bs_space(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, _______, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
index 6aeace190a..347bc19a35 100644
--- a/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
@@ -21,24 +21,20 @@ enum layer_names {
_FN
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT_iso(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, RGB_MOD,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, MO(_FN),
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-[_FN] = LAYOUT_iso(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_END,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,KC_MUTE, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-)
-
-
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, RGB_MOD,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, MO(_FN),
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
-
diff --git a/keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c
new file mode 100644
index 0000000000..617ee540d1
--- /dev/null
+++ b/keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2020 Boardsource
+ * 2022 QMK / James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_iso_split_bs_space(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, RGB_MOD,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, MO(_FN),
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_iso_split_bs_space(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/boardsource/the_mark/keymaps/via/keymap.c b/keyboards/boardsource/the_mark/keymaps/via/keymap.c
index 2b0477f39f..1d2a97b756 100644
--- a/keyboards/boardsource/the_mark/keymaps/via/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/via/keymap.c
@@ -15,40 +15,34 @@
*/
#include QMK_KEYBOARD_H
-
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT
),
-LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-),
-LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-),
-LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-)
-
-
-
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, KC_END,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
};
-
diff --git a/keyboards/boardsource/the_mark/rules.mk b/keyboards/boardsource/the_mark/rules.mk
index e968cf4fa5..e9cb6a2894 100644
--- a/keyboards/boardsource/the_mark/rules.mk
+++ b/keyboards/boardsource/the_mark/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boardsource/the_mark/the_mark.h b/keyboards/boardsource/the_mark/the_mark.h
index 9d527f9467..163d5c256c 100644
--- a/keyboards/boardsource/the_mark/the_mark.h
+++ b/keyboards/boardsource/the_mark/the_mark.h
@@ -18,54 +18,92 @@
#include "quantum.h"
-/* This is a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
+#define ___ KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E ││0F │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤ └─┬─────┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E ││1F │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤ ┌──┴┐2D │ ISO Enter
+ * LShift │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││2F │ │1E │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘ └───┴────┘
+ * │31 │ │31 │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │┌───┐
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┘│3E │
+ * │40 │41 │43 │44 │46 │48 │4A │4B │4C │┌───┼───┼───┐
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┘│4D │4E │4F │
+ * └───┴───┴───┘
+ * ┌────────────────────────┬─────┬─────┐
+ * 6.25u Space │46 │4A │4B │ RWKL
+ * └────────────────────────┴─────┴─────┘
*/
+
#define LAYOUT_all( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
- K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414, K415 \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E, K4F \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
- { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
- { K301, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, KC_NO}, \
- { K400, K401, KC_NO, K403, K404, KC_NO, K406, KC_NO, K408, KC_NO, K410, K411, K412, K413, K414, K415 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, ___ }, \
+ { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F } \
}
#define LAYOUT_ansi( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \
- K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
- K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K401, K403, K406, K410, K411, K412, K413, K414, K415 \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \
- { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
- { KC_NO, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, KC_NO}, \
- { K400, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
+ { ___, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, ___ }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F } \
}
+#define LAYOUT_ansi_split_bs_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
+ { ___, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, ___ }, \
+ { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F } \
+}
#define LAYOUT_iso( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \
- K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, \
- K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K114, K213, K215, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K401, K403, K406, K410, K411, K412, K413, K414, K415 \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1E, K2D, K2F, \
+ K31, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \
- { K100, KC_NO, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO, K215 }, \
- { K301, K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, KC_NO}, \
- { K400, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414, K415 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, ___ }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F } \
}
+#define LAYOUT_iso_split_bs_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1E, K2D, K2F, \
+ K31, K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, ___, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, ___ }, \
+ { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F } \
+}
diff --git a/keyboards/boardwalk/rules.mk b/keyboards/boardwalk/rules.mk
index 44fcf3f003..16489ed2c2 100644
--- a/keyboards/boardwalk/rules.mk
+++ b/keyboards/boardwalk/rules.mk
@@ -4,20 +4,18 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# Build Options
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_5x14
diff --git a/keyboards/bobpad/rules.mk b/keyboards/bobpad/rules.mk
index d841c10cc1..1e46bc433d 100644
--- a/keyboards/bobpad/rules.mk
+++ b/keyboards/bobpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bop/rules.mk b/keyboards/bop/rules.mk
index d3ce654f12..df76d69d12 100644
--- a/keyboards/bop/rules.mk
+++ b/keyboards/bop/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk
index 4ad4ec58d0..5a00322c46 100644
--- a/keyboards/boston/rules.mk
+++ b/keyboards/boston/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk
index 6468f47b7d..69919a16c6 100644
--- a/keyboards/boston_meetup/2019/rules.mk
+++ b/keyboards/boston_meetup/2019/rules.mk
@@ -6,17 +6,14 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no
diff --git a/keyboards/botanicalkeyboards/fm2u/rules.mk b/keyboards/botanicalkeyboards/fm2u/rules.mk
index 2f757667b0..d998f55816 100644
--- a/keyboards/botanicalkeyboards/fm2u/rules.mk
+++ b/keyboards/botanicalkeyboards/fm2u/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/box75/rules.mk b/keyboards/box75/rules.mk
index ee6c0dfca7..0427bb23fd 100644
--- a/keyboards/box75/rules.mk
+++ b/keyboards/box75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bpiphany/frosty_flake/20130602/20130602.c b/keyboards/bpiphany/frosty_flake/20130602/20130602.c
new file mode 100644
index 0000000000..2c875d1a7f
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20130602/20130602.c
@@ -0,0 +1,24 @@
+#include "frosty_flake.h"
+
+void keyboard_pre_init_kb() {
+ setPinOutput(B7); // caps lock
+ writePinHigh(B7);
+ setPinOutput(C5); // num lock
+ writePinHigh(C7);
+ setPinOutput(C6); // scroll lock
+ writePinHigh(C6);
+
+ keyboard_pre_init_user();
+}
+
+bool led_update_kb(led_t usb_led) {
+ // user requests no further processing
+ if (!led_update_user(usb_led))
+ return true;
+
+ writePin(C5, !usb_led.num_lock);
+ writePin(B7, !usb_led.caps_lock);
+ writePin(C6, !usb_led.scroll_lock);
+
+ return true;
+}
diff --git a/keyboards/bpiphany/frosty_flake/20130602/matrix.c b/keyboards/bpiphany/frosty_flake/20130602/matrix.c
new file mode 100644
index 0000000000..e0337f9ec2
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20130602/matrix.c
@@ -0,0 +1,86 @@
+/*
+ Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <util/delay.h>
+#include "matrix.h"
+
+
+static matrix_row_t scan_col(void) {
+ // Each of the 8 columns is read off pins as below
+ // 7 6 5 4 3 2 1 0
+ // ,--,--,--,--,--,--,--,--,
+ // |B0|B3|B2|B1|B6|B4|B5|C7|
+ // `--`--`--`--`--`--`--`--`
+ return (
+ (PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) |
+ (PIND&(1<<0) ? 0 : ((matrix_row_t)1<<1)) |
+ (PIND&(1<<1) ? 0 : ((matrix_row_t)1<<2)) |
+ (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<3)) |
+ (PIND&(1<<5) ? 0 : ((matrix_row_t)1<<4)) |
+ (PIND&(1<<4) ? 0 : ((matrix_row_t)1<<5)) |
+ (PIND&(1<<2) ? 0 : ((matrix_row_t)1<<6)) |
+ (PIND&(1<<6) ? 0 : ((matrix_row_t)1<<7))
+ );
+}
+
+static void select_row(uint8_t row) {
+ switch (row) {
+ case 0: PORTB = (PORTB & ~0b01111110) | 0b00111010; break;
+ case 1: PORTB = (PORTB & ~0b01111110) | 0b01011000; break;
+ case 2: PORTB = (PORTB & ~0b01111110) | 0b01110000; break;
+ case 3: PORTB = (PORTB & ~0b01111110) | 0b01101110; break;
+ case 4: PORTB = (PORTB & ~0b01111110) | 0b01101100; break;
+ case 5: PORTB = (PORTB & ~0b01111110) | 0b01101010; break;
+ case 6: PORTB = (PORTB & ~0b01111110) | 0b01101000; break;
+ case 7: PORTB = (PORTB & ~0b01111110) | 0b01100100; break;
+ case 8: PORTB = (PORTB & ~0b01111110) | 0b01100000; break;
+ case 9: PORTB = (PORTB & ~0b01111110) | 0b01100010; break;
+ case 10: PORTB = (PORTB & ~0b01111110) | 0b00011010; break;
+ case 11: PORTB = (PORTB & ~0b01111110) | 0b00011000; break;
+ case 12: PORTB = (PORTB & ~0b01111110) | 0b00111100; break;
+ case 13: PORTB = (PORTB & ~0b01111110) | 0b01100110; break;
+ case 14: PORTB = (PORTB & ~0b01111110) | 0b00111000; break;
+ case 15: PORTB = (PORTB & ~0b01111110) | 0b01110010; break;
+ case 16: PORTB = (PORTB & ~0b01111110) | 0b00011110; break;
+ case 17: PORTB = (PORTB & ~0b01111110) | 0b00111110; break;
+ }
+}
+
+void matrix_init_custom(void) {
+ /* Column output pins */
+ DDRB |= 0b01111110;
+ /* Row input pins */
+ DDRC &= ~0b10000100;
+ DDRD &= ~0b01110111;
+ PORTC |= 0b10000100;
+ PORTD |= 0b01110111;
+}
+
+// matrix is 18 uint8_t.
+// we select the row (one of 18), then read the column
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool has_changed = false;
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ matrix_row_t orig = current_matrix[row];
+ select_row(row);
+ _delay_us(3);
+ current_matrix[row] = scan_col();
+ has_changed |= (orig != current_matrix[row]);
+ }
+
+ return has_changed;
+}
diff --git a/keyboards/bpiphany/frosty_flake/20130602/rules.mk b/keyboards/bpiphany/frosty_flake/20130602/rules.mk
new file mode 100644
index 0000000000..dc435a332f
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20130602/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+
+CUSTOM_MATRIX = lite
+SRC += 20130602/matrix.c
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/frosty_flake/frosty_flake.c b/keyboards/bpiphany/frosty_flake/20140521/20140521.c
index be4e1a3124..be4e1a3124 100644
--- a/keyboards/bpiphany/frosty_flake/frosty_flake.c
+++ b/keyboards/bpiphany/frosty_flake/20140521/20140521.c
diff --git a/keyboards/bpiphany/frosty_flake/20140521/matrix.c b/keyboards/bpiphany/frosty_flake/20140521/matrix.c
new file mode 100644
index 0000000000..24c7617b19
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20140521/matrix.c
@@ -0,0 +1,86 @@
+/*
+ Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <util/delay.h>
+#include "matrix.h"
+
+
+static matrix_row_t scan_col(void) {
+ // Each of the 8 columns is read off pins as below
+ // 7 6 5 4 3 2 1 0
+ // ,--,--,--,--,--,--,--,--,
+ // |B0|B3|B2|B1|B6|B4|B5|C7|
+ // `--`--`--`--`--`--`--`--`
+ return (
+ (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
+ (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
+ (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
+ (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
+ (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
+ (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
+ (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
+ (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
+ );
+}
+
+static void select_row(uint8_t row) {
+ switch (row) {
+ case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
+ case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
+ case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
+ case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
+ case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
+ case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
+ case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
+ case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
+ case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
+ case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
+ case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
+ case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
+ case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
+ case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
+ case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
+ case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
+ case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
+ case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
+ }
+}
+
+void matrix_init_custom(void) {
+ /* Row output pins */
+ DDRD |= 0b01111011;
+ /* Column input pins */
+ DDRC &= ~0b10000000;
+ DDRB &= ~0b01111111;
+ PORTC |= 0b10000000;
+ PORTB |= 0b01111111;
+}
+
+// matrix is 18 uint8_t.
+// we select the row (one of 18), then read the column
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool has_changed = false;
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ matrix_row_t orig = current_matrix[row];
+ select_row(row);
+ _delay_us(3);
+ current_matrix[row] = scan_col();
+ has_changed |= (orig != current_matrix[row]);
+ }
+
+ return has_changed;
+}
diff --git a/keyboards/bpiphany/frosty_flake/20140521/rules.mk b/keyboards/bpiphany/frosty_flake/20140521/rules.mk
new file mode 100644
index 0000000000..035e59f911
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20140521/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+
+CUSTOM_MATRIX = lite
+SRC += 20140521/matrix.c
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
index 1a337b111f..a60d728ac6 100644
--- a/keyboards/bpiphany/frosty_flake/config.h
+++ b/keyboards/bpiphany/frosty_flake/config.h
@@ -93,3 +93,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/config.h b/keyboards/bpiphany/frosty_flake/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/bpiphany/frosty_flake/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c
index 9d40d4c9cc..be1ca9adec 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c
+++ b/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c
@@ -1,12 +1,12 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
index 5e747a8360..5d04993098 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h b/keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c
index 8e87239719..c5d232ccee 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c
+++ b/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c
@@ -1,11 +1,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+[0] = LAYOUT_tkl(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT )
};
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk
index f23faf1110..c9a6f1f1bc 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk
@@ -1,7 +1,3 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
@@ -12,4 +8,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/via/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b3ef6ecadb
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
+ /* Copyright 2021 Chance Monnette <chance@trashcat.xyz>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_tkl(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
+
+[1] = LAYOUT_tkl(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______,
+ _______,_______,_______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, _______,
+ _______,_______,_______, _______, _______, _______ , _______, _______, _______, _______, _______
+ ),
+
+[2] = LAYOUT_tkl(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______,
+ _______,_______,_______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______, _______,
+ _______,_______,_______, _______, _______, _______ , _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/lazydesigners/dimple/keymaps/via/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/lazydesigners/dimple/keymaps/via/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/keymaps/via/rules.mk
diff --git a/keyboards/bpiphany/frosty_flake/matrix.c b/keyboards/bpiphany/frosty_flake/matrix.c
deleted file mode 100644
index 4517c7af5b..0000000000
--- a/keyboards/bpiphany/frosty_flake/matrix.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <util/delay.h>
-#include "matrix.h"
-
-static matrix_row_t scan_col(void) {
- // Each of the 8 columns is read off pins as below
- // 7 6 5 4 3 2 1 0
- // ,--,--,--,--,--,--,--,--,
- // |B0|B3|B2|B1|B6|B4|B5|C7|
- // `--`--`--`--`--`--`--`--`
- return (
- (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
- (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
- (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
- (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
- (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
- (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
- (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
- (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
- );
-}
-
-static void select_row(uint8_t row) {
- switch (row) {
- case 0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
- case 1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
- case 2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
- case 3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
- case 4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
- case 5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
- case 6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
- case 7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
- case 8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
- case 9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
- case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
- case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
- case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
- case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
- case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
- case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
- case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
- case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
- }
-}
-
-void matrix_init_custom(void) {
- /* Row output pins */
- DDRD |= 0b01111011;
- /* Column input pins */
- DDRC &= ~0b10000000;
- DDRB &= ~0b01111111;
- PORTC |= 0b10000000;
- PORTB |= 0b01111111;
-}
-
-// matrix is 18 uint8_t.
-// we select the row (one of 18), then read the column
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- bool has_changed = false;
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- matrix_row_t orig = current_matrix[row];
- select_row(row);
- _delay_us(3);
- current_matrix[row] = scan_col();
- has_changed |= (orig != current_matrix[row]);
- }
-
- return has_changed;
-}
diff --git a/keyboards/bpiphany/frosty_flake/readme.md b/keyboards/bpiphany/frosty_flake/readme.md
index 5917022a88..7c64085182 100644
--- a/keyboards/bpiphany/frosty_flake/readme.md
+++ b/keyboards/bpiphany/frosty_flake/readme.md
@@ -1,7 +1,7 @@
# Frosty Flake Controller
-This is the firmware for Rev. 20140521 of the Frosty Flake controller
-by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/),
+This is the firmware for the Frosty Flake controller by
+[Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/),
a replacement controller for the [Cooler Master Quick Fire
Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/).
@@ -11,6 +11,10 @@ but has been cleaned up to match the
[schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf)
and gone through some minor refactoring for QMK.
+## Revision support
+There are two revisions of this controller. 20140521 is built by default.
+If you need to build for 20130602, it can be built with `make bpiphany/frosty_flake/20130602`
+
## 104 and 87 layout support
Support for both 104 key and 87 key layouts is provided. See the
diff --git a/keyboards/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk
index 4bce03b089..e5402b32f7 100644
--- a/keyboards/bpiphany/frosty_flake/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/rules.mk
@@ -1,25 +1 @@
-# MCU name
-MCU = atmega32u2
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-
-CUSTOM_MATRIX = lite
-SRC += matrix.c
-
-LAYOUTS = tkl_ansi
+DEFAULT_FOLDER=bpiphany/frosty_flake/20140521
diff --git a/keyboards/bpiphany/ghost_squid/config.h b/keyboards/bpiphany/ghost_squid/config.h
new file mode 100644
index 0000000000..bb8535b177
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/config.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6050
+#define DEVICE_VER 0x0104
+#define MANUFACTURER Bathroom Epiphanies
+#define PRODUCT ghost_squid
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_PIN_ON_STATE 0
+#define LED_NUM_LOCK_PIN C5
+#define LED_CAPS_LOCK_PIN C6
+#define LED_SCROLL_LOCK_PIN B7
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/bpiphany/ghost_squid/ghost_squid.c b/keyboards/bpiphany/ghost_squid/ghost_squid.c
new file mode 100644
index 0000000000..3ecac66f7a
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/ghost_squid.c
@@ -0,0 +1,26 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ghost_squid.h"
+
+void keyboard_pre_init_kb(void) {
+ setPinOutput(D0);
+ writePinLow(D0);
+ fn_led_off();
+
+ keyboard_pre_init_user();
+}
diff --git a/keyboards/bpiphany/ghost_squid/ghost_squid.h b/keyboards/bpiphany/ghost_squid/ghost_squid.h
new file mode 100644
index 0000000000..839c9fc123
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/ghost_squid.h
@@ -0,0 +1,44 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define fn_led_on() writePinLow(D0)
+#define fn_led_off() writePinHigh(D0)
+
+#define ___ KC_NO
+
+#define LAYOUT( \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
+ ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
+ /* 0 */ { ___ , KB0 , KC0 , KD0 , ___ , KF0 , KG0 , ___ , ___ , ___ , KK0 , KL0 , ___ , ___ , KO0 , ___ , KQ0 , KR0 }, \
+ /* 1 */ { KA1 , KB1 , ___ , KD1 , KE1 , KF1 , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , ___ , ___ , ___ , ___ , KQ1 , ___ }, \
+ /* 2 */ { ___ , KB2 , ___ , KD2 , KE2 , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , ___ , KN2 , ___ , KP2 , KQ2 , KR2 }, \
+ /* 3 */ { ___ , KB3 , ___ , KD3 , KE3 , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KN3 , KO3 , ___ , KQ3 , KR3 }, \
+ /* 4 */ { KA4 , KB4 , ___ , KD4 , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , ___ , ___ , KO4 , ___ , KQ4 , KR4 }, \
+ /* 5 */ { KA5 , ___ , KC5 , KD5 , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , ___ , ___ , KO5 , ___ , KQ5 , KR5 }, \
+ /* 6 */ { ___ , KB6 , KC6 , ___ , KE6 , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , ___ , KO6 , ___ , KQ6 , KR6 }, \
+ /* 7 */ { KA7 , KB7 , KC7 , KD7 , KE7 , KF7 , KG7 , KH7 , KI7 , KJ7 , ___ , ___ , ___ , ___ , KO7 , ___ , KQ7 , KR7 } \
+ }
+
diff --git a/keyboards/bpiphany/ghost_squid/info.json b/keyboards/bpiphany/ghost_squid/info.json
new file mode 100644
index 0000000000..698e3c21de
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/info.json
@@ -0,0 +1,121 @@
+{
+ "keyboard_name": "Bathroom Epiphanies Ghost Squid",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen,", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Ins", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+ {"label":"Num Lock", "x":18.5, "y":1.25},
+ {"label":"/", "x":19.5, "y":1.25},
+ {"label":"*", "x":20.5, "y":1.25},
+ {"label":"-", "x":21.5, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page DownDN", "x":17.25, "y":2.25},
+ {"label":"7", "x":18.5, "y":2.25},
+ {"label":"8", "x":19.5, "y":2.25},
+ {"label":"9", "x":20.5, "y":2.25},
+ {"label":"+", "x":21.5, "y":2.25, "h": 2},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"4", "x":18.5, "y":3.25},
+ {"label":"5", "x":19.5, "y":3.25},
+ {"label":"6", "x":20.5, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+ {"label":"1", "x":18.5, "y":4.25},
+ {"label":"2", "x":19.5, "y":4.25},
+ {"label":"3", "x":20.5, "y":4.25},
+ {"label":"Enter", "x":21.5, "y":4.25, "h":2},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25},
+ {"label":"0", "x":18.5, "y":5.25, "w":2},
+ {"label":".", "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c b/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c
new file mode 100644
index 0000000000..09523ebbb9
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+/* Default qwerty layout
+* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────────┐
+* │ESC│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PRT│SCR│PAU│ │Ghost Squid│
+* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───────────┘
+* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │INS│HOM│PgU│ │NUM│ / │ * │ - │
+* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │DEL│END│PgD│ │ 7 │ 8 │ 9 │ │
+* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ↲ │ └───┴───┴───┘ ├───┼───┼───┤ + │
+* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ │ 7 │ 8 │ 9 │ │
+* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤
+* │Shif│ # │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ ↲ │
+* │Ctrl│GUI │Alt │ │ Alt│ GUI│Fn │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ , │ │
+* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+*/
+
+enum layer_names {
+ KM_QWERTY,
+ KM_MEDIA,
+ KM_GUI_LOCK
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 0: Standard ISO layer */
+ [KM_QWERTY] = LAYOUT(
+KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(KM_MEDIA),KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT),
+ /* Layer 1: Function layer */
+ [KM_MEDIA] = LAYOUT(
+_______,_______,_______,_______,_______, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_STOP, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, TG(KM_GUI_LOCK),KC_MUTE, KC_VOLD, KC_VOLU,_______,_______, RESET,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______),
+ [KM_GUI_LOCK] = LAYOUT(
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+_______,KC_NO,_______,_______,_______,KC_NO,_______,_______,_______,_______,_______,_______,_______)
+};
+
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (IS_LAYER_ON_STATE(state, KM_GUI_LOCK)) {
+ fn_led_on();
+ } else {
+ fn_led_off();
+ }
+ return state;
+}
diff --git a/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md b/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md
new file mode 100644
index 0000000000..3c27324d1c
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/keymaps/default/readme.md
@@ -0,0 +1 @@
+# Default layout desc TODO
diff --git a/keyboards/bpiphany/ghost_squid/matrix.c b/keyboards/bpiphany/ghost_squid/matrix.c
new file mode 100644
index 0000000000..b0ad607555
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/matrix.c
@@ -0,0 +1,97 @@
+/*
+ Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
+ Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "matrix.h"
+#include "quantum.h"
+
+matrix_row_t read_rows(void) {
+ return
+ (PINB & (1 << 1) ? 0 : ((matrix_row_t)1 << 0)) |
+ (PINC & (1 << 2) ? 0 : ((matrix_row_t)1 << 1)) |
+ (PINB & (1 << 6) ? 0 : ((matrix_row_t)1 << 2)) |
+ (PINB & (1 << 4) ? 0 : ((matrix_row_t)1 << 3)) |
+ (PINB & (1 << 3) ? 0 : ((matrix_row_t)1 << 4)) |
+ (PINB & (1 << 2) ? 0 : ((matrix_row_t)1 << 5)) |
+ (PINB & (1 << 0) ? 0 : ((matrix_row_t)1 << 6)) |
+ (PINB & (1 << 5) ? 0 : ((matrix_row_t)1 << 7));
+}
+
+void select_col(uint8_t col) {
+ switch (col) {
+ case 0: PORTD = (PORTD & ~0b01111110) | 0b01100010; break;
+ case 1: PORTD = (PORTD & ~0b01111110) | 0b01101000; break;
+ case 2: PORTD = (PORTD & ~0b01111110) | 0b01101100; break;
+ case 3: PORTD = (PORTD & ~0b01111110) | 0b01110000; break;
+ case 4: PORTD = (PORTD & ~0b01111110) | 0b01111000; break;
+ case 5: PORTD = (PORTD & ~0b01111110) | 0b01100000; break;
+ case 6: PORTD = (PORTD & ~0b01111110) | 0b01110100; break;
+ case 7: PORTD = (PORTD & ~0b01111110) | 0b01100100; break;
+ case 8: PORTD = (PORTD & ~0b01111110) | 0b01111100; break;
+ case 9: PORTD = (PORTD & ~0b01111110) | 0b01101010; break;
+ case 10: PORTD = (PORTD & ~0b01111110) | 0b00110110; break;
+ case 11: PORTD = (PORTD & ~0b01111110) | 0b00010110; break;
+ case 12: PORTD = (PORTD & ~0b01111110) | 0b01001110; break;
+ case 13: PORTD = (PORTD & ~0b01111110) | 0b00111110; break;
+ case 14: PORTD = (PORTD & ~0b01111110) | 0b00011110; break;
+ case 15: PORTD = (PORTD & ~0b01111110) | 0b01000110; break;
+ case 16: PORTD = (PORTD & ~0b01111110) | 0b00100110; break;
+ case 17: PORTD = (PORTD & ~0b01111110) | 0b00101110; break;
+ }
+}
+
+void matrix_init_custom(void) {
+ /* Column output pins */
+ setPinOutput(D1);
+ setPinOutput(D2);
+ setPinOutput(D3);
+ setPinOutput(D4);
+ setPinOutput(D5);
+ setPinOutput(D6);
+
+ /* Row input pins */
+ writePinHigh(B0);
+ writePinHigh(B1);
+ writePinHigh(B2);
+ writePinHigh(B3);
+ writePinHigh(B4);
+ writePinHigh(B5);
+ writePinHigh(B6);
+ writePinHigh(C2);
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
+
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ select_col(col);
+ matrix_io_delay();
+ matrix_row_t rows = read_rows();
+
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ bool prev_bit = current_matrix[row] & ((matrix_row_t)1 << col);
+ bool curr_bit = rows & (1 << row);
+
+ if (prev_bit != curr_bit) {
+ current_matrix[row] ^= (matrix_row_t)1 << col;
+ changed = true;
+ }
+ }
+ }
+
+ return changed;
+}
diff --git a/keyboards/bpiphany/ghost_squid/readme.md b/keyboards/bpiphany/ghost_squid/readme.md
new file mode 100644
index 0000000000..ab39e0f725
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/readme.md
@@ -0,0 +1,27 @@
+# Ghost Squid Controller
+
+This is the firmware for Rev. 20140518 of the Ghost Squid controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Cooler Master Quick Fire XT](https://www.coolermaster.com/catalog/peripheral/keyboards/quick-fire-xt/).
+
+The code was adapted from the [BathroomEpiphanies QMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_qmk_keyboard/tree/master/keyboards/ghost_squid_20140518).
+
+* Keyboard Maintainer: QMK Community
+* Hardware Supported: Ghost Squid
+* Hardware Availability: [1upkeyboards](https://1upkeyboards.com/shop/controllers/qf-xt-ghost-squid-controller-2/)
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+104 key default layout:
+
+ make bpiphany/ghost_squid:default
+
+Flashing example for this keyboard:
+
+ make bpiphany/ghost_squid:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/bpiphany/ghost_squid/rules.mk b/keyboards/bpiphany/ghost_squid/rules.mk
new file mode 100644
index 0000000000..b4b4c1ef3e
--- /dev/null
+++ b/keyboards/bpiphany/ghost_squid/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+CUSTOM_MATRIX = lite
+SRC += matrix.c
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c
index 8f229c8ba8..df1305b965 100644
--- a/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c
+++ b/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c
@@ -5,11 +5,11 @@ enum layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [DEFAULT] = LAYOUT(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
+ [DEFAULT] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
};
diff --git a/keyboards/bpiphany/kitten_paw/rules.mk b/keyboards/bpiphany/kitten_paw/rules.mk
index cca8b33772..3709394a1c 100644
--- a/keyboards/bpiphany/kitten_paw/rules.mk
+++ b/keyboards/bpiphany/kitten_paw/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
index 621441b901..4a9b1f3f0f 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
@@ -22,22 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 0: Standard ISO layer */
- [KM_QWERTY] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ [KM_QWERTY] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
/* Layer 1: Function layer */
- [KM_MEDIA] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_PWR, KC_SLEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, \
- _______, _______, _______, _______, _______, _______, RESET, _______, KC_MPRV, KC_MSTP, KC_MNXT \
+ [KM_MEDIA] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_PWR, KC_SLEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, RESET, _______, KC_MPRV, KC_MSTP, KC_MNXT
)
};
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
index c1e6e9ed02..0f9291c88b 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
@@ -1,14 +1,10 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c
index a774741822..46b660124e 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/keymap.c
@@ -24,18 +24,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =
{
/* Layer 0: Standard JIS layer */
- [KM_JIS] = LAYOUT_tkl_jis(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_BSLS,KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP, \
+ [KM_JIS] = LAYOUT_tkl_jis(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_JYEN, KC_BSPC, KC_INS, KC_HOME,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_BSLS,KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RO, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI,KC_LALT,KC_MHEN, KC_SPC, KC_HENK,KC_KANA,KC_RALT,MO(1), KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
/* Layer 1: Function layer */
- [KM_MEDIA] = LAYOUT_tkl_jis(_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLD, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MPLY, \
+ [KM_MEDIA] = LAYOUT_tkl_jis(_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,KC_VOLD,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MPLY,
_______,_______,_______,_______, _______, _______,_______,_______,_______,RESET , KC_MPRV,KC_MSTP,KC_MNXT)
};
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
index f23c2105a3..cec4b4e463 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/keymaps/default_jis/rules.mk
@@ -1,14 +1,10 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk
index 232de655c7..af447c3376 100644
--- a/keyboards/bpiphany/pegasushoof/rules.mk
+++ b/keyboards/bpiphany/pegasushoof/rules.mk
@@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/bpiphany/sixshooter/keymaps/default/keymap.c b/keyboards/bpiphany/sixshooter/keymaps/default/keymap.c
index 51f115d935..5e67ce1112 100644
--- a/keyboards/bpiphany/sixshooter/keymaps/default/keymap.c
+++ b/keyboards/bpiphany/sixshooter/keymaps/default/keymap.c
@@ -33,8 +33,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------'
*/
[_BL] = LAYOUT( /* Base */
- MO(_FN), KC_VOLD, KC_VOLU, \
- KC_MPRV, KC_MPLY, KC_MNXT \
+ MO(_FN), KC_VOLD, KC_VOLU,
+ KC_MPRV, KC_MPLY, KC_MNXT
),
/* FN Layer: LED control
* ,-----------.
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------'
*/
[_FN] = LAYOUT(
- KC_TRNS, SS_LON, SS_LOFF, \
+ KC_TRNS, SS_LON, SS_LOFF,
KC_NO, KC_NO, KC_NO
),
};
diff --git a/keyboards/bpiphany/sixshooter/rules.mk b/keyboards/bpiphany/sixshooter/rules.mk
index b9b3e1fd96..66e1907f5a 100644
--- a/keyboards/bpiphany/sixshooter/rules.mk
+++ b/keyboards/bpiphany/sixshooter/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/config.h b/keyboards/bpiphany/tiger_lily/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/bpiphany/tiger_lily/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c
index 46c17aca8b..5c9ac83695 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c
@@ -1,11 +1,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
+[0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
}; \ No newline at end of file
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
index 418f54602d..adb07adf7d 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
@@ -1,15 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c
index 6457b0282a..186a826f13 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c
@@ -1,11 +1,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_fullsize_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
+[0] = LAYOUT_fullsize_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
}; \ No newline at end of file
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
index 207eb8591b..3224016bbe 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
@@ -1,15 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk
index b04378886c..a0b328e065 100644
--- a/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/keymaps/via/rules.mk
@@ -8,4 +8,3 @@ NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
-SLEEP_LED_ENABLE = no
diff --git a/keyboards/bpiphany/tiger_lily/rules.mk b/keyboards/bpiphany/tiger_lily/rules.mk
index cca8b33772..3709394a1c 100644
--- a/keyboards/bpiphany/tiger_lily/rules.mk
+++ b/keyboards/bpiphany/tiger_lily/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h
deleted file mode 100644
index c55f7f9f7d..0000000000
--- a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c
index a65346d8a7..59cc6b1492 100644
--- a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c
+++ b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c
@@ -16,11 +16,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+[0] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT )
};
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/config.h b/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/config.h
deleted file mode 100644
index c55f7f9f7d..0000000000
--- a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c
index 30dee23ad1..0b7dfb4050 100644
--- a/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c
+++ b/keyboards/bpiphany/unloved_bastard/keymaps/default_iso/keymap.c
@@ -16,11 +16,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_iso(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+[0] = LAYOUT_tkl_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT )
};
diff --git a/keyboards/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk
index 01b4a4a29e..51a50b76f1 100644
--- a/keyboards/bpiphany/unloved_bastard/rules.mk
+++ b/keyboards/bpiphany/unloved_bastard/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
CUSTOM_MATRIX = yes
SRC += matrix.c
diff --git a/keyboards/bt66tech/bt66tech60/rules.mk b/keyboards/bt66tech/bt66tech60/rules.mk
index 9bc3855425..a083b1b83a 100644
--- a/keyboards/bt66tech/bt66tech60/rules.mk
+++ b/keyboards/bt66tech/bt66tech60/rules.mk
@@ -12,13 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
DEFAULT_FOLDER = bt66tech/bt66tech60
diff --git a/keyboards/bthlabs/geekpad/keymaps/default/config.h b/keyboards/bthlabs/geekpad/keymaps/default/config.h
deleted file mode 100644
index 1cba162c79..0000000000
--- a/keyboards/bthlabs/geekpad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019-present Tomek Wójcik <contact@bthlabs.pl>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/bthlabs/geekpad/rules.mk b/keyboards/bthlabs/geekpad/rules.mk
index 823434176a..5d3b05abd2 100644
--- a/keyboards/bthlabs/geekpad/rules.mk
+++ b/keyboards/bthlabs/geekpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/buildakb/potato65/rules.mk b/keyboards/buildakb/potato65/rules.mk
index e026d1645f..0226978a47 100644
--- a/keyboards/buildakb/potato65/rules.mk
+++ b/keyboards/buildakb/potato65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/buildakb/potato65hs/rules.mk b/keyboards/buildakb/potato65hs/rules.mk
index 7d7f1ff424..e83812d78d 100644
--- a/keyboards/buildakb/potato65hs/rules.mk
+++ b/keyboards/buildakb/potato65hs/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/buildakb/potato65s/rules.mk b/keyboards/buildakb/potato65s/rules.mk
index bb941aca5c..10f8503ecf 100644
--- a/keyboards/buildakb/potato65s/rules.mk
+++ b/keyboards/buildakb/potato65s/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/business_card/alpha/rules.mk b/keyboards/business_card/alpha/rules.mk
index cc3195d5c6..e85829c110 100644
--- a/keyboards/business_card/alpha/rules.mk
+++ b/keyboards/business_card/alpha/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/business_card/beta/rules.mk b/keyboards/business_card/beta/rules.mk
index cc3195d5c6..e85829c110 100644
--- a/keyboards/business_card/beta/rules.mk
+++ b/keyboards/business_card/beta/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/business_card/rules.mk b/keyboards/business_card/rules.mk
index 5cc27c2302..cda401220e 100644
--- a/keyboards/business_card/rules.mk
+++ b/keyboards/business_card/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/butterstick/rules.mk b/keyboards/butterstick/rules.mk
index c0d463c2df..4229aa7eec 100644
--- a/keyboards/butterstick/rules.mk
+++ b/keyboards/butterstick/rules.mk
@@ -4,13 +4,16 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
STENO_ENABLE = yes # Needed for chording
OPT_DEFS += -DONLYQWERTY -DDEBUG_MATRIX
SRC += sten.c
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/buzzard/buzzard.c b/keyboards/buzzard/buzzard.c
new file mode 100644
index 0000000000..00ad12a23e
--- /dev/null
+++ b/keyboards/buzzard/buzzard.c
@@ -0,0 +1,3 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "buzzard.h"
diff --git a/keyboards/buzzard/buzzard.h b/keyboards/buzzard/buzzard.h
new file mode 100644
index 0000000000..f094e4af39
--- /dev/null
+++ b/keyboards/buzzard/buzzard.h
@@ -0,0 +1,9 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_buzzard_rev1)
+# include "rev1.h"
+#endif \ No newline at end of file
diff --git a/keyboards/buzzard/config.h b/keyboards/buzzard/config.h
new file mode 100644
index 0000000000..7dbbedfaf0
--- /dev/null
+++ b/keyboards/buzzard/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h" \ No newline at end of file
diff --git a/keyboards/buzzard/info.json b/keyboards/buzzard/info.json
new file mode 100644
index 0000000000..a958ffdc94
--- /dev/null
+++ b/keyboards/buzzard/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Buzzard",
+ "url": "https://github.com/crehmann/buzzard",
+ "maintainer": "crehmann",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/buzzard/keymaps/crehmann/config.h b/keyboards/buzzard/keymaps/crehmann/config.h
new file mode 100644
index 0000000000..d5d9a9bb83
--- /dev/null
+++ b/keyboards/buzzard/keymaps/crehmann/config.h
@@ -0,0 +1,38 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Configure the global tapping term (default: 200ms)
+#define TAPPING_TERM 200
+
+// Prevent normal rollover on alphas from accidentally triggering mods.
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
+#define TAPPING_FORCE_HOLD
+
+// Apply the modifier on keys that are tapped during a short hold of a modtap
+#define PERMISSIVE_HOLD
+
+// Using the right side as master
+#define MASTER_RIGHT
+
+#ifdef HAPTIC_ENABLE
+// this configuration has no effect because the haptic exclusion is implemented with
+// __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record)
+// in the default keymap and reacts only to mouse clicks.
+//#define NO_HAPTIC_MOD
+#define NO_HAPTIC_FN
+#define NO_HAPTIC_ALPHA
+#define NO_HAPTIC_PUNCTUATION
+#define NO_HAPTIC_NAV
+#define NO_HAPTIC_NUMERIC
+#define DRV_GREETING alert_750ms
+#define DRV_MODE_DEFAULT sharp_tick1
+#endif
+
+#ifdef PS2_MOUSE_ENABLE
+#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_RIGHT)
+#define PS2_MOUSE_SCROLL_BTN_SEND 500
+#endif \ No newline at end of file
diff --git a/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c
new file mode 100644
index 0000000000..37fa2902c5
--- /dev/null
+++ b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c
@@ -0,0 +1,42 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "haptic_utils.h"
+
+#ifdef HAPTIC_ENABLE
+#include "drivers/haptic/DRV2605L.h"
+#endif
+
+#ifdef HAPTIC_ENABLE
+bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_BTN1 ... KC_BTN5:
+ return true;
+ break;
+ }
+
+ return false;
+}
+#endif
+
+void process_layer_pulse(layer_state_t state) {
+#ifdef HAPTIC_ENABLE
+ switch (get_highest_layer(state)) {
+ case 1:
+ DRV_pulse(soft_bump);
+ break;
+ case 2:
+ DRV_pulse(sh_dblsharp_tick);
+ break;
+ case 3:
+ DRV_pulse(lg_dblclick_str);
+ break;
+ case 4:
+ DRV_pulse(soft_bump);
+ break;
+ case 5:
+ DRV_pulse(pulsing_sharp);
+ break;
+ }
+#endif
+}
diff --git a/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h
new file mode 100644
index 0000000000..ccfbb7e14b
--- /dev/null
+++ b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h
@@ -0,0 +1,10 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record);
+
+void process_layer_pulse(layer_state_t state); \ No newline at end of file
diff --git a/keyboards/buzzard/keymaps/crehmann/keymap.c b/keyboards/buzzard/keymaps/crehmann/keymap.c
new file mode 100644
index 0000000000..842494c60a
--- /dev/null
+++ b/keyboards/buzzard/keymaps/crehmann/keymap.c
@@ -0,0 +1,256 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_german_ch.h"
+#include "features/haptic_utils.h"
+
+#ifdef PS2_MOUSE_ENABLE
+ #include "ps2_mouse.h"
+#endif
+
+enum layers {
+ _BASE = 0,
+ _NAVR,
+ _SYMB,
+ _NUMR,
+ _FUNL,
+ _MOAJ
+};
+
+
+// Aliases for readability
+#define BASE DF(_BASE)
+#define NAVR MO(_NAVR)
+#define SYMB MO(_SYMB)
+#define NUMR MO(_NUMR)
+#define FUNL MO(_FUNL)
+#define MOAD MO(_MOAJ)
+
+// Left-hand home row mods
+#define RALT_X RALT_T(KC_X)
+#define GUI_A LGUI_T(KC_A)
+#define ALT_S LALT_T(KC_S)
+#define CTL_D LCTL_T(KC_D)
+#define SFT_F LSFT_T(KC_F)
+
+// Right-hand home row mods
+#define SFT_J RSFT_T(KC_J)
+#define CTL_K RCTL_T(KC_K)
+#define ALT_L LALT_T(KC_L)
+#define GUI_SCL RGUI_T(KC_SCLN)
+#define RALT_DT RALT_T(KC_DOT)
+
+// Left-hand outer column
+#define CTL_ESC MT(MOD_LCTL, KC_ESC)
+
+// Thumbcluster
+#define UC_TL1 CTL_ESC
+#define UC_TL2 LT(NAVR, KC_SPC)
+#define UC_TL3 LT(NUMR, KC_TAB)
+
+#define UC_TR3 LT(FUNL, KC_BSPC)
+#define UC_TR2 LT(SYMB, KC_ENT)
+#define UC_TR1 KC_DEL
+
+// Shortcuts
+#define UC_COPY LCTL(KC_C)
+#define UC_PSTE LCTL(KC_V)
+#define UC_CUT LCTL(KC_X)
+#define UC_MUTE SGUI(KC_M)
+#define UC_OSFT OSM(MOD_LSFT)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// /*
+// * Base Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | Q | W | E | R | T | | Z | U | I | O | P |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp |
+// * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | LALT | GUI | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | ESC | Y | X | C | F | B | | N | M | , < | . > | / ? | Mute |
+// * | CTL | | RALT | | | | | | | | RALT | | Mic |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | ESC | Space| TAB | | Bksp| Enter| Del |
+// * | CTL | NAVR | NUMR | | FUNL| SYML | |
+// * `--------------------' `--------------------'
+// */
+ [_BASE] = LAYOUT(
+ KC_Q , KC_W , KC_E , KC_R , KC_T , CH_Z , KC_U , KC_I , KC_O , KC_P ,
+ UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_BSPC,
+ CTL_ESC, CH_Y , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, UC_MUTE,
+ UC_TL1 , UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1
+ ),
+
+// /*
+// * Symbol Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | ` | @ | { | } | $ | | ¨ | ü | / | \ | ^ |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | ä | & | ( | ) | | | | ' | " | ? | ! | + | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | % | # | [ | ] | ~ | | € | = | * | < | > | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | TAB | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_SYMB] = LAYOUT(
+ CH_GRV , CH_AT , CH_LCBR, CH_RCBR, CH_DLR , CH_DIAE, CH_UDIA, CH_SLSH, CH_BSLS, KC_CIRC,
+ _______, CH_ADIA, CH_AMPR, CH_LPRN, CH_RPRN, CH_PIPE, CH_QUOT, CH_DQUO, CH_QUES, CH_EXLM, CH_PLUS, _______,
+ _______, CH_PERC, CH_HASH, CH_LBRC, CH_RBRC, CH_TILD, CH_EURO, CH_EQL , CH_ASTR, CH_LABK, CH_RABK, _______,
+ _______, _______, KC_TAB, _______, _______ , _______
+ ),
+
+// /*
+// * Navigation Layer (Right)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | |Insert| Cut | PgUp | PgDn | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | Copy | ← | ↑ | ↓ | → | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | Paste| Home | WH_U | WH_D | End | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | Bksp | | Del |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_NAVR] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______,
+ _______, _______, _______, KC_BSPC, _______, _______
+ ),
+// --------------------------------------------------------------------------------------------------------------------------------------------------------
+
+// /*
+// * Number Layer (Right)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | / | 7 | 8 | 9 | - |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | * | 4 | 5 | 6 | + | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | 0 | 1 | 2 | 3 | . | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | Bksp | Enter| |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_NUMR] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_MINS,
+ _______, _______, _______, _______, _______, _______, KC_ASTR, KC_4 , KC_5 , KC_6 , KC_PLUS, _______,
+ _______, _______, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , KC_DOT , _______,
+ _______, _______, _______, KC_BSPC, KC_ENT , _______
+ ),
+
+// /*
+// * Function Layer (Left)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | F12 | F7 | F8 | F9 | Pause| | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | F11 | F4 | F5 | F6 | PrScr| | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | F10 | F1 | F2 | F3 | CapsL| | | | | | | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | Space| TAB | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_FUNL] = LAYOUT(
+ KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_PAUS, _______, _______, _______, _______, _______,
+ _______, KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_PSCR, _______, _______, _______, _______, _______, _______,
+ _______, KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_CAPS, _______, _______, _______, _______, _______, _______,
+ _______, KC_SPC , KC_TAB , _______, _______, _______
+ ),
+
+// /*
+// * Mouse & Adjustment Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | BTN3 | BTN2 | BTN1 | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | Cut | Copy | Paste| | | Play |M Prev| VolDn| VolUp|M Next| |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_MOAJ] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, UC_CUT , UC_COPY, UC_PSTE, _______, KC_MPLY, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+// -------------------------------------------------------- TEMPLATE -------------------------------------------------------------------------------------
+// /*
+// * Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+// [_LAYERINDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______
+// ),
+// --------------------------------------------------------------------------------------------------------------------------------------------------------
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ process_layer_pulse(state);
+ return update_tri_layer_state(state, _NAVR, _SYMB, _MOAJ);
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case GUI_A:
+ return TAPPING_TERM + 150;
+ case ALT_S:
+ return TAPPING_TERM + 50;
+ case ALT_L:
+ return TAPPING_TERM + 50;
+ case GUI_SCL:
+ return TAPPING_TERM + 150;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/buzzard/keymaps/crehmann/rules.mk b/keyboards/buzzard/keymaps/crehmann/rules.mk
new file mode 100644
index 0000000000..484e7d84a6
--- /dev/null
+++ b/keyboards/buzzard/keymaps/crehmann/rules.mk
@@ -0,0 +1,9 @@
+SRC += features/haptic_utils.c
+
+OLED_ENABLE = yes
+
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+
+PS2_MOUSE_ENABLE = yes
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/buzzard/keymaps/default/config.h b/keyboards/buzzard/keymaps/default/config.h
new file mode 100644
index 0000000000..76294cf78a
--- /dev/null
+++ b/keyboards/buzzard/keymaps/default/config.h
@@ -0,0 +1,39 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Configure the global tapping term (default: 200ms)
+#define TAPPING_TERM 200
+
+// Prevent normal rollover on alphas from accidentally triggering mods.
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
+#define TAPPING_FORCE_HOLD
+
+// Apply the modifier on keys that are tapped during a short hold of a modtap
+#define PERMISSIVE_HOLD
+
+// Using the right side as master
+#define MASTER_RIGHT
+
+#ifdef HAPTIC_ENABLE
+// this configuration has no effect because the haptic exclusion is implemented with
+// __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record)
+// in the default keymap and reacts only to mouse clicks.
+//#define NO_HAPTIC_MOD
+#define NO_HAPTIC_FN
+#define NO_HAPTIC_ALPHA
+#define NO_HAPTIC_PUNCTUATION
+#define NO_HAPTIC_NAV
+#define NO_HAPTIC_NUMERIC
+#define DRV_GREETING alert_750ms
+#define DRV_MODE_DEFAULT sharp_tick1
+#endif
+
+
+#ifdef PS2_MOUSE_ENABLE
+#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_RIGHT) // using the right mouse button for scrolling (other buttons can be configured)
+#define PS2_MOUSE_SCROLL_BTN_SEND 500
+#endif \ No newline at end of file
diff --git a/keyboards/buzzard/keymaps/default/keymap.c b/keyboards/buzzard/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7ca3ddc7de
--- /dev/null
+++ b/keyboards/buzzard/keymaps/default/keymap.c
@@ -0,0 +1,274 @@
+/* Copyright 2021 Christoph Rehmann (crehmann)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE = 0,
+ _NAVR,
+ _SYMB,
+ _NUMR,
+ _FUNL,
+ _ADJL
+};
+
+
+// Aliases for readability
+#define BASE DF(_BASE)
+#define NAVR MO(_NAVR)
+#define SYMB MO(_SYMB)
+#define NUMR MO(_NUMR)
+#define FUNL MO(_FUNL)
+#define ADJL MO(_ADJL)
+
+// Left-hand home row mods
+#define RALT_X RALT_T(KC_X)
+#define GUI_A LGUI_T(KC_A)
+#define ALT_S LALT_T(KC_S)
+#define CTL_D LCTL_T(KC_D)
+#define SFT_F LSFT_T(KC_F)
+
+// Right-hand home row mods
+#define SFT_J RSFT_T(KC_J)
+#define CTL_K RCTL_T(KC_K)
+#define ALT_L LALT_T(KC_L)
+#define GUI_SCL RGUI_T(KC_SCLN)
+#define RALT_DT RALT_T(KC_DOT)
+
+// Left-hand outer column
+#define CTL_ESC MT(MOD_LCTL, KC_ESC)
+#define SFT_TAB MT(MOD_LSFT, KC_TAB)
+
+// Thumbcluster
+#define UC_TL1 KC_BTN1
+#define UC_TL2 LT(NAVR, KC_SPC)
+#define UC_TL3 LT(NUMR, KC_TAB)
+
+#define UC_TR3 LT(FUNL, KC_BSPC)
+#define UC_TR2 LT(SYMB, KC_ENT)
+#define UC_TR1 KC_BTN2
+
+// Shortcuts
+#define UC_COPY LCTL(KC_C)
+#define UC_PSTE LCTL(KC_V)
+#define UC_CUT LCTL(KC_X)
+#define UC_OSFT OSM(MOD_LSFT)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// /*
+// * Base Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | Q | W | E | R | T | | Y | U | I | O | P |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp |
+// * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | ALT | GUI | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | ESC | Z | X | C | F | B | | N | M | , < | . > | / ? | ADJL |
+// * | CTL | | RALT | | | | | | | | RALT | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | BTN1 | Space| TAB | | Bksp| Enter| BTN2 |
+// * | | NAVR | NUMR | | FUNL| SYML | |
+// * `--------------------' `--------------------'
+// */
+ [_BASE] = LAYOUT(
+ KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
+ UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_DEL,
+ CTL_ESC, KC_Z , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, ADJL ,
+ KC_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1
+ ),
+
+// /*
+// * Navigation Layer (Right)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | |Insert| Cut | PgUp | PgDn | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | Copy | ← | ↑ | ↓ | → | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | Paste| Home | WH_U | WH_D | End | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | Bksp | Enter| |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_NAVR] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______,
+ _______, _______, _______, KC_BSPC, KC_ENT , _______
+ ),
+// --------------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+// /*
+// * Symbol Layer (Right)
+//
+// * ,----------------------------------. ,----------------------------------.
+// * | ` | ~ | | | \ | | | | / | + | = | ? |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | : | ; | - | [ | { | | } | ] | _ | , | . | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | Space| TAB | | Bksp | Enter| |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// *
+ [_SYMB] = LAYOUT(
+ KC_GRV , KC_TILD, KC_PIPE, KC_BSLS, _______, _______, KC_SLSH, KC_PLUS, KC_EQL , KC_QUES,
+ _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT , _______,
+ _______, KC_SPC , KC_TAB , KC_BSPC, KC_ENT , _______
+ ),
+
+// /*
+// * Number Layer (Right)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | / | 7 | 8 | 9 | - |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | * | 4 | 5 | 6 | + | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | 0 | 1 | 2 | 3 | . | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | Bksp | Enter| |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_NUMR] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_MINS,
+ _______, _______, _______, _______, _______, _______, KC_ASTR, KC_4 , KC_5 , KC_6 , KC_PLUS, _______,
+ _______, _______, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , KC_DOT , _______,
+ _______, _______, _______, KC_BSPC, KC_ENT , _______
+ ),
+
+// /*
+// * Function Layer (Left)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | F12 | F7 | F8 | F9 | Pause| | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | F11 | F4 | F5 | F6 | PrScr| | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | F10 | F1 | F2 | F3 | CapsL| | | | | | | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | Space| TAB | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_FUNL] = LAYOUT(
+ KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_PAUS, _______, _______, _______, _______, _______,
+ _______, KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_PSCR, _______, _______, _______, _______, _______, _______,
+ _______, KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_CAPS, _______, _______, _______, _______, _______, _______,
+ _______, KC_SPC , KC_TAB , _______, _______, _______
+ ),
+
+// /*
+// * Adjustment Layer (Left)
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | |M Prev| VolDn| VolDn|M Next| | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | Mute | Play | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | Space| TAB | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+ [_ADJL] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_MUTE, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_SPC , KC_TAB , _______, _______, _______
+ ),
+
+// -------------------------------------------------------- TEMPLATE -------------------------------------------------------------------------------------
+// /*
+// * Layer
+// *
+// * ,----------------------------------. ,----------------------------------.
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * ,------+------+------+------+------+------| |------+------+------+------+------+------.
+// * | | | | | | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * |------+------+------+------+------+------| |------+------+------+------+------+------|
+// * | | | | | | | | | | | | | |
+// * | | | | | | | | | | | | | |
+// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------'
+// * | | | | | | | |
+// * | | | | | | | |
+// * `--------------------' `--------------------'
+// */
+// [_LAYERINDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______
+// ),
+// --------------------------------------------------------------------------------------------------------------------------------------------------------
+};
+
+// uncommint this and modify the timings if the home row mods are not working for you
+/*
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case GUI_A:
+ return TAPPING_TERM + 150;
+ case ALT_S:
+ return TAPPING_TERM + 50;
+ case ALT_L:
+ return TAPPING_TERM + 50;
+ case GUI_SCL:
+ return TAPPING_TERM + 150;
+ default:
+ return TAPPING_TERM;
+ }
+}
+*/
+
+#ifdef HAPTIC_ENABLE
+
+bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_BTN1 ... KC_BTN5:
+ return true;
+ break;
+ }
+
+ return false;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/buzzard/keymaps/default/rules.mk b/keyboards/buzzard/keymaps/default/rules.mk
new file mode 100644
index 0000000000..e8124aebb9
--- /dev/null
+++ b/keyboards/buzzard/keymaps/default/rules.mk
@@ -0,0 +1,7 @@
+OLED_ENABLE = yes # uncomment if you are using an OLED display
+
+#HAPTIC_ENABLE = yes # uncomment only on the master side if you are using a Pimoroni haptic buzz
+#HAPTIC_DRIVER = DRV2605L # uncomment only on the master side if you are using a Pimoroni haptic buzz
+
+#PS2_MOUSE_ENABLE = yes # uncomment only on the master side if you are usin a TrackPoint
+MOUSEKEY_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/buzzard/readme.md b/keyboards/buzzard/readme.md
new file mode 100644
index 0000000000..d86c2feb31
--- /dev/null
+++ b/keyboards/buzzard/readme.md
@@ -0,0 +1,29 @@
+# Buzzard
+
+![Buzzard Keyboard](https://raw.githubusercontent.com/crehmann/Buzzard/main/Pictures/build_guide_final.jpg)
+
+Buzzard is a 40 keys ergonomic split keyboard. The layout is inspired by the [Architeuthis dux](https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux) with pinky, ring, index, and inner columns splayed at 15, 5, 0, -5, -5 degrees. However, it as two additional pinky keys and a modified thumb cluster.
+
+* Keyboard Maintainer: [crehmann](https://github.com/crehmann)
+* Hardware Supported: Pro Micro 5V/16MHz and compatible.
+* Hardware Availability: https://github.com/crehmann/Buzzard
+
+## Some Features:
+
+- Integrated TrackPoint reset circuit and two possible positions to mount a TrackPoint to the bottom of the PCB. Either between the two inner columns or between the index and middle finger columns
+- Mounting option for a linear actuator ([HapticBuzz from pimoroni](https://shop.pimoroni.com/products/drv2605l-linear-actuator-haptic-breakout))
+- I2C interface for an OLED display
+- Wireless Ready (however, without TrackPoint / linear actuator support):
+ - Battery switch / connector
+ - Option to use a battery friendly Sharp memory display instead of an OLED display
+- Choc-spaced
+
+## Building the Firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb buzzard -km default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+A build guide for the Buzzard keyboard can be found at [https://github.com/crehmann/Buzzard](https://github.com/crehmann/Buzzard) \ No newline at end of file
diff --git a/keyboards/buzzard/rev1/config.h b/keyboards/buzzard/rev1/config.h
new file mode 100644
index 0000000000..2a7ea22ec1
--- /dev/null
+++ b/keyboards/buzzard/rev1/config.h
@@ -0,0 +1,62 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xB077
+#define DEVICE_VER 0x0001
+#define MANUFACTURER crehmann
+#define PRODUCT Buzzard
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring
+#define MATRIX_ROW_PINS \
+ { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS \
+ { B1, B3, B2, B6, B5, B4}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#ifdef OLED_ENABLE
+#define OLED_DISPLAY_128X32
+#define SPLIT_OLED_ENABLE
+#endif
+
+#ifdef PS2_USE_INT
+#define PS2_CLOCK_PIN E6
+#define PS2_DATA_PIN D7
+
+#define PS2_INT_INIT() do { \
+ EICRB |= ((1<<ISC61) | \
+ (0<<ISC60)); \
+ } while (0)
+#define PS2_INT_ON() do { \
+ EIMSK |= (1<<INT6); \
+} while (0)
+#define PS2_INT_OFF() do { \
+ EIMSK &= ~(1<<INT6); \
+} while (0)
+#define PS2_INT_VECT INT6_vect
+#define PS2_MOUSE_ROTATE 270 /* Compensate for East-facing device orientation. */
+#endif
diff --git a/keyboards/buzzard/rev1/rev1.c b/keyboards/buzzard/rev1/rev1.c
new file mode 100644
index 0000000000..0124a92c32
--- /dev/null
+++ b/keyboards/buzzard/rev1/rev1.c
@@ -0,0 +1,128 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "rev1.h"
+
+#ifdef HAPTIC_ENABLE
+#include "drivers/haptic/DRV2605L.h"
+#endif
+
+#ifdef SWAP_HANDS_ENABLE
+// clang-format off
+__attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4},
+ {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5},
+ {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6},
+ {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7},
+ {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0},
+ {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1},
+ {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2},
+ {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}
+};
+// clang-format on
+#endif
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ if (is_keyboard_master()) {
+ static const char PROGMEM base_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xc6, 0xc6, 0xee, 0xfe, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x30, 0x30, 0x39, 0x3f, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf8, 0xff, 0x9f, 0x8f, 0xff, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x03, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xcf, 0x8f, 0x1c, 0x1c, 0x98, 0xf9, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const char PROGMEM nav_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x3e, 0xf8, 0xc0, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x01, 0x0f, 0x3e, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf8, 0xff, 0x9f, 0x8f, 0xff, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0f, 0x0f, 0x03, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xf0, 0xe0, 0xff, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const char PROGMEM sym_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfc, 0xfe, 0xc6, 0xc6, 0x8e, 0x9c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x38, 0x31, 0x31, 0x39, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x7f, 0xf8, 0xf0, 0x7e, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0xe0, 0x60, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x0f, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const char PROGMEM num_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x3e, 0xf8, 0xc0, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x01, 0x0f, 0x3e, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0c, 0x0c, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0xe0, 0x60, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x0f, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const char PROGMEM fun_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0c, 0x0c, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x1f, 0xfc, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ static const char PROGMEM adj_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfe, 0x7e, 0x3e, 0xfe, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3e, 0x3f, 0x0f, 0x06, 0x06, 0x07, 0x3f, 0x3e, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0e, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+ // Host Keyboard LED Status
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR(" NUM ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR(" CAP ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR(" SCR \n\n") : PSTR(" \n\n"), false);
+
+ // Host Keyboard Layer Status
+ switch (get_highest_layer(layer_state | default_layer_state)) {
+ case 0:
+ oled_write_raw_P(base_logo, sizeof(base_logo));
+ break;
+ case 1:
+ oled_write_raw_P(nav_logo, sizeof(nav_logo));
+ break;
+ case 2:
+ oled_write_raw_P(sym_logo, sizeof(sym_logo));
+ break;
+ case 3:
+ oled_write_raw_P(num_logo, sizeof(num_logo));
+ break;
+ case 4:
+ oled_write_raw_P(fun_logo, sizeof(fun_logo));
+ break;
+ case 5:
+ oled_write_raw_P(adj_logo, sizeof(adj_logo));
+ break;
+ default:
+ oled_write_P(PSTR("---\n"), false);
+ }
+
+ } else {
+ static const char PROGMEM buzzard_log[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x38, 0xf0, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x0f, 0x7f, 0xff, 0xff, 0xfc, 0xe3, 0x1f, 0xff, 0xff, 0xfe, 0xfc, 0x80, 0x3f, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xc7, 0x3f, 0x7f, 0x7f, 0x00, 0x7f, 0x7f, 0x0f, 0xd8, 0xdd, 0xed, 0xee, 0xe6, 0x66, 0x63, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x18, 0x88, 0x84, 0x04, 0x62, 0x02, 0x12, 0x11, 0xc1, 0x01, 0x21, 0x81, 0x81, 0x1a, 0x62, 0x02, 0x04, 0x04, 0xc8, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x10, 0x50, 0x40, 0x0c, 0x30, 0x82, 0x98, 0x41, 0x41, 0x04, 0x10, 0x83, 0xc8, 0x08, 0x20, 0x86, 0x18, 0x41, 0x45, 0x04, 0x30, 0x82, 0x88, 0x08, 0x01, 0x0e, 0xf0,
+ 0x00, 0x00, 0x0f, 0x30, 0xc0, 0x84, 0x14, 0x10, 0x43, 0x0c, 0x20, 0x22, 0x82, 0x18, 0x61, 0x04, 0x30, 0x30, 0xc3, 0x08, 0x20, 0x24, 0x84, 0x11, 0x41, 0x0c, 0x00, 0x02, 0x82, 0x60, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x88, 0xd0, 0xd0, 0xd0, 0x26, 0xa0, 0xa1, 0x21, 0xa0, 0xa0, 0x22, 0xe0, 0xd0, 0xd1, 0xc8, 0xc8, 0x84, 0x86, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0x3f, 0xc7, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xff, 0xfc, 0x06, 0x2f, 0x6d, 0xdd, 0x99, 0x19, 0x21, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0xff, 0xff, 0x7f, 0x0f, 0xf1, 0xfe, 0x7f, 0x3f, 0x1f, 0x0f, 0x00, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ oled_write_raw_P(buzzard_log, sizeof(buzzard_log));
+ }
+ return false;
+}
+#endif
+
+__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case 1:
+#ifdef HAPTIC_ENABLE
+ DRV_pulse(soft_bump);
+#endif
+ break;
+ case 2:
+#ifdef HAPTIC_ENABLE
+ DRV_pulse(sh_dblsharp_tick);
+#endif
+ break;
+ case 3:
+#ifdef HAPTIC_ENABLE
+ DRV_pulse(lg_dblclick_str);
+#endif
+ break;
+ case 4:
+#ifdef HAPTIC_ENABLE
+ DRV_pulse(soft_bump);
+#endif
+ break;
+ case 5:
+#ifdef HAPTIC_ENABLE
+ DRV_pulse(pulsing_sharp);
+#endif
+ break;
+ }
+ return state;
+} \ No newline at end of file
diff --git a/keyboards/buzzard/rev1/rev1.h b/keyboards/buzzard/rev1/rev1.h
new file mode 100644
index 0000000000..c73e9164f0
--- /dev/null
+++ b/keyboards/buzzard/rev1/rev1.h
@@ -0,0 +1,52 @@
+// Copyright 2021 Christoph Rehmann (crehmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "buzzard.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, L15, R16, R17, R18, R19, R20, R21, \
+ L22, L23, L24, L25, L26, L27, R28, R29, R30, R31, R32, R33, \
+ L34, L35, L36, R37, R38, R39 \
+) \
+{ \
+ { L04, L03, L02, L01, L00, KC_NO }, \
+ { L15, L14, L13, L12, L11, L10 }, \
+ { L27, L26, L25, L24, L23, L22 }, \
+ { L36, L35, L34, KC_NO, KC_NO, KC_NO }, \
+ { R05, R06, R07, R08, R09, KC_NO }, \
+ { R16, R17, R18, R19, R20, R21 }, \
+ { R28, R29, R30, R31, R32, R33 }, \
+ { R37, R38, R39, KC_NO, KC_NO, KC_NO }, \
+}
+
+#define LAYOUT_stack( \
+ L00, L01, L02, L03, L04, \
+ L10, L11, L12, L13, L14, L15, \
+ L22, L23, L24, L25, L26, L27, \
+ L34, L35, L36, \
+ \
+ R05, R06, R07, R08, R09, \
+ R16, R17, R18, R19, R20, R21, \
+ R28, R29, R30, R31, R32, R33, \
+ R37, R38, R39 \
+) \
+{ \
+ { L04, L03, L02, L01, L00, KC_NO }, \
+ { L15, L14, L13, L12, L11, L10 }, \
+ { L27, L26, L25, L24, L23, L22 }, \
+ { L36, L35, L34, KC_NO, KC_NO, KC_NO }, \
+ { R05, R06, R07, R08, R09, KC_NO }, \
+ { R16, R17, R18, R19, R20, R21 }, \
+ { R28, R29, R30, R31, R32, R33 }, \
+ { R37, R38, R39, KC_NO, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/buzzard/rev1/rules.mk b/keyboards/buzzard/rev1/rules.mk
new file mode 100644
index 0000000000..9a479c64e6
--- /dev/null
+++ b/keyboards/buzzard/rev1/rules.mk
@@ -0,0 +1,3 @@
+OLED_DRIVER = SSD1306
+
+PS2_USE_INT = yes
diff --git a/keyboards/buzzard/rules.mk b/keyboards/buzzard/rules.mk
new file mode 100644
index 0000000000..6450813074
--- /dev/null
+++ b/keyboards/buzzard/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+LTO_ENABLE = yes
+
+DEFAULT_FOLDER = buzzard/rev1
diff --git a/keyboards/c39/keymaps/default/config.h b/keyboards/c39/keymaps/default/config.h
deleted file mode 100755
index 271f48d001..0000000000
--- a/keyboards/c39/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/c39/rules.mk b/keyboards/c39/rules.mk
index 9a55ea62f5..4b65b7b9de 100755
--- a/keyboards/c39/rules.mk
+++ b/keyboards/c39/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # RGB Enable / Disable
diff --git a/keyboards/cablecardesigns/cypher/rev6/config.h b/keyboards/cablecardesigns/cypher/rev6/config.h
new file mode 100644
index 0000000000..51d86d721e
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/config.h
@@ -0,0 +1,56 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x41FF
+#define PRODUCT_ID 0xAA99
+#define DEVICE_VER 0x0002
+#define MANUFACTURER cablecardesigns
+#define PRODUCT cypher
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+#define MATRIX_ROW_PINS { B0, F1, F5, F6, F7, D1, F4, D4, C6, C7 }
+#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, B7, B3, B2, B1, F0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 5
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define BACKLIGHT_PIN D0
+
+#define RGB_DI_PIN D5
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 3
+ #define RGBLIGHT_HUE_STEP 12
+ #define RGBLIGHT_SAT_STEP 25
+ #define RGBLIGHT_VAL_STEP 12
+ #define RGBLIGHT_LIMIT_VAL 255
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+ #define RGBLIGHT_EFFECT_TWINKLE
+#endif
diff --git a/keyboards/cablecardesigns/cypher/rev6/info.json b/keyboards/cablecardesigns/cypher/rev6/info.json
new file mode 100644
index 0000000000..385ee8810a
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/info.json
@@ -0,0 +1,108 @@
+{
+ "keyboard_name": "Cypher Rev6",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"~","x":0,"y":0},
+ {"label":"!","x":1,"y":0},
+ {"label":"@","x":2,"y":0},
+ {"label":"#","x":3,"y":0},
+ {"label":"$","x":4,"y":0},
+ {"label":"%","x":5,"y":0},
+ {"label":"^","x":6,"y":0},
+ {"label":"&","x":7,"y":0},
+ {"label":"*","x":8,"y":0},
+ {"label":"(","x":9,"y":0},
+ {"label":")","x":10,"y":0},
+ {"label":"_","x":11,"y":0},
+ {"label":"+","x":12,"y":0},
+ {"label":"Backspace","x":13,"y":0},
+ {"label":"~","x":14,"y":0},
+
+ {"label":"Num Lock","x":15.5,"y":0},
+ {"label":"/","x":16.5,"y":0},
+ {"label":"*","x":17.5,"y":0},
+ {"label":"-","x":18.5,"y":0},
+
+ {"label":"Tab","x":0,"y":1,"w":1.5},
+ {"label":"Q","x":1.5,"y":1},
+ {"label":"W","x":2.5,"y":1},
+ {"label":"E","x":3.5,"y":1},
+ {"label":"R","x":4.5,"y":1},
+ {"label":"T","x":5.5,"y":1},
+ {"label":"Y","x":6.5,"y":1},
+ {"label":"U","x":7.5,"y":1},
+ {"label":"I","x":8.5,"y":1},
+ {"label":"O","x":9.5,"y":1},
+ {"label":"P","x":10.5,"y":1},
+ {"label":"{","x":11.5,"y":1},
+ {"label":"}","x":12.5,"y":1},
+ {"label":"|","x":13.5,"y":1,"w":1.5},
+
+ {"label":"7","x":15.5,"y":1},
+ {"label":"8","x":16.5,"y":1},
+ {"label":"9","x":17.5,"y":1},
+ {"label":"+","x":18.5,"y":1},
+
+ {"label":"Caps Lock","x":0,"y":2,"w":1.75},
+ {"label":"A","x":1.75,"y":2},
+ {"label":"S","x":2.75,"y":2},
+ {"label":"D","x":3.75,"y":2},
+ {"label":"F","x":4.75,"y":2},
+ {"label":"G","x":5.75,"y":2},
+ {"label":"H","x":6.75,"y":2},
+ {"label":"J","x":7.75,"y":2},
+ {"label":"K","x":8.75,"y":2},
+ {"label":"L","x":9.75,"y":2},
+ {"label":":","x":10.75,"y":2},
+ {"label":"\"","x":11.75,"y":2},
+ {"label":"NUHS","x":12.75,"y":2},
+ {"label":"Enter","x":13.75,"y":2,"w":1.25},
+
+ {"label":"4","x":15.5,"y":2},
+ {"label":"5","x":16.5,"y":2},
+ {"label":"6","x":17.5,"y":2},
+ {"label":"=","x":18.5,"y":2},
+
+ {"label":"Shift","x":0,"y":3,"w":1.25},
+ {"label":"Shift","x":1.25,"y":3},
+ {"label":"Z","x":2.25,"y":3},
+ {"label":"X","x":3.25,"y":3},
+ {"label":"C","x":4.25,"y":3},
+ {"label":"V","x":5.25,"y":3},
+ {"label":"B","x":6.25,"y":3},
+ {"label":"N","x":7.25,"y":3},
+ {"label":"M","x":8.25,"y":3},
+ {"label":"<","x":9.25,"y":3},
+ {"label":">","x":10.25,"y":3},
+ {"label":"?","x":11.25,"y":3},
+ {"label":"Shift","x":12.25,"y":3,"w":1.75},
+
+ {"label":"Up","x":14.25,"y":3.25},
+
+ {"label":"1","x":15.5,"y":3},
+ {"label":"2","x":16.5,"y":3},
+ {"label":"3","x":17.5,"y":3},
+ {"label":"Enter","x":18.5,"y":3},
+
+ {"label":"Ctrl","x":0,"y":4,"w":1.25},
+ {"label":"Win","x":1.25,"y":4},
+ {"label":"Alt","x":2.25,"y":4,"w":1.25},
+ {"label":"Space","x":3.5,"y":4,"w":1.5},
+ {"label":"Space","x":5,"y":4,"w":3},
+ {"label":"Space","x":8,"y":4,"w":1.5},
+ {"label":"Alt","x":9.5,"y":4,"w":1.25},
+ {"label":"Win","x":10.75,"y":4},
+ {"label":"Ctrl","x":11.75,"y":4,"w":1.25},
+
+ {"label":"Left","x":13.25,"y":4.25},
+ {"label":"Down","x":14.25,"y":4.25},
+ {"label":"Right","x":15.25,"y":4.25},
+
+ {"label":"0","x":16.5,"y":4},
+ {"label":".","x":17.5,"y":4},
+ {"label":"Backspace","x":18.5,"y":4}
+ ]
+ }
+ }
+ }
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default/config.h b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/config.h
new file mode 100644
index 0000000000..eda93545b4
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/config.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#define RGBLIGHT_DEFAULT_VAL 0 \ No newline at end of file
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default/keymap.c b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6a39580735
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/keymap.c
@@ -0,0 +1,60 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _MA,
+ _F1,
+};
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1, 1, HSV_GREEN}
+);
+
+const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, HSV_BLUE}
+);
+
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer,
+ my_numlock_layer,
+ my_layer1_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ rgblight_set_layer_state(1, led_state.num_lock);
+ return true;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(2, layer_state_cmp(state, _F1));
+ return state;
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT_all( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, RGB_TOG, RGB_MODE_RGBTEST, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NO, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_NO ,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC,KC_SPC,KC_SPC, KC_RALT,KC_RALT,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
+
+[_F1] = LAYOUT_all( /* Function Layer */
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL , _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, _______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______, _______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
+
+};
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default/readme.md b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/readme.md
new file mode 100644
index 0000000000..05c3700266
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for cypher \ No newline at end of file
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/config.h b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/config.h
new file mode 100644
index 0000000000..eda93545b4
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/config.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#define RGBLIGHT_DEFAULT_VAL 0 \ No newline at end of file
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/keymap.c b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..82c9e836c0
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/keymap.c
@@ -0,0 +1,60 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _MA,
+ _F1,
+};
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1, 1, HSV_GREEN}
+);
+
+const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, HSV_BLUE}
+);
+
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer,
+ my_numlock_layer,
+ my_layer1_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ rgblight_set_layer_state(1, led_state.num_lock);
+ return true;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(2, layer_state_cmp(state, _F1));
+ return state;
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MA] = LAYOUT_all( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_NO, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTRL, KC_LGUI,KC_LALT, KC_NO,KC_SPC,KC_NO, KC_RALT,KC_RGUI,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
+
+[_F1] = LAYOUT_all( /* Function Layer */
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG,BL_STEP,BL_ON,BL_OFF,BL_INC,BL_DEC,BL_BRTG,_______,_______,_______,_______, _______,_______, _______, _______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, _______, _______, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______,_______, _______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______),
+
+};
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/readme.md b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/readme.md
new file mode 100644
index 0000000000..81a4a677fd
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/default_iso/readme.md
@@ -0,0 +1 @@
+# The default iso keymap for cypher
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/via/config.h b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/config.h
new file mode 100644
index 0000000000..eda93545b4
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/config.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#define RGBLIGHT_DEFAULT_VAL 0 \ No newline at end of file
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/via/keymap.c b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/keymap.c
new file mode 100644
index 0000000000..371b876623
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/keymap.c
@@ -0,0 +1,71 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+/* VIA Layout > http://www.keyboard-layout-editor.com/#/gists/0e8d4957e77f3179aa09bd6e195f7afa */
+
+#include QMK_KEYBOARD_H
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1, 1, HSV_GREEN}
+);
+
+const rgblight_segment_t PROGMEM my_numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, HSV_BLUE}
+);
+
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer,
+ my_numlock_layer,
+ my_layer1_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ rgblight_set_layer_state(1, led_state.num_lock);
+ return true;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(2, layer_state_cmp(state, 1));
+ return state;
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT, KC_BSPC),
+
+[1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+};
diff --git a/keyboards/cablecardesigns/cypher/rev6/keymaps/via/rules.mk b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/cablecardesigns/cypher/rev6/readme.md b/keyboards/cablecardesigns/cypher/rev6/readme.md
new file mode 100644
index 0000000000..13016e86a1
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/readme.md
@@ -0,0 +1,25 @@
+# cypher rev6
+
+PCB for the cypher keyboard, this is rev6 of this PCB
+
+* Keyboard Maintainer: [westfoxtrot](https://github.com/westfoxtrot)
+* Hardware Supported: Cypher PCB revisions 6 (Rev # is printed on PCB)
+* Hardware Availability: with keyboard release + [Files released here](https://github.com/westfoxtrot/Cypher_PCB)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cablecardesigns/cypher/rev6:default
+
+Flashing example for this keyboard:
+
+ make cablecardesigns/cypher/rev6:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: There are 2 holes underneath the spacebar position that if shorted will enter bootloader
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/cablecardesigns/cypher/rev6/rev6.c b/keyboards/cablecardesigns/cypher/rev6/rev6.c
new file mode 100644
index 0000000000..56e615122a
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/rev6.c
@@ -0,0 +1,3 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "rev6.h" \ No newline at end of file
diff --git a/keyboards/cablecardesigns/cypher/rev6/rev6.h b/keyboards/cablecardesigns/cypher/rev6/rev6.h
new file mode 100644
index 0000000000..6a5db7f0f2
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/rev6.h
@@ -0,0 +1,27 @@
+// Copyright 2022 Cable Car Designs (@westfoxtrot)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define ___ KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K50, K51, K52, K53, K54, K55, K56, K57, K58,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K60, K61, K62, K63, K65, K66, K67, K68, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K70, K71, K72, K73, K75, K76, K77, K78, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K80, K81, K82, K83, K85, K86, K87, K88, \
+ K40, K41, K42, K44, K46, K47, K49, K90, K91, K92, K93, K95, K96, K97, K98 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39 }, \
+ { K40, K41, K42, ___, K44, ___, K46, K47, ___, K49 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \
+ { K60, K61, K62, K63, ___, K65, K66, K67, K68 }, \
+ { K70, K71, K72, K73, ___, K75, K76, K77, K78 }, \
+ { K80, K81, K82, K83, ___, K85, K86, K87, K88 }, \
+ { K90, K91, K92, K93, ___, K95, K96, K97, K98 } \
+}
diff --git a/keyboards/cablecardesigns/cypher/rev6/rules.mk b/keyboards/cablecardesigns/cypher/rev6/rules.mk
new file mode 100644
index 0000000000..374d3f8e0c
--- /dev/null
+++ b/keyboards/cablecardesigns/cypher/rev6/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json
index b1511c51cf..6e83b4b707 100644
--- a/keyboards/caffeinated/serpent65/info.json
+++ b/keyboards/caffeinated/serpent65/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "Serpent65",
- "keyboard_folder": "caffeinated/serpent65",
"url": "https",
"maintainer": "jrfhoutx",
"layouts": {
diff --git a/keyboards/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk
index 22f971288e..a0b213f847 100644
--- a/keyboards/caffeinated/serpent65/rules.mk
+++ b/keyboards/caffeinated/serpent65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/canary/canary60rgb/v1/rules.mk b/keyboards/canary/canary60rgb/v1/rules.mk
index c96834cc81..16e33f820f 100644
--- a/keyboards/canary/canary60rgb/v1/rules.mk
+++ b/keyboards/canary/canary60rgb/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/adelie/adelie.c b/keyboards/cannonkeys/adelie/adelie.c
new file mode 100644
index 0000000000..04764169ee
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/adelie.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Andrew Kannan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "adelie.h"
diff --git a/keyboards/cannonkeys/adelie/adelie.h b/keyboards/cannonkeys/adelie/adelie.h
new file mode 100644
index 0000000000..0573e7bd31
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/adelie.h
@@ -0,0 +1,42 @@
+/* Copyright 2020 Andrew Kannan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define KNO KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2b, k2c, k2d, k2e, \
+ k30, k31, k32, k33, k36, k38, k39, k3b, k3c, k3d, k3e \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, KNO, k1d, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, KNO, k2b, k2c, k2d, k2e }, \
+ { k30, k31, k32, k33, KNO, KNO, k36, KNO, k38, k39, KNO, k3b, k3c, k3d, k3e } \
+}
diff --git a/keyboards/cannonkeys/adelie/config.h b/keyboards/cannonkeys/adelie/config.h
new file mode 100644
index 0000000000..25ddcf0c91
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/config.h
@@ -0,0 +1,117 @@
+/*
+Copyright 2020 Andrew Kannan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xCA04
+#define PRODUCT_ID 0x0005
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Abec13
+#define PRODUCT Adelie
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F4, F1, B1, B0 }
+#define MATRIX_COL_PINS { F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B2 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F0
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 3
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+ #define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
+
+#define RGBLIGHT_LAYERS
diff --git a/keyboards/cannonkeys/adelie/info.json b/keyboards/cannonkeys/adelie/info.json
new file mode 100644
index 0000000000..5367fdbff4
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/info.json
@@ -0,0 +1,68 @@
+{
+ "keyboard_name": "Adelie",
+ "url": "",
+ "maintainer": "Abec13",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc/~", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"[{", "x":11, "y":0},
+ {"label":"]}", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Page Up", "x":14.5, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":";:", "x":10.25, "y":1},
+ {"label":"'\"", "x":11.25, "y":1},
+ {"label":"Enter", "x":12.25, "y":1, "w":1.75},
+ {"label":"Page Down", "x":14.5, "y":1},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",<", "x":8.75, "y":2},
+ {"label":".>", "x":9.75, "y":2},
+ {"label":"/?", "x":10.75, "y":2},
+ {"label":"Shift", "x":11.75, "y":2, "w":1.25},
+ {"label":"Up", "x":13.25, "y":2.25},
+ {"label":"TG(3)", "x":14.5, "y":2},
+
+ {"label":"Control", "x":0, "y":3, "w":1.25},
+ {"label":"Win", "x":1.25, "y":3},
+ {"label":"Alt", "x":2.25, "y":3, "w":1.25},
+ {"label":"MO(1)", "x":3.5, "y":3, "w":2.75},
+ {"label":"Space", "x":6.25, "y":3, "w":2.25},
+ {"label":"Alt", "x":8.5, "y":3, "w":1.25},
+ {"label":"Win", "x":9.75, "y":3},
+ {"label":"MO(2)", "x":10.75, "y":3, "w":1.25},
+ {"label":"Left", "x":12.25, "y":3.25},
+ {"label":"Down", "x":13.25, "y":3.25},
+ {"label":"Right", "x":14.25, "y":3.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/adelie/keymaps/default/keymap.c b/keyboards/cannonkeys/adelie/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2698da36e5
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/keymaps/default/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2020 Andrew Kannan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, TG(_FN3),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_RALT, KC_RGUI, MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, KC_HOME,
+ RGB_TOG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, KC_MINS, KC_PLUS, KC_ASTR, KC_TRNS, KC_EQL, KC_INS, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN2] = LAYOUT_all(
+ KC_POWER, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_DEL, KC_VOLU,
+ KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_WAKE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FN1), KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_RED}
+);
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_CYAN}
+);
+const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_PURPLE}
+);
+const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_layer0_layer,
+ my_layer1_layer,
+ my_layer2_layer,
+ my_layer3_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _BASE));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN1));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _FN3));
+ return state;
+}
diff --git a/keyboards/cannonkeys/adelie/keymaps/via/keymap.c b/keyboards/cannonkeys/adelie/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2698da36e5
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/keymaps/via/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2020 Andrew Kannan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, TG(_FN3),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_RALT, KC_RGUI, MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, KC_HOME,
+ RGB_TOG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, KC_MINS, KC_PLUS, KC_ASTR, KC_TRNS, KC_EQL, KC_INS, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN2] = LAYOUT_all(
+ KC_POWER, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_DEL, KC_VOLU,
+ KC_SLEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_WAKE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FN1), KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_RED}
+);
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_CYAN}
+);
+const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_PURPLE}
+);
+const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_layer0_layer,
+ my_layer1_layer,
+ my_layer2_layer,
+ my_layer3_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _BASE));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN1));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _FN3));
+ return state;
+}
diff --git a/keyboards/cannonkeys/adelie/keymaps/via/rules.mk b/keyboards/cannonkeys/adelie/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/adelie/readme.md b/keyboards/cannonkeys/adelie/readme.md
new file mode 100644
index 0000000000..2e959fb9d6
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/readme.md
@@ -0,0 +1,15 @@
+# Adelie
+
+![Adelie](https://imgur.com/sMLIIXoh.png)
+
+The Adelie 50% Keyboard by Abec13
+
+![layout](https://imgur.com/85Zn3Xvh.png)
+
+* Keyboard Maintainer: [Abec13](https://github.com/abec13)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/adelie:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cannonkeys/adelie/rules.mk b/keyboards/cannonkeys/adelie/rules.mk
new file mode 100644
index 0000000000..3a2f2feb74
--- /dev/null
+++ b/keyboards/cannonkeys/adelie/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/aella/rules.mk b/keyboards/cannonkeys/aella/rules.mk
index e3c94c282c..7b44b402d1 100644
--- a/keyboards/cannonkeys/aella/rules.mk
+++ b/keyboards/cannonkeys/aella/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk
index 1c8a0a4e14..e03a83f44c 100644
--- a/keyboards/cannonkeys/an_c/rules.mk
+++ b/keyboards/cannonkeys/an_c/rules.mk
@@ -8,18 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/atlas/keymaps/default/keymap.c b/keyboards/cannonkeys/atlas/keymaps/default/keymap.c
index a57e66e31c..8a33ec4458 100644
--- a/keyboards/cannonkeys/atlas/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/atlas/keymaps/default/keymap.c
@@ -42,12 +42,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_BASE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_BASE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
@@ -62,12 +62,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -83,12 +83,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, RGB_SAI, RGB_VAI, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, RGB_SAD, RGB_VAD, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, RGB_SAI, RGB_VAI, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, RGB_SAD, RGB_VAD, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
}
;
diff --git a/keyboards/cannonkeys/atlas/keymaps/via/keymap.c b/keyboards/cannonkeys/atlas/keymaps/via/keymap.c
index 43a3b01a2b..251e920e77 100644
--- a/keyboards/cannonkeys/atlas/keymaps/via/keymap.c
+++ b/keyboards/cannonkeys/atlas/keymaps/via/keymap.c
@@ -43,12 +43,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_BASE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_BASE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
@@ -63,12 +63,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -84,19 +84,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- RGB_TOG, RGB_MOD, BL_INC, BL_DEC, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ RGB_TOG, RGB_MOD, BL_INC, BL_DEC, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-[_EXTRA] = LAYOUT_ortho_5x12( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_EXTRA] = LAYOUT_ortho_5x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/cannonkeys/atlas/rules.mk b/keyboards/cannonkeys/atlas/rules.mk
index a2519aa035..b14bde0fb5 100644
--- a/keyboards/cannonkeys/atlas/rules.mk
+++ b/keyboards/cannonkeys/atlas/rules.mk
@@ -5,15 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/atlas_alps/rules.mk b/keyboards/cannonkeys/atlas_alps/rules.mk
index f9a0f9be2f..b2d2b4285f 100644
--- a/keyboards/cannonkeys/atlas_alps/rules.mk
+++ b/keyboards/cannonkeys/atlas_alps/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/balance/rules.mk b/keyboards/cannonkeys/balance/rules.mk
index 6f2ef2794e..e651d67c1e 100644
--- a/keyboards/cannonkeys/balance/rules.mk
+++ b/keyboards/cannonkeys/balance/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk
index a1d2c6675f..c2cb86cc7d 100644
--- a/keyboards/cannonkeys/chimera65/rules.mk
+++ b/keyboards/cannonkeys/chimera65/rules.mk
@@ -5,18 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
diff --git a/keyboards/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk
index 43e9d6c998..91a8974c0c 100644
--- a/keyboards/cannonkeys/db60/rules.mk
+++ b/keyboards/cannonkeys/db60/rules.mk
@@ -8,15 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/devastatingtkl/rules.mk b/keyboards/cannonkeys/devastatingtkl/rules.mk
index 8c80d472c0..440b77bd26 100644
--- a/keyboards/cannonkeys/devastatingtkl/rules.mk
+++ b/keyboards/cannonkeys/devastatingtkl/rules.mk
@@ -8,16 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/hoodrowg/config.h b/keyboards/cannonkeys/hoodrowg/config.h
new file mode 100644
index 0000000000..91d89ec81d
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/config.h
@@ -0,0 +1,79 @@
+/*
+Copyright 2015 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xCA04
+#define PRODUCT_ID 0x0006
+#define DEVICE_VER 0x0001
+#define MANUFACTURER CannonKeys
+#define PRODUCT HoodrowG
+
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+#define MATRIX_COL_PINS { B5, B4, D7, F5, F6, F7, F4, D2, D0 }
+#define MATRIX_ROW_PINS { E6, B7, B0, B1, F1, F0, C6, C7, D4, D6, D5, D3 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D1
+#define RGBLED_NUM 16
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+#define NO_DEBUG
+
+/* disable print */
+#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/cannonkeys/hoodrowg/hoodrowg.c b/keyboards/cannonkeys/hoodrowg/hoodrowg.c
new file mode 100644
index 0000000000..f3aff6a32b
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/hoodrowg.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 CannonKeys LLC
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "hoodrowg.h"
diff --git a/keyboards/cannonkeys/hoodrowg/hoodrowg.h b/keyboards/cannonkeys/hoodrowg/hoodrowg.h
new file mode 100644
index 0000000000..6337699bf5
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/hoodrowg.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 CannonKeys LLC
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K0100, K0101, K0001, K0102, K0002, K0103, K0003, K0104, K0004, K0105, K0005, K0106, K0006, K0107, K0007, K0108, \
+ K0300, K0200, K0301, K0201, K0302, K0202, K0303, K0203, K0304, K0204, K0305, K0205, K0306, K0206, K0307, K0207, K0308, \
+ K0500, K0400, K0501, K0401, K0502, K0402, K0503, K0403, K0504, K0404, K0505, K0405, K0506, K0406, K0507, K0407, K0508, \
+ K0700, K0600, K0701, K0601, K0702, K0602, K0703, K0603, K0704, K0604, K0705, K0605, K0706, K0606, \
+ K0900, K0800, K0901, K0801, K0902, K0802, K0903, K0803, K0904, K0804, K0905, K0805, K0806, K0807, \
+ K1100, K1000, K1101, K1103, K1105, K1106, K1006, K1107, K1007, K1108 \
+) { \
+ { KC_NO, K0001, K0002, K0003, K0004, K0005, K0006, K0007, KC_NO }, \
+ { K0100, K0101, K0102, K0103, K0104, K0105, K0106, K0107, K0108 }, \
+ { K0200, K0201, K0202, K0203, K0204, K0205, K0206, K0207, KC_NO }, \
+ { K0300, K0301, K0302, K0303, K0304, K0305, K0306, K0307, K0308 }, \
+ { K0400, K0401, K0402, K0403, K0404, K0405, K0406, K0407, KC_NO }, \
+ { K0500, K0501, K0502, K0503, K0504, K0505, K0506, K0507, K0508 }, \
+ { K0600, K0601, K0602, K0603, K0604, K0605, K0606, KC_NO, KC_NO }, \
+ { K0700, K0701, K0702, K0703, K0704, K0705, K0706, KC_NO, KC_NO }, \
+ { K0800, K0801, K0802, K0803, K0804, K0805, K0806, K0807, KC_NO }, \
+ { K0900, K0901, K0902, K0903, K0904, K0905, KC_NO, KC_NO, KC_NO }, \
+ { K1000, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1006, K1007, KC_NO }, \
+ { K1100, K1101, KC_NO, K1103, KC_NO, K1105, K1106, K1107, K1108 } \
+}
diff --git a/keyboards/cannonkeys/hoodrowg/info.json b/keyboards/cannonkeys/hoodrowg/info.json
new file mode 100644
index 0000000000..63c53ac5b3
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/info.json
@@ -0,0 +1,110 @@
+{
+ "keyboard_name": "HoodrowG",
+ "url": "https://cannonkeys.com",
+ "maintainer": "awkannan",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6.5, "y": 0},
+ {"x": 7.5, "y": 0},
+ {"x": 8.5, "y": 0},
+ {"x": 9.5, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 15.25, "y": 0},
+ {"x": 16.25, "y": 0},
+ {"x": 17.25, "y": 0},
+
+ {"x": 0, "y": 1.5},
+ {"x": 1, "y": 1.5},
+ {"x": 2, "y": 1.5},
+ {"x": 3, "y": 1.5},
+ {"x": 4, "y": 1.5},
+ {"x": 5, "y": 1.5},
+ {"x": 6, "y": 1.5},
+ {"x": 7, "y": 1.5},
+ {"x": 8, "y": 1.5},
+ {"x": 9, "y": 1.5},
+ {"x": 10, "y": 1.5},
+ {"x": 11, "y": 1.5},
+ {"x": 12, "y": 1.5},
+ {"x": 13, "y": 1.5, "w": 2},
+
+ {"x": 15.25, "y": 1.5},
+ {"x": 16.25, "y": 1.5},
+ {"x": 17.25, "y": 1.5},
+
+ {"x": 0, "y": 2.5, "w": 1.5},
+ {"x": 1.5, "y": 2.5},
+ {"x": 2.5, "y": 2.5},
+ {"x": 3.5, "y": 2.5},
+ {"x": 4.5, "y": 2.5},
+ {"x": 5.5, "y": 2.5},
+ {"x": 6.5, "y": 2.5},
+ {"x": 7.5, "y": 2.5},
+ {"x": 8.5, "y": 2.5},
+ {"x": 9.5, "y": 2.5},
+ {"x": 10.5, "y": 2.5},
+ {"x": 11.5, "y": 2.5},
+ {"x": 12.5, "y": 2.5},
+ {"x": 13.5, "y": 2.5, "w": 1.5},
+
+ {"x": 15.25, "y": 2.5},
+ {"x": 16.25, "y": 2.5},
+ {"x": 17.25, "y": 2.5},
+
+ {"x": 0, "y": 3.5, "w": 1.75},
+ {"x": 1.75, "y": 3.5},
+ {"x": 2.75, "y": 3.5},
+ {"x": 3.75, "y": 3.5},
+ {"x": 4.75, "y": 3.5},
+ {"x": 5.75, "y": 3.5},
+ {"x": 6.75, "y": 3.5},
+ {"x": 7.75, "y": 3.5},
+ {"x": 8.75, "y": 3.5},
+ {"x": 9.75, "y": 3.5},
+ {"x": 10.75, "y": 3.5},
+ {"x": 11.75, "y": 3.5},
+ {"x": 12.75, "y": 3.5},
+ {"x": 13.75, "y": 3.5, "w": 1.25},
+
+ {"x": 0, "y": 4.5, "w": 1.25},
+ {"x": 1.25, "y": 4.5},
+ {"x": 2.25, "y": 4.5},
+ {"x": 3.25, "y": 4.5},
+ {"x": 4.25, "y": 4.5},
+ {"x": 5.25, "y": 4.5},
+ {"x": 6.25, "y": 4.5},
+ {"x": 7.25, "y": 4.5},
+ {"x": 8.25, "y": 4.5},
+ {"x": 9.25, "y": 4.5},
+ {"x": 10.25, "y": 4.5},
+ {"x": 11.25, "y": 4.5},
+ {"x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"x": 16.25, "y": 4.5},
+
+ {"x": 0, "y": 5.5, "w": 1.5},
+ {"x": 1.5, "y": 5.5},
+ {"x": 2.5, "y": 5.5, "w": 1.5},
+ {"x": 4, "y": 5.5, "w": 7},
+ {"x": 11, "y": 5.5, "w": 1.5},
+ {"x": 12.5, "y": 5.5},
+ {"x": 13.5, "y": 5.5, "w": 1.5},
+
+ {"x": 15.25, "y": 5.5},
+ {"x": 16.25, "y": 5.5},
+ {"x": 17.25, "y": 5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/hoodrowg/keymaps/default/keymap.c b/keyboards/cannonkeys/hoodrowg/keymaps/default/keymap.c
new file mode 100644
index 0000000000..18a23cb420
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 CannonKeys LLC
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+enum layer_names {
+ _BASE,
+ _FN1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+};
diff --git a/keyboards/cannonkeys/hoodrowg/keymaps/via/keymap.c b/keyboards/cannonkeys/hoodrowg/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a5bc67e9af
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2021 CannonKeys LLC
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+ [_FN2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
+};
diff --git a/keyboards/cannonkeys/hoodrowg/keymaps/via/rules.mk b/keyboards/cannonkeys/hoodrowg/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/hoodrowg/readme.md b/keyboards/cannonkeys/hoodrowg/readme.md
new file mode 100644
index 0000000000..e5baab539a
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/readme.md
@@ -0,0 +1,22 @@
+# CannonKeys HoodrowG
+
+"HoodrowG" Replacement PCB for Matrix 1.2OG
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/hoodrowg:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/cannonkeys/hoodrowg/rules.mk b/keyboards/cannonkeys/hoodrowg/rules.mk
new file mode 100644
index 0000000000..e25598e1d7
--- /dev/null
+++ b/keyboards/cannonkeys/hoodrowg/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/instant60/keymaps/default/keymap.c b/keyboards/cannonkeys/instant60/keymaps/default/keymap.c
index f9c7995ae0..30337c3929 100644
--- a/keyboards/cannonkeys/instant60/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/instant60/keymaps/default/keymap.c
@@ -30,18 +30,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_60_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
[_FN1] = LAYOUT_60_ansi(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, RESET
)
};
diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk
index 8c2b499dfd..e03a83f44c 100644
--- a/keyboards/cannonkeys/instant60/rules.mk
+++ b/keyboards/cannonkeys/instant60/rules.mk
@@ -8,17 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/instant65/rules.mk b/keyboards/cannonkeys/instant65/rules.mk
index 1f61cca45f..0d99007c16 100644
--- a/keyboards/cannonkeys/instant65/rules.mk
+++ b/keyboards/cannonkeys/instant65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk
index e159c6ae82..c2cb86cc7d 100644
--- a/keyboards/cannonkeys/iron165/rules.mk
+++ b/keyboards/cannonkeys/iron165/rules.mk
@@ -5,16 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
diff --git a/keyboards/cannonkeys/obliterated75/rules.mk b/keyboards/cannonkeys/obliterated75/rules.mk
index 0f8ad7cadc..0d99007c16 100644
--- a/keyboards/cannonkeys/obliterated75/rules.mk
+++ b/keyboards/cannonkeys/obliterated75/rules.mk
@@ -15,8 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/onyx/rules.mk b/keyboards/cannonkeys/onyx/rules.mk
index cfa8daced4..36c7523cb9 100644
--- a/keyboards/cannonkeys/onyx/rules.mk
+++ b/keyboards/cannonkeys/onyx/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/ortho48/rules.mk b/keyboards/cannonkeys/ortho48/rules.mk
index de9e49b3ae..46b5bf7c4d 100644
--- a/keyboards/cannonkeys/ortho48/rules.mk
+++ b/keyboards/cannonkeys/ortho48/rules.mk
@@ -4,15 +4,18 @@ MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
LAYOUTS = ortho_4x12
diff --git a/keyboards/cannonkeys/ortho60/keymaps/default/keymap.c b/keyboards/cannonkeys/ortho60/keymaps/default/keymap.c
index 8ae3da3d72..e2b5d94a0d 100644
--- a/keyboards/cannonkeys/ortho60/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/ortho60/keymaps/default/keymap.c
@@ -46,12 +46,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_BASE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- BL_TOGG, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_BASE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ BL_TOGG, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------------------------------------------------.
@@ -66,12 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- RGB_TOG, RGB_MOD, BL_INC, BL_DEC, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ RGB_TOG, RGB_MOD, BL_INC, BL_DEC, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};
diff --git a/keyboards/cannonkeys/ortho60/rules.mk b/keyboards/cannonkeys/ortho60/rules.mk
index bed0311bce..ee4390309c 100644
--- a/keyboards/cannonkeys/ortho60/rules.mk
+++ b/keyboards/cannonkeys/ortho60/rules.mk
@@ -4,15 +4,18 @@ MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
LAYOUTS = ortho_5x12
diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk
index 03f77ff423..60b1a69199 100644
--- a/keyboards/cannonkeys/ortho75/rules.mk
+++ b/keyboards/cannonkeys/ortho75/rules.mk
@@ -4,15 +4,18 @@ MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
ENCODER_ENABLE = yes
diff --git a/keyboards/cannonkeys/practice60/keymaps/default/keymap.c b/keyboards/cannonkeys/practice60/keymaps/default/keymap.c
index b917cf3eeb..f0f6206675 100644
--- a/keyboards/cannonkeys/practice60/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/practice60/keymaps/default/keymap.c
@@ -30,18 +30,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_60_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
[_FN1] = LAYOUT_60_ansi(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/cannonkeys/practice60/rules.mk b/keyboards/cannonkeys/practice60/rules.mk
index 469dd57a98..423c4d15b1 100644
--- a/keyboards/cannonkeys/practice60/rules.mk
+++ b/keyboards/cannonkeys/practice60/rules.mk
@@ -4,15 +4,18 @@ MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
LAYOUTS = 60_ansi
diff --git a/keyboards/cannonkeys/practice65/keymaps/default/keymap.c b/keyboards/cannonkeys/practice65/keymaps/default/keymap.c
index 9c0641fe3f..e6d5e5802c 100644
--- a/keyboards/cannonkeys/practice65/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/practice65/keymaps/default/keymap.c
@@ -30,18 +30,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_default(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN1] = LAYOUT_default(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______,\
- RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,\
- BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, RESET
)
};
diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk
index c6bcdcb3c0..a644ef6371 100644
--- a/keyboards/cannonkeys/practice65/rules.mk
+++ b/keyboards/cannonkeys/practice65/rules.mk
@@ -4,15 +4,18 @@ MCU = STM32F103
# Bootloader selection
BOOTLOADER = stm32duino
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/cannonkeys/rekt1800/rules.mk b/keyboards/cannonkeys/rekt1800/rules.mk
index 928e8d5171..b983f36c85 100644
--- a/keyboards/cannonkeys/rekt1800/rules.mk
+++ b/keyboards/cannonkeys/rekt1800/rules.mk
@@ -8,16 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
diff --git a/keyboards/cannonkeys/sagittarius/rules.mk b/keyboards/cannonkeys/sagittarius/rules.mk
index 2aed2c9a1a..0d99007c16 100644
--- a/keyboards/cannonkeys/sagittarius/rules.mk
+++ b/keyboards/cannonkeys/sagittarius/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk
index b74a4b35cd..4cf5e4b157 100644
--- a/keyboards/cannonkeys/satisfaction75/rules.mk
+++ b/keyboards/cannonkeys/satisfaction75/rules.mk
@@ -8,21 +8,19 @@ BOOTLOADER = stm32-dfu
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
-# Build Options
-# comment out to disable the options.
-#
-
SRC += led.c \
satisfaction_encoder.c \
satisfaction_oled.c
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
ENCODER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk
index d5f41eccd0..4e43a2f56f 100644
--- a/keyboards/cannonkeys/savage65/rules.mk
+++ b/keyboards/cannonkeys/savage65/rules.mk
@@ -8,18 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk
index d068ea28a7..440b77bd26 100644
--- a/keyboards/cannonkeys/tmov2/rules.mk
+++ b/keyboards/cannonkeys/tmov2/rules.mk
@@ -8,18 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk
index 1f61cca45f..0d99007c16 100644
--- a/keyboards/cannonkeys/tsukuyomi/rules.mk
+++ b/keyboards/cannonkeys/tsukuyomi/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cannonkeys/vicious40/rules.mk b/keyboards/cannonkeys/vicious40/rules.mk
index 0b98c9aad8..c78e8a1e7b 100644
--- a/keyboards/cannonkeys/vicious40/rules.mk
+++ b/keyboards/cannonkeys/vicious40/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/capsunlocked/cu65/keymaps/via/keymap.c b/keyboards/capsunlocked/cu65/keymaps/via/keymap.c
index 1bd833294e..fb0031f2b0 100644
--- a/keyboards/capsunlocked/cu65/keymaps/via/keymap.c
+++ b/keyboards/capsunlocked/cu65/keymaps/via/keymap.c
@@ -19,8 +19,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP,
- KC_LSFT, KC_NUHS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
diff --git a/keyboards/capsunlocked/cu65/rules.mk b/keyboards/capsunlocked/cu65/rules.mk
index 7a5eae962d..6a7c885faf 100644
--- a/keyboards/capsunlocked/cu65/rules.mk
+++ b/keyboards/capsunlocked/cu65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/capsunlocked/cu7/rules.mk b/keyboards/capsunlocked/cu7/rules.mk
index 599aa6616e..6dfedb28b8 100644
--- a/keyboards/capsunlocked/cu7/rules.mk
+++ b/keyboards/capsunlocked/cu7/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk
index 8d14f05b82..ae185b030b 100644
--- a/keyboards/carbo65/rules.mk
+++ b/keyboards/carbo65/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cassette42/rules.mk b/keyboards/cassette42/rules.mk
index 7bcf8b7e06..756fb8ec92 100644
--- a/keyboards/cassette42/rules.mk
+++ b/keyboards/cassette42/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/catch22/keymaps/default/keymap.c b/keyboards/catch22/keymaps/default/keymap.c
index abe88df23c..9985ef5838 100644
--- a/keyboards/catch22/keymaps/default/keymap.c
+++ b/keyboards/catch22/keymaps/default/keymap.c
@@ -5,17 +5,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT( /* Base */
- KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, \
- KC_P7, KC_P8, KC_P9, KC_PEQL, \
- MO(_FN), KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_PMNS, \
- KC_SPC, KC_P0, KC_PDOT, KC_TAB \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC,
+ KC_P7, KC_P8, KC_P9, KC_PEQL,
+ MO(_FN), KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_PMNS,
+ KC_SPC, KC_P0, KC_PDOT, KC_TAB
),
[_FN] = LAYOUT(
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUI, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, \
- KC_2, _______, _______, _______, _______, \
- _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUI,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ KC_2, _______, _______, _______, _______,
+ _______, _______, _______, _______
),
};
diff --git a/keyboards/catch22/rules.mk b/keyboards/catch22/rules.mk
index e9f6cff127..b5f690c805 100644
--- a/keyboards/catch22/rules.mk
+++ b/keyboards/catch22/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/centromere/keymaps/default/keymap.c b/keyboards/centromere/keymaps/default/keymap.c
index 6c830ec2c5..d7b2208ae0 100644
--- a/keyboards/centromere/keymaps/default/keymap.c
+++ b/keyboards/centromere/keymaps/default/keymap.c
@@ -10,41 +10,41 @@ enum centromere_layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_STD] = LAYOUT_split_3x6_3( \
+ [_STD] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,\
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LGUI, MO(_FN), KC_SPC, KC_SPC,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_SPC,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
- [_NUM] = LAYOUT_split_3x6_3( \
+ [_NUM] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_ENT,\
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
- [_FN] = LAYOUT_split_3x6_3( \
+ [_FN] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,\
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,\
+ KC_LCTL, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,\
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
- KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
diff --git a/keyboards/centromere/keymaps/default_u2/keymap.c b/keyboards/centromere/keymaps/default_u2/keymap.c
index 3a3707a47b..9c0f93803e 100644
--- a/keyboards/centromere/keymaps/default_u2/keymap.c
+++ b/keyboards/centromere/keymaps/default_u2/keymap.c
@@ -9,41 +9,41 @@ enum centromere_layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_STD] = LAYOUT_split_3x6_3( \
+ [_STD] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,\
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LGUI, MO(_FN), KC_SPC, KC_SPC,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_SPC,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
- [_NUM] = LAYOUT_split_3x6_3( \
+ [_NUM] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,\
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_ENT,\
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, KC_ENT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
- [_FN] = LAYOUT_split_3x6_3( \
+ [_FN] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,\
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,\
+ KC_LCTL, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,\
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
- KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT \
+ KC_LGUI, MO(_FN), KC_SPC, KC_ENT,MO(_NUM), KC_RALT
//`--------------------------' `--------------------------'
),
diff --git a/keyboards/centromere/rules.mk b/keyboards/centromere/rules.mk
index ae7615a179..ed777e1b9e 100644
--- a/keyboards/centromere/rules.mk
+++ b/keyboards/centromere/rules.mk
@@ -8,7 +8,7 @@ F_CPU = 8000000
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -16,9 +16,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/cest73/tkm/rules.mk b/keyboards/cest73/tkm/rules.mk
index b1a5ec8ed1..b0a19fd405 100644
--- a/keyboards/cest73/tkm/rules.mk
+++ b/keyboards/cest73/tkm/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chalice/rules.mk b/keyboards/chalice/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/chalice/rules.mk
+++ b/keyboards/chalice/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/charue/charon/charon.c b/keyboards/charue/charon/charon.c
new file mode 100644
index 0000000000..2c4a518a31
--- /dev/null
+++ b/keyboards/charue/charon/charon.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Charue Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "charon.h"
diff --git a/keyboards/charue/charon/charon.h b/keyboards/charue/charon/charon.h
new file mode 100644
index 0000000000..e8738dda73
--- /dev/null
+++ b/keyboards/charue/charon/charon.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Charue Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, k3f, \
+ k40, k41, k42, k43, k45, k48, k4a, k4b, k4c, k4e, k4f \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, k3f }, \
+ { k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4e, k4f } \
+}
diff --git a/keyboards/charue/charon/config.h b/keyboards/charue/charon/config.h
new file mode 100644
index 0000000000..4ee679f707
--- /dev/null
+++ b/keyboards/charue/charon/config.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2021 Charue Design
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4344 // CD for CharueDesign
+#define PRODUCT_ID 0x4348 // CH for Charon
+#define DEVICE_VER 0x0001 // Revision prototype
+#define MANUFACTURER Charue Design
+#define PRODUCT Charon
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, C7 }
+#define MATRIX_COL_PINS { D3, D5, B4, D7, D6, D4, F7, F6, F5, F4, F1, F0, B5, B6, C6 }
+#define UNUSED_PINS { B7, D0, D1, D2 }
+#define DIODE_DIRECTION COL2ROW
+
+/* LED config */
+#define LED_CAPS_LOCK_PIN E6
+
+/* Set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/charue/charon/info.json b/keyboards/charue/charon/info.json
new file mode 100644
index 0000000000..9702af08cf
--- /dev/null
+++ b/keyboards/charue/charon/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "Charon",
+ "url": "https://charue-design.com/products/charon",
+ "maintainer": "ILWrites",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4},
+ {"x":5, "y":4, "w":2.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y":4},
+ {"x":11, "y":4, "w":1.5},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/charue/charon/keymaps/debug/keymap.c b/keyboards/charue/charon/keymaps/debug/keymap.c
new file mode 100644
index 0000000000..8e8c045b8b
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/debug/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2021 Charue Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMKBEST = SAFE_RANGE,
+ QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_MUTE,
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_FN] = LAYOUT_all(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_MUTE,
+ KC_LCTRL, KC_LGUI, KC_LALT, QMKURL, KC_SPC, KC_SPC, QMKBEST, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMKBEST:
+ if (record->event.pressed) {
+ // when keycode QMKBEST is pressed
+ SEND_STRING("QMK is the best thing ever!");
+ } else {
+ // when keycode QMKBEST is released
+ }
+ break;
+ case QMKURL:
+ if (record->event.pressed) {
+ // when keycode QMKURL is pressed
+ SEND_STRING("https://qmk.fm/\n");
+ } else {
+ // when keycode QMKURL is released
+ }
+ break;
+ };
+ #ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
+ #endif
+ return true;
+}
+
+void keyboard_post_init_user(void) {
+ debug_enable=true;
+ debug_matrix=true;
+}
diff --git a/keyboards/charue/charon/keymaps/debug/readme.md b/keyboards/charue/charon/keymaps/debug/readme.md
new file mode 100644
index 0000000000..b1b61bf15f
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/debug/readme.md
@@ -0,0 +1 @@
+# The default keymap for charon
diff --git a/keyboards/charue/charon/keymaps/default/keymap.c b/keyboards/charue/charon/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cb16f8eee3
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 Charue Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_MUTE,
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_FN] = LAYOUT_all(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_MUTE,
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
diff --git a/keyboards/charue/charon/keymaps/default/readme.md b/keyboards/charue/charon/keymaps/default/readme.md
new file mode 100644
index 0000000000..b1b61bf15f
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for charon
diff --git a/keyboards/charue/charon/keymaps/via/keymap.c b/keyboards/charue/charon/keymaps/via/keymap.c
new file mode 100644
index 0000000000..680333c6d7
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 Charue Design
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_MUTE,
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/charue/charon/keymaps/via/readme.md b/keyboards/charue/charon/keymaps/via/readme.md
new file mode 100644
index 0000000000..f45f3c54b9
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for charon
diff --git a/keyboards/charue/charon/keymaps/via/rules.mk b/keyboards/charue/charon/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/charue/charon/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/charue/charon/readme.md b/keyboards/charue/charon/readme.md
new file mode 100644
index 0000000000..1732d8a018
--- /dev/null
+++ b/keyboards/charue/charon/readme.md
@@ -0,0 +1,27 @@
+# Charon
+
+![Charon](https://i.imgur.com/fnQLZ2Th.jpg)
+
+A 65% with blocker Keyboard kit made and sold by Charue Design. [More info on charue-design.com](https://charue-design.com/)
+
+* Keyboard Maintainer: [ILWrites](https://github.com/PiKeeb)
+* Hardware Supported: [Charon PCB](https://charue-design.com/collections/charon/)
+* Hardware Availability: [Charue Design](https://charue-design.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make charue/charon:default
+
+Flashing example for this keyboard:
+
+ make charue/charon:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/charue/charon/rules.mk b/keyboards/charue/charon/rules.mk
new file mode 100644
index 0000000000..d6d12ae0db
--- /dev/null
+++ b/keyboards/charue/charon/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c b/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c
new file mode 100644
index 0000000000..4e0ca86c60
--- /dev/null
+++ b/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2022 Pierre Ott
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_DEL, KC_PSCR,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_NO, KC_PGDN,
+ KC_F7, KC_F8, KC_LSPO, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, LT(2,KC_HOME),
+ KC_F9, KC_F10, LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), LT(1,KC_SPC), KC_APP, KC_BSPC, KC_RALT, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(3), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LCTL, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LSFT, KC_LSFT, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [3] = LAYOUT_all(
+ KC_NO, KC_NO, KC_NO, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_INS, KC_HOME, KC_PGUP, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+}; \ No newline at end of file
diff --git a/keyboards/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk
index f68afca696..fd44980786 100644
--- a/keyboards/charue/sunsetter/rules.mk
+++ b/keyboards/charue/sunsetter/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chavdai40/rev1/rules.mk b/keyboards/chavdai40/rev1/rules.mk
index 8ac58cee44..f1995764b9 100644
--- a/keyboards/chavdai40/rev1/rules.mk
+++ b/keyboards/chavdai40/rev1/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chavdai40/rev2/rules.mk b/keyboards/chavdai40/rev2/rules.mk
index 8ac58cee44..f1995764b9 100644
--- a/keyboards/chavdai40/rev2/rules.mk
+++ b/keyboards/chavdai40/rev2/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/axon40/keymaps/default/keymap.c b/keyboards/checkerboards/axon40/keymaps/default/keymap.c
index 93c801ae78..22eaa8cf83 100644
--- a/keyboards/checkerboards/axon40/keymaps/default/keymap.c
+++ b/keyboards/checkerboards/axon40/keymaps/default/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | OS | Alt | Layer | Space | Alt | Caps | |
* `-----------------------------------------------------------------------------------'
*/
-[0] = LAYOUT_all( \
+[0] = LAYOUT_all(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
- KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS \
+ KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS
),
/* 1
@@ -56,11 +56,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
-[1] = LAYOUT_all( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, \
- CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV \
+[1] = LAYOUT_all(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
+ CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV
),
/* 2
@@ -76,11 +76,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
-[2] = LAYOUT_all( \
- RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \
- RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \
+[2] = LAYOUT_all(
+ RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
+ RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD
),
};
diff --git a/keyboards/checkerboards/axon40/keymaps/via/keymap.c b/keyboards/checkerboards/axon40/keymaps/via/keymap.c
index 24be3f64f5..dc9a5066cd 100644
--- a/keyboards/checkerboards/axon40/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/axon40/keymaps/via/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[0] = LAYOUT_all( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS \
+[0] = LAYOUT_all(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_RALT, KC_CAPS
),
/* 1
@@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[1] = LAYOUT_all( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______, \
- CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV \
+[1] = LAYOUT_all(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
+ CALTDEL, TSKMGR, _______, KC_SPC, KC_NUBS, KC_GRV
),
/* 2
@@ -78,11 +78,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[2] = LAYOUT_all( \
- RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \
- RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \
+[2] = LAYOUT_all(
+ RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
+ RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD
),
/* 2
@@ -99,11 +99,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[3] = LAYOUT_all( \
- RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI, \
- RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \
+[3] = LAYOUT_all(
+ RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
+ RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD
),
};
diff --git a/keyboards/checkerboards/axon40/rules.mk b/keyboards/checkerboards/axon40/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/checkerboards/axon40/rules.mk
+++ b/keyboards/checkerboards/axon40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/candybar_ortho/rules.mk b/keyboards/checkerboards/candybar_ortho/rules.mk
index 9c1d6cae25..d0bc92c43c 100644
--- a/keyboards/checkerboards/candybar_ortho/rules.mk
+++ b/keyboards/checkerboards/candybar_ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/g_idb60/rules.mk b/keyboards/checkerboards/g_idb60/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/checkerboards/g_idb60/rules.mk
+++ b/keyboards/checkerboards/g_idb60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/nop60/rules.mk b/keyboards/checkerboards/nop60/rules.mk
index 855a9a3cef..8e4763a18a 100644
--- a/keyboards/checkerboards/nop60/rules.mk
+++ b/keyboards/checkerboards/nop60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/phoenix45_ortho/rules.mk b/keyboards/checkerboards/phoenix45_ortho/rules.mk
index 128b76058d..efede3f9ed 100644
--- a/keyboards/checkerboards/phoenix45_ortho/rules.mk
+++ b/keyboards/checkerboards/phoenix45_ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/checkerboards/plexus75_he/config.h b/keyboards/checkerboards/plexus75_he/config.h
new file mode 100644
index 0000000000..62e177684c
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/config.h
@@ -0,0 +1,64 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7070
+#define PRODUCT_ID 0x5339
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Nasp
+#define PRODUCT Plexus75_HE
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { C2, D0, D1, D2, D6, B0, B3, B2, C6, B1 }
+#define MATRIX_COL_PINS { C4, C5, D3, C7, B7, B6, B5, B4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+// ws2812 options
+#define RGB_DI_PIN D4 // pin the DI on the ws2812 is hooked-up to
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 18 // number of LEDs
+#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue
+#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation
+#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness)
diff --git a/keyboards/checkerboards/plexus75_he/info.json b/keyboards/checkerboards/plexus75_he/info.json
new file mode 100644
index 0000000000..d19e58d8ca
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Plexus75_he",
+ "url": "https://www.github.com/qmk/qmk_firmware/tree/master/keyboards/checkerboards/plexus75_he",
+ "maintainer": "nasp",
+ "layouts": {
+ "LAYOUT_2x3u": {
+ "layout": [{"label":"=", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"[", "x":6, "y":0}, {"label":"]", "x":7, "y":0}, {"label":"`", "x":8, "y":0}, {"label":"6", "x":9, "y":0}, {"label":"7", "x":10, "y":0}, {"label":"8", "x":11, "y":0}, {"label":"9", "x":12, "y":0}, {"label":"9", "x":13, "y":0}, {"label":"-", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"7", "x":6, "y":1}, {"label":"8", "x":7, "y":1}, {"label":"9", "x":8, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"Back Space", "x":14, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"4", "x":6, "y":2}, {"label":"5", "x":7, "y":2}, {"label":"6", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":";", "x":13, "y":2}, {"label":"'", "x":14, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"1", "x":6, "y":3}, {"label":"2", "x":7, "y":3}, {"label":"3", "x":8, "y":3}, {"label":"N", "x":9, "y":3}, {"label":"M", "x":10, "y":3}, {"label":",", "x":11, "y":3}, {"label":".", "x":12, "y":3}, {"label":"/", "x":13, "y":3}, {"label":"Return", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"OS", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":3}, {"x":7, "y":4}, {"x":8, "y":4, "w":3}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"OS", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
+ },
+ "LAYOUT_2x2u": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"1,1", "x":2, "y":0}, {"label":"1,2", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"0,3", "x":5, "y":0}, {"label":"1,3", "x":6, "y":0}, {"label":"1,4", "x":7, "y":0}, {"label":"0,4", "x":8, "y":0}, {"label":"0,5", "x":9, "y":0}, {"label":"1,5", "x":10, "y":0}, {"label":"1,6", "x":11, "y":0}, {"label":"0,6", "x":12, "y":0}, {"label":"0,7", "x":13, "y":0}, {"label":"1,7", "x":14, "y":0}, {"label":"2,0", "x":0, "y":1}, {"label":"2,1", "x":1, "y":1}, {"label":"3,1", "x":2, "y":1}, {"label":"3,2", "x":3, "y":1}, {"label":"2,2", "x":4, "y":1}, {"label":"2,3", "x":5, "y":1}, {"label":"3,3", "x":6, "y":1}, {"label":"3,4", "x":7, "y":1}, {"label":"2,4", "x":8, "y":1}, {"label":"2,5", "x":9, "y":1}, {"label":"3,5", "x":10, "y":1}, {"label":"3,6", "x":11, "y":1}, {"label":"2,6", "x":12, "y":1}, {"label":"2,7", "x":13, "y":1}, {"label":"3,7", "x":14, "y":1}, {"label":"4,0", "x":0, "y":2}, {"label":"4,1", "x":1, "y":2}, {"label":"5,1", "x":2, "y":2}, {"label":"5,2", "x":3, "y":2}, {"label":"4,2", "x":4, "y":2}, {"label":"4,3", "x":5, "y":2}, {"label":"5,3", "x":6, "y":2}, {"label":"5,4", "x":7, "y":2}, {"label":"4,4", "x":8, "y":2}, {"label":"4,5", "x":9, "y":2}, {"label":"5,5", "x":10, "y":2}, {"label":"5,6", "x":11, "y":2}, {"label":"4,6", "x":12, "y":2}, {"label":"4,7", "x":13, "y":2}, {"label":"5,7", "x":14, "y":2}, {"label":"6,0", "x":0, "y":3}, {"label":"6,1", "x":1, "y":3}, {"label":"7,1", "x":2, "y":3}, {"label":"7,2", "x":3, "y":3}, {"label":"6,2", "x":4, "y":3}, {"label":"6,3", "x":5, "y":3}, {"label":"7,3", "x":6, "y":3}, {"label":"7,4", "x":7, "y":3}, {"label":"6,4", "x":8, "y":3}, {"label":"6,5", "x":9, "y":3}, {"label":"7,5", "x":10, "y":3}, {"label":"7,6", "x":11, "y":3}, {"label":"6,6", "x":12, "y":3}, {"label":"6,7", "x":13, "y":3}, {"label":"7,7", "x":14, "y":3}, {"label":"8,0", "x":0, "y":4, "w":1.5}, {"label":"8,1", "x":1.5, "y":4}, {"label":"8,2", "x":2.5, "y":4, "w":1.5}, {"label":"9,2", "x":4, "y":4}, {"label":"8,3", "x":5, "y":4, "w":2}, {"label":"8,4", "x":7, "y":4}, {"label":"8,5", "x":8, "y":4, "w":2}, {"label":"9,5", "x":10, "y":4}, {"label":"8,6", "x":11, "y":4, "w":1.5}, {"label":"8,7", "x":12.5, "y":4}, {"label":"9,7", "x":13.5, "y":4, "w":1.5}]
+ },
+ "LAYOUT_7u": {
+ "layout": [{"label":"=", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"[", "x":6, "y":0}, {"label":"]", "x":7, "y":0}, {"label":"`", "x":8, "y":0}, {"label":"6", "x":9, "y":0}, {"label":"7", "x":10, "y":0}, {"label":"8", "x":11, "y":0}, {"label":"9", "x":12, "y":0}, {"label":"9", "x":13, "y":0}, {"label":"-", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"7", "x":6, "y":1}, {"label":"8", "x":7, "y":1}, {"label":"9", "x":8, "y":1}, {"label":"Y", "x":9, "y":1}, {"label":"U", "x":10, "y":1}, {"label":"I", "x":11, "y":1}, {"label":"O", "x":12, "y":1}, {"label":"P", "x":13, "y":1}, {"label":"Back Space", "x":14, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"4", "x":6, "y":2}, {"label":"5", "x":7, "y":2}, {"label":"6", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":";", "x":13, "y":2}, {"label":"'", "x":14, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"1", "x":6, "y":3}, {"label":"2", "x":7, "y":3}, {"label":"3", "x":8, "y":3}, {"label":"N", "x":9, "y":3}, {"label":"M", "x":10, "y":3}, {"label":",", "x":11, "y":3}, {"label":".", "x":12, "y":3}, {"label":"/", "x":13, "y":3}, {"label":"Return", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"OS", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"label":"", "x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"OS", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
+ }
+ }
+}
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/2x2u/config.h b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/config.h
new file mode 100644
index 0000000000..9028fcf9fb
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/config.h
@@ -0,0 +1,18 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c
new file mode 100644
index 0000000000..a851edd29a
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * .-----------------------------------------------------------------------------------------------------------------------------------------'
+ * | = | 1 | 2 | 3 | 4 | 5 | [ | ] | ` | 6 | 7 | 8 | 9 | 0 | - |
+ * |-----------+--------+--------+------- +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | BCKSPC |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC(CTRL) | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------- +--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | ENTER |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | PRNSCRN | LGUI | LALT | MENU | TT(1) | O | SPACE (2) | RGB_TOG | RALT | RGUI | CAPS |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_2x2u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_PSCR, KC_LGUI, KC_LALT, KC_MENU, TT(1), KC_P0, LT(2, KC_SPC), RGB_TOG, KC_RALT, KC_RGUI, KC_CAPS
+ ),
+
+ /* Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | | | MENU | | | | | | | | | | PRT SC | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | | | | | | | | | | | | | | RESET | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | RESET | RESET | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_2x2u(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL,
+ _______, _______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* 2nd Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | | |RGB ON OFF|HUE INC|HUE DEC|SAT INC |SAT DEC | | | | | | | |PRNSCRN |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | BCKSPC |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | RESET | RESET | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_2x2u(
+ _______, _______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/7u/config.h b/keyboards/checkerboards/plexus75_he/keymaps/7u/config.h
new file mode 100644
index 0000000000..9028fcf9fb
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/7u/config.h
@@ -0,0 +1,18 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c
new file mode 100644
index 0000000000..4dee2683b1
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c
@@ -0,0 +1,65 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * .-----------------------------------------------------------------------------------------------------------------------------------------'
+ * | = | 1 | 2 | 3 | 4 | 5 | [ | ] | ` | 6 | 7 | 8 | 9 | 0 | - |
+ * |-----------+--------+--------+------- +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | BCKSPC |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC(CTRL) | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------- +--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | ENTER |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCTRL | LGUI | LALT | SPACE | RALT | MO (FN) | APP |
+ *'------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_7u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_MENU
+ ),
+
+ /* Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | | | MENU | | | | | | | | | | PRT SC | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | | | | | | | | | | | | | | RESET | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | | | | | | |
+ *'--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_7u(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL,
+ _______, _______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/default/config.h b/keyboards/checkerboards/plexus75_he/keymaps/default/config.h
new file mode 100644
index 0000000000..9028fcf9fb
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/default/config.h
@@ -0,0 +1,18 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/default/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b344c6d9ab
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/default/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * .-----------------------------------------------------------------------------------------------------------------------------------------'
+ * | = | 1 | 2 | 3 | 4 | 5 | [ | ] | ` | 6 | 7 | 8 | 9 | 0 | - |
+ * |-----------+--------+--------+------- +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | BCKSPC |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC(CTRL) | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------- +--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | ENTER |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | PRNSCRN | LGUI | LALT | TT(_FN) | SPACE | O | SPACE | TT(_FN1) | RALT | RGUI | CAPS |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_2x3u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_PSCR, KC_LGUI, KC_LALT, TT(1), KC_P0, LT(2, KC_SPC), KC_RALT, KC_RGUI, KC_CAPS
+ ),
+
+ /* Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | | | MENU | | | | | | | | | | PRT SC | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | | | | | | | | | | | | | | RESET | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | RESET | RESET | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_2x3u(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL,
+ _______, _______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* 2nd Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | | |RGB ON OFF|HUE INC|HUE DEC|SAT INC |SAT DEC | | | | | | | |PRNSCRN |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | BCKSPC |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | RESET | RESET | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_2x3u(
+ _______, _______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/default/readme.md b/keyboards/checkerboards/plexus75_he/keymaps/default/readme.md
new file mode 100644
index 0000000000..353debb7d6
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Plexus75_HE with 2x3u bars
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bb1d5657e5
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c
@@ -0,0 +1,109 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * .-----------------------------------------------------------------------------------------------------------------------------------------'
+ * | = | 1 | 2 | 3 | 4 | 5 | [ | ] | ` | 6 | 7 | 8 | 9 | 0 | - |
+ * |-----------+--------+--------+------- +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | TAB | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | BCKSPC |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ESC(CTRL) | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------- +--------+--------+--------|
+ * | LSHIFT | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | ENTER |
+ * |-----------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | PRNSCRN | LGUI | LALT | TT(_FN) | SPACE | O | SPACE | TT(_FN1) | RALT | RGUI | CAPS |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_2x3u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_PSCR, KC_LGUI, KC_LALT, KC_SPC, TT(1), KC_SPC, KC_RALT, KC_RGUI, KC_CAPS
+ ),
+
+ /* 1st Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | DEL |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | | | MENU | | | | | | | | | | PRT SC | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | | | | | | | | | | | | | | RESET | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | RESET | RESET | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_2x3u(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL,
+ _______, _______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* 2nd Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | | |RGB ON OFF|HUE INC|HUE DEC|SAT INC |SAT DEC | | | | | | | |PRNSCRN |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | BCKSPC |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | RESET | RESET | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_2x3u(
+ _______, _______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* 3rd Function Layer
+ * .-------------------------------------------------------------------------------------------------------------------------------------'
+ * | | |RGB ON OFF|HUE INC|HUE DEC|SAT INC |SAT DEC | | | | | | | |PRNSCRN |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
+ * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | BCKSPC |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
+ * | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
+ * | | RESET | RESET | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [3] = LAYOUT_2x3u(
+ _______, _______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
+ RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/via/rules.mk b/keyboards/checkerboards/plexus75_he/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/checkerboards/plexus75_he/plexus75_he.c b/keyboards/checkerboards/plexus75_he/plexus75_he.c
new file mode 100644
index 0000000000..1c7dad7ab7
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/plexus75_he.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "plexus75_he.h"
diff --git a/keyboards/checkerboards/plexus75_he/plexus75_he.h b/keyboards/checkerboards/plexus75_he/plexus75_he.h
new file mode 100644
index 0000000000..0a01c6e144
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/plexus75_he.h
@@ -0,0 +1,76 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_2x2u( \
+ k00, k01, k11, k12, k02, k03, k13, k14, k04, k05, k15, k16, k06, k07, k17, \
+ k20, k21, k31, k32, k22, k23, k33, k34, k24, k25, k35, k36, k26, k27, k37, \
+ k40, k41, k51, k52, k42, k43, k53, k54, k44, k45, k55, k56, k46, k47, k57, \
+ k60, k61, k71, k72, k62, k63, k73, k74, k64, k65, k75, k76, k66, k67, k77, \
+ k80, k81, k82, k92, k83, k84, k85, k95, k86, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87 }, \
+ { XXX, XXX, k92, XXX, XXX, k95, XXX, k97 } \
+}
+#define LAYOUT_2x3u( \
+ k00, k01, k11, k12, k02, k03, k13, k14, k04, k05, k15, k16, k06, k07, k17, \
+ k20, k21, k31, k32, k22, k23, k33, k34, k24, k25, k35, k36, k26, k27, k37, \
+ k40, k41, k51, k52, k42, k43, k53, k54, k44, k45, k55, k56, k46, k47, k57, \
+ k60, k61, k71, k72, k62, k63, k73, k74, k64, k65, k75, k76, k66, k67, k77, \
+ k80, k81, k82, k83, k84, k85, k86, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k97 } \
+}
+#define LAYOUT_7u( \
+ k00, k01, k11, k12, k02, k03, k13, k14, k04, k05, k15, k16, k06, k07, k17, \
+ k20, k21, k31, k32, k22, k23, k33, k34, k24, k25, k35, k36, k26, k27, k37, \
+ k40, k41, k51, k52, k42, k43, k53, k54, k44, k45, k55, k56, k46, k47, k57, \
+ k60, k61, k71, k72, k62, k63, k73, k74, k64, k65, k75, k76, k66, k67, k77, \
+ k80, k81, k82, k84, k86, k87, k97 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07 }, \
+ { XXX, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { XXX, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47 }, \
+ { XXX, k51, k52, k53, k54, k55, k56, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { XXX, k71, k72, k73, k74, k75, k76, k77 }, \
+ { k80, k81, k82, XXX, k84, XXX, k86, k87 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, k97 } \
+}
diff --git a/keyboards/checkerboards/plexus75_he/readme.md b/keyboards/checkerboards/plexus75_he/readme.md
new file mode 100644
index 0000000000..2b59e0da6d
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/readme.md
@@ -0,0 +1,17 @@
+# Plexus75_HE
+
+![Plexus75_HE](https://i.imgur.com/niz4raR.png)
+
+The Plexus75_HE is a hotswap version of the Plexus75. Another difference is the included RGB underglow. What is the OG Plexus75? It is a 60% ortholinear keyboard based on the XD75 but instead of an all 1u bottom row the Plexus75 has a more traditional bottom row similar to reg. 60% boards.
+
+* Keyboard Maintainer: [Nasp](https://github.com/npspears)
+* Hardware Supported: Plexus75_HE PCB
+* Hardware Availability: https://www.checkerboards.xyz/Plexus75-Hotswap-PCB_p_46.html
+
+Make example for this keyboard (after setting up your build environment):
+
+ make plexus75_he:default
+
+To enter the bootloader, short the two pins just underneath the spacebar on the left side.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/checkerboards/plexus75_he/rules.mk b/keyboards/checkerboards/plexus75_he/rules.mk
new file mode 100644
index 0000000000..95964a1fa5
--- /dev/null
+++ b/keyboards/checkerboards/plexus75_he/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/quark_lp/rules.mk b/keyboards/checkerboards/quark_lp/rules.mk
index 584b7bdd8f..155e14ca68 100644
--- a/keyboards/checkerboards/quark_lp/rules.mk
+++ b/keyboards/checkerboards/quark_lp/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/quark_squared/config.h b/keyboards/checkerboards/quark_squared/config.h
index 89e7eb0725..32546097f1 100644
--- a/keyboards/checkerboards/quark_squared/config.h
+++ b/keyboards/checkerboards/quark_squared/config.h
@@ -26,11 +26,11 @@
#define PRODUCT QUARK²
/* key matrix size */
-#define MATRIX_ROWS 4
+#define MATRIX_ROWS 5
#define MATRIX_COLS 12
/* key matrix pins */
-#define MATRIX_ROW_PINS { C5, C4, C6, C7 }
+#define MATRIX_ROW_PINS { C5, C4, C6, C7, B7 }
#define MATRIX_COL_PINS { B4, B5, B6, B3, C2, B2, D6, D2, D3, D4, D5, B1 }
#define UNUSED_PINS
diff --git a/keyboards/checkerboards/quark_squared/info.json b/keyboards/checkerboards/quark_squared/info.json
index 76f68353b5..4d2ce21298 100644
--- a/keyboards/checkerboards/quark_squared/info.json
+++ b/keyboards/checkerboards/quark_squared/info.json
@@ -1,13 +1,19 @@
{
"keyboard_name": "Quark_Squared",
- "url": "",
+ "url": "https://www.checkerboards.xyz/Quark2_p_35.html",
"maintainer": "nasp",
"layouts": {
- "LAYOUT_ortho_2x225u": {
+ "LAYOUT_4_2x225u": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":2.25}, {"x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Super", "x":9.5, "y":3, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":3, "w":1.25}]
},
- "LAYOUT_ortho_2u": {
+ "LAYOUT_4_2u": {
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Alt", "x":1.25, "y":3, "w":1.25}, {"label":"Super", "x":2.5, "y":3, "w":1.25}, {"label":"&dArr;", "x":3.75, "y":3, "w":1.25}, {"x":5, "y":3, "w":2}, {"label":"&larr;", "x":7, "y":3, "w":1.25}, {"label":"&darr;", "x":8.25, "y":3, "w":1.25}, {"label":"&uarr;", "x":9.5, "y":3, "w":1.25}, {"label":"&rarr;", "x":10.75, "y":3, "w":1.25}]
+ },
+ "LAYOUT_5_2x225u": {
+ "layout": [{"label":"-", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"+", "x":11, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"Y", "x":6, "y":1}, {"label":"U", "x":7, "y":1}, {"label":"I", "x":8, "y":1}, {"label":"O", "x":9, "y":1}, {"label":"P", "x":10, "y":1}, {"label":"Back Space", "x":11, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"H", "x":6, "y":2}, {"label":"J", "x":7, "y":2}, {"label":"K", "x":8, "y":2}, {"label":"L", "x":9, "y":2}, {"label":";", "x":10, "y":2}, {"label":"'", "x":11, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"N", "x":6, "y":3}, {"label":"M", "x":7, "y":3}, {"label":",", "x":8, "y":3}, {"label":".", "x":9, "y":3}, {"label":"/", "x":10, "y":3}, {"label":"Return", "x":11, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Super", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":2.25}, {"label":"Alt", "x":8.25, "y":4, "w":1.25}, {"label":"Super", "x":9.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":4, "w":1.25}]
+ },
+ "LAYOUT_5_2u": {
+ "layout": [{"label":"-", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"+", "x":11, "y":0}, {"label":"Tab", "x":0, "y":1}, {"label":"Q", "x":1, "y":1}, {"label":"W", "x":2, "y":1}, {"label":"E", "x":3, "y":1}, {"label":"R", "x":4, "y":1}, {"label":"T", "x":5, "y":1}, {"label":"Y", "x":6, "y":1}, {"label":"U", "x":7, "y":1}, {"label":"I", "x":8, "y":1}, {"label":"O", "x":9, "y":1}, {"label":"P", "x":10, "y":1}, {"label":"Back Space", "x":11, "y":1}, {"label":"Esc", "x":0, "y":2}, {"label":"A", "x":1, "y":2}, {"label":"S", "x":2, "y":2}, {"label":"D", "x":3, "y":2}, {"label":"F", "x":4, "y":2}, {"label":"G", "x":5, "y":2}, {"label":"H", "x":6, "y":2}, {"label":"J", "x":7, "y":2}, {"label":"K", "x":8, "y":2}, {"label":"L", "x":9, "y":2}, {"label":";", "x":10, "y":2}, {"label":"'", "x":11, "y":2}, {"label":"Shift", "x":0, "y":3}, {"label":"Z", "x":1, "y":3}, {"label":"X", "x":2, "y":3}, {"label":"C", "x":3, "y":3}, {"label":"V", "x":4, "y":3}, {"label":"B", "x":5, "y":3}, {"label":"N", "x":6, "y":3}, {"label":"M", "x":7, "y":3}, {"label":",", "x":8, "y":3}, {"label":".", "x":9, "y":3}, {"label":"/", "x":10, "y":3}, {"label":"Return", "x":11, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Super", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"&dArr;", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2}, {"label":"&uArr;", "x":7, "y":4, "w":1.25}, {"label":"Alt", "x":8.25, "y":4, "w":1.25}, {"label":"Super", "x":9.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":10.75, "y":4, "w":1.25}]
}
}
}
diff --git a/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
index 0892729cf3..0f37a1d080 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
- [0] = LAYOUT_ortho_2u(
+ [0] = LAYOUT_4_2u(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | |
* `---------------------------------------------------------------------------------------'
*/
- [1] = LAYOUT_ortho_2u(
+ [1] = LAYOUT_4_2u(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | RESET | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
- [2] = LAYOUT_ortho_2u(
+ [2] = LAYOUT_4_2u(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2u/config.h b/keyboards/checkerboards/quark_squared/keymaps/5_2u/config.h
new file mode 100644
index 0000000000..b1498826ee
--- /dev/null
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2u/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c
new file mode 100644
index 0000000000..d7f7ff378d
--- /dev/null
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* [0]
+ * ,-----------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
+ * | OS | Alt | Layer | Space & Layer | [ | ] |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_5_2u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_GRV, KC_LGUI, KC_LALT, TT(1), KC_SPC, TT(2), KC_TILD, KC_LBRC, KC_RBRC
+ ),
+
+ /* [1]
+ * ,---------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+----|
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC |
+ * |------------+------+------+------+------+-------------+------+------+------+------+----|
+ * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------------+------+------+------+------+------|------+------+------+------+------+----|
+ * | | | | | | | | + | = | | | |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----|
+ * | ESC | CTRL-ALT-DEL | | | '|' | ` |
+ * `---------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_5_2u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
+ KC_ESC, CALTDEL, _______, _______, _______, _______, _______, KC_NUBS, KC_GRV
+ ),
+
+ /* [2]
+ * ,---------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+---|
+ * | | | | UP | | | | _ | | [ | ] | |
+ * |------------+------+------+------+------+-------------+------+------+------+------+---|
+ * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | |
+ * |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
+ * | RESET | | | | | |
+ * `---------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_5_2u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/config.h b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/config.h
new file mode 100644
index 0000000000..b1498826ee
--- /dev/null
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c
new file mode 100644
index 0000000000..e116732b75
--- /dev/null
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2021 Nathan Spears
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines for task manager and such
+#define CALTDEL LCTL(LALT(KC_DEL))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* [0]
+ * ,-----------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTL & ESC | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
+ * | OS | Alt | Layer | Space & Layer | [ | ] |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_5_2x225u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_GRV, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_TILD, KC_LBRC, KC_RBRC
+ ),
+
+ /* [1]
+ * ,---------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+----|
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | BCKSPC |
+ * |------------+------+------+------+------+-------------+------+------+------+------+----|
+ * | \ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------------+------+------+------+------+------|------+------+------+------+------+----|
+ * | | | | | | | | + | = | | | |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----|
+ * | ESC | CTRL-ALT-DEL | | | '|' | ` |
+ * `---------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_5_2x225u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
+ KC_ESC, CALTDEL, _______, _______, _______, _______, KC_NUBS, KC_GRV
+ ),
+
+ /* [2]
+ * ,---------------------------------------------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - |
+ * |------------+------+------+------+------+------+------+------+------+------+------+---|
+ * | | | | UP | | | | _ | | [ | ] | |
+ * |------------+------+------+------+------+-------------+------+------+------+------+---|
+ * | | | LEFT | DOWN | RIGHT | | | - | | [ | ] | |
+ * |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
+ * | RESET | | | | | |
+ * `---------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_5_2x225u(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c
index 56aa2ea6b2..8601c76604 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
- [0] = LAYOUT_ortho_2x225u(
+ [0] = LAYOUT_4_2x225u(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | |
* `---------------------------------------------------------------------------------------'
*/
- [1] = LAYOUT_ortho_2x225u(
+ [1] = LAYOUT_4_2x225u(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | RESET | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
- [2] = LAYOUT_ortho_2x225u(
+ [2] = LAYOUT_4_2x225u(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c
index 928965f973..37baf408d2 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
- [0] = LAYOUT_ortho_2x225u(
+ [0] = LAYOUT_4_2x225u(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
- [1] = LAYOUT_ortho_2x225u(
+ [1] = LAYOUT_4_2x225u(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
- [2] = LAYOUT_ortho_2x225u(
+ [2] = LAYOUT_4_2x225u(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
- [3] = LAYOUT_ortho_2x225u(
+ [3] = LAYOUT_4_2x225u(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/quark_squared/quark_squared.h b/keyboards/checkerboards/quark_squared/quark_squared.h
index d3d8842212..27f69d1db6 100644
--- a/keyboards/checkerboards/quark_squared/quark_squared.h
+++ b/keyboards/checkerboards/quark_squared/quark_squared.h
@@ -21,26 +21,56 @@
#define XXX KC_NO
-#define LAYOUT_ortho_2x225u( \
+#define LAYOUT_4_2x225u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
- k30, k31, k33, k34, k36, k38, k39, k3B \
+ k30, k31, k33, k34, k36, k38, k39, k3B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
- { k30, k31, XXX, k33, k34, XXX, k36, XXX, k38, k39, XXX, k3B } \
+ { k30, k31, XXX, k33, k34, XXX, k36, XXX, k38, k39, XXX, k3B }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
-#define LAYOUT_ortho_2u( \
+#define LAYOUT_4_2u( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
- k30, k31, k33, k34, k35, k36, k38, k39, k3B \
+ k30, k31, k33, k34, k35, k36, k38, k39, k3B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
- { k30, k31, XXX, k33, k34, k35, k36, XXX, k38, k39, XXX, k3B } \
+ { k30, k31, XXX, k33, k34, k35, k36, XXX, k38, k39, XXX, k3B }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
+}
+
+#define LAYOUT_5_2x225u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
+ k40, k41, k43, k44, k46, k48, k49, k4B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
+ { k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, k49, XXX, k4B } \
+}
+
+#define LAYOUT_5_2u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
+ k40, k41, k43, k44, k45, k46, k48, k49, k4B \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B }, \
+ { k40, k41, XXX, k43, k44, k45, k46, XXX, k48, k49, XXX, k4B } \
}
diff --git a/keyboards/checkerboards/quark_squared/readme.md b/keyboards/checkerboards/quark_squared/readme.md
index bbbe2bfb5b..8677710dd9 100644
--- a/keyboards/checkerboards/quark_squared/readme.md
+++ b/keyboards/checkerboards/quark_squared/readme.md
@@ -2,7 +2,7 @@
![Quark_Squared](https://i.imgur.com/zYH25zQ.png)
-The Quark² PCB is a hotswap version of the Quark PCB. Just like the OG, it has a modified layout than a traditonal 4x12 ortholinear keyboard.
+The Quark² PCB is a hotswap version of the Quark PCB. Just like the OG, it has a modified layout than a traditonal 4x12 and 5x12 ortholinear keyboard.
* Keyboard Maintainer: [Nasp](https://github.com/npspears)
* Hardware Supported: Planck
@@ -11,5 +11,7 @@ The Quark² PCB is a hotswap version of the Quark PCB. Just like the OG, it has
Make example for this keyboard (after setting up your build environment):
make checkerboards:quark_squared:default
+
+These boards may be reset into bootloader either via the reset hardware button (on the back of the PCB near the USB connector) or through a configured RESET shortcut inserted into the keymap.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/checkerboards/quark_squared/rules.mk b/keyboards/checkerboards/quark_squared/rules.mk
index 5f39f8194b..d511396436 100644
--- a/keyboards/checkerboards/quark_squared/rules.mk
+++ b/keyboards/checkerboards/quark_squared/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/checkerboards/ud40_ortho_alt/rules.mk b/keyboards/checkerboards/ud40_ortho_alt/rules.mk
index 5d4aeea5d2..d6f90b5917 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/rules.mk
+++ b/keyboards/checkerboards/ud40_ortho_alt/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cherrybstudio/cb1800/config.h b/keyboards/cherrybstudio/cb1800/config.h
index 81d24669dc..a9932fe735 100644
--- a/keyboards/cherrybstudio/cb1800/config.h
+++ b/keyboards/cherrybstudio/cb1800/config.h
@@ -48,7 +48,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LED_CAPS_LOCK_PIN F5
#define LED_NUM_LOCK_PIN F6
#define LED_SCROLL_LOCK_PIN F7
-
+#define LED_PIN_ON_STATE 0
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/cherrybstudio/cb1800/rules.mk b/keyboards/cherrybstudio/cb1800/rules.mk
index 57afa20fbf..65540808e4 100644
--- a/keyboards/cherrybstudio/cb1800/rules.mk
+++ b/keyboards/cherrybstudio/cb1800/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cherrybstudio/cb87/config.h b/keyboards/cherrybstudio/cb87/config.h
index 41a153081d..41c7f3f25b 100644
--- a/keyboards/cherrybstudio/cb87/config.h
+++ b/keyboards/cherrybstudio/cb87/config.h
@@ -49,6 +49,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#define LED_CAPS_LOCK_PIN F0
+#define LED_SCROLL_LOCK_PIN F4
+#define LED_PIN_ON_STATE 0
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/cherrybstudio/cb87/rules.mk b/keyboards/cherrybstudio/cb87/rules.mk
index 95ce654774..2a782e8d52 100644
--- a/keyboards/cherrybstudio/cb87/rules.mk
+++ b/keyboards/cherrybstudio/cb87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cherrybstudio/cb87rgb/cb87rgb.c b/keyboards/cherrybstudio/cb87rgb/cb87rgb.c
new file mode 100644
index 0000000000..362a991652
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/cb87rgb.c
@@ -0,0 +1,60 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "cb87rgb.h"
+
+//x = 224 / (NUMBER_OF_COLS - 1) * COL_POSITION
+//y = 64 / (NUMBER_OF_ROWS - 1) * ROW_POSITION
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
+ { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },
+ { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 },
+ { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59 },
+ { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },
+ { 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 },
+ { 80, 81, 82, 83, 84, 85, 86, 87, 88, 89 },
+ { 90, 91, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+ // LED Index to Physical Position
+ { 0, 0 }, { 13, 0 }, { 26, 0 }, { 39, 0 }, { 52, 0 }, { 65, 0 }, { 78, 0 }, { 91, 0 }, { 104, 0 }, { 117, 0 }, { 130, 0 }, { 143, 0 }, { 156, 0 }, { 195, 0 }, { 208, 0 }, { 224, 0 },
+ { 0, 12 }, { 13, 12 }, { 26, 12 }, { 39, 12 }, { 52, 12 }, { 65, 12 }, { 78, 12 }, { 91, 12 }, { 104, 12 }, { 117, 12 }, { 130, 12 }, { 143, 12 }, { 156, 12 }, { 169, 12 }, { 182, 24 }, { 195, 12 }, { 208, 12 }, { 224, 12 },
+ { 0, 24 }, { 13, 24 }, { 26, 24 }, { 39, 24 }, { 52, 24 }, { 65, 24 }, { 78, 24 }, { 91, 24 }, { 104, 24 }, { 117, 24 }, { 130, 24 }, { 143, 24 }, { 156, 24 }, { 169, 24 }, { 195, 24 }, { 208, 24 }, { 224, 24 },
+ { 0, 36 }, { 13, 36 }, { 26, 36 }, { 39, 36 }, { 52, 36 }, { 65, 36 }, { 78, 36 }, { 91, 36 }, { 104, 36 }, { 117, 36 }, { 130, 36 }, { 143, 36 }, { 156, 36 }, { 169, 36 },
+ { 0, 48 }, { 13, 48 }, { 26, 48 }, { 39, 48 }, { 52, 48 }, { 65, 48 }, { 78, 48 }, { 91, 48 }, { 104, 48 }, { 117, 48 }, { 130, 48 }, { 143, 48 }, { 156, 48 }, { 169, 48 }, { 208, 48 },
+ { 0, 64 }, { 13, 64 }, { 26, 64 }, { 78, 64 }, { 130, 64 }, { 143, 64 }, { 156, 64 }, { 169, 64 }, { 195, 64 }, { 208, 64 }, { 224, 64 }, { 182, 0 }
+}, {
+ // LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+
+} };
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(51, 255, 255, 255);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(14, 255, 255, 255);
+ }
+}
+#endif
diff --git a/keyboards/cherrybstudio/cb87rgb/cb87rgb.h b/keyboards/cherrybstudio/cb87rgb/cb87rgb.h
new file mode 100644
index 0000000000..16702e516b
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/cb87rgb.h
@@ -0,0 +1,37 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003,K004, K005, K006, K007,K008, K009, K100, K101, K102, K901, K103, K104, K105, \
+ K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, K303, \
+ K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K500, \
+ K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, K604, \
+ K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, \
+ K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K900 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, }, \
+ { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, }, \
+ { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, }, \
+ { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, }, \
+ { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, }, \
+ { K900, K901 } \
+}
+
diff --git a/keyboards/cherrybstudio/cb87rgb/config.h b/keyboards/cherrybstudio/cb87rgb/config.h
new file mode 100644
index 0000000000..ccf7aceee9
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/config.h
@@ -0,0 +1,106 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4342 // CB
+#define PRODUCT_ID 0x8785
+#define DEVICE_VER 0x0001
+#define MANUFACTURER CherryB.Studio
+#define PRODUCT CB87RGB
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+*/
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, F6 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
+//#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN E6
+#define DRIVER_LED_TOTAL 92
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+#define RGB_MATRIX_LED_FLUSH_LIMIT 16
+#define RGB_MATRIX_KEYPRESSES
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
diff --git a/keyboards/cherrybstudio/cb87rgb/info.json b/keyboards/cherrybstudio/cb87rgb/info.json
new file mode 100644
index 0000000000..e183066bd5
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/info.json
@@ -0,0 +1,102 @@
+ {
+ "keyboard_name": "cb87v2",
+ "url": "https://discord.gg/qVwv3gcq83",
+ "maintainer": "duongaanh",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Esc", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+ {"label":"~", "x":0, "y":1.5},
+ {"label":"!", "x":1, "y":1.5},
+ {"label":"@", "x":2, "y":1.5},
+ {"label":"#", "x":3, "y":1.5},
+ {"label":"$", "x":4, "y":1.5},
+ {"label":"%", "x":5, "y":1.5},
+ {"label":"^", "x":6, "y":1.5},
+ {"label":"&", "x":7, "y":1.5},
+ {"label":"*", "x":8, "y":1.5},
+ {"label":"(", "x":9, "y":1.5},
+ {"label":")", "x":10, "y":1.5},
+ {"label":"_", "x":11, "y":1.5},
+ {"label":"+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Insert", "x":15.25, "y":1.5},
+ {"label":"Home", "x":16.25, "y":1.5},
+ {"label":"PgUp", "x":17.25, "y":1.5},
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"{", "x":11.5, "y":2.5},
+ {"label":"}", "x":12.5, "y":2.5},
+ {"label":"|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.5},
+ {"label":"End", "x":16.25, "y":2.5},
+ {"label":"PgDn", "x":17.25, "y":2.5},
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":":", "x":10.75, "y":3.5},
+ {"label":"\"", "x":11.75, "y":3.5},
+ {"label":"ISO~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":3.5, "w":1.25},
+ {"label":"LShift", "x":0, "y":4.5, "w":1.25},
+ {"label":"ISO|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":"<", "x":9.25, "y":4.5},
+ {"label":">", "x":10.25, "y":4.5},
+ {"label":"?", "x":11.25, "y":4.5},
+ {"label":"RShift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"RShift", "x":14, "y":4.5},
+ {"label":"Up", "x":16.25, "y":4.5},
+ {"label":"LCtrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"LWin", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"LAlt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"RAlt", "x":10, "y":5.5, "w":1.25},
+ {"label":"RWin", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.5, "w":1.25},
+ {"label":"RCtrl", "x":13.75, "y":5.5, "w":1.25},
+ {"label":"Left", "x":15.25, "y":5.5},
+ {"label":"Down", "x":16.25, "y":5.5},
+ {"label":"Right", "x":17.25, "y":5.5}]
+ }
+ }
+ }
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..343c3ebc1f
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md
new file mode 100644
index 0000000000..d68382007d
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for cb1800 \ No newline at end of file
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..56646b57c3
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/*
+Copyright 2020 Tybera
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_ESC, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
diff --git a/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/cherrybstudio/cb87rgb/readme.md b/keyboards/cherrybstudio/cb87rgb/readme.md
new file mode 100644
index 0000000000..f7c9985d8c
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/readme.md
@@ -0,0 +1,26 @@
+# CherryB Studio CB87RGB
+
+![cb87rgb](https://i.imgur.com/wG1qS4I.jpg)
+
+A RGB TKL PCB including hotswap and solderable variant for CherryB Studio NEO87 and many compatible TKLs
+
+* Keyboard Maintainer: duongaanh
+* Hardware Supported: cb87rgb, atmega32u4
+* Hardware Availability: [CherryB Studio](https://discord.gg/3gsCa8K)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cherrybstudio/cb87rgb:default
+
+Flashing example for this keyboard:
+
+ make cherrybstudio/cb87rgb:default:flash
+
+## Accessing Bootloader Mode
+
+To access Bootloader Mode, do one of the following:
+
+* Tap the Reset switch mounted on the top side of the PCB to the left of the spacebar
+* Hold the top left key of the keyboard while connecting the USB cable
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cherrybstudio/cb87rgb/rules.mk b/keyboards/cherrybstudio/cb87rgb/rules.mk
new file mode 100644
index 0000000000..9f610c8a90
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87rgb/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/cherrybstudio/cb87v2/cb87v2.c b/keyboards/cherrybstudio/cb87v2/cb87v2.c
new file mode 100644
index 0000000000..8d2fbba409
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/cb87v2.c
@@ -0,0 +1,14 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "cb87v2.h"
diff --git a/keyboards/cherrybstudio/cb87v2/cb87v2.h b/keyboards/cherrybstudio/cb87v2/cb87v2.h
new file mode 100644
index 0000000000..9f60aa6b51
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/cb87v2.h
@@ -0,0 +1,36 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003,K004, K005, K006, K007,K008, K009, K100, K101, K102, K103, K104, K105, \
+ K106, K107, K108, K109, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K300, K301, K302, K303, \
+ K304, K305, K306, K307, K308, K309, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K500, \
+ K501, K502, K503, K504, K505, K506, K507, K508, K509, K600, K601, K602, K603, K604, \
+ K605, K606, K607, K608, K609, K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, \
+ K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, K900, K901, K902 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, }, \
+ { K500, K501, K502, K503, K504, K505, K506, K507, K508, K509, }, \
+ { K600, K601, K602, K603, K604, K605, K606, K607, K608, K609, }, \
+ { K700, K701, K702, K703, K704, K705, K706, K707, K708, K709, }, \
+ { K800, K801, K802, K803, K804, K805, K806, K807, K808, K809, }, \
+ { K900, K901, K902 } \
+}
diff --git a/keyboards/cherrybstudio/cb87v2/config.h b/keyboards/cherrybstudio/cb87v2/config.h
new file mode 100644
index 0000000000..782262ebfb
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/config.h
@@ -0,0 +1,74 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4342 // CB
+#define PRODUCT_ID 0x8788
+#define DEVICE_VER 0x0001
+#define MANUFACTURER CherryB.Studio
+#define PRODUCT CB87v2
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+*/
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, F6 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
+//#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+#define LED_CAPS_LOCK_PIN F0
+#define LED_SCROLL_LOCK_PIN F4
+#define LED_PIN_ON_STATE 0
+#define BACKLIGHT_PIN B6
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 24
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/cherrybstudio/cb87v2/info.json b/keyboards/cherrybstudio/cb87v2/info.json
new file mode 100644
index 0000000000..8b79d0623b
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "cb87v2",
+ "url": "https://discord.gg/qVwv3gcq83",
+ "maintainer": "duongaanh",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"@", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25},
+ {"label":"Backspace", "x":14, "y":1.25},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"\"", "x":11.75, "y":3.25},
+ {"label":"ISO~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":3.25, "w":1.25},
+ {"label":"lShift", "x":0, "y":4.25, "w":1.25},
+ {"label":"ISO|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"rShift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"rshift", "x":14, "y":4.25},
+ {"label":"up", "x":16.25, "y":4.25},
+ {"label":"lCtrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"lWin", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"lAlt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"space", "x":3.75, "y":5.25, "w":2.25},
+ {"label":"space", "x":6, "y":5.25, "w":1.25},
+ {"label":"space", "x":7.25, "y":5.25, "w":2.75},
+ {"label":"rAlt", "x":10, "y":5.25, "w":1.25},
+ {"label":"rWin", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"rCtrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"left", "x":15.25, "y":5.25},
+ {"label":"down", "x":16.25, "y":5.25},
+ {"label":"right", "x":17.25, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0833509794
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md b/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md
new file mode 100644
index 0000000000..d68382007d
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for cb1800 \ No newline at end of file
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8c08f10a01
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/*
+Copyright 2020 Tybera
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
diff --git a/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/cherrybstudio/cb87v2/readme.md b/keyboards/cherrybstudio/cb87v2/readme.md
new file mode 100644
index 0000000000..0fc32c40c1
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/readme.md
@@ -0,0 +1,26 @@
+# CherryB Studio CB87v2
+
+![cb87v2](https://i.imgur.com/0DqZDXw.jpg)
+
+An advance TKL PCB with many configurable layouts
+
+* Keyboard Maintainer: duongaanh
+* Hardware Supported: cb87v2, atmega32u4
+* Hardware Availability: [CherryB Studio](https://discord.gg/qVwv3gcq83)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cherrybstudio/cb87v2:default
+
+Flashing example for this keyboard:
+
+ make cherrybstudio/cb87v2:default:flash
+
+## Accessing Bootloader Mode
+
+To access Bootloader Mode, do one of the following:
+
+* Tap the Reset switch behind the PCB near the MCU
+* Hold the top left key of the keyboard while connecting the USB cable
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cherrybstudio/cb87v2/rules.mk b/keyboards/cherrybstudio/cb87v2/rules.mk
new file mode 100644
index 0000000000..3bd45154f4
--- /dev/null
+++ b/keyboards/cherrybstudio/cb87v2/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cheshire/curiosity/rules.mk b/keyboards/cheshire/curiosity/rules.mk
index 21c5711482..f86300ef97 100644
--- a/keyboards/cheshire/curiosity/rules.mk
+++ b/keyboards/cheshire/curiosity/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/chidori/rules.mk b/keyboards/chidori/rules.mk
index 9d6b1d3819..371456cc09 100644
--- a/keyboards/chidori/rules.mk
+++ b/keyboards/chidori/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chili/rules.mk b/keyboards/chili/rules.mk
index 8d43b3c377..31559786a6 100644
--- a/keyboards/chili/rules.mk
+++ b/keyboards/chili/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chimera_ergo/rules.mk b/keyboards/chimera_ergo/rules.mk
index 56e3af6227..a8bd3a027a 100644
--- a/keyboards/chimera_ergo/rules.mk
+++ b/keyboards/chimera_ergo/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# # project specific files
diff --git a/keyboards/chimera_ls/rules.mk b/keyboards/chimera_ls/rules.mk
index 02ff637b87..377c379911 100644
--- a/keyboards/chimera_ls/rules.mk
+++ b/keyboards/chimera_ls/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# project specific files
diff --git a/keyboards/chimera_ortho/rules.mk b/keyboards/chimera_ortho/rules.mk
index 42258cead4..fbe6872001 100644
--- a/keyboards/chimera_ortho/rules.mk
+++ b/keyboards/chimera_ortho/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# project specific files
diff --git a/keyboards/chimera_ortho_plus/rules.mk b/keyboards/chimera_ortho_plus/rules.mk
index 62aa65197c..e99e79c327 100644
--- a/keyboards/chimera_ortho_plus/rules.mk
+++ b/keyboards/chimera_ortho_plus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chlx/merro60/rules.mk b/keyboards/chlx/merro60/rules.mk
index 511f2ca9de..20fb52aa43 100644
--- a/keyboards/chlx/merro60/rules.mk
+++ b/keyboards/chlx/merro60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/choc_taro/rules.mk b/keyboards/choc_taro/rules.mk
index 3cd8a67a45..b8b8a0bc35 100644
--- a/keyboards/choc_taro/rules.mk
+++ b/keyboards/choc_taro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/choco60/keymaps/default/config.h b/keyboards/choco60/keymaps/default/config.h
deleted file mode 100644
index cf4c8bcbe6..0000000000
--- a/keyboards/choco60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Naoto Takai
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/choco60/rev1/rules.mk b/keyboards/choco60/rev1/rules.mk
index 514573a2a1..ff16426c32 100644
--- a/keyboards/choco60/rev1/rules.mk
+++ b/keyboards/choco60/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/choco60/rev2/rules.mk b/keyboards/choco60/rev2/rules.mk
index 85680a44d1..f8bad8e08e 100644
--- a/keyboards/choco60/rev2/rules.mk
+++ b/keyboards/choco60/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/christmas_tree/keymaps/default/config.h b/keyboards/christmas_tree/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/christmas_tree/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/christmas_tree/rules.mk b/keyboards/christmas_tree/rules.mk
index b2baf8e3a4..dada70c309 100644
--- a/keyboards/christmas_tree/rules.mk
+++ b/keyboards/christmas_tree/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = christmas_tree/V2017
diff --git a/keyboards/ck60i/rules.mk b/keyboards/ck60i/rules.mk
index baf54d1e2e..1f4aeed422 100644
--- a/keyboards/ck60i/rules.mk
+++ b/keyboards/ck60i/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BACKLIGHT_DRIVER = pwm
diff --git a/keyboards/ckeys/handwire_101/rules.mk b/keyboards/ckeys/handwire_101/rules.mk
index 07eb32a083..8fa32bcee5 100755
--- a/keyboards/ckeys/handwire_101/rules.mk
+++ b/keyboards/ckeys/handwire_101/rules.mk
@@ -13,9 +13,6 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
TERMINAL_ENABLE = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ckeys/nakey/keymaps/default/keymap.c b/keyboards/ckeys/nakey/keymaps/default/keymap.c
index 4ecacc731f..c17cd35cb8 100644
--- a/keyboards/ckeys/nakey/keymaps/default/keymap.c
+++ b/keyboards/ckeys/nakey/keymaps/default/keymap.c
@@ -17,10 +17,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_numpad_5x4( /* Base */
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
- KC_P0, KC_PDOT, KC_PENT \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
),
};
diff --git a/keyboards/ckeys/nakey/rules.mk b/keyboards/ckeys/nakey/rules.mk
index db728e0ac6..fcdb039968 100644
--- a/keyboards/ckeys/nakey/rules.mk
+++ b/keyboards/ckeys/nakey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ckeys/obelus/keymaps/default/config.h b/keyboards/ckeys/obelus/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/ckeys/obelus/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/ckeys/obelus/keymaps/default/keymap.c b/keyboards/ckeys/obelus/keymaps/default/keymap.c
index 870fdb10d3..5d5bfc6d28 100644
--- a/keyboards/ckeys/obelus/keymaps/default/keymap.c
+++ b/keyboards/ckeys/obelus/keymaps/default/keymap.c
@@ -14,10 +14,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[0] = LAYOUT_ortho_4x4( /* LAYER SELECT */
- _______, _______, _______, RESET, \
- TO(4), _______, _______, _______, \
- TO(1), TO(2), TO(3), _______, \
- _______, _______, _______, _______ \
+ _______, _______, _______, RESET,
+ TO(4), _______, _______, _______,
+ TO(1), TO(2), TO(3), _______,
+ _______, _______, _______, _______
),
/* NUMPAD
* ,-----------------------.
@@ -31,10 +31,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[1] = LAYOUT_ortho_4x4( /* NUMPAD */
- KC_P7, KC_P8, KC_P9, KC_PAST, \
- KC_P4, KC_P5, KC_P6, KC_PMNS, \
- KC_P1, KC_P2, KC_P3, KC_PPLS, \
- KC_P0, KC_PDOT, KC_PSLS, LT(5, KC_PENT) \
+ KC_P7, KC_P8, KC_P9, KC_PAST,
+ KC_P4, KC_P5, KC_P6, KC_PMNS,
+ KC_P1, KC_P2, KC_P3, KC_PPLS,
+ KC_P0, KC_PDOT, KC_PSLS, LT(5, KC_PENT)
),
/* NUMPAD SUPPLEMENT
* ,-----------------------.
@@ -48,10 +48,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[5] = LAYOUT_ortho_4x4( /* NUMPAD SUPPLEMENT */
- KC_NLCK, _______, _______, TO(0), \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______ \
+ KC_NLCK, _______, _______, TO(0),
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
),
/* NAV
* ,-----------------------.
@@ -65,10 +65,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[2] = LAYOUT_ortho_4x4( /* NAV CLUSTER */
- KC_INS, KC_PGUP, KC_TAB, KC_PSCR, \
- KC_DEL, KC_PGDN, KC_VOLD, KC_VOLU, \
- KC_HOME, KC_UP, KC_END, TO(0), \
- KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT \
+ KC_INS, KC_PGUP, KC_TAB, KC_PSCR,
+ KC_DEL, KC_PGDN, KC_VOLD, KC_VOLU,
+ KC_HOME, KC_UP, KC_END, TO(0),
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT
),
/* GAMING
* ,-----------------------.
@@ -82,10 +82,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[3] = LAYOUT_ortho_4x4( /* GAMING */
- LT(4, KC_ESC), KC_1, KC_2, KC_3, \
- KC_TAB, KC_Q, KC_W, KC_E, \
- KC_LSFT, KC_A, KC_S, KC_D, \
- KC_LCTL, KC_C, KC_R, KC_SPC \
+ LT(4, KC_ESC), KC_1, KC_2, KC_3,
+ KC_TAB, KC_Q, KC_W, KC_E,
+ KC_LSFT, KC_A, KC_S, KC_D,
+ KC_LCTL, KC_C, KC_R, KC_SPC
),
/* MUSIC
* ,-----------------------.
@@ -99,10 +99,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------- '
*/
[4] = LAYOUT_ortho_4x4( /* NUMPAD SUPPLEMENT */
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- MU_TOG, MU_MOD, XXXXXXX, TO(0) \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ MU_TOG, MU_MOD, XXXXXXX, TO(0)
),
};
diff --git a/keyboards/ckeys/obelus/rules.mk b/keyboards/ckeys/obelus/rules.mk
index fa470c1517..97e2b0beb5 100644
--- a/keyboards/ckeys/obelus/rules.mk
+++ b/keyboards/ckeys/obelus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk
index 2b322b2ab1..ea0154859b 100755
--- a/keyboards/ckeys/thedora/rules.mk
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/ckeys/washington/rules.mk b/keyboards/ckeys/washington/rules.mk
index 925ee3d164..f5b9339de7 100644
--- a/keyboards/ckeys/washington/rules.mk
+++ b/keyboards/ckeys/washington/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/claw44/keymaps/default/keymap.c b/keyboards/claw44/keymaps/default/keymap.c
index e8416b9c65..204c0c94e6 100644
--- a/keyboards/claw44/keymaps/default/keymap.c
+++ b/keyboards/claw44/keymaps/default/keymap.c
@@ -34,7 +34,7 @@ enum layer_number {
#define KC_A_DEL ALT_T(KC_DEL) // alt
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
+ [_QWERTY] = LAYOUT(
//,--------+--------+---------+--------+---------+--------. ,--------+---------+--------+---------+--------+--------.
KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
//|--------+--------+---------+--------+---------+--------| |--------+---------+--------+---------+--------+--------|
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `----------+--------+---------+--------' `--------+---------+--------+---------'
),
- [_RAISE] = LAYOUT( \
+ [_RAISE] = LAYOUT(
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
_______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// `--------+--------+--------+--------' `--------+--------+--------+--------'
),
- [_LOWER] = LAYOUT( \
+ [_LOWER] = LAYOUT(
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/claw44/rev1/rules.mk b/keyboards/claw44/rev1/rules.mk
index 3538ad5680..a66eb7d352 100644
--- a/keyboards/claw44/rev1/rules.mk
+++ b/keyboards/claw44/rev1/rules.mk
@@ -4,14 +4,11 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
OLED_ENABLE = no # Add OLED displays support
SPLIT_KEYBOARD = yes
diff --git a/keyboards/claw44/rules.mk b/keyboards/claw44/rules.mk
index 433f663824..6ba5e853fb 100644
--- a/keyboards/claw44/rules.mk
+++ b/keyboards/claw44/rules.mk
@@ -5,19 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
DEFAULT_FOLDER = claw44/rev1
diff --git a/keyboards/clawsome/bookerboard/rules.mk b/keyboards/clawsome/bookerboard/rules.mk
index dbf0923070..71fd5a7621 100644
--- a/keyboards/clawsome/bookerboard/rules.mk
+++ b/keyboards/clawsome/bookerboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/coupe/rules.mk b/keyboards/clawsome/coupe/rules.mk
index 13ab508782..8cff9ddd1c 100644
--- a/keyboards/clawsome/coupe/rules.mk
+++ b/keyboards/clawsome/coupe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/doodle/rules.mk b/keyboards/clawsome/doodle/rules.mk
index a7f737a086..71122e62b2 100644
--- a/keyboards/clawsome/doodle/rules.mk
+++ b/keyboards/clawsome/doodle/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/clawsome/fightpad/rules.mk b/keyboards/clawsome/fightpad/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/clawsome/fightpad/rules.mk
+++ b/keyboards/clawsome/fightpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/gamebuddy/v1_0/rules.mk b/keyboards/clawsome/gamebuddy/v1_0/rules.mk
index 6b6d548822..acdc45d40a 100644
--- a/keyboards/clawsome/gamebuddy/v1_0/rules.mk
+++ b/keyboards/clawsome/gamebuddy/v1_0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/gamebuddy/v1_m/rules.mk b/keyboards/clawsome/gamebuddy/v1_m/rules.mk
index a7f737a086..71122e62b2 100644
--- a/keyboards/clawsome/gamebuddy/v1_m/rules.mk
+++ b/keyboards/clawsome/gamebuddy/v1_m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/clawsome/hatchback/rules.mk b/keyboards/clawsome/hatchback/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/clawsome/hatchback/rules.mk
+++ b/keyboards/clawsome/hatchback/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/luggage_rack/rules.mk b/keyboards/clawsome/luggage_rack/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/clawsome/luggage_rack/rules.mk
+++ b/keyboards/clawsome/luggage_rack/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/numeros/rules.mk b/keyboards/clawsome/numeros/rules.mk
index 6550b56feb..0b3b307cc7 100644
--- a/keyboards/clawsome/numeros/rules.mk
+++ b/keyboards/clawsome/numeros/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/roadster/rules.mk b/keyboards/clawsome/roadster/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/clawsome/roadster/rules.mk
+++ b/keyboards/clawsome/roadster/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/sedan/rules.mk b/keyboards/clawsome/sedan/rules.mk
index 732c4b6478..dc53473f33 100644
--- a/keyboards/clawsome/sedan/rules.mk
+++ b/keyboards/clawsome/sedan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/sidekick/rules.mk b/keyboards/clawsome/sidekick/rules.mk
index dbf0923070..71fd5a7621 100644
--- a/keyboards/clawsome/sidekick/rules.mk
+++ b/keyboards/clawsome/sidekick/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/clawsome/suv/rules.mk b/keyboards/clawsome/suv/rules.mk
index a7f737a086..71122e62b2 100644
--- a/keyboards/clawsome/suv/rules.mk
+++ b/keyboards/clawsome/suv/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/clueboard/17/keymaps/default/keymap.c b/keyboards/clueboard/17/keymaps/default/keymap.c
index 65c64e43c4..155eb6e6e3 100644
--- a/keyboards/clueboard/17/keymaps/default/keymap.c
+++ b/keyboards/clueboard/17/keymaps/default/keymap.c
@@ -22,11 +22,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '-------------------'
*/
[_BL] = LAYOUT_numpad_5x4(
- LT(_FL, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
- KC_P0, KC_PDOT, KC_PENT \
+ LT(_FL, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
),
/* Keymap _FL: Function Layer
@@ -43,10 +43,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '-------------------'
*/
[_FL] = LAYOUT_numpad_5x4(
- LT(_FL, KC_NLCK), _______, _______, RGB_TOG, \
- _______, RGB_SAI, _______, \
- RGB_HUD, BL_STEP, RGB_HUI, RGB_VAI, \
- _______, RGB_SAD, _______, \
- RGB_MOD, _______, RGB_VAD \
+ LT(_FL, KC_NLCK), _______, _______, RGB_TOG,
+ _______, RGB_SAI, _______,
+ RGB_HUD, BL_STEP, RGB_HUI, RGB_VAI,
+ _______, RGB_SAD, _______,
+ RGB_MOD, _______, RGB_VAD
)
};
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default/config.h b/keyboards/clueboard/2x1800/2018/keymaps/default/config.h
deleted file mode 100644
index dd48c69e36..0000000000
--- a/keyboards/clueboard/2x1800/2018/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Zach White <skullydazed@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c
index 04fa371b09..71c5226eca 100644
--- a/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c
+++ b/keyboards/clueboard/2x1800/2018/keymaps/default_4u/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_4u_space(
- KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \
- \
- KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, \
- KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+
+ KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c
index 866369a775..5a1a00c194 100644
--- a/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c
+++ b/keyboards/clueboard/2x1800/2018/keymaps/default_7u/keymap.c
@@ -17,13 +17,13 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_7u_space(
- KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- \
- KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, \
- KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+
+ KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c
index ca6be8326e..8a1e4ac5c6 100644
--- a/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c
+++ b/keyboards/clueboard/2x1800/2018/keymaps/macroboard/keymap.c
@@ -41,13 +41,13 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- MACRO01, MACRO02, MACRO03, MACRO04, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \
- \
- MACRO05, MACRO06, MACRO07, MACRO08, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- MACRO09, MACRO10, MACRO11, MACRO12, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, \
- MACRO13, MACRO14, MACRO15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- MACRO16, MACRO17, MACRO18, MACRO19, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- MACRO20, MACRO21, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ MACRO01, MACRO02, MACRO03, MACRO04, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+
+ MACRO05, MACRO06, MACRO07, MACRO08, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ MACRO09, MACRO10, MACRO11, MACRO12, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS,
+ MACRO13, MACRO14, MACRO15, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ MACRO16, MACRO17, MACRO18, MACRO19, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ MACRO20, MACRO21, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c
index 15c5f6ebb4..02d1421324 100644
--- a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c
+++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_left/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \
- \
- KC_NO, KC_NO, KC_BTN4, KC_BTN5, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_WH_U, KC_NO, KC_MS_U, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS, \
- KC_MS_L, KC_BTN3, KC_MS_R, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_WH_D, KC_BTN1, KC_MS_D, KC_BTN2, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_WH_L, KC_WH_R, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+
+ KC_NO, KC_NO, KC_BTN4, KC_BTN5, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_WH_U, KC_NO, KC_MS_U, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PSLS,
+ KC_MS_L, KC_BTN3, KC_MS_R, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_WH_D, KC_BTN1, KC_MS_D, KC_BTN2, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_WH_L, KC_WH_R, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c
index 3e66342499..1640229f97 100644
--- a/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c
+++ b/keyboards/clueboard/2x1800/2018/keymaps/mouseboard_right/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \
- \
- KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, \
- KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_NO, KC_MS_U, KC_NO, KC_WH_U, \
- KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MS_L, KC_BTN3, KC_MS_R, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D, \
- KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_WH_L, KC_WH_R \
+ KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+
+ KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2,
+ KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_NO, KC_MS_U, KC_NO, KC_WH_U,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_MS_L, KC_BTN3, KC_MS_R,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_BTN1, KC_MS_D, KC_BTN2, KC_WH_D,
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_WH_L, KC_WH_R
)
};
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/config.h b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/config.h
deleted file mode 100644
index dd48c69e36..0000000000
--- a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_ansi/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Zach White <skullydazed@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/config.h b/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/config.h
deleted file mode 100644
index dd48c69e36..0000000000
--- a/keyboards/clueboard/2x1800/2019/keymaps/default_4u_iso/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Zach White <skullydazed@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/config.h b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/config.h
deleted file mode 100644
index dd48c69e36..0000000000
--- a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_ansi/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Zach White <skullydazed@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/config.h b/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/config.h
deleted file mode 100644
index dd48c69e36..0000000000
--- a/keyboards/clueboard/2x1800/2019/keymaps/default_7u_iso/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Zach White <skullydazed@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c
index 14d76a59fc..f29feccc62 100644
--- a/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c
+++ b/keyboards/clueboard/2x1800/2021/keymaps/default_4u/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_4u_space(
- KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, \
- \
- KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+
+ KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c
index 3717bd5408..395956cec7 100644
--- a/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c
+++ b/keyboards/clueboard/2x1800/2021/keymaps/default_7u/keymap.c
@@ -17,13 +17,13 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_7u_space(
- KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- \
- KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+
+ KC_PMNS, KC_NLCK, KC_PSLS, KC_PAST, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_PENT, KC_P1, KC_P2, KC_P3, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/clueboard/60/keymaps/default/keymap.c b/keyboards/clueboard/60/keymaps/default/keymap.c
index 89d2180ca6..b33a22f937 100644
--- a/keyboards/clueboard/60/keymaps/default/keymap.c
+++ b/keyboards/clueboard/60/keymaps/default/keymap.c
@@ -45,22 +45,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_BL] = LAYOUT_all(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL),
[_FL] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______,\
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
_______,_______,_______, _______, _______, _______, MO(_FL), _______),
[_CL] = LAYOUT_all(
- BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______,\
- _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
+ BL_STEP,S_BSKTC,S_ODEJY,S_RCKBY,S_DOEDR,S_SCALE,S_ONEUP,S_COIN, S_SONIC,S_ZELDA,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______, _______, _______, _______, _______, _______, MO(_FL), _______)
};
diff --git a/keyboards/clueboard/60/keymaps/default_aek/keymap.c b/keyboards/clueboard/60/keymaps/default_aek/keymap.c
index ed4132f415..413ca822f6 100644
--- a/keyboards/clueboard/60/keymaps/default_aek/keymap.c
+++ b/keyboards/clueboard/60/keymaps/default_aek/keymap.c
@@ -21,21 +21,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_BL] = LAYOUT_aek(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL),
[_FL] = LAYOUT_aek(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\
- _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______, _______, _______, _______, _______, MO(_FL), _______),
[_CL] = LAYOUT_aek(
- BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______,\
- _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
+ BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______, _______, _______, _______, _______, MO(_FL), _______)
};
diff --git a/keyboards/clueboard/66/rev3/rules.mk b/keyboards/clueboard/66/rev3/rules.mk
index 56d1ab011f..924437d89b 100644
--- a/keyboards/clueboard/66/rev3/rules.mk
+++ b/keyboards/clueboard/66/rev3/rules.mk
@@ -1,4 +1 @@
-# Build Options
-# comment out to disable the options.
-#
BACKLIGHT_DRIVER = custom
diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c
index 9c4bd40794..23eb08e189 100644
--- a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c
+++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c
@@ -26,27 +26,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT_66_ansi(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT_66_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP,
_______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END),
/* Keymap _CL: Control layer
*/
[_CL] = LAYOUT_66_ansi(
- BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
+ BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI,
+ _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
};
diff --git a/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c
index 3d640d89b1..26322ad223 100644
--- a/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c
+++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/default/keymap.c
@@ -50,28 +50,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP,
_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END),
/* Keymap _CL: Control layer
*/
[_CL] = LAYOUT(
- BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
+ BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC,
+ _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
};
diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c
index 9c4bd40794..23eb08e189 100644
--- a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c
+++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c
@@ -26,27 +26,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT_66_ansi(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT_66_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP,
_______,_______,_______, _______, _______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END),
/* Keymap _CL: Control layer
*/
[_CL] = LAYOUT_66_ansi(
- BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI, \
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
+ BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, RGB_TOG, RGB_VAI,
+ _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
};
diff --git a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c
index 3b8ff66005..c0aaf2dd0d 100644
--- a/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c
+++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/default/keymap.c
@@ -50,28 +50,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NUHS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NUBS,KC_RSFT, KC_UP, \
+ KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUHS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NUBS,KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_RGUI,KC_RALT,MO(_FL),KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_PGUP, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_MUTE, KC_VOLD,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, KC_PGUP,
_______,_______,_______, _______,_______, _______,_______,MO(_FL),_______,KC_HOME,KC_PGDN,KC_END),
/* Keymap _CL: Control layer
*/
[_CL] = LAYOUT(
- BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC, \
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC, \
- _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI, \
+ BL_STEP,S_ONEUP,S_SCALE,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, BL_TOGG, BL_INC,
+ _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,
+ _______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
_______,_______,_______, BL_BRTG,BL_BRTG, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
};
diff --git a/keyboards/clueboard/66_hotswap/prototype/rules.mk b/keyboards/clueboard/66_hotswap/prototype/rules.mk
index f144042edd..8193682fd3 100644
--- a/keyboards/clueboard/66_hotswap/prototype/rules.mk
+++ b/keyboards/clueboard/66_hotswap/prototype/rules.mk
@@ -1,6 +1,3 @@
-# Build Options
-# comment out to disable the options.
-#
BACKLIGHT_DRIVER = custom
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/clueboard/card/info.json b/keyboards/clueboard/card/info.json
index 24088b2c41..1a01f17d67 100644
--- a/keyboards/clueboard/card/info.json
+++ b/keyboards/clueboard/card/info.json
@@ -10,7 +10,7 @@
"backlight": true,
"bluetooth": false,
"bootmagic": false,
- "command": true,
+ "command": false,
"console": true,
"extrakey": true,
"lto": true,
diff --git a/keyboards/clueboard/card/keymaps/default/config.h b/keyboards/clueboard/card/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/clueboard/card/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/clueboard/card/keymaps/default/keymap.c b/keyboards/clueboard/card/keymaps/default/keymap.c
index 23ff1c4ec2..84b7d61ac9 100644
--- a/keyboards/clueboard/card/keymaps/default/keymap.c
+++ b/keyboards/clueboard/card/keymaps/default/keymap.c
@@ -8,11 +8,11 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- RGB_TOG, RGB_SAI, RGB_VAI, \
- RGB_HUD, RGB_HUI, \
- RGB_MOD, RGB_SAD, RGB_VAD, \
- BL_STEP, \
- SONG_SU,SONG_SC,SONG_GB \
+ RGB_TOG, RGB_SAI, RGB_VAI,
+ RGB_HUD, RGB_HUI,
+ RGB_MOD, RGB_SAD, RGB_VAD,
+ BL_STEP,
+ SONG_SU,SONG_SC,SONG_GB
)
};
diff --git a/keyboards/clueboard/card/keymaps/default/rules.mk b/keyboards/clueboard/card/keymaps/default/rules.mk
index 7f764222e5..55e9563d3e 100644
--- a/keyboards/clueboard/card/keymaps/default/rules.mk
+++ b/keyboards/clueboard/card/keymaps/default/rules.mk
@@ -1,14 +1,4 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = no # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = no
+NKRO_ENABLE = yes
+AUDIO_ENABLE = no
diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c
index c30e508207..834c174ba9 100644
--- a/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c
+++ b/keyboards/clueboard/card/keymaps/rgb_effects/keymap.c
@@ -2,11 +2,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- RGB_TOG, RGB_SAI, RGB_VAI, \
- RGB_HUD, RGB_HUI, \
- RGB_MOD, RGB_SAD, RGB_VAD, \
- BL_STEP, \
- KC_NO, KC_NO, KC_NO \
+ RGB_TOG, RGB_SAI, RGB_VAI,
+ RGB_HUD, RGB_HUI,
+ RGB_MOD, RGB_SAD, RGB_VAD,
+ BL_STEP,
+ KC_NO, KC_NO, KC_NO
)
};
diff --git a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
index 554eddaded..55e9563d3e 100644
--- a/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
+++ b/keyboards/clueboard/card/keymaps/rgb_effects/rules.mk
@@ -1,14 +1,4 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = no # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = no
+NKRO_ENABLE = yes
+AUDIO_ENABLE = no
diff --git a/keyboards/cmm_studio/fuji65/config.h b/keyboards/cmm_studio/fuji65/config.h
new file mode 100644
index 0000000000..e93ae62c67
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/config.h
@@ -0,0 +1,67 @@
+/* Copyright 2021 CMM.Studio Freather
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x434D
+#define PRODUCT_ID 0x364D
+#define DEVICE_VER 0x0001
+#define MANUFACTURER CMM.Studio
+#define PRODUCT Fuji65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B5, B4, D7, D6, B6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B0, B1, B2, B3, D5, D3, D2, D1, D0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 8
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/cmm_studio/fuji65/fuji65.c b/keyboards/cmm_studio/fuji65/fuji65.c
new file mode 100644
index 0000000000..46695a0d21
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/fuji65.c
@@ -0,0 +1,20 @@
+/* Copyright 2020 CMM.Studio Freather
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fuji65.h"
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/cmm_studio/fuji65/fuji65.h b/keyboards/cmm_studio/fuji65/fuji65.h
new file mode 100644
index 0000000000..d5c1e02ece
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/fuji65.h
@@ -0,0 +1,38 @@
+/* Copyright 2021 CMM.Studio Freather
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX }, \
+}
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/cmm_studio/fuji65/info.json b/keyboards/cmm_studio/fuji65/info.json
new file mode 100644
index 0000000000..4d5080a831
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/info.json
@@ -0,0 +1,79 @@
+{
+ "keyboard_name": "cmm.studio fuji65",
+ "url": "",
+ "maintainer": "CMMS-Freather",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00 (B5,F7)", "x": 0, "y": 0 },
+ { "label": "K01 (B5,F6)", "x": 1, "y": 0 },
+ { "label": "K02 (B5,F5)", "x": 2, "y": 0 },
+ { "label": "K03 (B5,F4)", "x": 3, "y": 0 },
+ { "label": "K04 (B5,F1)", "x": 4, "y": 0 },
+ { "label": "K05 (B5,F0)", "x": 5, "y": 0 },
+ { "label": "K06 (B5,B0)", "x": 6, "y": 0 },
+ { "label": "K07 (B5,B1)", "x": 7, "y": 0 },
+ { "label": "K08 (B5,B2)", "x": 8, "y": 0 },
+ { "label": "K09 (B5,B3)", "x": 9, "y": 0 },
+ { "label": "K0A (B5,D5)", "x": 10, "y": 0 },
+ { "label": "K0B (B5,D3)", "x": 11, "y": 0 },
+ { "label": "K0C (B5,D2)", "x": 12, "y": 0 },
+ { "label": "K0D (B5,D1)", "x": 13, "y": 0 },
+ { "label": "K0E (B5,D0)", "x": 14, "y": 0 },
+ { "label": "K10 (B4,F7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K11 (B4,F6)", "x": 1.5, "y": 1 },
+ { "label": "K12 (B4,F5)", "x": 2.5, "y": 1 },
+ { "label": "K13 (B4,F4)", "x": 3.5, "y": 1 },
+ { "label": "K14 (B4,F1)", "x": 4.5, "y": 1 },
+ { "label": "K15 (B4,F0)", "x": 5.5, "y": 1 },
+ { "label": "K16 (B4,B0)", "x": 6.5, "y": 1 },
+ { "label": "K17 (B4,B1)", "x": 7.5, "y": 1 },
+ { "label": "K18 (B4,B2)", "x": 8.5, "y": 1 },
+ { "label": "K19 (B4,B3)", "x": 9.5, "y": 1 },
+ { "label": "K1A (B4,D5)", "x": 10.5, "y": 1 },
+ { "label": "K1B (B4,D3)", "x": 11.5, "y": 1 },
+ { "label": "K1C (B4,D2)", "x": 12.5, "y": 1 },
+ { "label": "K1D (B4,D1)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K1E (B4,D0)", "x": 15, "y": 1 },
+ { "label": "K20 (D7,F7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K21 (D7,F6)", "x": 1.75, "y": 2 },
+ { "label": "K22 (D7,F5)", "x": 2.75, "y": 2 },
+ { "label": "K23 (D7,F4)", "x": 3.75, "y": 2 },
+ { "label": "K24 (D7,F1)", "x": 4.75, "y": 2 },
+ { "label": "K25 (D7,F0)", "x": 5.75, "y": 2 },
+ { "label": "K26 (D7,B0)", "x": 6.75, "y": 2 },
+ { "label": "K27 (D7,B1)", "x": 7.75, "y": 2 },
+ { "label": "K28 (D7,B2)", "x": 8.75, "y": 2 },
+ { "label": "K29 (D7,B3)", "x": 9.75, "y": 2 },
+ { "label": "K2A (D7,D5)", "x": 10.75, "y": 2 },
+ { "label": "K2B (D7,D3)", "x": 11.75, "y": 2 },
+ { "label": "K2C (D7,D2)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K2E (D7,D0)", "x": 15, "y": 2 },
+ { "label": "K30 (D6,F7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K32 (D6,F5)", "x": 2.25, "y": 3 },
+ { "label": "K33 (D6,F4)", "x": 3.25, "y": 3 },
+ { "label": "K34 (D6,F1)", "x": 4.25, "y": 3 },
+ { "label": "K35 (D6,F0)", "x": 5.25, "y": 3 },
+ { "label": "K36 (D6,B0)", "x": 6.25, "y": 3 },
+ { "label": "K37 (D6,B1)", "x": 7.25, "y": 3 },
+ { "label": "K38 (D6,B2)", "x": 8.25, "y": 3 },
+ { "label": "K39 (D6,B3)", "x": 9.25, "y": 3 },
+ { "label": "K3A (D6,D5)", "x": 10.25, "y": 3 },
+ { "label": "K3B (D6,D3)", "x": 11.25, "y": 3 },
+ { "label": "K3C (D6,D2)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3D (D6,D1)", "x": 14, "y": 3 },
+ { "label": "K3E (D6,D0)", "x": 15, "y": 3 },
+ { "label": "K40 (B6,F7)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K41 (B6,F6)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K42 (B6,F5)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K46 (B6,B0)", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K49 (B6,B3)", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K4A (B6,D5)", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K4B (B6,D3)", "x": 13, "y": 4 },
+ { "label": "K4C (B6,D2)", "x": 14, "y": 4 },
+ { "label": "K4D (B6,D1)", "x": 15, "y": 4 }
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/cmm_studio/fuji65/keymaps/default/keymap.c b/keyboards/cmm_studio/fuji65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..da0538c82e
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2020 CMM.Studio Freather
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_TRNS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/cmm_studio/fuji65/keymaps/via/keymap.c b/keyboards/cmm_studio/fuji65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6b37798c9d
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 CMM.Studio Freather
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_TRNS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/cmm_studio/fuji65/keymaps/via/rules.mk b/keyboards/cmm_studio/fuji65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cmm_studio/fuji65/readme.md b/keyboards/cmm_studio/fuji65/readme.md
new file mode 100644
index 0000000000..d5438c5915
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/readme.md
@@ -0,0 +1,18 @@
+# CMM.Studio Fuji65
+
+CMM.Studio Fuji65 Keyboard
+
+![CMM.Studio Fuji65](https://i.imgur.com/dUPQpkZh.png)
+
+
+* Keyboard Maintainer: [CMM.Studio Freather](https://github.com/CMMS-Freather)
+* Hardware Supported: PCB, Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cmm_studio/fuji65:default
+
+
+For reset instruction, use the physical reset button on the back of the keyboard to enter bootloader mode
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/cmm_studio/fuji65/rules.mk b/keyboards/cmm_studio/fuji65/rules.mk
new file mode 100644
index 0000000000..bf28e77646
--- /dev/null
+++ b/keyboards/cmm_studio/fuji65/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# generated by KBFirmware JSON to QMK Parser
+# https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/cmm_studio/saka68/hotswap/rules.mk b/keyboards/cmm_studio/saka68/hotswap/rules.mk
index c38b5f2d03..df886cdfbf 100644
--- a/keyboards/cmm_studio/saka68/hotswap/rules.mk
+++ b/keyboards/cmm_studio/saka68/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cmm_studio/saka68/solder/rules.mk b/keyboards/cmm_studio/saka68/solder/rules.mk
index 9310ae063d..23b4bb17ca 100644
--- a/keyboards/cmm_studio/saka68/solder/rules.mk
+++ b/keyboards/cmm_studio/saka68/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coarse/cordillera/rules.mk b/keyboards/coarse/cordillera/rules.mk
index d1c149794e..9bdd0d72fe 100644
--- a/keyboards/coarse/cordillera/rules.mk
+++ b/keyboards/coarse/cordillera/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coarse/ixora/rules.mk b/keyboards/coarse/ixora/rules.mk
index 5026583b06..559be109a9 100644
--- a/keyboards/coarse/ixora/rules.mk
+++ b/keyboards/coarse/ixora/rules.mk
@@ -5,7 +5,7 @@ MCU = STM32F042
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -13,7 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/coarse/vinta/keymaps/default/keymap.c b/keyboards/coarse/vinta/keymaps/default/keymap.c
index 58a8f7ab59..119782b9ae 100644
--- a/keyboards/coarse/vinta/keymaps/default/keymap.c
+++ b/keyboards/coarse/vinta/keymaps/default/keymap.c
@@ -31,9 +31,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[0] = LAYOUT_69_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, RESET, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
};
diff --git a/keyboards/coarse/vinta/rules.mk b/keyboards/coarse/vinta/rules.mk
index fd336cf021..b503edcdee 100644
--- a/keyboards/coarse/vinta/rules.mk
+++ b/keyboards/coarse/vinta/rules.mk
@@ -5,7 +5,7 @@ MCU = STM32F042
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -13,7 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/cocoa40/keymaps/default/config.h b/keyboards/cocoa40/keymaps/default/config.h
deleted file mode 100644
index 01232ff92f..0000000000
--- a/keyboards/cocoa40/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2019 'Naoto Takai'
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
-
diff --git a/keyboards/cocoa40/rules.mk b/keyboards/cocoa40/rules.mk
index ba23678fe8..3ef3128f4b 100644
--- a/keyboards/cocoa40/rules.mk
+++ b/keyboards/cocoa40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE =no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/comet46/rules.mk b/keyboards/comet46/rules.mk
index d63a79aff2..814622226a 100644
--- a/keyboards/comet46/rules.mk
+++ b/keyboards/comet46/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# project specific files
diff --git a/keyboards/compound/rules.mk b/keyboards/compound/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/compound/rules.mk
+++ b/keyboards/compound/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/contender/config.h b/keyboards/contender/config.h
new file mode 100644
index 0000000000..0b5e5e9342
--- /dev/null
+++ b/keyboards/contender/config.h
@@ -0,0 +1,148 @@
+/*
+Copyright 2020 sotoba
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xC010
+#define DEVICE_VER 0x0001
+#define MANUFACTURER sotoba
+#define PRODUCT contender
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 5
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, D3, B5, B7, B4, B2 }
+#define MATRIX_COL_PINS { C7, D6, B3, B0, B1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN C6
+#define RGBLED_NUM 33
+#define RGBLIGHT_LED_MAP { \
+ 0, 1, 2, 3, \
+ 7, 6, 5, 4, \
+ 8, 9, 10, 11, \
+ 15, 14, 13, 12, \
+ 16, 17, 18, 19, \
+ 22, 21, 20, \
+ 25, 24, 23, 26, 27, 28, 29, 30, 31, 32 }
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 32 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/contender/contender.c b/keyboards/contender/contender.c
new file mode 100644
index 0000000000..5e00516206
--- /dev/null
+++ b/keyboards/contender/contender.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 sotoba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "contender.h"
diff --git a/keyboards/contender/contender.h b/keyboards/contender/contender.h
new file mode 100644
index 0000000000..4dd71a5d24
--- /dev/null
+++ b/keyboards/contender/contender.h
@@ -0,0 +1,43 @@
+/* Copyright 2020 sotoba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, k34, \
+ k40, k41, k42, k43, k44, \
+ k50, k51, k52, k53 \
+) { \
+ { KC_NO, k00, k01, k02, k03 }, \
+ { KC_NO, k10, k11, k12, k13 }, \
+ { KC_NO, k20, k21, k22, k23 }, \
+ { k30, k31, k32, k33, k34 }, \
+ { k40, k41, k42, k43, k44 }, \
+ { k50, k51, k52, k53, KC_NO } \
+}
diff --git a/keyboards/contender/info.json b/keyboards/contender/info.json
new file mode 100644
index 0000000000..1f1d8bf534
--- /dev/null
+++ b/keyboards/contender/info.json
@@ -0,0 +1,37 @@
+{
+ "keyboard_name": "contender",
+ "url": "https://github.com/sotoba/contender",
+ "maintainer": "sotoba",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":1, "y":0},
+ {"label":"Tab", "x":2, "y":0},
+ {"label":"Shift", "x":3, "y":0},
+ {"label":"Back", "x":4, "y":0},
+ {"label":"Num", "x":1, "y":1.25},
+ {"label":"/", "x":2, "y":1.25},
+ {"label":"*", "x":3, "y":1.25},
+ {"label":"=", "x":4, "y":1.25},
+ {"label":"7", "x":1, "y":2.25},
+ {"label":"8", "x":2, "y":2.25},
+ {"label":"9", "x":3, "y":2.25},
+ {"label":"-", "x":4, "y":2.25},
+ {"label":"fn","x":0, "y":3.25},
+ {"label":"4", "x":1, "y":3.25},
+ {"label":"5", "x":2, "y":3.25},
+ {"label":"6", "x":3, "y":3.25},
+ {"label":"+", "x":4, "y":3.25},
+ {"label":"RGB","x":0, "y":4.25},
+ {"label":"1", "x":1, "y":4.25},
+ {"label":"2", "x":2, "y":4.25},
+ {"label":"3", "x":3, "y":4.25},
+ {"label":"Enter", "x":4, "y":4.25, "h":2},
+ {"label":"TG","x":0, "y":5.25},
+ {"label":"0", "x":1, "y":5.25},
+ {"label":"00", "x":2, "y":5.25},
+ {"label":".", "x":3, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/contender/keymaps/default/config.h b/keyboards/contender/keymaps/default/config.h
new file mode 100644
index 0000000000..c68cb99f37
--- /dev/null
+++ b/keyboards/contender/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/*
+Copyright 2020 sotoba
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/keyboards/contender/keymaps/default/keymap.c b/keyboards/contender/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7784c7d590
--- /dev/null
+++ b/keyboards/contender/keymaps/default/keymap.c
@@ -0,0 +1,111 @@
+/* Copyright 2020 sotoba
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _UNRULY,
+ _FUNCTION
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ DOUBLE_ZERO = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESCAPE, KC_LSFT, KC_TAB, KC_BSPACE,
+ KC_NLCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_EQUAL,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS,
+ MO(_FUNCTION), KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS,
+ RGB_TOG, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
+ TG(_UNRULY), KC_KP_0, DOUBLE_ZERO, KC_KP_DOT
+ ),
+ /* Lightning */
+ [_UNRULY] = LAYOUT(
+ KC_ESCAPE, KC_LSFT, KC_TAB, KC_BSPACE,
+ KC_NLCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_EQUAL,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS,
+ KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS,
+ KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
+ KC_TRNS, KC_KP_0, DOUBLE_ZERO, KC_KP_DOT
+ ),
+ /* Function */
+ [_FUNCTION] = LAYOUT(
+ RESET, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, RGB_RMOD, RGB_MOD, KC_NO, KC_NO,
+ KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO,
+ KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case DOUBLE_ZERO:
+ if (record->event.pressed) {
+ // when keycode DOUBLE_ZERO is pressed
+ SEND_STRING("00");
+ }
+ break;
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_LAYERS
+const rgblight_segment_t PROGMEM num_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {26, 7, HSV_SPRINGGREEN}
+);
+
+const rgblight_segment_t PROGMEM unruly_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 4, HSV_OFF},
+ {4, 2, HSV_WHITE},
+ {6, 2, HSV_PURPLE},
+ {8, 2, HSV_RED},
+ {10, 2, HSV_BLUE},
+ {12, 2, HSV_YELLOW},
+ {14, 2, HSV_GREEN},
+ {16, 3, HSV_ORANGE},
+ {19, 1, HSV_OFF},
+ {20, 3, HSV_PINK},
+ {23, 10, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ num_layer,
+ unruly_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = rgb_layers;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _UNRULY));
+ return state;
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.num_lock);
+ return true;
+}
+
+#endif
diff --git a/keyboards/contender/keymaps/default/readme.md b/keyboards/contender/keymaps/default/readme.md
new file mode 100644
index 0000000000..b623b296db
--- /dev/null
+++ b/keyboards/contender/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for contender
diff --git a/keyboards/contender/readme.md b/keyboards/contender/readme.md
new file mode 100644
index 0000000000..281ad4dabf
--- /dev/null
+++ b/keyboards/contender/readme.md
@@ -0,0 +1,26 @@
+# contender
+
+![](https://i.imgur.com/JME6nwB.jpg)
+
+A number pad for hardboot.
+
+* Keyboard Maintainer: [sotoba](https://github.com/sotoba)
+* Hardware Supported: Contender PCB
+* Hardware Availability: [BOOTH: stupa-devices](https://stupa-devices.booth.pm/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make contender:default
+
+Flashing example for this keyboard:
+
+ make contender:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/contender/rules.mk b/keyboards/contender/rules.mk
new file mode 100644
index 0000000000..72c7f6b2ff
--- /dev/null
+++ b/keyboards/contender/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/contra/rules.mk b/keyboards/contra/rules.mk
index 72b4d86e97..c4e2ae20d1 100755
--- a/keyboards/contra/rules.mk
+++ b/keyboards/contra/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/a1200/miss1200/rules.mk b/keyboards/converter/a1200/miss1200/rules.mk
index 4ccdf5bb3e..0d74c96481 100644
--- a/keyboards/converter/a1200/miss1200/rules.mk
+++ b/keyboards/converter/a1200/miss1200/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/a1200/teensy2pp/rules.mk b/keyboards/converter/a1200/teensy2pp/rules.mk
index 5f74692015..f229897f1e 100644
--- a/keyboards/converter/a1200/teensy2pp/rules.mk
+++ b/keyboards/converter/a1200/teensy2pp/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 8f4649f556..93bdbf6abf 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -5,14 +5,13 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = no # Enable N-Key Rollover
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
diff --git a/keyboards/converter/hp_46010a/keymaps/default/keymap.c b/keyboards/converter/hp_46010a/keymaps/default/keymap.c
index cb65bd422e..8aadd2480a 100644
--- a/keyboards/converter/hp_46010a/keymaps/default/keymap.c
+++ b/keyboards/converter/hp_46010a/keymaps/default/keymap.c
@@ -35,11 +35,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[0] = LAYOUT(
- KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4,KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_INS, KC_HOME, KC_PAST, KC_PSLS, KC_PPLS, KC_PMNS, \
- KC_TAB, KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_P7, KC_P8, KC_P9, KC_PENT, \
- KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PCMM, \
- KC_DEL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,KC_RSFT, KC_APP, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_TAB, \
- KC_LGUI, KC_LALT, KC_SPACE , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4,KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPC, KC_INS, KC_HOME, KC_PAST, KC_PSLS, KC_PPLS, KC_PMNS,
+ KC_TAB, KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_P7, KC_P8, KC_P9, KC_PENT,
+ KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PCMM,
+ KC_DEL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,KC_RSFT, KC_APP, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_TAB,
+ KC_LGUI, KC_LALT, KC_SPACE , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
} ; \ No newline at end of file
diff --git a/keyboards/converter/hp_46010a/rules.mk b/keyboards/converter/hp_46010a/rules.mk
index f241c30a8c..1beb767f99 100644
--- a/keyboards/converter/hp_46010a/rules.mk
+++ b/keyboards/converter/hp_46010a/rules.mk
@@ -5,23 +5,20 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = no
WAIT_FOR_USB = yes
LAYOUTS_HAS_RGB = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC = matrix.c
diff --git a/keyboards/converter/ibm_terminal/keymaps/default/config.h b/keyboards/converter/ibm_terminal/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/converter/ibm_terminal/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
index d0be2c2cea..e3cb087a76 100644
--- a/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
+++ b/keyboards/converter/ibm_terminal/keymaps/default/rules.mk
@@ -1,17 +1,10 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_USE_USART = yes
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/converter/ibm_terminal/rules.mk b/keyboards/converter/ibm_terminal/rules.mk
index b73da1a70f..277e828269 100644
--- a/keyboards/converter/ibm_terminal/rules.mk
+++ b/keyboards/converter/ibm_terminal/rules.mk
@@ -5,21 +5,18 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_USE_USART = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC = matrix.c led.c
diff --git a/keyboards/converter/m0110_usb/keymaps/default/keymap.c b/keyboards/converter/m0110_usb/keymaps/default/keymap.c
index c2eeb5144e..6c42ee5cf1 100644
--- a/keyboards/converter/m0110_usb/keymaps/default/keymap.c
+++ b/keyboards/converter/m0110_usb/keymaps/default/keymap.c
@@ -48,10 +48,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[0] = LAYOUT_ansi(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LALT, KC_LGUI, KC_SPC, MO(1), LT(1, KC_BSLASH), KC_LEFT, KC_RGHT, KC_DOWN, KC_P0, KC_PDOT),
@@ -83,10 +83,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST, \
- KC_TAB, KC_HOME, KC_UP, KC_PGUP, RESET, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_INS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_LCAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LCTL, KC_END, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_PGDN, KC_DOWN, KC_PGUP, KC_P1, KC_P2, KC_P3, KC_PENT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NLCK, KC_EQL, KC_PSLS, KC_PAST,
+ KC_TAB, KC_HOME, KC_UP, KC_PGUP, RESET, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_INS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_LCAP, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LCTL, KC_END, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_PGDN, KC_DOWN, KC_PGUP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LALT, KC_LGUI, KC_SPC, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_PGDN, KC_P0, KC_PDOT),
}; \ No newline at end of file
diff --git a/keyboards/converter/m0110_usb/rules.mk b/keyboards/converter/m0110_usb/rules.mk
index 288b1729f0..20733dcd72 100644
--- a/keyboards/converter/m0110_usb/rules.mk
+++ b/keyboards/converter/m0110_usb/rules.mk
@@ -8,14 +8,13 @@ F_CPU = 8000000
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = no # Enable N-Key Rollover
EXTRAKEY_ENABLE = yes
USB_HID_ENABLE = yes
BACKLIGHT_ENABLE = no
diff --git a/keyboards/converter/modelm101/keymaps/default/config.h b/keyboards/converter/modelm101/keymaps/default/config.h
deleted file mode 100644
index 779e5a858f..0000000000
--- a/keyboards/converter/modelm101/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 iw0rm3r
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/converter/modelm101/rules.mk b/keyboards/converter/modelm101/rules.mk
index fd20c89aa6..9a928c73e6 100644
--- a/keyboards/converter/modelm101/rules.mk
+++ b/keyboards/converter/modelm101/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/modelm_ssk/rules.mk b/keyboards/converter/modelm_ssk/rules.mk
index eab17f7d95..90c1c01315 100644
--- a/keyboards/converter/modelm_ssk/rules.mk
+++ b/keyboards/converter/modelm_ssk/rules.mk
@@ -12,11 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-# Do not enable NKRO_ENABLE. The SSK lacks diodes and cannot support it
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h b/keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h
deleted file mode 100644
index 667668959a..0000000000
--- a/keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Adam Newbold <adam@neatnik.net>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c b/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c
index d4aed559f4..a8b8f568ff 100644
--- a/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c
+++ b/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c
@@ -34,9 +34,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+-------+ +----------+-------+-------+ +-------+-------+
*/
[0] = LAYOUT(
- KC_ESCAPE, KC_KP_7, KC_KP_8, KC_KP_9, KC_LEFT_PAREN, KC_RIGHT_PAREN, \
- KC_LEFT, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_KP_SLASH, \
- KC_RIGHT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, KC_KP_ASTERISK, \
- KC_SPACE, KC_KP_0, KC_KP_COMMA, KC_KP_DOT, KC_RETURN, KC_QUESTION \
+ KC_ESCAPE, KC_KP_7, KC_KP_8, KC_KP_9, KC_LEFT_PAREN, KC_RIGHT_PAREN,
+ KC_LEFT, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_MINUS, KC_KP_SLASH,
+ KC_RIGHT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, KC_KP_ASTERISK,
+ KC_SPACE, KC_KP_0, KC_KP_COMMA, KC_KP_DOT, KC_RETURN, KC_QUESTION
),
};
diff --git a/keyboards/converter/numeric_keypad_IIe/rules.mk b/keyboards/converter/numeric_keypad_IIe/rules.mk
index 0099557cbe..eae129b29b 100644
--- a/keyboards/converter/numeric_keypad_IIe/rules.mk
+++ b/keyboards/converter/numeric_keypad_IIe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk
index f83a18afd6..c5e680b883 100644
--- a/keyboards/converter/palm_usb/rules.mk
+++ b/keyboards/converter/palm_usb/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
#HARDWARE_SERIAL = yes
CUSTOM_MATRIX = yes
diff --git a/keyboards/converter/periboard_512/rules.mk b/keyboards/converter/periboard_512/rules.mk
index fd20c89aa6..9a928c73e6 100644
--- a/keyboards/converter/periboard_512/rules.mk
+++ b/keyboards/converter/periboard_512/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/converter/siemens_tastatur/keymaps/default/config.h b/keyboards/converter/siemens_tastatur/keymaps/default/config.h
deleted file mode 100644
index 76d8106dec..0000000000
--- a/keyboards/converter/siemens_tastatur/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2019 Yiancar
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-#pragma once
-
-// place overrides here
diff --git a/keyboards/converter/siemens_tastatur/rules.mk b/keyboards/converter/siemens_tastatur/rules.mk
index 08cc9741a3..2a119a9bab 100644
--- a/keyboards/converter/siemens_tastatur/rules.mk
+++ b/keyboards/converter/siemens_tastatur/rules.mk
@@ -6,15 +6,18 @@ BOOTLOADER = stm32duino
SRC = matrix.c
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
+SLEEP_LED_ENABLE = yes
CUSTOM_MATRIX = yes
diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk
index 0f53fde80e..2f2ddde1d0 100644
--- a/keyboards/converter/sun_usb/rules.mk
+++ b/keyboards/converter/sun_usb/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = lufa-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
#HARDWARE_SERIAL = yes
CUSTOM_MATRIX = yes
diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk
index ad4d206a51..596f719630 100644
--- a/keyboards/converter/usb_usb/ble/rules.mk
+++ b/keyboards/converter/usb_usb/ble/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -17,4 +14,4 @@ AUDIO_ENABLE = no # Audio output
BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = AdafruitBLE
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/converter/usb_usb/keymaps/ble/config.h b/keyboards/converter/usb_usb/keymaps/ble/config.h
deleted file mode 100644
index 7fa3bf328e..0000000000
--- a/keyboards/converter/usb_usb/keymaps/ble/config.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#endif
diff --git a/keyboards/converter/usb_usb/keymaps/default/config.h b/keyboards/converter/usb_usb/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/converter/usb_usb/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/converter/usb_usb/rules.mk b/keyboards/converter/usb_usb/rules.mk
index ea7224d534..19903ed331 100644
--- a/keyboards/converter/usb_usb/rules.mk
+++ b/keyboards/converter/usb_usb/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
#MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
#CONSOLE_ENABLE = yes # Console for debug
#COMMAND_ENABLE = yes # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = no # Enable N-Key Rollover
#BACKLIGHT_ENABLE = yes
USB_HID_ENABLE = yes
CUSTOM_MATRIX = yes
diff --git a/keyboards/converter/xt_usb/rules.mk b/keyboards/converter/xt_usb/rules.mk
index 8033614447..9ea342a71d 100644
--- a/keyboards/converter/xt_usb/rules.mk
+++ b/keyboards/converter/xt_usb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cool836a/rules.mk b/keyboards/cool836a/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/cool836a/rules.mk
+++ b/keyboards/cool836a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/copenhagen_click/click_pad_v1/keymaps/default/config.h b/keyboards/copenhagen_click/click_pad_v1/keymaps/default/config.h
deleted file mode 100755
index 3b73639db2..0000000000
--- a/keyboards/copenhagen_click/click_pad_v1/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 mini-ninja-64
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/copenhagen_click/click_pad_v1/rules.mk b/keyboards/copenhagen_click/click_pad_v1/rules.mk
index 50f28c04cf..e0c847d141 100755
--- a/keyboards/copenhagen_click/click_pad_v1/rules.mk
+++ b/keyboards/copenhagen_click/click_pad_v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/discipad/rules.mk b/keyboards/coseyfannitutti/discipad/rules.mk
index e2da88fcad..4ff6a67eaf 100644
--- a/keyboards/coseyfannitutti/discipad/rules.mk
+++ b/keyboards/coseyfannitutti/discipad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
index 977e3a26f6..050e406772 100644
--- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
+++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_SY] = LAYOUT_65_ansi(
TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/coseyfannitutti/discipline/rules.mk b/keyboards/coseyfannitutti/discipline/rules.mk
index 50a627d3d8..368e0ef14a 100644
--- a/keyboards/coseyfannitutti/discipline/rules.mk
+++ b/keyboards/coseyfannitutti/discipline/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/mullet/rules.mk b/keyboards/coseyfannitutti/mullet/rules.mk
index e5c4883fa5..16389b153a 100644
--- a/keyboards/coseyfannitutti/mullet/rules.mk
+++ b/keyboards/coseyfannitutti/mullet/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/mulletpad/rules.mk b/keyboards/coseyfannitutti/mulletpad/rules.mk
index e2db22769f..aa8dca5ecb 100644
--- a/keyboards/coseyfannitutti/mulletpad/rules.mk
+++ b/keyboards/coseyfannitutti/mulletpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/mysterium/rules.mk b/keyboards/coseyfannitutti/mysterium/rules.mk
index 8bc4495ced..f54ea2ce50 100644
--- a/keyboards/coseyfannitutti/mysterium/rules.mk
+++ b/keyboards/coseyfannitutti/mysterium/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/coseyfannitutti/romeo/rules.mk b/keyboards/coseyfannitutti/romeo/rules.mk
index 2057d9c939..d1dde8af62 100644
--- a/keyboards/coseyfannitutti/romeo/rules.mk
+++ b/keyboards/coseyfannitutti/romeo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cozykeys/bloomer/v2/rules.mk b/keyboards/cozykeys/bloomer/v2/rules.mk
index 6a63c958d3..ebbb7bc613 100644
--- a/keyboards/cozykeys/bloomer/v2/rules.mk
+++ b/keyboards/cozykeys/bloomer/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cozykeys/bloomer/v3/rules.mk b/keyboards/cozykeys/bloomer/v3/rules.mk
index ac010606a2..7d2cea91df 100644
--- a/keyboards/cozykeys/bloomer/v3/rules.mk
+++ b/keyboards/cozykeys/bloomer/v3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cozykeys/speedo/v2/keymaps/default/keymap.c b/keyboards/cozykeys/speedo/v2/keymaps/default/keymap.c
index 814aeb60c9..36e7b01c66 100644
--- a/keyboards/cozykeys/speedo/v2/keymaps/default/keymap.c
+++ b/keyboards/cozykeys/speedo/v2/keymaps/default/keymap.c
@@ -32,27 +32,27 @@ enum {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_DEFAULT] = LAYOUT(
- KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DOWN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, FN, TODO, KC_RALT, KC_RGUI, KC_RCTL \
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DOWN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, FN, TODO, KC_RALT, KC_RGUI, KC_RCTL
),
[LAYER_FN] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TORST, \
- _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, KC_PGUP, KC_HOME, KC_END, _______, _______, _______, \
- KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PAUS, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, _______, _______, KC_PGDN, KC_LBRC, KC_RBRC, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TORST,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, KC_PGUP, KC_HOME, KC_END, _______, _______, _______,
+ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PAUS, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, _______, _______, KC_PGDN, KC_LBRC, KC_RBRC, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[LAYER_RESET] = LAYOUT(
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TODFT, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TODFT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};
diff --git a/keyboards/cozykeys/speedo/v2/rules.mk b/keyboards/cozykeys/speedo/v2/rules.mk
index 80f292144e..f5e3305af5 100644
--- a/keyboards/cozykeys/speedo/v2/rules.mk
+++ b/keyboards/cozykeys/speedo/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cozykeys/speedo/v3/rules.mk b/keyboards/cozykeys/speedo/v3/rules.mk
index b43693882f..561e8f4ca1 100644
--- a/keyboards/cozykeys/speedo/v3/rules.mk
+++ b/keyboards/cozykeys/speedo/v3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cradio/config.h b/keyboards/cradio/config.h
index 2d76de6a8e..aba6050af1 100644
--- a/keyboards/cradio/config.h
+++ b/keyboards/cradio/config.h
@@ -62,22 +62,15 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
/* Serial settings */
#define USE_SERIAL
/* serial.c configuration for split keyboard */
#define SOFT_SERIAL_PIN D2
-/* Split handedness */
-#define EE_HANDS
-
/* Top left key on left half */
-#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
/* Top right key on right half */
-#define BOOTMAGIC_LITE_ROW_RIGHT 4
+#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 4
+
diff --git a/keyboards/cradio/cradio.c b/keyboards/cradio/cradio.c
index 6ef9381223..76c64cbb8c 100644
--- a/keyboards/cradio/cradio.c
+++ b/keyboards/cradio/cradio.c
@@ -2,6 +2,7 @@
* ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
* David Philip Barr <@davidphilipbarr>
* Pierre Chevalier <pierrechevalier83@gmail.com>
+ * @filterpaper
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,3 +19,20 @@
*/
#include "cradio.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ // Left
+ {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}},
+ // Right
+ {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}}
+};
+#endif
+
diff --git a/keyboards/cradio/cradio.h b/keyboards/cradio/cradio.h
index 29e81ef9b8..f013386bf8 100644
--- a/keyboards/cradio/cradio.h
+++ b/keyboards/cradio/cradio.h
@@ -31,7 +31,7 @@
// readability
#define ___ KC_NO
-#define LAYOUT( \
+#define LAYOUT_split_3x5_2( \
L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
@@ -48,3 +48,5 @@
{ R16, R17, ___, ___, ___ } \
}
+#define LAYOUT LAYOUT_split_3x5_2
+
diff --git a/keyboards/cradio/info.json b/keyboards/cradio/info.json
index c553810656..78cb7ef195 100644
--- a/keyboards/cradio/info.json
+++ b/keyboards/cradio/info.json
@@ -3,7 +3,7 @@
"url": "https://github.com/davidphilipbarr/Sweep",
"maintainer": "@davidphilipbarr",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 1.27},
{"x": 1, "y": 0.31},
diff --git a/keyboards/cradio/keymaps/default/keymap.c b/keyboards/cradio/keymaps/default/keymap.c
index bb7e2d35e6..f060be4e39 100644
--- a/keyboards/cradio/keymaps/default/keymap.c
+++ b/keyboards/cradio/keymaps/default/keymap.c
@@ -24,28 +24,29 @@
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
+ [0] = LAYOUT_split_3x5_2(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
SFT_T(KC_A),ALT_T(KC_S),CTL_T(KC_D),GUI_T(KC_F), KC_G, KC_H, GUI_T(KC_J),CTL_T(KC_K),ALT_T(KC_L),SFT_T(KC_SCLN),
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
LT(2,KC_TAB), KC_ENT, KC_SPC, LT(1,KC_BSPC)
),
- [1] = LAYOUT(
+ [1] = LAYOUT_split_3x5_2(
_______, KC_1, KC_2, KC_3, KC_VOLU, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO,
_______, KC_4, KC_5, KC_6, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT,
KC_CAPS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______,
MO(3), KC_GESC, _______, _______
),
- [2] = LAYOUT(
+ [2] = LAYOUT_split_3x5_2(
_______, KC_LBRC, KC_LCBR, KC_RCBR, _______, KC_CIRC, KC_LPRN, KC_RPRN, KC_RBRC, KC_TILD,
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
_______, _______, _______, _______, _______, KC_ASTR, KC_UNDS, KC_PLUS, KC_PIPE, _______,
_______, _______, KC_DEL, MO(3)
),
- [3] = LAYOUT(
+ [3] = LAYOUT_split_3x5_2(
_______, KC_F1, KC_F2, KC_F3, KC_F10, _______, KC_WH_U, KC_WH_D, _______, RESET,
_______, KC_F4, KC_F5, KC_F6, KC_F11, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_INS,
_______, KC_F7, KC_F8, KC_F9, KC_F12, _______, KC_BTN1, KC_BTN2, _______, _______,
_______, _______, _______, _______
)
};
+
diff --git a/keyboards/cradio/readme.md b/keyboards/cradio/readme.md
index 99cd20fb9c..7f3cef0969 100644
--- a/keyboards/cradio/readme.md
+++ b/keyboards/cradio/readme.md
@@ -1,18 +1,18 @@
# Cradio keyboards
-![Cradio](https://github.com/davidphilipbarr/hypergolic/raw/main/hypergarlic/ht.png)
+![Cradio](https://raw.githubusercontent.com/filterpaper/filterpaper.github.io/main/images/cradio.png)
-Cradio are low-profile 34-key split-keyboards designed by [@davidphilipbarr](https://github.com/davidphilipbarr), with no diodes and direct micro-controller pin wiring.
+Cradio are minimalist 34-key split-keyboards designed with no diodes, using direct micro-controller pin wiring.
## Keyboard Info
-* Keyboard Maintainer: [davidphilipbarr](https://github.com/davidphilipbarr)
+* Keyboard Maintainer: [David Barr](https://github.com/davidphilipbarr)
* Hardware Supported:
- * [Sweep](https://github.com/davidphilipbarr/Sweep) (all versions)
- * [Hypergarlic](https://github.com/davidphilipbarr/hypergolic/tree/main/hypergarlic)
- * [Paroxysm](https://github.com/davidphilipbarr/hypergolic/tree/main/paroxysm)
+ * [Cradio](https://github.com/davidphilipbarr/36keys/tree/master/34Keys)
+ * [Sweep](https://github.com/davidphilipbarr/Sweep)
+ * [Hypergolic](https://github.com/davidphilipbarr/hypergolic)
* Variants of the same 34-key direct pin PCB
-* Hardware Availability: order PCBs with gerber files from the repository
+* Hardware Availability: order PCBs using gerber files from the repository
Make example for this keyboard (after setting up your build environment):
@@ -20,19 +20,11 @@ Make example for this keyboard (after setting up your build environment):
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
-## Setting Handedness
-
-Keyboard uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default. The make commands are:
-
- make cradio:default:dfu-split-left
- make cradio:default:dfu-split-right
-
-[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand
-
## Bootloader
Enter the bootloader in 3 ways:
-* **Bootmagic reset**: Hold down the top left key on the left half (or the top right right key on the right half) and plug in the controller on that side.
-* **Physical reset button**: Briefly press the reset button soldered on the PCB.
* **Keycode in layout**: Press the key mapped to `RESET` if it is configured.
+* **Physical reset button**: Briefly press the reset button soldered on the PCB.
+* **Bootmagic reset**: Hold down the top left key on the left half (or the top right key on the right half) and plug in the controller on that side.
+
diff --git a/keyboards/cradio/rules.mk b/keyboards/cradio/rules.mk
index 437ca573d7..1e4940ca7d 100644
--- a/keyboards/cradio/rules.mk
+++ b/keyboards/cradio/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes # Use shared split_common code
+LAYOUTS = split_3x5_2
diff --git a/keyboards/craftwalk/rules.mk b/keyboards/craftwalk/rules.mk
index 7fdd6c388c..11d0a23816 100644
--- a/keyboards/craftwalk/rules.mk
+++ b/keyboards/craftwalk/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/crawlpad/rules.mk b/keyboards/crawlpad/rules.mk
index 9e36e965f4..d0d974ebdb 100755
--- a/keyboards/crawlpad/rules.mk
+++ b/keyboards/crawlpad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # [Crawlpad] Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # [Crawlpad] This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/crazy_keyboard_68/config.h b/keyboards/crazy_keyboard_68/config.h
index e1304e18ed..53759a716a 100644
--- a/keyboards/crazy_keyboard_68/config.h
+++ b/keyboards/crazy_keyboard_68/config.h
@@ -52,7 +52,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
-#define LED_CAPS_LOCK_PIN B2
+#define LED_CAPS_LOCK_PIN B0
#define LED_PIN_ON_STATE 0
//#define BACKLIGHT_PIN B7
diff --git a/keyboards/crazy_keyboard_68/rules.mk b/keyboards/crazy_keyboard_68/rules.mk
index 0f10335907..44f97d07c5 100644
--- a/keyboards/crazy_keyboard_68/rules.mk
+++ b/keyboards/crazy_keyboard_68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/crbn/rules.mk b/keyboards/crbn/rules.mk
index adaf11fd8a..1a63bd74b1 100644
--- a/keyboards/crbn/rules.mk
+++ b/keyboards/crbn/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/creatkeebs/glacier/config.h b/keyboards/creatkeebs/glacier/config.h
new file mode 100644
index 0000000000..0509365a0d
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/config.h
@@ -0,0 +1,70 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER creatkeebs
+#define PRODUCT glacier
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F0, F1, F4, E6, F5, D0 }
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, F6, B0, B6, C6, C7, B1, B2, B3, B7, D3, D2, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 0
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 0
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/creatkeebs/glacier/glacier.c b/keyboards/creatkeebs/glacier/glacier.c
new file mode 100644
index 0000000000..27ff4d02c7
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/glacier.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "glacier.h"
diff --git a/keyboards/creatkeebs/glacier/glacier.h b/keyboards/creatkeebs/glacier/glacier.h
new file mode 100644
index 0000000000..3b7b1320f5
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/glacier.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \
+ K500, K501, K502, K505, K510, K511, K513, K514, K515, K516 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, KC_NO, K510, K511, KC_NO, K513, K514, K515, K516 } \
+}
diff --git a/keyboards/creatkeebs/glacier/info.json b/keyboards/creatkeebs/glacier/info.json
new file mode 100644
index 0000000000..a22dabba0b
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/info.json
@@ -0,0 +1,98 @@
+{
+ "keyboard_name": "glacier",
+ "url": "",
+ "maintainer": "Tim",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":13.5, "y":2.25, "w":1.5},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25, "w":2.25},
+ {"x":0, "y":4.25, "w":2.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+ {"x":0, "y":5.25, "w":1.5},
+ {"x":1.5, "y":5.25},
+ {"x":2.5, "y":5.25, "w":1.5},
+ {"x":4, "y":5.25, "w":7},
+ {"x":11, "y":5.25, "w":1.5},
+ {"x":12.5, "y":5.25},
+ {"x":13.5, "y":5.25, "w":1.5},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/creatkeebs/glacier/keymaps/default/keymap.c b/keyboards/creatkeebs/glacier/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e58d790545
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+ /* Copyright 2022 Tim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ )
+};
diff --git a/keyboards/creatkeebs/glacier/readme.md b/keyboards/creatkeebs/glacier/readme.md
new file mode 100644
index 0000000000..6901f93b27
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/readme.md
@@ -0,0 +1,27 @@
+# glacier
+A 80% keyboard
+
+![glacier](https://i.imgur.com/BeyreN1.png)
+
+### Features
+* PCB gasket
+* Nickel-cobalt weight
+
+### Additional Information
+* Keyboard Maintainer: [Tim](https://github.com/Timliuzhaolu/qmk_firmware)
+* Hardware Supported: glacier PCB
+* Hardware Availability: [ESCHIT.com](https://eschit.com/products/gb-thera75)
+
+### Entering Bootloader
+
+Enter the bootloader in 2 ways:
+
+* Physical reset button: Press the `RESET` button on the back of the PCB.
+* Keycode in layout: Press the key mapped to `RESET` if it is available.
+
+### Building the Firmware
+Make example for this keyboard (after setting up your build environment):
+
+ make creatkeebs/glacier:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/creatkeebs/glacier/rules.mk b/keyboards/creatkeebs/glacier/rules.mk
new file mode 100644
index 0000000000..7c9fb95020
--- /dev/null
+++ b/keyboards/creatkeebs/glacier/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = no # Audio output
diff --git a/keyboards/creatkeebs/readme.md b/keyboards/creatkeebs/readme.md
new file mode 100644
index 0000000000..6ba019d6b4
--- /dev/null
+++ b/keyboards/creatkeebs/readme.md
@@ -0,0 +1,3 @@
+# Creatkeebs
+
+For more information please visit our [website](https://eschit.com/)
diff --git a/keyboards/creatkeebs/thera/config.h b/keyboards/creatkeebs/thera/config.h
new file mode 100644
index 0000000000..e9ba1ca131
--- /dev/null
+++ b/keyboards/creatkeebs/thera/config.h
@@ -0,0 +1,64 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER creatkeebs
+#define PRODUCT thera
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B2, B1, B0, E6, B3, B7 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 0
+#endif
+
+
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 0
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+
diff --git a/keyboards/creatkeebs/thera/info.json b/keyboards/creatkeebs/thera/info.json
new file mode 100644
index 0000000000..856aae93bf
--- /dev/null
+++ b/keyboards/creatkeebs/thera/info.json
@@ -0,0 +1,107 @@
+{
+ "keyboard_name": "jelly epoch",
+ "url": "https://eschit.com/collections/thera75",
+ "maintainer": "https://github.com/Timliuzhaolu",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+
+ {"x":14, "y":0},
+
+ {"x":0, "y":1.5},
+ {"x":1, "y":1.5},
+ {"x":2, "y":1.5},
+ {"x":3, "y":1.5},
+ {"x":4, "y":1.5},
+ {"x":5, "y":1.5},
+ {"x":6, "y":1.5},
+ {"x":7, "y":1.5},
+ {"x":8, "y":1.5},
+ {"x":9, "y":1.5},
+ {"x":10, "y":1.5},
+ {"x":11, "y":1.5},
+ {"x":12, "y":1.5},
+ {"x":13, "y":1.5, "w":2},
+
+ {"x":15.5, "y":1.5},
+
+ {"x":0, "y":2.5, "w":1.5},
+ {"x":1.5, "y":2.5},
+ {"x":2.5, "y":2.5},
+ {"x":3.5, "y":2.5},
+ {"x":4.5, "y":2.5},
+ {"x":5.5, "y":2.5},
+ {"x":6.5, "y":2.5},
+ {"x":7.5, "y":2.5},
+ {"x":8.5, "y":2.5},
+ {"x":9.5, "y":2.5},
+ {"x":10.5, "y":2.5},
+ {"x":11.5, "y":2.5},
+ {"x":12.5, "y":2.5},
+ {"x":13.5, "y":2.5, "w":1.5},
+
+ {"x":15.5, "y":2.5},
+
+ {"x":0, "y":3.5, "w":1.75},
+ {"x":1.75, "y":3.5},
+ {"x":2.75, "y":3.5},
+ {"x":3.75, "y":3.5},
+ {"x":4.75, "y":3.5},
+ {"x":5.75, "y":3.5},
+ {"x":6.75, "y":3.5},
+ {"x":7.75, "y":3.5},
+ {"x":8.75, "y":3.5},
+ {"x":9.75, "y":3.5},
+ {"x":10.75, "y":3.5},
+ {"x":11.75, "y":3.5},
+ {"x":12.75, "y":3.5, "w":2.25},
+
+ {"x":15.5, "y":3.5},
+
+ {"x":0, "y":4.5, "w":2.25},
+ {"x":2.25, "y":4.5},
+ {"x":3.25, "y":4.5},
+ {"x":4.25, "y":4.5},
+ {"x":5.25, "y":4.5},
+ {"x":6.25, "y":4.5},
+ {"x":7.25, "y":4.5},
+ {"x":8.25, "y":4.5},
+ {"x":9.25, "y":4.5},
+ {"x":10.25, "y":4.5},
+ {"x":11.25, "y":4.5},
+ {"x":12.25, "y":4.5, "w":1.75},
+
+ {"x":14.25, "y":4.75},
+
+
+ {"x":0, "y":5.5, "w":1.25},
+ {"x":1.25, "y":5.5, "w":1.25},
+ {"x":2.5, "y":5.5, "w":1.25},
+ {"x":3.75, "y":5.5, "w":6.25},
+ {"x":10, "y":5.5},
+ {"x":11, "y":5.5},
+ {"x":12, "y":5.5},
+
+ {"x":13.25, "y":5.75},
+ {"x":14.25, "y":5.75},
+ {"x":15.25, "y":5.75}
+ ]
+ }
+ }
+}
diff --git a/keyboards/creatkeebs/thera/keymaps/default/keymap.c b/keyboards/creatkeebs/thera/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4af1d96a2b
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+ /* Copyright 2022 Tim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+};
+
diff --git a/keyboards/creatkeebs/thera/readme.md b/keyboards/creatkeebs/thera/readme.md
new file mode 100644
index 0000000000..a03f9c184e
--- /dev/null
+++ b/keyboards/creatkeebs/thera/readme.md
@@ -0,0 +1,29 @@
+# thera
+A 75% keyboard
+
+![thera](https://i.imgur.com/7w7ARcPh.jpg)
+
+### Features
+* Plateless PCB gasket
+* Decent amount of layout compatibility - [View supported layouts](https://cdn.shopify.com/s/files/1/0481/5840/8853/products/8038a8b71a5149f5bad362b28368da3_590x.png?v=1628765539)
+* Ti badge
+* PVD weight (upgrade available)
+
+### Additional Information
+* Keyboard Maintainer: [Tim](https://github.com/Timliuzhaolu/qmk_firmware)
+* Hardware Supported: thera PCB
+* Hardware Availability: [ESCHIT.com](https://eschit.com/products/gb-thera75)
+
+### Entering Bootloader
+
+Enter the bootloader in 2 ways:
+
+* Physical reset button: Press the `RESET` button on the back of the PCB.
+* Keycode in layout: Press the key mapped to `RESET` if it is available.
+
+### Building the Firmware
+Make example for this keyboard (after setting up your build environment):
+
+ make creatkeebs/thera:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/creatkeebs/thera/rules.mk b/keyboards/creatkeebs/thera/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/creatkeebs/thera/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/creatkeebs/thera/thera.c b/keyboards/creatkeebs/thera/thera.c
new file mode 100644
index 0000000000..db4f27d908
--- /dev/null
+++ b/keyboards/creatkeebs/thera/thera.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "thera.h"
diff --git a/keyboards/creatkeebs/thera/thera.h b/keyboards/creatkeebs/thera/thera.h
new file mode 100644
index 0000000000..8603c3605b
--- /dev/null
+++ b/keyboards/creatkeebs/thera/thera.h
@@ -0,0 +1,37 @@
+/* Copyright 2022 Tim (https://github.com/Timliuzhaolu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
+ K500, K501, K502, K506, K509, K510, K511, K512, K513, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, ____ }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, ____, K313, K314 }, \
+ { K400, ____, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, ____ }, \
+ { K500, K501, K502, ____, ____, ____, K506, ____, ____, K509, K510, K511, K512, K513, K514 } \
+}
diff --git a/keyboards/crin/rules.mk b/keyboards/crin/rules.mk
index 1710f6236b..82ad8cdd02 100644
--- a/keyboards/crin/rules.mk
+++ b/keyboards/crin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/crkbd/crkbd.h b/keyboards/crkbd/crkbd.h
index 4ba9397043..3fae1a400c 100644
--- a/keyboards/crkbd/crkbd.h
+++ b/keyboards/crkbd/crkbd.h
@@ -20,5 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef KEYBOARD_crkbd_rev1
# include "rev1.h"
#endif
+#ifdef KEYBOARD_crkbd_r2g
+# include "r2g.h"
+#endif
+
#include "quantum.h"
diff --git a/keyboards/crkbd/keymaps/ardakilic/README.md b/keyboards/crkbd/keymaps/ardakilic/README.md
new file mode 100644
index 0000000000..5e620f03f0
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/README.md
@@ -0,0 +1,7 @@
+# Ardakilic's Corne Layout
+
+This layout is optimised to use Turkish characters on Corne on macOS.
+
+Also, some size optimisations enabled in `rules.mk` and `config.h`.
+
+Bongo cat animation implemented from: https://github.com/nwii/oledbongocat
diff --git a/keyboards/crkbd/keymaps/ardakilic/config.h b/keyboards/crkbd/keymaps/ardakilic/config.h
new file mode 100644
index 0000000000..7a3bb76b38
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/config.h
@@ -0,0 +1,60 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+
+#define SPLIT_WPM_ENABLE
+
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define RETRO_TAPPING
+
+
+
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+
+// size optimisations
+// #define NO_DEBUG
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* CONSOLE_ENABLE = no achieves this
+// Size optimisations
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+#define NO_PRINT
+#endif // !NO_PRINT
+
+#define NO_ACTION_ONESHOT
+// Size optimisations END
+*/
diff --git a/keyboards/crkbd/keymaps/ardakilic/keymap.c b/keyboards/crkbd/keymaps/ardakilic/keymap.c
new file mode 100644
index 0000000000..a611c59223
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/keymap.c
@@ -0,0 +1,489 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Arda Kilicdagi <GH: @ardakilic, TW: @ardadev>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+// Layers
+enum {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _SPACE,
+ _NUMPAD,
+ _SODA,
+ _ADJUST
+};
+
+//KC_NONUS_BSLASH (\|) is equivalent to ["é] key in Turkish keyboards.
+//KC_GRV (~ `) is equivalent to [<>|] key in Turkish keyboards.
+// KC_SCLN is Turkish s [şŞ] key
+// KC_QUOT is Turkish i [iİ] key
+// KC_COMM is Turkish o [öÖ] key
+// KC_DOT is Turkish c [çÇ] key
+
+// Custom shortcuts specific to Turkish layout
+#define CURLY_OPEN RALT(KC_7)
+#define CURLY_CLOSE RALT(KC_0)
+#define SQUARE_OPEN RALT(KC_8)
+#define SQUARE_CLOSE RALT(KC_9)
+#define DOLLAR_SIGN RALT(KC_4)
+#define BACKSLASH RALT(KC_MINS)
+#define VERTICAL_PIPE RALT(KC_EQL)
+#define BACKTICK RALT(KC_BSLS)
+#define TILDE RALT(KC_RBRC)
+#define NUMBER_SIGN RALT(KC_3) //hashtag sign
+#define LOCKSCREEN LCTL(LSFT(KC_POWER)) // Screen Lock shortcut for OSX
+
+/*
+// Unicode Turkish characters, in case it's needed
+enum {
+ TR_C, // ç
+ TR_C_L, // Ç
+ TR_I, // ı
+ TR_I_L, // İ
+ TR_G, // ğ
+ TR_G_L, // Ğ
+ TR_S, // ş
+ TR_S_L, // Ş
+ TR_U, // ü
+ TR_U_L, // Ü
+ TR_O, // ö
+ TR_O_L, // Ö
+};
+
+// clang-format off
+const uint32_t PROGMEM unicode_map[] = {
+ [TR_C] = 0x00c7,
+ [TR_C_L] = 0x00e7,
+ [TR_I] = 0x0130,
+ [TR_I_L] = 0x0131,
+ [TR_G] = 0x011e,
+ [TR_G_L] = 0x011f,
+ [TR_S] = 0x015e,
+ [TR_S_L] = 0x015f,
+ [TR_U] = 0x00dc,
+ [TR_U_L] = 0x00fc,
+ [TR_O] = 0x00d6,
+ [TR_O_L] = 0x00f6,
+};
+// clang-format on
+*/
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * BASE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | NpdESC | A | S | D | F | G | | H | J | K | L | Ş | İ |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | SftCaps| Z | X | C | V | B | | N | M | Ö | Ç | . | CtlEnt|
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | OS|. | Lwr|, | Space*| |Sda|Ent|Raise|"| LAlt|.|
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT(_NUMPAD, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ LSFT_T(KC_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LCTL_T(KC_ENT), /*KC_ENT*/
+ LGUI_T(KC_SLSH), LT(_LOWER, KC_BSLS),LT(_SPACE, KC_SPC), LT(_SODA, KC_ENT), LT(_RAISE, KC_NONUS_BSLASH), LALT_T(KC_SLSH)
+
+ ),
+
+/*
+ * LOWER LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | > | ! | ' | ^ | + | % | | & | / | ( | ) | = | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F1 | F2 | F3 | F4 | F5 | F6 | | "$" | ? | _ | Ğ | Ü | - |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F7 | F8 | F9 | F10 | F11 | F12 | | "[" | "]" | "{" | "}" | < | ">" |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | ADJUST| |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_LOWER] = LAYOUT_split_3x6_3(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DOLLAR_SIGN, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_EQL,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, SQUARE_OPEN, SQUARE_CLOSE, CURLY_OPEN, CURLY_CLOSE, KC_GRV, LSFT(KC_GRV),
+ _______, _______, _______, _______, MO(_ADJUST), _______
+ ),
+
+/*
+ * RAISE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | Tab | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F1 | F2 | F3 | F4 | F5 | F6 | | | * | - | "\" | "|" | , |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F7 | F8 | F9 | F10 | F11 | F12 | | ' | # | " | "~" | "`" | <>| |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_RAISE] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_MINS, KC_EQL, BACKSLASH, VERTICAL_PIPE, KC_BSLS,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_AT, NUMBER_SIGN, KC_NUBS, TILDE, BACKTICK, KC_GRV,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * SPACE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | CMD+1 | CMD+2 | CMD+3 | CMD+4 | CMD+5 | | CMD+6 | CMD+7 | CMD+8 | CMD+9 | CMD+0 | LCKOSX|
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | Brght▼ | Brght▲ | | | | | Left | Down | Up | Right | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | | Prev | Next | Vol- | Vol+ | Play |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_SPACE] = LAYOUT_split_3x6_3(
+ _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LOCKSCREEN,
+ _______, KC_BRMD, KC_BRMU, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * NUMPAD LAYER
+ * KC_PDOT is comma on the Turkish layout ¯\_(ツ)_/¯
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | | | | | | | = | Num7 | Num8 | Num9 | - | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | . | Num4 | Num5 | Num6 | + | * |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | , | Num1 | Num2 | Num3 | . | / |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | Ent | Num0 | Num0 |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_NUMPAD] = LAYOUT_split_3x6_3(
+ _______, _______, _______, _______, _______, _______, KC_PEQL, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_PAST,
+ _______, _______, _______, _______, _______, _______, KC_PDOT, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_PSLS,
+ _______, _______, _______, KC_PENT, KC_P0, KC_P0
+ ),
+
+
+ /*
+ * SODA LAYER
+ * KC_PDOT is comma on the Turkish layout ¯\_(ツ)_/¯
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | | Up | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | Left | Down | Right | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_SODA] = LAYOUT_split_3x6_3(
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+
+
+/*
+ * ADJUST LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | RESET | EEPRST | | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | RGBTog | HUE▲ | SAT▲ | BRGHT▲ | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | RGBMOD | HUE▼ | SAt▼ | BRGHT▼ | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | OS | | Space | | Ent | | ALT |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_ADJUST] = LAYOUT_split_3x6_3(
+ RESET, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ )
+};
+
+
+#ifdef OLED_ENABLE
+// #include <stdio.h>
+
+// bongo cat
+// Taken from
+// https://github.com/nwii/oledbongocat
+// char wpm_str[10]; // sprintf changed with more optimized code
+
+
+// WPM-responsive animation stuff here
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 20 // below this wpm value your animation will idle
+
+// #define PREP_FRAMES 1 // uncomment if >1
+
+# define TAP_FRAMES 2
+# define TAP_SPEED 40 // above this wpm value typing animation to trigger
+
+# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
+uint8_t current_tap_frame = 0;
+
+// Code containing pixel art, contains:
+// 5 idle frames, 1 prep frame, and 2 tap frames
+
+// To make your own pixel art:
+// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
+// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
+// replace numbers in brackets with your own
+// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
+static void render_anim(void) {
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+ static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ };
+
+ // assumes 1 frame prep stage
+ void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ }
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
+ // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ }
+ if (get_current_wpm() >= TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+ }
+ if (get_current_wpm() != 000) {
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+}
+
+// bongop cat
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+
+void oled_render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Default"), false);
+ break;
+ case _LOWER:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case _RAISE:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case _SPACE:
+ oled_write_ln_P(PSTR("Space"), false);
+ break;
+ case _NUMPAD:
+ oled_write_ln_P(PSTR("Numpad"), false);
+ break;
+ case _SODA:
+ oled_write_ln_P(PSTR("Soda"), false);
+ break;
+ case _ADJUST:
+ // case _ADJUST|_LOWER:
+ // case _ADJUST|_RAISE:
+ // case _ADJUST|_LOWER|_RAISE:
+ // case _ADJUST|_LOWER|_RAISE|_SPACE:
+ // case _ADJUST|_LOWER|_RAISE|_SPACE|_NUMPAD|_SODA:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("?????"), false);
+ }
+}
+
+
+char keylog_str[24] = {};
+
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
+ if (keycode < 60) {
+ name = code_to_name[keycode];
+ }
+
+ // update keylog
+ snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
+ record->event.key.row, record->event.key.col,
+ keycode, name);
+}
+
+void oled_render_keylog(void) {
+ oled_write(keylog_str, false);
+}
+
+void render_bootmagic_status(bool status) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ if (status) {
+ oled_write_ln_P(logo[0][0], false);
+ oled_write_ln_P(logo[0][1], false);
+ } else {
+ oled_write_ln_P(logo[1][0], false);
+ oled_write_ln_P(logo[1][1], false);
+ }
+}
+
+// void oled_render_logo(void) {
+// static const char PROGMEM crkbd_logo[] = {
+// 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+// 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+// 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+// 0};
+// oled_write_P(crkbd_logo, false);
+// }
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ oled_render_layer_state();
+ oled_render_keylog();
+ } else {
+ // bongo cat
+ render_anim(); // renders pixelart
+
+ oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (5 rows on 128x32 screen, anything more will overflow back to the top)
+ // sprintf(wpm_str, "WPM:%03d", get_current_wpm()); // edit the string to change wwhat shows up, edit %03d to change how many digits show up
+ // oled_write(wpm_str, false); // writes wpm on top left corner of string
+
+ // This way it's more size efficient than calling sprintf
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // This way it's more size efficient than calling sprintf
+
+ led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
+
+ oled_set_cursor(0, 1);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ // bongo cat
+
+ //oled_render_logo();
+ }
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ set_keylog(keycode, record);
+ }
+ return true;
+}
+#endif // OLED_DRIVER_ENABLE
diff --git a/keyboards/crkbd/keymaps/ardakilic/rules.mk b/keyboards/crkbd/keymaps/ardakilic/rules.mk
new file mode 100644
index 0000000000..0453ca573a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/rules.mk
@@ -0,0 +1,15 @@
+OLED_ENABLE = yes
+EXTRAKEY_ENABLE = yes # for media keys
+
+# bongo cat
+WPM_ENABLE = yes
+# bongo cat
+
+# Size optimisations
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+GRAVE_ESCAPE_ENABLE = no
+MOUSEKEY_ENABLE = no
+# Size optimisations END
diff --git a/keyboards/crkbd/keymaps/default/config.h b/keyboards/crkbd/keymaps/default/config.h
index 937d67e25f..8f4d73ca22 100644
--- a/keyboards/crkbd/keymaps/default/config.h
+++ b/keyboards/crkbd/keymaps/default/config.h
@@ -28,19 +28,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define USE_SERIAL_PD2
-
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
+//#define TAPPING_FORCE_HOLD
+//#define TAPPING_TERM 100
#ifdef RGBLIGHT_ENABLE
- #undef RGBLED_NUM
- #define RGBLIGHT_ANIMATIONS
- #define RGBLED_NUM 27
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+ #define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
#endif
-#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" \ No newline at end of file
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/default/rules.mk b/keyboards/crkbd/keymaps/default/rules.mk
index d34d066ded..c14c202fae 100644
--- a/keyboards/crkbd/keymaps/default/rules.mk
+++ b/keyboards/crkbd/keymaps/default/rules.mk
@@ -1,2 +1,5 @@
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
+MOUSEKEY_ENABLE = yes # Mouse keys
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/ericgebhart/config.h b/keyboards/crkbd/keymaps/ericgebhart/config.h
new file mode 100755
index 0000000000..d1844f6807
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ericgebhart/config.h
@@ -0,0 +1,24 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// otherwise the other promicro v3 isn't found
+#define SPLIT_USB_DETECT
diff --git a/keyboards/crkbd/keymaps/ericgebhart/keymap.c b/keyboards/crkbd/keymaps/ericgebhart/keymap.c
new file mode 100755
index 0000000000..e893ec596b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,60 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "ericgebhart.h"
+
+#define Crkbd_base(...) Base_3x6_3(__VA_ARGS__)
+#define Crkbd_bepo(...) Base_bepo_3x6_3(__VA_ARGS__)
+#define Crkbd_bepo6(...) Base_bepo6_3x6_3(__VA_ARGS__)
+#define Crkbd_transient(...) Transient6_3x6_3(__VA_ARGS__)
+
+/*
+ * The `Crkbd_base` macro is a template to allow the use of identical
+ * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
+ * that there is no need to set them up for each layout, and modify all of
+ * them if I want to change them. This helps to keep consistency and ease
+ * of use. K## is a placeholder to pass through the individual keycodes
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // Qwerty based Base layers
+ [_DVORAK] = Crkbd_base(___DVORAK___),
+ [_BEAKL] = Crkbd_base(___BEAKL15___),
+ [_COLEMAK] = Crkbd_base(___COLEMAK_DH___),
+ [_QWERTY] = Crkbd_base(___QWERTY___),
+
+ // Bepo base layers
+ [_BEAKL_BP] = Crkbd_bepo(___BEAKL15_FR___),
+ [_DVORAK_BP] = Crkbd_bepo(___DVORAK_FR___),
+ [_BEPO] = Crkbd_bepo6(___BEPO6___),
+
+ // Transient layers.
+ [_SYMB] = Crkbd_transient(___SYMB_BEAKLB_3x12___),
+ [_SYMB_BP] = Crkbd_transient(___SYMB_BEAKLB_BP_3x12___),
+
+ [_KEYPAD] = Crkbd_transient(___KP_C_3x12___),
+ [_KEYPAD_BP] = Crkbd_transient(___KP_C_BP_3x12___),
+
+ [_TOPROWS] = Crkbd_transient(___TOPROWS_3x12___),
+ [_TOPROWS_BP] = Crkbd_transient(___TOPROWS_BP_3x12___),
+
+ [_NAV] = Crkbd_transient(___NAV_3x12___),
+
+ [_LAYERS] = Crkbd_transient(___LAYERS_3x12___),
+ //[_RGB] = Crkbd_transient(___RGB_3x12___),
+ [_ADJUST] = Crkbd_transient(___ADJUST_3x12___),
+ ///HPT_TOG, KC_NUKE, ___, ___, TG_MODS, HPT_FBK
+};
diff --git a/keyboards/crkbd/keymaps/mb_via/config.h b/keyboards/crkbd/keymaps/mb_via/config.h
new file mode 100644
index 0000000000..cdc04f6908
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/config.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell <@e11i0t23>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/crkbd/keymaps/mb_via/keymap.c b/keyboards/crkbd/keymaps/mb_via/keymap.c
new file mode 100644
index 0000000000..b7fbc1c290
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/keymap.c
@@ -0,0 +1,71 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell <@e11i0t23>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, FN_MO13, KC_SPC, KC_ENT, FN_MO23, KC_RALT
+ //`--------------------------' `--------------------------'
+
+ ),
+
+ [1] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [2] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [3] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ )
+};
diff --git a/keyboards/crkbd/keymaps/mb_via/readme.md b/keyboards/crkbd/keymaps/mb_via/readme.md
new file mode 100644
index 0000000000..048927073b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/readme.md
@@ -0,0 +1,12 @@
+# Default Via keyboard for the Corne R2G by Mechboards UK
+
+![r2g](https://cdn.shopify.com/s/files/1/0582/0242/3501/products/HelidoxCorneR2GPCB_1800x1800.png)
+
+Corne R2G is an eddition of the classic CRKBD by footsan remade to feature a full smd assembly
+
+In this fold can be found the default via enabled keymap that can be in conjunction
+
+Flash example for this Keymap:
+```sh
+qmk flash -kb crkbd/r2g -km mb_via
+```
diff --git a/keyboards/crkbd/keymaps/mb_via/rules.mk b/keyboards/crkbd/keymaps/mb_via/rules.mk
new file mode 100644
index 0000000000..cda04c7ce7
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no # Mouse keys
+VIA_ENABLE = yes # Enable VIA
+
diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h
index 0687f9c5c8..3a31f8613f 100644
--- a/keyboards/crkbd/keymaps/soundmonster/config.h
+++ b/keyboards/crkbd/keymaps/soundmonster/config.h
@@ -51,9 +51,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_VAL_STEP 17
#endif
-#define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
-// #define OLED_FONT_WIDTH 5
-// #define OLED_FONT_HEIGHT 7
+
+#ifdef OLED_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+# define SPLIT_MODS_ENABLE
+# define SPLIT_OLED_ENABLE
+# define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
+# define OLED_TIMEOUT 30000
+#endif
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
@@ -71,12 +77,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// # undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# undef ENABLE_RGB_MATRIX_BREATHING
-// # undef ENABLE_RGB_MATRIX_BAND_SAT
+# undef ENABLE_RGB_MATRIX_BAND_SAT
# undef ENABLE_RGB_MATRIX_BAND_VAL
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
@@ -85,26 +91,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # undef ENABLE_RGB_MATRIX_RAINDROPS
+# undef ENABLE_RGB_MATRIX_RAINDROPS
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# undef ENABLE_RGB_MATRIX_SPLASH
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c
index 98afe3685f..70fe50e967 100644
--- a/keyboards/crkbd/keymaps/soundmonster/keymap.c
+++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Soundmonster (@soundmonster)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
@@ -7,10 +10,6 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif
-#ifdef OLED_ENABLE
-static uint32_t oled_timer = 0;
-#endif
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -278,53 +277,19 @@ void render_layer_state(void) {
}
}
-void render_status_main(void) {
- render_logo();
- render_space();
- render_layer_state();
- render_space();
- render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
- render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
-}
-
-void render_status_secondary(void) {
+bool oled_task_user(void) {
+ // Renders the current keyboard state (layers and mods)
render_logo();
render_space();
render_layer_state();
render_space();
render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
-}
-
-void suspend_power_down_user() {
- oled_off();
-}
-
-bool oled_task_user(void) {
- if (timer_elapsed32(oled_timer) > 30000) {
- oled_off();
- return;
- }
-#ifndef SPLIT_KEYBOARD
- else { oled_on(); }
-#endif
-
- if (is_keyboard_master()) {
- render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
- } else {
- render_status_secondary();
- }
return false;
}
#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
-#ifdef OLED_ENABLE
- oled_timer = timer_read32();
-#endif
- // set_timelog();
- }
static uint16_t my_colon_timer;
switch (keycode) {
diff --git a/keyboards/crkbd/keymaps/soundmonster/rules.mk b/keyboards/crkbd/keymaps/soundmonster/rules.mk
index 62971258e9..d3a964424f 100644
--- a/keyboards/crkbd/keymaps/soundmonster/rules.mk
+++ b/keyboards/crkbd/keymaps/soundmonster/rules.mk
@@ -2,6 +2,7 @@ RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes
MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/via/config.h b/keyboards/crkbd/keymaps/via/config.h
index fc8e7c4781..806b77d013 100644
--- a/keyboards/crkbd/keymaps/via/config.h
+++ b/keyboards/crkbd/keymaps/via/config.h
@@ -25,16 +25,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define EE_HANDS
#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLIGHT_ANIMATIONS
-# define RGBLED_NUM 54
-# undef RGBLED_SPLIT
-# define RGBLED_SPLIT \
- { 27, 27 }
-# define RGBLIGHT_LIMIT_VAL 120
-# define RGBLIGHT_HUE_STEP 10
-# define RGBLIGHT_SAT_STEP 17
-# define RGBLIGHT_VAL_STEP 17
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #define RGBLIGHT_EFFECT_TWINKLE
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
#endif
#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/via/rules.mk b/keyboards/crkbd/keymaps/via/rules.mk
index 69841c2358..ee593dcbb7 100644
--- a/keyboards/crkbd/keymaps/via/rules.mk
+++ b/keyboards/crkbd/keymaps/via/rules.mk
@@ -1,6 +1,6 @@
-MOUSEKEY_ENABLE = no # Mouse keys
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-VIA_ENABLE = yes # Enable VIA
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
-LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no # Mouse keys
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+VIA_ENABLE = yes # Enable VIA
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/post_config.h b/keyboards/crkbd/post_config.h
index 00034a163c..133014b02a 100644
--- a/keyboards/crkbd/post_config.h
+++ b/keyboards/crkbd/post_config.h
@@ -41,3 +41,9 @@
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
# endif
#endif
+
+#ifdef OLED_ENABLE
+ #ifndef OLED_FONT_H
+ #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+ #endif
+#endif
diff --git a/keyboards/crkbd/r2g/config.h b/keyboards/crkbd/r2g/config.h
new file mode 100644
index 0000000000..e451612484
--- /dev/null
+++ b/keyboards/crkbd/r2g/config.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell @e11i0t23
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifdef RGBLIGHT_ENABLE
+
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+
+# define RGBLED_NUM 54
+# define RGBLED_SPLIT \
+ { 27, 27 }
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGBLED_NUM 54 // Number of LEDs
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT \
+ { 27, 27 }
+# define SPLIT_TRANSPORT_MIRROR
+
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#endif
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_USB_DETECT
+
diff --git a/keyboards/crkbd/r2g/r2g.c b/keyboards/crkbd/r2g/r2g.c
new file mode 100644
index 0000000000..7fb95c043c
--- /dev/null
+++ b/keyboards/crkbd/r2g/r2g.c
@@ -0,0 +1,240 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell @e11i0t23
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "r2g.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+ // Logical Layout
+ // Columns
+ // Left
+ // 0 1 2 3 4 5
+ // ROWS
+ // 25 24 19 18 11 10 0
+ // 03 02 01
+ // 26 23 20 17 12 09 1
+ // 04 05 06
+ // 27 22 21 16 13 08 2
+ //
+ // 15 14 07 3
+ //
+ // Right
+ // 0 1 2 3 4 5
+ // ROWS
+ // 25 24 19 18 11 10 4
+ // 03 02 01
+ // 26 23 20 17 12 09 5
+ // 04 05 06
+ // 27 22 21 16 13 08 6
+ //
+ // 15 14 07 7
+ //
+ // Physical Layout
+ // Columns
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13
+ // ROWS
+ // 25 24 19 18 11 10 10 11 18 19 24 25 0
+ // 03 02 01 01 02 03
+ // 26 23 20 17 12 09 09 12 17 20 23 26 1
+ // 04 04
+ // 27 22 21 16 13 08 08 13 16 21 22 27 2
+ // 05 06 06 05
+ // 15 14 07 07 14 15 3
+
+led_config_t g_led_config = { {
+ { 24, 23, 18, 17, 10, 9 },
+ { 25, 22, 19, 16, 11, 8 },
+ { 26, 21, 20, 15, 12, 7 },
+ { NO_LED, NO_LED, NO_LED, 14, 13, 6 },
+ { 51, 50, 45, 44, 37, 36 },
+ { 52, 49, 46, 43, 38, 35 },
+ { 53, 48, 47, 42, 39, 34 },
+ { NO_LED, NO_LED, NO_LED, 41, 40, 33 }
+}, {
+ { 85, 16 }, { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 }, { 95, 63 },
+ { 85, 39 }, { 85, 21 }, { 85, 4 }, { 68, 2 }, { 68, 19 }, { 68, 37 }, { 80, 58 },
+ { 60, 55 }, { 50, 35 }, { 50, 13 }, { 50, 0 }, { 33, 3 }, { 33, 20 }, { 33, 37 },
+ { 16, 42 }, { 16, 24 }, { 16, 7 }, { 0, 7 }, { 0, 24 }, { 0, 41 }, { 139, 16 },
+ { 174, 13 }, { 208, 20 }, { 208, 38 }, { 174, 48 }, { 139, 52 }, { 129, 63 }, { 139, 39 },
+ { 139, 21 }, { 139, 4 }, { 156, 2 }, { 156, 19 }, { 156, 37 }, { 144, 58 }, { 164, 55 },
+ { 174, 35 }, { 174, 13 }, { 174, 0 }, { 191, 3 }, { 191, 20 }, { 191, 37 }, { 208, 42 },
+ { 208, 24 }, { 208, 7 }, { 224, 7 }, { 224, 24 }, { 224, 41 }
+}, {
+ 2, 2, 2, 2, 2, 2, 1,
+ 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 1, 4,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1
+} };
+
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+enum Layers{
+ L_BASE, L_LOWER, L_RAISE, L_ADJUST
+};
+
+void oled_render_layer_state_r2g(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case L_BASE:
+ oled_write_ln_P(PSTR("Default"), false);
+ break;
+ case L_LOWER:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case L_RAISE:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case L_ADJUST:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ }
+}
+
+//char keylog_str_r2g[24] = {};
+
+const char code_to_name_r2g[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+char key_name_r2g = ' ';
+uint16_t last_keycode_r2g;
+uint8_t last_row_r2g;
+uint8_t last_col_r2g;
+
+void set_keylog_r2g(uint16_t keycode, keyrecord_t *record) {
+ key_name_r2g = ' ';
+ last_keycode_r2g = keycode;
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { last_keycode_r2g = keycode & 0xFF; }
+ if (keycode < 60) {
+ key_name_r2g = code_to_name_r2g[keycode];
+ }
+ last_row_r2g = record->event.key.row;
+ last_col_r2g = record->event.key.col;
+}
+
+const char *depad_str(const char *depad_str, char depad_char) {
+ while (*depad_str == depad_char) ++depad_str;
+ return depad_str;
+}
+
+void oled_render_keylog_r2g(void) {
+ //oled_write(keylog_str_r2g, false);
+ const char *last_row_r2g_str = get_u8_str(last_row_r2g, ' ');
+ oled_write(depad_str(last_row_r2g_str, ' '), false);
+ oled_write_P(PSTR("x"), false);
+ const char *last_col_r2g_str = get_u8_str(last_col_r2g, ' ');
+ oled_write(depad_str(last_col_r2g_str, ' '), false);
+ oled_write_P(PSTR(", k"), false);
+ const char *last_keycode_r2g_str = get_u16_str(last_keycode_r2g, ' ');
+ oled_write(depad_str(last_keycode_r2g_str, ' '), false);
+ oled_write_P(PSTR(":"), false);
+ oled_write_char(key_name_r2g, false);
+}
+
+void render_bootmagic_status_r2g(bool status) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ if (status) {
+ oled_write_ln_P(logo[0][0], false);
+ oled_write_ln_P(logo[0][1], false);
+ } else {
+ oled_write_ln_P(logo[1][0], false);
+ oled_write_ln_P(logo[1][1], false);
+ }
+}
+
+void oled_render_logo_r2g(void) {
+ static const char PROGMEM mb_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
+0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff,
+0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83,
+0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0xff, 0xff, 0x82, 0x82, 0x82, 0x82,
+0x82, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff,
+0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0xfc, 0xfc,
+0x9c, 0x9c, 0xfc, 0xfc, 0xf8, 0xf8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x7c, 0x3c,
+0x9c, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0x3c, 0x3c,
+0x9c, 0xbc, 0xfc, 0xb8, 0xb8, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41,
+0x41, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff,
+0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f,
+0x03, 0x07, 0x0f, 0x3f, 0x3f, 0x3e, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x3e, 0x3f,
+0x3f, 0x3f, 0x3b, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, 0x3c, 0x38,
+0x3b, 0x3b, 0x3f, 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0,
+0xf0, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(mb_logo, sizeof(mb_logo));
+ //oled_set_cursor(oled_max_chars()/2,oled_max_lines()/2);
+ //oled_write_P(PSTR("R2G"), false);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_master()) {
+ oled_render_layer_state_r2g();
+ oled_render_keylog_r2g();
+ } else {
+ oled_render_logo_r2g();
+ }
+ return false;
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ set_keylog_r2g(keycode, record);
+ }
+ return process_record_user(keycode, record);
+}
+#endif // OLED_ENABLE
+
diff --git a/keyboards/crkbd/r2g/r2g.h b/keyboards/crkbd/r2g/r2g.h
new file mode 100644
index 0000000000..126c4b8998
--- /dev/null
+++ b/keyboards/crkbd/r2g/r2g.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "crkbd.h"
+#include "quantum.h"
+
+// clang-format off
+#define LAYOUT_split_3x6_3( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \
+ }
+
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { KC_NO, L00, L01, L02, L03, L04 }, \
+ { KC_NO, L10, L11, L12, L13, L14 }, \
+ { KC_NO, L20, L21, L22, L23, L24 }, \
+ { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \
+ { KC_NO, R04, R03, R02, R01, R00 }, \
+ { KC_NO, R14, R13, R12, R11, R10 }, \
+ { KC_NO, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \
+ }
+
+
+#define LAYOUT LAYOUT_split_3x6_3
diff --git a/keyboards/crkbd/r2g/readme.md b/keyboards/crkbd/r2g/readme.md
new file mode 100644
index 0000000000..7a9db3845d
--- /dev/null
+++ b/keyboards/crkbd/r2g/readme.md
@@ -0,0 +1,28 @@
+# Corne R2G
+
+![r2g](https://cdn.shopify.com/s/files/1/0582/0242/3501/products/HelidoxCorneR2GPCB_1800x1800.png)
+
+An Eddition of the popular CRKBD featuring a full smd assembly
+
+Keyboard Maintainer: [e11i0t23](https://github.com/e11i0t23/), [Mechboards UK](https://mechboards.co.uk)
+Hardware Supported: CRKBD R2G PCB
+Hardware Availability: [Mechboards UK](https://mechboards.co.uk/products/helidox-corne-kit?variant=40391708213453)
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make crkbd/r2g:mb_via
+```
+
+Flash example for this keyboard:
+```sh
+qmk flash -kb crkbd/r2g -km mb_via
+```
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+These PCBs have a reset on the underside of the PCB next to the TRRS jack to enter in to the bootloader.
+
+Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage).
diff --git a/keyboards/crkbd/r2g/rules.mk b/keyboards/crkbd/r2g/rules.mk
new file mode 100644
index 0000000000..a3ee1b46b3
--- /dev/null
+++ b/keyboards/crkbd/r2g/rules.mk
@@ -0,0 +1,9 @@
+BOOTLOADER = atmel-dfu
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+
+
+SPLIT_KEYBOARD = yes
+
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index 64b51f54f0..6c0e859663 100644
--- a/keyboards/crkbd/readme.md
+++ b/keyboards/crkbd/readme.md
@@ -27,7 +27,7 @@ The Corne PCBs have a reset button next to the TRRS jack to enter in to the boot
Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage). This would normally be the very top corner-most position, but due to the breakaway column, it's left at Q and P for compatibility.
## RGB Matrix
-The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provids a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this.
+The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provides a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this.
In your keymap's `rules.mk` file, add the following:
@@ -54,8 +54,8 @@ And in your `config.h` file, add the following:
# define RGB_MATRIX_VAL_STEP 8
# define RGB_MATRIX_SPD_STEP 10
-/* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
+/* Enable the animations you want/need. You may need to enable only a small number of these because *
+ * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
diff --git a/keyboards/crkbd/rev1/config.h b/keyboards/crkbd/rev1/config.h
index 337859d05c..9f196a7166 100644
--- a/keyboards/crkbd/rev1/config.h
+++ b/keyboards/crkbd/rev1/config.h
@@ -25,9 +25,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN D3
#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 12 // Number of LEDs
+# define RGBLED_NUM 54 // Number of LEDs
# define RGBLED_SPLIT \
- { 6, 6 }
+ { 27, 27 }
# define RGBLIGHT_SPLIT
#endif
diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk
index 8169e78ae8..4f373d53da 100644
--- a/keyboards/crkbd/rules.mk
+++ b/keyboards/crkbd/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cu24/keymaps/default/keymap.c b/keyboards/cu24/keymaps/default/keymap.c
index e6db359edf..aa2d834dfa 100644
--- a/keyboards/cu24/keymaps/default/keymap.c
+++ b/keyboards/cu24/keymaps/default/keymap.c
@@ -17,20 +17,20 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_grid( /* Base */
- KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, \
- MO(1) , KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7 , KC_P8 , KC_P9 , KC_PPLS, \
- KC_P4 , KC_P5 , KC_P6 , KC_PPLS, \
- KC_P1 , KC_P2 , KC_P3 , KC_PENT, \
+ KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU,
+ MO(1) , KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7 , KC_P8 , KC_P9 , KC_PPLS,
+ KC_P4 , KC_P5 , KC_P6 , KC_PPLS,
+ KC_P1 , KC_P2 , KC_P3 , KC_PENT,
KC_P0 , KC_P0 , KC_PDOT, KC_PENT
),
[1] = LAYOUT_grid( /* FN */
- RGB_TOG, RGB_MOD, BL_STEP, BL_BRTG, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, \
- RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ RGB_TOG, RGB_MOD, BL_STEP, BL_BRTG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RESET , KC_TRNS
),
};
diff --git a/keyboards/cu24/rules.mk b/keyboards/cu24/rules.mk
index 7b5d05ae93..87e6fffce0 100644
--- a/keyboards/cu24/rules.mk
+++ b/keyboards/cu24/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # RGB drivers
diff --git a/keyboards/cu75/keymaps/default/config.h b/keyboards/cu75/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/cu75/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/cu75/keymaps/default/keymap.c b/keyboards/cu75/keymaps/default/keymap.c
index 923faf97d5..b1e3e9f97a 100644
--- a/keyboards/cu75/keymaps/default/keymap.c
+++ b/keyboards/cu75/keymaps/default/keymap.c
@@ -24,12 +24,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------'
*/
[VANILLA] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
),
@@ -49,11 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------'
*/
[FUNC] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, \
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI
),
};
diff --git a/keyboards/cu75/keymaps/default/rules.mk b/keyboards/cu75/keymaps/default/rules.mk
index 4bddc61e9a..bbd4c8c9fd 100644
--- a/keyboards/cu75/keymaps/default/rules.mk
+++ b/keyboards/cu75/keymaps/default/rules.mk
@@ -1,20 +1,14 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Disable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Disable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/cu75/keymaps/iso/config.h b/keyboards/cu75/keymaps/iso/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/cu75/keymaps/iso/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/cu75/keymaps/iso/keymap.c b/keyboards/cu75/keymaps/iso/keymap.c
index 60c06905ff..ce7d51eed0 100644
--- a/keyboards/cu75/keymaps/iso/keymap.c
+++ b/keyboards/cu75/keymaps/iso/keymap.c
@@ -24,12 +24,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------'
*/
[VANILLA] = LAYOUT_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap VANILLA: Function Layer
@@ -48,11 +48,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------'
*/
[FUNC] = LAYOUT_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, RGB_HUI, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI
),
};
diff --git a/keyboards/cu75/keymaps/iso/rules.mk b/keyboards/cu75/keymaps/iso/rules.mk
index 069e53f3c9..be27fed69c 100644
--- a/keyboards/cu75/keymaps/iso/rules.mk
+++ b/keyboards/cu75/keymaps/iso/rules.mk
@@ -1,20 +1,14 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
# BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Disable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = no # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/cu80/rules.mk b/keyboards/cu80/rules.mk
index 10102e2abf..6bfd2008a8 100644
--- a/keyboards/cu80/rules.mk
+++ b/keyboards/cu80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/custommk/genesis/rev2/rules.mk b/keyboards/custommk/genesis/rev2/rules.mk
index a22df8f75f..00195cec93 100644
--- a/keyboards/custommk/genesis/rev2/rules.mk
+++ b/keyboards/custommk/genesis/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/custommk/genesis/rules.mk b/keyboards/custommk/genesis/rules.mk
index ed95e6fd07..dabe21110b 100644
--- a/keyboards/custommk/genesis/rules.mk
+++ b/keyboards/custommk/genesis/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/borsdorf/rules.mk b/keyboards/cutie_club/borsdorf/rules.mk
index e2d46fe667..bb9ab9fc3b 100644
--- a/keyboards/cutie_club/borsdorf/rules.mk
+++ b/keyboards/cutie_club/borsdorf/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h
index 8e0b612f3c..478846e3c2 100755
--- a/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h
+++ b/keyboards/cutie_club/giant_macro_pad/giant_macro_pad.h
@@ -26,7 +26,7 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT_all( \
+#define LAYOUT_ortho_20x20( \
k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, k00_16, k00_17, k00_18, k00_19, \
k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_14, k01_15, k01_16, k01_17, k01_18, k01_19, \
k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_14, k02_15, k02_16, k02_17, k02_18, k02_19, \
diff --git a/keyboards/cutie_club/giant_macro_pad/info.json b/keyboards/cutie_club/giant_macro_pad/info.json
index 348f3a3f5a..f8225fdae7 100644
--- a/keyboards/cutie_club/giant_macro_pad/info.json
+++ b/keyboards/cutie_club/giant_macro_pad/info.json
@@ -2,8 +2,11 @@
"keyboard_name": "Cupar19 Giant Macro Pad",
"url": "",
"maintainer": "cutie-club",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_ortho_20x20"
+ },
"layouts": {
- "LAYOUT": {
+ "LAYOUT_ortho_20x20": {
"layout": [
{"label":"k00_00", "x":0, "y":0},
{"label":"k00_01", "x":1, "y":0},
diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c
index 2db71e990c..4226060472 100755
--- a/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c
+++ b/keyboards/cutie_club/giant_macro_pad/keymaps/default/keymap.c
@@ -421,7 +421,7 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_all(
+ [0] = LAYOUT_ortho_20x20(
NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_10, NUM_11, NUM_12, NUM_13, NUM_14, NUM_15, NUM_16, NUM_17, NUM_18, NUM_19,
NUM_20, NUM_21, NUM_22, NUM_23, NUM_24, NUM_25, NUM_26, NUM_27, NUM_28, NUM_29, NUM_30, NUM_31, NUM_32, NUM_33, NUM_34, NUM_35, NUM_36, NUM_37, NUM_38, NUM_39,
NUM_40, NUM_41, NUM_42, NUM_43, NUM_44, NUM_45, NUM_46, NUM_47, NUM_48, NUM_49, NUM_50, NUM_51, NUM_52, NUM_53, NUM_54, NUM_55, NUM_56, NUM_57, NUM_58, NUM_59,
diff --git a/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c
index 64b3f2b530..db9a718a9b 100755
--- a/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c
+++ b/keyboards/cutie_club/giant_macro_pad/keymaps/via/keymap.c
@@ -18,7 +18,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_all(
+ [0] = LAYOUT_ortho_20x20(
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,
KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,
diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk
index e2d46fe667..bb9ab9fc3b 100755
--- a/keyboards/cutie_club/giant_macro_pad/rules.mk
+++ b/keyboards/cutie_club/giant_macro_pad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/keebcats/denis/denis.h b/keyboards/cutie_club/keebcats/denis/denis.h
index 7ba152b8ea..dea20e8880 100644
--- a/keyboards/cutie_club/keebcats/denis/denis.h
+++ b/keyboards/cutie_club/keebcats/denis/denis.h
@@ -18,138 +18,140 @@
#include "quantum.h"
+#define ___ KC_NO
+
#define LAYOUT_all( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
- k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
- k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_10, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k44, k46, k48, k4A, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
- { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, k44, ___, k46, ___, k48, ___, k4A, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_ansi( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
- k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
- k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
- { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_ansi_split_bs_rshift( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
- k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
- k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
- { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_ansi_tsangan( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
- k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
- k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
- { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_hhkb( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
- k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
- k04_01, k04_02, k04_06, k04_11, k04_12 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k41, k42, k46, k4B, k4C \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
- { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
- { KC_NO, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, KC_NO, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { ___, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, ___, ___ } \
}
#define LAYOUT_60_tsangan_hhkb( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_13, \
- k03_00, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
- k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k46, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, KC_NO, k02_13, KC_NO }, \
- { k03_00, KC_NO, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_iso( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
- k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
- k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
- { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_iso_split_bs_rshift( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
- k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, \
- k04_00, k04_01, k04_02, k04_06, k04_10, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
- { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, k04_10, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
}
#define LAYOUT_60_iso_tsangan( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_14, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, \
- k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, \
- k04_00, k04_01, k04_02, k04_06, k04_11, k04_12, k04_13 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4B, k4C, k4D \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, KC_NO, k00_14 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, KC_NO, KC_NO }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO }, \
- { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, KC_NO, KC_NO }, \
- { k04_00, k04_01, k04_02, KC_NO, KC_NO, KC_NO, k04_06, KC_NO, KC_NO, KC_NO, KC_NO, k04_11, k04_12, k04_13, KC_NO } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, ___, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, ___, k4B, k4C, k4D, ___ } \
}
diff --git a/keyboards/cutie_club/keebcats/denis/info.json b/keyboards/cutie_club/keebcats/denis/info.json
index a19a16a15c..72a84e62e8 100644
--- a/keyboards/cutie_club/keebcats/denis/info.json
+++ b/keyboards/cutie_club/keebcats/denis/info.json
@@ -5,204 +5,634 @@
"layouts": {
"LAYOUT_all": {
"layout": [
- { "x": 0, "y": 0 },
- { "x": 1, "y": 0 },
- { "x": 2, "y": 0 },
- { "x": 3, "y": 0 },
- { "x": 4, "y": 0 },
- { "x": 5, "y": 0 },
- { "x": 6, "y": 0 },
- { "x": 7, "y": 0 },
- { "x": 8, "y": 0 },
- { "x": 9, "y": 0 },
- { "x": 10, "y": 0 },
- { "x": 11, "y": 0 },
- { "x": 12, "y": 0 },
- { "x": 13, "y": 0 },
- { "x": 14, "y": 0 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1 },
- { "x": 2.5, "y": 1 },
- { "x": 3.5, "y": 1 },
- { "x": 4.5, "y": 1 },
- { "x": 5.5, "y": 1 },
- { "x": 6.5, "y": 1 },
- { "x": 7.5, "y": 1 },
- { "x": 8.5, "y": 1 },
- { "x": 9.5, "y": 1 },
- { "x": 10.5, "y": 1 },
- { "x": 11.5, "y": 1 },
- { "x": 12.5, "y": 1 },
- { "x": 13.5, "y": 1, "w": 1.5 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2 },
- { "x": 2.75, "y": 2 },
- { "x": 3.75, "y": 2 },
- { "x": 4.75, "y": 2 },
- { "x": 5.75, "y": 2 },
- { "x": 6.75, "y": 2 },
- { "x": 7.75, "y": 2 },
- { "x": 8.75, "y": 2 },
- { "x": 9.75, "y": 2 },
- { "x": 10.75, "y": 2 },
- { "x": 11.75, "y": 2 },
- { "x": 12.75, "y": 2 },
- { "x": 14, "y": 2 },
- { "x": 0, "y": 3, "w": 1.25 },
- { "x": 1.25, "y": 3 },
- { "x": 2.25, "y": 3 },
- { "x": 3.25, "y": 3 },
- { "x": 4.25, "y": 3 },
- { "x": 5.25, "y": 3 },
- { "x": 6.25, "y": 3 },
- { "x": 7.25, "y": 3 },
- { "x": 8.25, "y": 3 },
- { "x": 9.25, "y": 3 },
- { "x": 10.25, "y": 3 },
- { "x": 11.25, "y": 3 },
- { "x": 12.25, "y": 3, "w": 1.75 },
- { "x": 14, "y": 3 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 2.25 },
- { "x": 6, "y": 4, "w": 1.25 },
- { "x": 7.25, "y": 4, "w": 2.75 },
- { "x": 10, "y": 4, "w": 1.25 },
- { "x": 11.25, "y": 4, "w": 1.25 },
- { "x": 12.5, "y": 4, "w": 1.25 },
- { "x": 13.75, "y": 4, "w": 1.25 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":2, "w":1.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"App", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
]
},
"LAYOUT_60_iso": {
"layout": [
- { "x": 0, "y": 0 },
- { "x": 1, "y": 0 },
- { "x": 2, "y": 0 },
- { "x": 3, "y": 0 },
- { "x": 4, "y": 0 },
- { "x": 5, "y": 0 },
- { "x": 6, "y": 0 },
- { "x": 7, "y": 0 },
- { "x": 8, "y": 0 },
- { "x": 9, "y": 0 },
- { "x": 10, "y": 0 },
- { "x": 11, "y": 0 },
- { "x": 12, "y": 0 },
- { "x": 13, "y": 0, "w": 2 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1 },
- { "x": 2.5, "y": 1 },
- { "x": 3.5, "y": 1 },
- { "x": 4.5, "y": 1 },
- { "x": 5.5, "y": 1 },
- { "x": 6.5, "y": 1 },
- { "x": 7.5, "y": 1 },
- { "x": 8.5, "y": 1 },
- { "x": 9.5, "y": 1 },
- { "x": 10.5, "y": 1 },
- { "x": 11.5, "y": 1 },
- { "x": 12.5, "y": 1 },
- { "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2 },
- { "x": 2.75, "y": 2 },
- { "x": 3.75, "y": 2 },
- { "x": 4.75, "y": 2 },
- { "x": 5.75, "y": 2 },
- { "x": 6.75, "y": 2 },
- { "x": 7.75, "y": 2 },
- { "x": 8.75, "y": 2 },
- { "x": 9.75, "y": 2 },
- { "x": 10.75, "y": 2 },
- { "x": 11.75, "y": 2 },
- { "x": 12.75, "y": 2 },
- { "x": 0, "y": 3, "w": 1.25 },
- { "x": 1.25, "y": 3 },
- { "x": 2.25, "y": 3 },
- { "x": 3.25, "y": 3 },
- { "x": 4.25, "y": 3 },
- { "x": 5.25, "y": 3 },
- { "x": 6.25, "y": 3 },
- { "x": 7.25, "y": 3 },
- { "x": 8.25, "y": 3 },
- { "x": 9.25, "y": 3 },
- { "x": 10.25, "y": 3 },
- { "x": 11.25, "y": 3 },
- { "x": 12.25, "y": 3, "w": 2.75 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 6.25 },
- { "x": 10, "y": 4, "w": 1.25 },
- { "x": 11.25, "y": 4, "w": 1.25 },
- { "x": 12.5, "y": 4, "w": 1.25 },
- { "x": 13.75, "y": 4, "w": 1.25 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"App", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"App", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
]
},
"LAYOUT_60_ansi": {
"layout": [
- { "x": 0, "y": 0 },
- { "x": 1, "y": 0 },
- { "x": 2, "y": 0 },
- { "x": 3, "y": 0 },
- { "x": 4, "y": 0 },
- { "x": 5, "y": 0 },
- { "x": 6, "y": 0 },
- { "x": 7, "y": 0 },
- { "x": 8, "y": 0 },
- { "x": 9, "y": 0 },
- { "x": 10, "y": 0 },
- { "x": 11, "y": 0 },
- { "x": 12, "y": 0 },
- { "x": 13, "y": 0, "w": 2 },
- { "x": 0, "y": 1, "w": 1.5 },
- { "x": 1.5, "y": 1 },
- { "x": 2.5, "y": 1 },
- { "x": 3.5, "y": 1 },
- { "x": 4.5, "y": 1 },
- { "x": 5.5, "y": 1 },
- { "x": 6.5, "y": 1 },
- { "x": 7.5, "y": 1 },
- { "x": 8.5, "y": 1 },
- { "x": 9.5, "y": 1 },
- { "x": 10.5, "y": 1 },
- { "x": 11.5, "y": 1 },
- { "x": 12.5, "y": 1 },
- { "x": 13.75, "y": 1, "w": 1.25 },
- { "x": 0, "y": 2, "w": 1.75 },
- { "x": 1.75, "y": 2 },
- { "x": 2.75, "y": 2 },
- { "x": 3.75, "y": 2 },
- { "x": 4.75, "y": 2 },
- { "x": 5.75, "y": 2 },
- { "x": 6.75, "y": 2 },
- { "x": 7.75, "y": 2 },
- { "x": 8.75, "y": 2 },
- { "x": 9.75, "y": 2 },
- { "x": 10.75, "y": 2 },
- { "x": 11.75, "y": 2 },
- { "x": 12.75, "y": 2, "w": 2.25 },
- { "x": 0, "y": 3, "w": 2.25 },
- { "x": 2.25, "y": 3 },
- { "x": 3.25, "y": 3 },
- { "x": 4.25, "y": 3 },
- { "x": 5.25, "y": 3 },
- { "x": 6.25, "y": 3 },
- { "x": 7.25, "y": 3 },
- { "x": 8.25, "y": 3 },
- { "x": 9.25, "y": 3 },
- { "x": 10.25, "y": 3 },
- { "x": 11.25, "y": 3 },
- { "x": 12.25, "y": 3, "w": 2.75 },
- { "x": 0, "y": 4, "w": 1.25 },
- { "x": 1.25, "y": 4, "w": 1.25 },
- { "x": 2.5, "y": 4, "w": 1.25 },
- { "x": 3.75, "y": 4, "w": 6.25 },
- { "x": 10, "y": 4, "w": 1.25 },
- { "x": 11.25, "y": 4, "w": 1.25 },
- { "x": 12.5, "y": 4, "w": 1.25 },
- { "x": 13.75, "y": 4, "w": 1.25 }
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"App", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"App", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_hhkb": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":4}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
]
}
}
diff --git a/keyboards/cutie_club/keebcats/denis/rules.mk b/keyboards/cutie_club/keebcats/denis/rules.mk
index 07f5fabc06..92c63aa421 100644
--- a/keyboards/cutie_club/keebcats/denis/rules.mk
+++ b/keyboards/cutie_club/keebcats/denis/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/keebcats/dougal/dougal.h b/keyboards/cutie_club/keebcats/dougal/dougal.h
index cd0fa1d2cd..e035177dcd 100644
--- a/keyboards/cutie_club/keebcats/dougal/dougal.h
+++ b/keyboards/cutie_club/keebcats/dougal/dougal.h
@@ -18,17 +18,72 @@
#include "quantum.h"
+#define ___ KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │ │0E │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2F │ │2C │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ ┌─┴───┴────┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3F │ │3C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤ └──────────┘
+ * │40 │41 │42 │44 │46 │48 │49 │4A │4B │4C │4D │4F │
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬───┬───┬───┐
+ * │40 │41 │42 │46 │49 │4A │4B │ Standard
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘
+ * ┌─────┬─────┬───────────────────────────┬─────┬─────┐
+ * │40 │41 │46 │49 │4A │ WKL
+ * └─────┴─────┴───────────────────────────┴─────┴─────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┐
+ * │40 │41 │42 │46 │4A │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
#define LAYOUT_all( \
- k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15, \
- k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, k01_15, \
- k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, k02_15, \
- k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, k03_15, \
- k04_00, k04_01, k04_02, k04_04, k04_06, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, k04_15 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
+ k40, k41, k42, k44, k46, k48, k49, k4A, k4B, k4C, k4D, k4F \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \
+ { k40, k41, k42, ___, k44, ___, k46, ___, k48, k49, k4A, k4B, k4C, k4D, ___, k4F } \
+}
+
+#define LAYOUT_65_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
+ k40, k41, k42, k46, k49, k4A, k4B, k4C, k4D, k4F \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, ___, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, ___, k2D, ___, k2F }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4A, k4B, k4C, k4D, ___, k4F } \
+}
+
+#define LAYOUT_65_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1F, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3F, \
+ k40, k41, k42, k46, k49, k4A, k4B, k4C, k4D, k4F \
) \
{ \
- { k00_00, k00_01, k00_02, k00_03, k00_04, k00_05, k00_06, k00_07, k00_08, k00_09, k00_10, k00_11, k00_12, k00_13, k00_14, k00_15 }, \
- { k01_00, k01_01, k01_02, k01_03, k01_04, k01_05, k01_06, k01_07, k01_08, k01_09, k01_10, k01_11, k01_12, k01_13, KC_NO, k01_15 }, \
- { k02_00, k02_01, k02_02, k02_03, k02_04, k02_05, k02_06, k02_07, k02_08, k02_09, k02_10, k02_11, k02_12, k02_13, KC_NO, k02_15 }, \
- { k03_00, k03_01, k03_02, k03_03, k03_04, k03_05, k03_06, k03_07, k03_08, k03_09, k03_10, k03_11, k03_12, k03_13, KC_NO, k03_15 }, \
- { k04_00, k04_01, k04_02, KC_NO, k04_04, KC_NO, k04_06, KC_NO, k04_08, k04_09, k04_10, k04_11, k04_12, k04_13, KC_NO, k04_15 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, ___, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, ___, ___, k1F }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, ___, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___, k3F }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, k49, k4A, k4B, k4C, k4D, ___, k4F } \
}
diff --git a/keyboards/cutie_club/keebcats/dougal/info.json b/keyboards/cutie_club/keebcats/dougal/info.json
index 70c804e20d..f637be7a1a 100644
--- a/keyboards/cutie_club/keebcats/dougal/info.json
+++ b/keyboards/cutie_club/keebcats/dougal/info.json
@@ -79,6 +79,159 @@
{ "x": 14, "y": 4 },
{ "x": 15, "y": 4 }
]
+ },
+ "LAYOUT_65_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
}
}
}
diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_ansi/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_ansi/keymap.c
new file mode 100644
index 0000000000..3de782f742
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_ansi/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Cutie Club
+ * 2022 QMK / James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_iso/keymap.c b/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_iso/keymap.c
new file mode 100644
index 0000000000..3154d3ea83
--- /dev/null
+++ b/keyboards/cutie_club/keebcats/dougal/keymaps/default_65_iso/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Cutie Club
+ * 2022 QMK / James Young (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT_65_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/cutie_club/keebcats/dougal/rules.mk b/keyboards/cutie_club/keebcats/dougal/rules.mk
index 05c513615e..b3494d4cae 100644
--- a/keyboards/cutie_club/keebcats/dougal/rules.mk
+++ b/keyboards/cutie_club/keebcats/dougal/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cutie_club/wraith/keymaps/default/config.h b/keyboards/cutie_club/wraith/keymaps/default/config.h
deleted file mode 100644
index 6f4dc6741c..0000000000
--- a/keyboards/cutie_club/wraith/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Amber
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/cutie_club/wraith/rules.mk b/keyboards/cutie_club/wraith/rules.mk
index 60c0e1b193..bcd815acf5 100644
--- a/keyboards/cutie_club/wraith/rules.mk
+++ b/keyboards/cutie_club/wraith/rules.mk
@@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cx60/rules.mk b/keyboards/cx60/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/cx60/rules.mk
+++ b/keyboards/cx60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cybergear/macro25/rules.mk b/keyboards/cybergear/macro25/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/cybergear/macro25/rules.mk
+++ b/keyboards/cybergear/macro25/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dailycraft/stickey4/config.h b/keyboards/dailycraft/stickey4/config.h
new file mode 100644
index 0000000000..85e49bca96
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/config.h
@@ -0,0 +1,156 @@
+/*
+Copyright 2021 yfuku
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5946 // YF
+#define PRODUCT_ID 0x0010
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yfuku
+#define PRODUCT stickey4
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define DIRECT_PINS { \
+ { D4, C6, D7, E6, NO_PIN, NO_PIN, NO_PIN, NO_PIN } \
+}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+#define ENCODERS_PAD_A { D4, D7 }
+#define ENCODERS_PAD_B { C6, E6 }
diff --git a/keyboards/dailycraft/stickey4/keymaps/default/keymap.c b/keyboards/dailycraft/stickey4/keymaps/default/keymap.c
new file mode 100644
index 0000000000..70de5dca44
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_A, KC_B, KC_C, KC_D,
+ KC_NO, KC_NO, KC_NO, KC_NO // for encoders
+ ),
+ [_FN1] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_FN2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_FN3] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/dailycraft/stickey4/keymaps/default/readme.md b/keyboards/dailycraft/stickey4/keymaps/default/readme.md
new file mode 100644
index 0000000000..3b9ed23b9c
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for stickey4
diff --git a/keyboards/dailycraft/stickey4/keymaps/via/keymap.c b/keyboards/dailycraft/stickey4/keymaps/via/keymap.c
new file mode 100644
index 0000000000..602d3fb10d
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/keymaps/via/keymap.c
@@ -0,0 +1,115 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_A, KC_B, KC_C, KC_D,
+ KC_NO, KC_NO, KC_NO, KC_NO // for encoders
+ ),
+ [_FN1] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_FN2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_FN3] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+keyevent_t encoder1_ccw = {
+ .key = (keypos_t){.row = 0, .col = 4},
+ .pressed = false
+};
+
+keyevent_t encoder1_cw = {
+ .key = (keypos_t){.row = 0, .col = 5},
+ .pressed = false
+};
+
+keyevent_t encoder2_ccw = {
+ .key = (keypos_t){.row = 0, .col = 6},
+ .pressed = false
+};
+
+keyevent_t encoder2_cw = {
+ .key = (keypos_t){.row = 0, .col = 7},
+ .pressed = false
+};
+
+void matrix_scan_user(void) {
+ if (IS_PRESSED(encoder1_ccw)) {
+ encoder1_ccw.pressed = false;
+ encoder1_ccw.time = (timer_read() | 1);
+ action_exec(encoder1_ccw);
+ }
+
+ if (IS_PRESSED(encoder1_cw)) {
+ encoder1_cw.pressed = false;
+ encoder1_cw.time = (timer_read() | 1);
+ action_exec(encoder1_cw);
+ }
+
+ if (IS_PRESSED(encoder2_ccw)) {
+ encoder2_ccw.pressed = false;
+ encoder2_ccw.time = (timer_read() | 1);
+ action_exec(encoder2_ccw);
+ }
+
+ if (IS_PRESSED(encoder2_cw)) {
+ encoder2_cw.pressed = false;
+ encoder2_cw.time = (timer_read() | 1);
+ action_exec(encoder2_cw);
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ encoder1_cw.pressed = true;
+ encoder1_cw.time = (timer_read() | 1);
+ action_exec(encoder1_cw);
+ } else {
+ encoder1_ccw.pressed = true;
+ encoder1_ccw.time = (timer_read() | 1);
+ action_exec(encoder1_ccw);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ encoder2_cw.pressed = true;
+ encoder2_cw.time = (timer_read() | 1);
+ action_exec(encoder2_cw);
+ } else {
+ encoder2_ccw.pressed = true;
+ encoder2_ccw.time = (timer_read() | 1);
+ action_exec(encoder2_ccw);
+ }
+ }
+
+ return true;
+}
diff --git a/keyboards/dailycraft/stickey4/keymaps/via/readme.md b/keyboards/dailycraft/stickey4/keymaps/via/readme.md
new file mode 100644
index 0000000000..202bcb2b9d
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for stickey4
diff --git a/keyboards/dailycraft/stickey4/keymaps/via/rules.mk b/keyboards/dailycraft/stickey4/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/dailycraft/stickey4/readme.md b/keyboards/dailycraft/stickey4/readme.md
new file mode 100644
index 0000000000..e365407f82
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/readme.md
@@ -0,0 +1,26 @@
+# stickey4
+
+![stickey4](https://raw.githubusercontent.com/yfuku/stickey4/main/images/stickey4.jpeg)
+
+macropad
+
+* Keyboard Maintainer: [yfuku](https://github.com/yfuku)
+* Hardware Supported: stickey4 PCB, Pro Micro
+* Hardware Availability: https://shop.dailycraft.jp/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dailycraft/stickey4:default
+
+Flashing example for this keyboard:
+
+ make dailycraft/stickey4:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/dailycraft/stickey4/rules.mk b/keyboards/dailycraft/stickey4/rules.mk
new file mode 100644
index 0000000000..284ea23e78
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
diff --git a/keyboards/dailycraft/stickey4/stickey4.c b/keyboards/dailycraft/stickey4/stickey4.c
new file mode 100644
index 0000000000..dd0ac4f5f2
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/stickey4.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "stickey4.h"
diff --git a/keyboards/dailycraft/stickey4/stickey4.h b/keyboards/dailycraft/stickey4/stickey4.h
new file mode 100644
index 0000000000..6a21a8f991
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/stickey4.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k04, k05, k06, k07 \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07 } \
+}
diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk
index d9bb3e13aa..255f225985 100644
--- a/keyboards/daji/seis_cinco/rules.mk
+++ b/keyboards/daji/seis_cinco/rules.mk
@@ -6,17 +6,14 @@ BOARD = GENERIC_STM32_F072XB
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/db/db63/rules.mk b/keyboards/db/db63/rules.mk
index 3bff3ee31b..4dcdfe886a 100644
--- a/keyboards/db/db63/rules.mk
+++ b/keyboards/db/db63/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/dc01/arrow/rules.mk b/keyboards/dc01/arrow/rules.mk
index 6a5dc9af06..8d8884e59d 100644
--- a/keyboards/dc01/arrow/rules.mk
+++ b/keyboards/dc01/arrow/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
diff --git a/keyboards/dc01/left/config.h b/keyboards/dc01/left/config.h
index bc934e4a39..43883975c4 100644
--- a/keyboards/dc01/left/config.h
+++ b/keyboards/dc01/left/config.h
@@ -55,7 +55,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define BACKLIGHT_LEVELS 3
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 5
+#define DEBOUNCE 0
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/dc01/left/matrix.c b/keyboards/dc01/left/matrix.c
index bf5aba8497..40533beac4 100644
--- a/keyboards/dc01/left/matrix.c
+++ b/keyboards/dc01/left/matrix.c
@@ -419,7 +419,7 @@ static void unselect_cols(void)
// Complete rows from other modules over i2c
i2c_status_t i2c_transaction(uint8_t address, uint32_t mask, uint8_t col_offset) {
- i2c_status_t status = i2c_start(address, 50);
+ i2c_status_t status = i2c_start(address, 5);
if (status < 0) {
goto error;
}
diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk
index c39b1507ec..1c180d54b7 100644
--- a/keyboards/dc01/left/rules.mk
+++ b/keyboards/dc01/left/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dc01/numpad/rules.mk b/keyboards/dc01/numpad/rules.mk
index 16653ef8a0..173f1c126d 100644
--- a/keyboards/dc01/numpad/rules.mk
+++ b/keyboards/dc01/numpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
diff --git a/keyboards/dc01/right/rules.mk b/keyboards/dc01/right/rules.mk
index 6a5dc9af06..8d8884e59d 100644
--- a/keyboards/dc01/right/rules.mk
+++ b/keyboards/dc01/right/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
diff --git a/keyboards/dekunukem/duckypad/rules.mk b/keyboards/dekunukem/duckypad/rules.mk
index 787d12c84e..9ef7d664db 100644
--- a/keyboards/dekunukem/duckypad/rules.mk
+++ b/keyboards/dekunukem/duckypad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delikeeb/flatbread60/rules.mk b/keyboards/delikeeb/flatbread60/rules.mk
index 5aa5e7a905..6f52ecfc7a 100644
--- a/keyboards/delikeeb/flatbread60/rules.mk
+++ b/keyboards/delikeeb/flatbread60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delikeeb/vaguettelite/rules.mk b/keyboards/delikeeb/vaguettelite/rules.mk
index 599aa6616e..6dfedb28b8 100644
--- a/keyboards/delikeeb/vaguettelite/rules.mk
+++ b/keyboards/delikeeb/vaguettelite/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delikeeb/vanana/rules.mk b/keyboards/delikeeb/vanana/rules.mk
index ee2cd517cf..ae0d105d92 100644
--- a/keyboards/delikeeb/vanana/rules.mk
+++ b/keyboards/delikeeb/vanana/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
ENCODER_ENABLE = yes # Enable Rotary Encoder
diff --git a/keyboards/delikeeb/vaneela/rules.mk b/keyboards/delikeeb/vaneela/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/delikeeb/vaneela/rules.mk
+++ b/keyboards/delikeeb/vaneela/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delikeeb/vaneelaex/rules.mk b/keyboards/delikeeb/vaneelaex/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/delikeeb/vaneelaex/rules.mk
+++ b/keyboards/delikeeb/vaneelaex/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delikeeb/waaffle/rev3/rules.mk b/keyboards/delikeeb/waaffle/rev3/rules.mk
index 130155735d..7467b612c1 100644
--- a/keyboards/delikeeb/waaffle/rev3/rules.mk
+++ b/keyboards/delikeeb/waaffle/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/delilah/rules.mk b/keyboards/delilah/rules.mk
index 438c9fdf73..7c928a6cbf 100644
--- a/keyboards/delilah/rules.mk
+++ b/keyboards/delilah/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/deltapad/config.h b/keyboards/deltapad/config.h
new file mode 100644
index 0000000000..a4a78f244a
--- /dev/null
+++ b/keyboards/deltapad/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 Richard Snijder
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0123
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Richard Snijder
+#define PRODUCT deltapad
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D2, D3, D1, D0 }
+#define MATRIX_COL_PINS { D7, E6, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/deltapad/deltapad.c b/keyboards/deltapad/deltapad.c
new file mode 100644
index 0000000000..ee9ac17c4a
--- /dev/null
+++ b/keyboards/deltapad/deltapad.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Richard Snijder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "deltapad.h"
diff --git a/keyboards/deltapad/deltapad.h b/keyboards/deltapad/deltapad.h
new file mode 100644
index 0000000000..8e09c1fc84
--- /dev/null
+++ b/keyboards/deltapad/deltapad.h
@@ -0,0 +1,51 @@
+/* Copyright 2021 Richard Snijder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_4x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 } \
+}
+
+#define LAYOUT_numpad_4x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K23, \
+ K31, K32 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, KC_NO }, \
+ { K20, K21, K22, K23 }, \
+ { KC_NO, K31, K32, KC_NO } \
+}
diff --git a/keyboards/deltapad/info.json b/keyboards/deltapad/info.json
new file mode 100644
index 0000000000..94fca5a9b4
--- /dev/null
+++ b/keyboards/deltapad/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "deltapad",
+ "url": "",
+ "maintainer": "Richard Snijder",
+ "layouts": {
+ "LAYOUT_ortho_4x4": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}]
+ },
+ "LAYOUT_numpad_4x4": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0, "h":2}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "h":2}, {"x":0, "y":3, "w":2}, {"x":2, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/deltapad/keymaps/default/keymap.c b/keyboards/deltapad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6baa033ed5
--- /dev/null
+++ b/keyboards/deltapad/keymaps/default/keymap.c
@@ -0,0 +1,91 @@
+/*
+Copyright 2021 Richard Snijder
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+uint16_t copy_paste_timer;
+uint16_t enter_timer;
+
+//extern rgblight_config_t rgblight_config;
+
+// Define custom keycodes
+enum my_keycodes {
+ KC_CCCV = SAFE_RANGE,
+ KC_2ENTER
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ //Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3,4)
+ [0] = LAYOUT_ortho_4x4(
+ KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_F17, KC_F18, KC_F19, KC_F20,
+ KC_F21, KC_F22, KC_F23, KC_F24,
+ TO(1), OSL(2), OSL(3), LCA(KC_J) //Transparent to let you go between layers
+ ),
+
+ [1] = LAYOUT_ortho_4x4(
+ LALT(KC_KP_1), LALT(KC_KP_2), LALT(KC_KP_3), LALT(KC_KP_4),
+ LALT(KC_KP_5), LALT(KC_KP_6), LALT(KC_KP_7), LALT(KC_KP_8),
+ LALT(KC_KP_9), LALT(KC_A), LALT(KC_B), LALT(KC_C),
+ TO(2),LALT(KC_D),LALT(KC_E),LALT(KC_F) //Transparent to let you go between layers
+ ),
+
+ //Layer 2 - Shift + Function Key Layer
+ [2] = LAYOUT_ortho_4x4(
+ LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4),
+ LCA(KC_F5), LCA(KC_F6), LCA(KC_F7), LCA(KC_F8),
+ LCA(KC_F9), LCA(KC_F10),LCA(KC_F11),LCA(KC_F12),
+ TO(3), LCA(KC_D), LCA(KC_E), LCA(KC_F) //Transparent to let you go between layers
+ ),
+
+ //Layer 3 - Control + Function Key
+ [3] = LAYOUT_ortho_4x4(
+ LCA(KC_F13), LCA(KC_F14), LCA(KC_F15), LCA(KC_F16),
+ LCA(KC_F17), LCA(KC_F18), LCA(KC_F19), LCA(KC_F20),
+ LCA(KC_F21), LCA(KC_F22),LCA(KC_F23),LCA(KC_F24),
+ TO(0), LCA(KC_G), LCA(KC_H), LCA(KC_I) //Transparent to let you go between layers
+ ),
+
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_CCCV: // One key copy/paste
+ if (record->event.pressed) {
+ copy_paste_timer = timer_read();
+ } else {
+ if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
+ tap_code16(LCTL(KC_C));
+ } else { // Tap, paste
+ tap_code16(LCTL(KC_V));
+ }
+ } return true;
+ case KC_2ENTER:
+ if (record->event.pressed) {
+ enter_timer = timer_read();
+ } else {
+ if (timer_elapsed(enter_timer) > TAPPING_TERM) { // Hold, shift+enter
+ tap_code16(LSFT(KC_ENTER));
+ } else { // Tap, enter
+ tap_code16(KC_F24);
+ }
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+
diff --git a/keyboards/deltapad/readme.md b/keyboards/deltapad/readme.md
new file mode 100644
index 0000000000..858f99b436
--- /dev/null
+++ b/keyboards/deltapad/readme.md
@@ -0,0 +1,28 @@
+# deltapad
+
+
+
+*A short description of the keyboard/project*
+
+A 4x4 keypad
+
+* Keyboard Maintainer: [Richard Snijder](https://github.com/rich239)
+* Hardware Supported: Atmel 32u4 based keypads
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make deltapad:default
+
+Flashing example for this keyboard:
+
+ make deltapad:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in the following way:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+
diff --git a/keyboards/deltapad/rules.mk b/keyboards/deltapad/rules.mk
new file mode 100644
index 0000000000..9906266f48
--- /dev/null
+++ b/keyboards/deltapad/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/deltasplit75/rules.mk b/keyboards/deltasplit75/rules.mk
index ced23bb50e..4f96bfc52a 100644
--- a/keyboards/deltasplit75/rules.mk
+++ b/keyboards/deltasplit75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/demiurge/config.h b/keyboards/demiurge/config.h
new file mode 100755
index 0000000000..abe6c193c4
--- /dev/null
+++ b/keyboards/demiurge/config.h
@@ -0,0 +1,79 @@
+/*
+Copyright 2021 ojthetiny
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6F6A
+#define PRODUCT_ID 0x6475
+#define DEVICE_VER 0x0001
+#define PRODUCT Demiurge
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F0, F4, F6, F7, C7 }
+#define MATRIX_COL_PINS { E6, F5, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0, B7, B3, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 1
+#endif
+
+#define RGB_DI_PIN F1
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 21
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LIMIT_VAL 153
+#endif
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/demiurge/demiurge.c b/keyboards/demiurge/demiurge.c
new file mode 100755
index 0000000000..4bd588d6e9
--- /dev/null
+++ b/keyboards/demiurge/demiurge.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 ojthetiny
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "demiurge.h" \ No newline at end of file
diff --git a/keyboards/demiurge/demiurge.h b/keyboards/demiurge/demiurge.h
new file mode 100755
index 0000000000..6ec656881b
--- /dev/null
+++ b/keyboards/demiurge/demiurge.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2021 ojthetiny
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3G, \
+ K40, K41, K42, K43, K44, K48, K4C, K4E, K4G \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, XXX, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E, XXX, K3G }, \
+ { K40, K41, K42, K43, K44, XXX, XXX, XXX, K48, XXX, XXX, XXX, K4C, XXX, K4E, XXX, K4G } \
+}
diff --git a/keyboards/demiurge/info.json b/keyboards/demiurge/info.json
new file mode 100644
index 0000000000..427d7ce278
--- /dev/null
+++ b/keyboards/demiurge/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Demiurge",
+ "url": "",
+ "maintainer": "ojthetiny",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"Esc", "x":2.5, "y":0},
+ {"label":"1!", "x":3.5, "y":0},
+ {"label":"2@", "x":4.5, "y":0},
+ {"label":"3#", "x":5.5, "y":0},
+ {"label":"4$", "x":6.5, "y":0},
+ {"label":"5%", "x":7.5, "y":0},
+ {"label":"6^", "x":8.5, "y":0},
+ {"label":"7&", "x":9.5, "y":0},
+ {"label":"8*", "x":10.5, "y":0},
+ {"label":"9(", "x":11.5, "y":0},
+ {"label":"0)", "x":12.5, "y":0},
+ {"label":"-_", "x":13.5, "y":0},
+ {"label":"=+", "x":14.5, "y":0},
+ {"label":"Backspace", "x":15.5, "y":0},
+ {"label":"Del", "x":16.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.5, "y":1, "w":1.5},
+ {"label":"Q", "x":4, "y":1},
+ {"label":"W", "x":5, "y":1},
+ {"label":"E", "x":6, "y":1},
+ {"label":"R", "x":7, "y":1},
+ {"label":"T", "x":8, "y":1},
+ {"label":"Y", "x":9, "y":1},
+ {"label":"U", "x":10, "y":1},
+ {"label":"I", "x":11, "y":1},
+ {"label":"O", "x":12, "y":1},
+ {"label":"P", "x":13, "y":1},
+ {"label":"[{", "x":14, "y":1},
+ {"label":"]}", "x":15, "y":1},
+ {"label":"\\|", "x":16, "y":1, "w":1.5},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.5, "y":2, "w":1.75},
+ {"label":"A", "x":4.25, "y":2},
+ {"label":"S", "x":5.25, "y":2},
+ {"label":"D", "x":6.25, "y":2},
+ {"label":"F", "x":7.25, "y":2},
+ {"label":"G", "x":8.25, "y":2},
+ {"label":"H", "x":9.25, "y":2},
+ {"label":"J", "x":10.25, "y":2},
+ {"label":"K", "x":11.25, "y":2},
+ {"label":"L", "x":12.25, "y":2},
+ {"label":";:", "x":13.25, "y":2},
+ {"label":"'\"", "x":14.25, "y":2},
+ {"label":"Enter", "x":15.25, "y":2, "w":2.25},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.5, "y":3, "w":2.25},
+ {"label":"Z", "x":4.75, "y":3},
+ {"label":"X", "x":5.75, "y":3},
+ {"label":"C", "x":6.75, "y":3},
+ {"label":"V", "x":7.75, "y":3},
+ {"label":"B", "x":8.75, "y":3},
+ {"label":"N", "x":9.75, "y":3},
+ {"label":"M", "x":10.75, "y":3},
+ {"label":",<", "x":11.75, "y":3},
+ {"label":".>", "x":12.75, "y":3},
+ {"label":"/?", "x":13.75, "y":3},
+ {"label":"Shift", "x":14.75, "y":3, "w":1.75},
+ {"label":"Fn", "x":16.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.5, "y":4, "w":1.5},
+ {"label":"GUI", "x":4, "y":4},
+ {"label":"Alt", "x":5, "y":4, "w":1.5},
+ {"label":"Space", "x":6.5, "y":4, "w":7},
+ {"label":"Alt", "x":13.5, "y":4, "w":1.5},
+ {"label":"GUI", "x":15, "y":4},
+ {"label":"Ctrl", "x":16, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/demiurge/keymaps/default/keymap.c b/keyboards/demiurge/keymaps/default/keymap.c
new file mode 100755
index 0000000000..233ae88cf5
--- /dev/null
+++ b/keyboards/demiurge/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 ojthetiny
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+
+}; \ No newline at end of file
diff --git a/keyboards/demiurge/keymaps/via/keymap.c b/keyboards/demiurge/keymaps/via/keymap.c
new file mode 100755
index 0000000000..4d707a3cac
--- /dev/null
+++ b/keyboards/demiurge/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 ojthetiny
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+}; \ No newline at end of file
diff --git a/keyboards/demiurge/keymaps/via/rules.mk b/keyboards/demiurge/keymaps/via/rules.mk
new file mode 100755
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/demiurge/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/demiurge/readme.md b/keyboards/demiurge/readme.md
new file mode 100644
index 0000000000..6e7845c8b4
--- /dev/null
+++ b/keyboards/demiurge/readme.md
@@ -0,0 +1,24 @@
+# Demiurge
+
+![demiurge-img-1](https://i.imgur.com/gnQ2Pj6h.jpeg)
+
+# Keyboard Info
+
+- 60% XT
+- Keyboard Maintainer: [ojthetiny](https://github.com/ojthetiny)
+- Hardware Supported: Demiurge PCB
+- Hardware Availability: Through group-buy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make demiurge:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/demiurge/rules.mk b/keyboards/demiurge/rules.mk
new file mode 100755
index 0000000000..672ec13b0c
--- /dev/null
+++ b/keyboards/demiurge/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk
index ae6a59e07f..2b5eb0360c 100755
--- a/keyboards/dichotomy/rules.mk
+++ b/keyboards/dichotomy/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
#MOUSEKEY_ENABLE = yes # Mouse keys
@@ -14,9 +14,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# # project specific files
diff --git a/keyboards/dinofizz/fnrow/v1/rules.mk b/keyboards/dinofizz/fnrow/v1/rules.mk
index 7a0a087299..fa45f10966 100644
--- a/keyboards/dinofizz/fnrow/v1/rules.mk
+++ b/keyboards/dinofizz/fnrow/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/diverge3/keymaps/iso_uk/keymap.c b/keyboards/diverge3/keymaps/iso_uk/keymap.c
index 8043347850..2564640293 100644
--- a/keyboards/diverge3/keymaps/iso_uk/keymap.c
+++ b/keyboards/diverge3/keymaps/iso_uk/keymap.c
@@ -26,7 +26,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
+ [_QWERTY] = LAYOUT(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_CAPS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LCBR, KC_RCBR, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PSCR, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_NUHS,
diff --git a/keyboards/diverge3/rules.mk b/keyboards/diverge3/rules.mk
index 8d2a5fbe8b..7fc9fd2291 100644
--- a/keyboards/diverge3/rules.mk
+++ b/keyboards/diverge3/rules.mk
@@ -12,10 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/divergetm2/keymaps/default/keymap.c b/keyboards/divergetm2/keymaps/default/keymap.c
index cc098a91a5..fb5957ccae 100644
--- a/keyboards/divergetm2/keymaps/default/keymap.c
+++ b/keyboards/divergetm2/keymaps/default/keymap.c
@@ -50,11 +50,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | Ctrl | Alt | GUI | Lower | Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12_2x2u( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- RESET, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12_2x2u(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ RESET, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -68,11 +68,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | Ctrl | Alt | GUI | Lower | Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12_2x2u( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_NO, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12_2x2u(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_NO, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -86,11 +86,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | Ctrl | Alt | GUI | Lower | Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12_2x2u( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- KC_NO, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12_2x2u(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ KC_NO, KC_LCTL, KC_LALT, KC_LGUI, LT(_LOWER, KC_SPC), LT(_RAISE,KC_SPC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -104,11 +104,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12_2x2u( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, MO(_RAISE), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12_2x2u(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, MO(_RAISE), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -122,11 +122,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12_2x2u( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, MO(_LOWER), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12_2x2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, MO(_LOWER), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -140,11 +140,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12_2x2u( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12_2x2u(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/divergetm2/rules.mk b/keyboards/divergetm2/rules.mk
index b5cf31f606..bd53948797 100644
--- a/keyboards/divergetm2/rules.mk
+++ b/keyboards/divergetm2/rules.mk
@@ -12,12 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
diff --git a/keyboards/dk60/rules.mk b/keyboards/dk60/rules.mk
index d23cfda0e4..3830d60187 100644
--- a/keyboards/dk60/rules.mk
+++ b/keyboards/dk60/rules.mk
@@ -12,11 +12,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
UNICODE_ENABLE = yes
diff --git a/keyboards/dm9records/ergoinu/keymaps/default/keymap.c b/keyboards/dm9records/ergoinu/keymaps/default/keymap.c
index 3192b0f220..00c5da820d 100644
--- a/keyboards/dm9records/ergoinu/keymaps/default/keymap.c
+++ b/keyboards/dm9records/ergoinu/keymaps/default/keymap.c
@@ -30,27 +30,27 @@ enum CUSTOM_KEYCODES {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, \
- KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, \
- MO(META),KC_LALT, KC_LGUI, KC_ENT, KC_SPC, KC_ENT, KC_BSPC, KC_RGUI, KC_RALT, MO(META) \
+ [BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,
+ KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_GRV,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ MO(META),KC_LALT, KC_LGUI, KC_ENT, KC_SPC, KC_ENT, KC_BSPC, KC_RGUI, KC_RALT, MO(META)
),
- [META] = LAYOUT( \
- MO(CONF),KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, \
- ______, KC_CAPS, ______, ______, ______, ______, ______, ______, ______, ______, KC_SLCK, KC_PSCR, KC_HOME, KC_END, \
- ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PAUS, KC_PGUP, KC_UP, KC_PGDN, \
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_LEFT, KC_DOWN, KC_RGHT, \
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______ \
+ [META] = LAYOUT(
+ MO(CONF),KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS,
+ ______, KC_CAPS, ______, ______, ______, ______, ______, ______, ______, ______, KC_SLCK, KC_PSCR, KC_HOME, KC_END,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PAUS, KC_PGUP, KC_UP, KC_PGDN,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_LEFT, KC_DOWN, KC_RGHT,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______
),
- [CONF] = LAYOUT( \
- ______, RGB_TYPE,RGB_MOD, RGB_VAI, RGB_HUI, RGB_HUI, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- RGB_RST, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_HUD, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX \
+ [CONF] = LAYOUT(
+ ______, RGB_TYPE,RGB_MOD, RGB_VAI, RGB_HUI, RGB_HUI, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ RGB_RST, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_HUD, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX
)
};
diff --git a/keyboards/dm9records/ergoinu/keymaps/default/rules.mk b/keyboards/dm9records/ergoinu/keymaps/default/rules.mk
index 8741c24d87..8567c2ae2e 100644
--- a/keyboards/dm9records/ergoinu/keymaps/default/rules.mk
+++ b/keyboards/dm9records/ergoinu/keymaps/default/rules.mk
@@ -1,22 +1,14 @@
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
# ergoinu configs
DISABLE_PROMICRO_LEDs = yes
diff --git a/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c b/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c
index e161145f4f..a9a9f71f4d 100644
--- a/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c
+++ b/keyboards/dm9records/ergoinu/keymaps/default_jis/keymap.c
@@ -30,28 +30,28 @@ enum CUSTOM_KEYCODES {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JA_HAT, KC_JYEN, \
- KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JA_AT, JA_LBRC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JA_CLON, JA_RBRC, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT, \
- MO(META),KC_LALT, KC_ZKHK, KC_BSPC, KC_SPC, KC_ENT, KC_BSPC, KC_MHEN, KC_KANA, MO(META) \
+ [BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JA_HAT, KC_JYEN,
+ KC_DEL, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JA_AT, JA_LBRC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JA_CLON, JA_RBRC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_RSFT,
+ MO(META),KC_LALT, KC_ZKHK, KC_BSPC, KC_SPC, KC_ENT, KC_BSPC, KC_MHEN, KC_KANA, MO(META)
),
- [META] = LAYOUT( \
- MO(CONF),KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, \
- ______, KC_CAPS, ______, KC_UP, ______, ______, ______, ______, ______, ______, KC_SLCK, KC_PSCR, KC_HOME, KC_END, \
- ______, KC_LEFT, KC_DOWN, KC_RGHT, ______, ______, ______, ______, ______, KC_PAUS, KC_PGUP, KC_UP, KC_PGDN, \
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_LEFT, KC_DOWN, KC_RGHT, \
- ______, ______, KC_RGUI, KC_DEL, KC_ENT, ______, KC_DEL, KC_HENK, KC_LGUI, ______ \
+ [META] = LAYOUT(
+ MO(CONF),KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS,
+ ______, KC_CAPS, ______, KC_UP, ______, ______, ______, ______, ______, ______, KC_SLCK, KC_PSCR, KC_HOME, KC_END,
+ ______, KC_LEFT, KC_DOWN, KC_RGHT, ______, ______, ______, ______, ______, KC_PAUS, KC_PGUP, KC_UP, KC_PGDN,
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_LEFT, KC_DOWN, KC_RGHT,
+ ______, ______, KC_RGUI, KC_DEL, KC_ENT, ______, KC_DEL, KC_HENK, KC_LGUI, ______
),
- [CONF] = LAYOUT( \
- ______, RGB_TYPE,RGB_MOD, RGB_VAI, RGB_HUI, RGB_HUI, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- RGB_RST, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_HUD, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, \
- XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX \
+ [CONF] = LAYOUT(
+ ______, RGB_TYPE,RGB_MOD, RGB_VAI, RGB_HUI, RGB_HUI, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ RGB_RST, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_HUD, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX,
+ XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX, XXXXXX
)
};
diff --git a/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk b/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk
index 48418de471..97154be636 100644
--- a/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk
+++ b/keyboards/dm9records/ergoinu/keymaps/default_jis/rules.mk
@@ -1,22 +1,14 @@
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
# ergoinu configs
DISABLE_PROMICRO_LEDs = yes
diff --git a/keyboards/dm9records/ergoinu/rules.mk b/keyboards/dm9records/ergoinu/rules.mk
index 895ce253d7..0a634ee794 100644
--- a/keyboards/dm9records/ergoinu/rules.mk
+++ b/keyboards/dm9records/ergoinu/rules.mk
@@ -5,22 +5,19 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SUBPROJECT_rev1 = no
USE_I2C = no # i2c is not supported
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c serial.c split_util.c
diff --git a/keyboards/dm9records/plaid/keymaps/default/config.h b/keyboards/dm9records/plaid/keymaps/default/config.h
deleted file mode 100644
index 5733b9e4b0..0000000000
--- a/keyboards/dm9records/plaid/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Takuya Urakawa (dm9records.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dm9records/plaid/rules.mk b/keyboards/dm9records/plaid/rules.mk
index 8cfbec6534..5c416cf40f 100644
--- a/keyboards/dm9records/plaid/rules.mk
+++ b/keyboards/dm9records/plaid/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dm9records/tartan/rules.mk b/keyboards/dm9records/tartan/rules.mk
index 3e568a0ba0..0c65bd1692 100644
--- a/keyboards/dm9records/tartan/rules.mk
+++ b/keyboards/dm9records/tartan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dmqdesign/spin/rules.mk b/keyboards/dmqdesign/spin/rules.mk
index 0703f80e3b..c5b0b32b50 100644
--- a/keyboards/dmqdesign/spin/rules.mk
+++ b/keyboards/dmqdesign/spin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = yes # MIDI support
diff --git a/keyboards/do60/keymaps/default/keymap.c b/keyboards/do60/keymaps/default/keymap.c
index 8b76b04620..3f19321421 100644
--- a/keyboards/do60/keymaps/default/keymap.c
+++ b/keyboards/do60/keymaps/default/keymap.c
@@ -4,18 +4,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 0: Base Layer
[0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_SLSH, KC_UP, KC_SLSH, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_SLSH, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
// 1: Function Layer
[1] = LAYOUT_all(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, \
- KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, BL_TOGG,BL_ON, BL_INC, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, BL_STEP,BL_OFF, BL_DEC, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, BL_TOGG,BL_ON, BL_INC, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, BL_STEP,BL_OFF, BL_DEC, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC,KC_SPC, KC_DEL, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
};
diff --git a/keyboards/do60/keymaps/test/keymap.c b/keyboards/do60/keymaps/test/keymap.c
index 9e81ce1eae..7ad21e3850 100644
--- a/keyboards/do60/keymaps/test/keymap.c
+++ b/keyboards/do60/keymaps/test/keymap.c
@@ -5,18 +5,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 0: Base Layer
[0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC,KC_SPC, KC_DEL, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
// 1: Function Layer
[1] = LAYOUT_all(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, \
- KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC,KC_SPC, KC_DEL, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
};
diff --git a/keyboards/do60/keymaps/via/keymap.c b/keyboards/do60/keymaps/via/keymap.c
index 57f8e3b93c..3e01a2e699 100644
--- a/keyboards/do60/keymaps/via/keymap.c
+++ b/keyboards/do60/keymaps/via/keymap.c
@@ -4,32 +4,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 0: Base Layer
[0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_SLSH, KC_UP, KC_SLSH, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_SLSH, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
// 1: Function Layer
[1] = LAYOUT_all(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, \
- KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, BL_TOGG,BL_ON, BL_INC, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, BL_STEP,BL_OFF, BL_DEC, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, BL_TOGG,BL_ON, BL_INC, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, BL_STEP,BL_OFF, BL_DEC, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP, KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO , KC_PGUP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC,KC_SPC, KC_DEL, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
[2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS),
[3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS),
};
diff --git a/keyboards/do60/rules.mk b/keyboards/do60/rules.mk
index 418217e096..e8b6110b1d 100644
--- a/keyboards/do60/rules.mk
+++ b/keyboards/do60/rules.mk
@@ -5,6 +5,8 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
AUDIO_ENABLE = no # Audio output
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -12,8 +14,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no # Console for debug
EXTRAKEY_ENABLE = yes # Audio control and System control
MOUSEKEY_ENABLE = yes # Mouse keys
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = 60_ansi 60_hhkb 60_ansi_split_bs_rshift
diff --git a/keyboards/donutcables/budget96/keymaps/default/config.h b/keyboards/donutcables/budget96/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/donutcables/budget96/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/donutcables/budget96/keymaps/default/keymap.c b/keyboards/donutcables/budget96/keymaps/default/keymap.c
index 2b468b6538..66392024c4 100644
--- a/keyboards/donutcables/budget96/keymaps/default/keymap.c
+++ b/keyboards/donutcables/budget96/keymaps/default/keymap.c
@@ -16,29 +16,29 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_96_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGDN, KC_PSLS, KC_PAST, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT), \
+[0] = LAYOUT_96_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGDN, KC_PSLS, KC_PAST,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
-[1] = LAYOUT_96_ansi(\
- RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), \
+[1] = LAYOUT_96_ansi(
+ RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_96_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/donutcables/budget96/keymaps/via/keymap.c b/keyboards/donutcables/budget96/keymaps/via/keymap.c
index 11d751b516..16bd4b8e25 100644
--- a/keyboards/donutcables/budget96/keymaps/via/keymap.c
+++ b/keyboards/donutcables/budget96/keymaps/via/keymap.c
@@ -16,31 +16,27 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_96_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGDN, KC_PSLS, KC_PAST, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT), \
+[0] = LAYOUT_96_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGDN, KC_PSLS, KC_PAST,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT),
-[1] = LAYOUT_96_ansi(\
- RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), \
+[1] = LAYOUT_96_ansi(
+ RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_96_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
-
-
-
-
diff --git a/keyboards/donutcables/budget96/rules.mk b/keyboards/donutcables/budget96/rules.mk
index 3bff3ee31b..4dcdfe886a 100644
--- a/keyboards/donutcables/budget96/rules.mk
+++ b/keyboards/donutcables/budget96/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/donutcables/scrabblepad/keymaps/default/config.h b/keyboards/donutcables/scrabblepad/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/donutcables/scrabblepad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
index 462e06875a..bc07a619cd 100644
--- a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
+++ b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
@@ -43,20 +43,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RESET, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
- RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, \
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RESET, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
+ RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY
),
};
diff --git a/keyboards/donutcables/scrabblepad/rules.mk b/keyboards/donutcables/scrabblepad/rules.mk
index b2c3b22c2a..9365ea7c65 100644
--- a/keyboards/donutcables/scrabblepad/rules.mk
+++ b/keyboards/donutcables/scrabblepad/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doodboard/duckboard/rules.mk b/keyboards/doodboard/duckboard/rules.mk
index bfb04fe073..3aaae9d193 100644
--- a/keyboards/doodboard/duckboard/rules.mk
+++ b/keyboards/doodboard/duckboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doodboard/duckboard_r2/rules.mk b/keyboards/doodboard/duckboard_r2/rules.mk
index bfb04fe073..3aaae9d193 100644
--- a/keyboards/doodboard/duckboard_r2/rules.mk
+++ b/keyboards/doodboard/duckboard_r2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doppelganger/rules.mk b/keyboards/doppelganger/rules.mk
index cc5477a3bd..1ca40bc93d 100644
--- a/keyboards/doppelganger/rules.mk
+++ b/keyboards/doppelganger/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doro67/multi/rules.mk b/keyboards/doro67/multi/rules.mk
index 9a09abb565..70b9fdac6f 100644
--- a/keyboards/doro67/multi/rules.mk
+++ b/keyboards/doro67/multi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doro67/regular/keymaps/default/config.h b/keyboards/doro67/regular/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/doro67/regular/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/doro67/regular/rules.mk b/keyboards/doro67/regular/rules.mk
index df57d4837e..cce44f4635 100644
--- a/keyboards/doro67/regular/rules.mk
+++ b/keyboards/doro67/regular/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/doro67/rgb/keymaps/default/config.h b/keyboards/doro67/rgb/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/doro67/rgb/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/doro67/rgb/rules.mk b/keyboards/doro67/rgb/rules.mk
index bc9b2d2c2c..5202c704e6 100644
--- a/keyboards/doro67/rgb/rules.mk
+++ b/keyboards/doro67/rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dozen0/keymaps/default/config.h b/keyboards/dozen0/keymaps/default/config.h
deleted file mode 100644
index bab59c67e0..0000000000
--- a/keyboards/dozen0/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 yynmt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dozen0/keymaps/f12/config.h b/keyboards/dozen0/keymaps/f12/config.h
deleted file mode 100644
index bab59c67e0..0000000000
--- a/keyboards/dozen0/keymaps/f12/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 yynmt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/dozen0/rules.mk b/keyboards/dozen0/rules.mk
index ac010606a2..7d2cea91df 100644
--- a/keyboards/dozen0/rules.mk
+++ b/keyboards/dozen0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dp60/rules.mk b/keyboards/dp60/rules.mk
index 059e29016e..8acc7d85d4 100644
--- a/keyboards/dp60/rules.mk
+++ b/keyboards/dp60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Use RGB underglow light
diff --git a/keyboards/draculad/keymaps/pimoroni/config.h b/keyboards/draculad/keymaps/pimoroni/config.h
index c5f9df6f99..378b9b8923 100644
--- a/keyboards/draculad/keymaps/pimoroni/config.h
+++ b/keyboards/draculad/keymaps/pimoroni/config.h
@@ -15,11 +15,13 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#define POINTING_DEVICE_ROTATION_90
+
//comment that out if your trackball is on the left side
#define TRACKBALL_RIGHT
-#ifdef TRACKBALL_RIGHT
- #define PIMORONI_TRACKBALL_INVERT_X
- #define PIMORONI_TRACKBALL_INVERT_Y
+#ifdef TRACKBALL_RIGHT
+ #define POINTING_DEVICE_INVERT_X
+ #define POINTING_DEVICE_INVERT_Y
#endif
diff --git a/keyboards/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c
index b70184dbc8..5c20c69af9 100644
--- a/keyboards/draculad/keymaps/pimoroni/keymap.c
+++ b/keyboards/draculad/keymaps/pimoroni/keymap.c
@@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-#include "drivers/sensors/pimoroni_trackball.h"
-#include "pointing_device.h"
enum layer_number {
@@ -29,13 +27,13 @@ enum layer_number {
};
enum custom_keycodes {
- BALL_HUI,//cycles hue
- BALL_WHT,//cycles white
- BALL_DEC,//decreased color
- BALL_SCR,//scrolls
- BALL_NCL,//left click
- BALL_RCL,//right click
- BALL_MCL,//middle click
+ BALL_HUI = SAFE_RANGE, //cycles hue
+ BALL_WHT, //cycles white
+ BALL_DEC, //decreased color
+ BALL_SCR, //scrolls
+ BALL_NCL, //left click
+ BALL_RCL, //right click
+ BALL_MCL, //middle click
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -78,8 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef OLED_ENABLE
-
-
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) {
@@ -209,13 +205,23 @@ bool oled_task_user(void) {
return false;
}
-#endif
+#endif //OLED_ENABLE
uint8_t white = 0;
uint8_t red = 255;
uint8_t green = 0;
uint8_t blue = 0;
+bool set_scrolling = false;
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (set_scrolling) {
+ mouse_report.h = mouse_report.x;
+ mouse_report.v = mouse_report.y;
+ mouse_report.x = mouse_report.y = 0;
+ }
+ return mouse_report;
+}
+
void ball_increase_hue(void){
if(red!=255&&green!=255&&blue!=255){
red =255;
@@ -233,7 +239,7 @@ void ball_increase_hue(void){
} else if(green ==0&&blue>0&&red==255){
blue -=15;
}
- trackball_set_rgbw(red,green,blue,white);
+ pimoroni_trackball_set_rgbw(red,green,blue,white);
}
void decrease_color(void){
@@ -246,7 +252,7 @@ void decrease_color(void){
if (blue>0){
blue-=15;
}
- trackball_set_rgbw(red,green,blue,white);
+ pimoroni_trackball_set_rgbw(red,green,blue,white);
}
void cycle_white(void){
@@ -255,7 +261,7 @@ void cycle_white(void){
} else{
white=0;
}
- trackball_set_rgbw(red,green,blue,white);
+ pimoroni_trackball_set_rgbw(red,green,blue,white);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record){
@@ -280,9 +286,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record){
case BALL_SCR:
if(record->event.pressed){
- trackball_set_scrolling(true);
+ set_scrolling = true;
} else{
- trackball_set_scrolling(false);
+ set_scrolling = false;
}
break;
@@ -298,6 +304,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record){
}
return true;
}
+
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
@@ -325,4 +332,4 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
// the missing ones are encoder 1 on the right side and encoder 3 on the left side
return true;
}
-#endif
+#endif // ENCODER_ENABLE
diff --git a/keyboards/draculad/keymaps/pimoroni/rules.mk b/keyboards/draculad/keymaps/pimoroni/rules.mk
index 704aad070a..66d3bf0e46 100644
--- a/keyboards/draculad/keymaps/pimoroni/rules.mk
+++ b/keyboards/draculad/keymaps/pimoroni/rules.mk
@@ -1,7 +1,6 @@
# only uncomment on the side you have your trackball on
POINTING_DEVICE_ENABLE = yes
-SRC += drivers/sensors/pimoroni_trackball.c
-QUANTUM_LIB_SRC += i2c_master.c
+POINTING_DEVICE_DRIVER = pimoroni_trackball
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
-MOUSEKEY_ENABLE = no
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/draculad/rules.mk b/keyboards/draculad/rules.mk
index 96ec90fda7..d3b69705a0 100644
--- a/keyboards/draculad/rules.mk
+++ b/keyboards/draculad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/draytronics/daisy/rules.mk b/keyboards/draytronics/daisy/rules.mk
index d46afbf9d2..7bf0a86667 100644
--- a/keyboards/draytronics/daisy/rules.mk
+++ b/keyboards/draytronics/daisy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/draytronics/elise/rules.mk b/keyboards/draytronics/elise/rules.mk
index 6bbe5afe83..e7017486de 100644
--- a/keyboards/draytronics/elise/rules.mk
+++ b/keyboards/draytronics/elise/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/draytronics/elise_v2/rules.mk b/keyboards/draytronics/elise_v2/rules.mk
index 6bbe5afe83..e7017486de 100644
--- a/keyboards/draytronics/elise_v2/rules.mk
+++ b/keyboards/draytronics/elise_v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/draytronics/scarlet/rules.mk b/keyboards/draytronics/scarlet/rules.mk
index 6d6679ef3d..7c1e85cc4e 100644
--- a/keyboards/draytronics/scarlet/rules.mk
+++ b/keyboards/draytronics/scarlet/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dtisaac/cg108/rules.mk b/keyboards/dtisaac/cg108/rules.mk
index 5890068ca9..5786064c56 100644
--- a/keyboards/dtisaac/cg108/rules.mk
+++ b/keyboards/dtisaac/cg108/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h
index c2c0ebd6d4..c5c13bd270 100644
--- a/keyboards/dtisaac/dosa40rgb/config.h
+++ b/keyboards/dtisaac/dosa40rgb/config.h
@@ -85,7 +85,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c
index 19fcb7868e..3edc5cfab7 100644
--- a/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c
+++ b/keyboards/dtisaac/dosa40rgb/keymaps/default/keymap.c
@@ -67,3 +67,8 @@ void rgb_matrix_indicators_user(void)
rgb_matrix_set_color(22, 200, 0, 200);
}
}
+
+void keyboard_pre_init_user(void) {
+ setPinOutput(B5);
+ writePinLow(B5);
+} \ No newline at end of file
diff --git a/keyboards/dtisaac/dosa40rgb/rules.mk b/keyboards/dtisaac/dosa40rgb/rules.mk
index a76047eb26..58f478a96c 100644
--- a/keyboards/dtisaac/dosa40rgb/rules.mk
+++ b/keyboards/dtisaac/dosa40rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
diff --git a/keyboards/dtisaac/dtisaac01/info.json b/keyboards/dtisaac/dtisaac01/info.json
index bf3582d2a2..eac22cda30 100644
--- a/keyboards/dtisaac/dtisaac01/info.json
+++ b/keyboards/dtisaac/dtisaac01/info.json
@@ -88,10 +88,10 @@
{"label":"K100", "x":10, "y":5.5, "w":1.25},
{"label":"K111", "x":11.25, "y":5.5, "w":1.25},
{"label":"K112", "x":12.5, "y":5.5, "w":1.25},
- {"label":"K113", "x":13.75, "y":5.5, "w":1.25}
+ {"label":"K113", "x":13.75, "y":5.5, "w":1.25},
{"label":"K114", "x":15.25, "y":5.5},
{"label":"K115", "x":16.25, "y":5.5},
- {"label":"K116", "x":17.25, "y":5.5},
+ {"label":"K116", "x":17.25, "y":5.5}
]
}
}
diff --git a/keyboards/dtisaac/dtisaac01/rules.mk b/keyboards/dtisaac/dtisaac01/rules.mk
index 5d08412d65..dfb44b1bf9 100644
--- a/keyboards/dtisaac/dtisaac01/rules.mk
+++ b/keyboards/dtisaac/dtisaac01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dubba175/rules.mk b/keyboards/dubba175/rules.mk
index e955300a18..a51132838a 100644
--- a/keyboards/dubba175/rules.mk
+++ b/keyboards/dubba175/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/duck/eagle_viper/v2/keymaps/default/keymap.c b/keyboards/duck/eagle_viper/v2/keymaps/default/keymap.c
index e7dff55d0b..cfcc59fec9 100644
--- a/keyboards/duck/eagle_viper/v2/keymaps/default/keymap.c
+++ b/keyboards/duck/eagle_viper/v2/keymaps/default/keymap.c
@@ -17,19 +17,19 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* layer 0: qwerty */
- [0] = LAYOUT_all(\
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, \
- KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL \
+ [0] = LAYOUT_all(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT,
+ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
),
- [1] = LAYOUT_all(\
- _______, RGB_TOG, RGB_MOD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ [1] = LAYOUT_all(
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c b/keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c
index 6198145982..4851197af8 100644
--- a/keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c
+++ b/keyboards/duck/eagle_viper/v2/keymaps/via/keymap.c
@@ -17,35 +17,35 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* layer 0: qwerty */
- [0] = LAYOUT_all(\
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, \
- KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL \
+ [0] = LAYOUT_all(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, XXXXXXX, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT,
+ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
),
- [1] = LAYOUT_all(\
- _______, RGB_TOG, RGB_MOD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ [1] = LAYOUT_all(
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
- [2] = LAYOUT_all(\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
- [3] = LAYOUT_all(\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/duck/eagle_viper/v2/rules.mk b/keyboards/duck/eagle_viper/v2/rules.mk
index ecc221f949..102d987cb6 100644
--- a/keyboards/duck/eagle_viper/v2/rules.mk
+++ b/keyboards/duck/eagle_viper/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/duck/jetfire/keymaps/default/config.h b/keyboards/duck/jetfire/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/duck/jetfire/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/duck/jetfire/keymaps/default/keymap.c b/keyboards/duck/jetfire/keymaps/default/keymap.c
index fc5fd39ea5..05ffa7a930 100644
--- a/keyboards/duck/jetfire/keymaps/default/keymap.c
+++ b/keyboards/duck/jetfire/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// layer 0: qwerty
- [0] = LAYOUT(\
+ [0] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_MOD, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
diff --git a/keyboards/duck/jetfire/rules.mk b/keyboards/duck/jetfire/rules.mk
index f8e4e1052e..30c22841af 100644
--- a/keyboards/duck/jetfire/rules.mk
+++ b/keyboards/duck/jetfire/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/duck/lightsaver/keymaps/default/keymap.c b/keyboards/duck/lightsaver/keymaps/default/keymap.c
index 346a87e3ee..c63d4dc3cd 100644
--- a/keyboards/duck/lightsaver/keymaps/default/keymap.c
+++ b/keyboards/duck/lightsaver/keymaps/default/keymap.c
@@ -25,20 +25,20 @@ enum custom_layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[BASE] = LAYOUT(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_PAST, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- MO(FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), \
+[BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_INS, KC_HOME, KC_PGUP, KC_PSLS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_PAST,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ MO(FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
-[FN] = LAYOUT(\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_SLCK, RGB_TOG, RGB_MOD, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, BL_TOGG, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), \
+[FN] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_SLCK, RGB_TOG, RGB_MOD, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, BL_TOGG, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/duck/lightsaver/rules.mk b/keyboards/duck/lightsaver/rules.mk
index 429e9d88b4..d9cbdb8339 100644
--- a/keyboards/duck/lightsaver/rules.mk
+++ b/keyboards/duck/lightsaver/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/duck/octagon/keymaps/default/keymap.c b/keyboards/duck/octagon/keymaps/default/keymap.c
index a2029ba051..27e7328e23 100644
--- a/keyboards/duck/octagon/keymaps/default/keymap.c
+++ b/keyboards/duck/octagon/keymaps/default/keymap.c
@@ -19,7 +19,7 @@
#define _FL 1 // Fn Layer
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BL] = LAYOUT_75_ansi(\
+ [_BL] = LAYOUT_75_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FL] = LAYOUT_75_ansi(\
+ [_FL] = LAYOUT_75_ansi(
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/duck/octagon/v1/rules.mk b/keyboards/duck/octagon/v1/rules.mk
index aceb2aa2f3..84dd4e31db 100644
--- a/keyboards/duck/octagon/v1/rules.mk
+++ b/keyboards/duck/octagon/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/duck/octagon/v2/rules.mk b/keyboards/duck/octagon/v2/rules.mk
index aa11021233..14b5de1271 100644
--- a/keyboards/duck/octagon/v2/rules.mk
+++ b/keyboards/duck/octagon/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/duck/orion/v3/rules.mk b/keyboards/duck/orion/v3/rules.mk
index c582f6981c..64897bcd67 100644
--- a/keyboards/duck/orion/v3/rules.mk
+++ b/keyboards/duck/orion/v3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/duck/tcv3/keymaps/default/keymap.c b/keyboards/duck/tcv3/keymaps/default/keymap.c
index 3f8e67954b..a7dfdddf60 100644
--- a/keyboards/duck/tcv3/keymaps/default/keymap.c
+++ b/keyboards/duck/tcv3/keymaps/default/keymap.c
@@ -19,7 +19,7 @@
#define _FL 1 // Fn Layer
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BL] = LAYOUT(\
+ [_BL] = LAYOUT(
KC_F1, KC_F2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS,
KC_F3, KC_F4, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_DEL,
KC_F5, KC_F6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_END,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_F11, KC_F12, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FL] = LAYOUT(\
+ [_FL] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/duck/tcv3/keymaps/via/keymap.c b/keyboards/duck/tcv3/keymaps/via/keymap.c
index ed82d0e125..925e1b208b 100644
--- a/keyboards/duck/tcv3/keymaps/via/keymap.c
+++ b/keyboards/duck/tcv3/keymaps/via/keymap.c
@@ -16,27 +16,27 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(\
- KC_F1, KC_F2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS,
- KC_F3, KC_F4, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_DEL,
- KC_F5, KC_F6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_END,
- KC_F7, KC_F8, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_PGDN,
- KC_F9, KC_F10, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ [0] = LAYOUT(
+ KC_F1, KC_F2, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS,
+ KC_F3, KC_F4, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_DEL,
+ KC_F5, KC_F6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_END,
+ KC_F7, KC_F8, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_PGDN,
+ KC_F9, KC_F10, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_F11, KC_F12, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT(\
- KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [2] = LAYOUT(\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
}; \ No newline at end of file
diff --git a/keyboards/duck/tcv3/rules.mk b/keyboards/duck/tcv3/rules.mk
index fa0be90927..3fef0ce542 100644
--- a/keyboards/duck/tcv3/rules.mk
+++ b/keyboards/duck/tcv3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ducky/one2mini/1861st/rules.mk b/keyboards/ducky/one2mini/1861st/rules.mk
index 65d4a1b3a8..277108c8ac 100644
--- a/keyboards/ducky/one2mini/1861st/rules.mk
+++ b/keyboards/ducky/one2mini/1861st/rules.mk
@@ -21,10 +21,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbo/rules.mk b/keyboards/dumbo/rules.mk
index cdb816fba5..6348457b64 100644
--- a/keyboards/dumbo/rules.mk
+++ b/keyboards/dumbo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
diff --git a/keyboards/dumbpad/v0x/info.json b/keyboards/dumbpad/v0x/info.json
index b8caefd14d..01fe1d5178 100644
--- a/keyboards/dumbpad/v0x/info.json
+++ b/keyboards/dumbpad/v0x/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v0x",
- "keyboard_folder": "dumbpad/v0x",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v0x/rules.mk b/keyboards/dumbpad/v0x/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v0x/rules.mk
+++ b/keyboards/dumbpad/v0x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbpad/v0x_dualencoder/info.json b/keyboards/dumbpad/v0x_dualencoder/info.json
index fcccdaa532..f4bf8be585 100644
--- a/keyboards/dumbpad/v0x_dualencoder/info.json
+++ b/keyboards/dumbpad/v0x_dualencoder/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v0x_dualencoder",
- "keyboard_folder": "dumbpad/v0x_dualencoder",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v0x_dualencoder/rules.mk b/keyboards/dumbpad/v0x_dualencoder/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v0x_dualencoder/rules.mk
+++ b/keyboards/dumbpad/v0x_dualencoder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbpad/v0x_right/info.json b/keyboards/dumbpad/v0x_right/info.json
index 4a6fec1e3f..7269fe3d08 100644
--- a/keyboards/dumbpad/v0x_right/info.json
+++ b/keyboards/dumbpad/v0x_right/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v0x_right",
- "keyboard_folder": "dumbpad/v0x_right",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v0x_right/rules.mk b/keyboards/dumbpad/v0x_right/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v0x_right/rules.mk
+++ b/keyboards/dumbpad/v0x_right/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbpad/v1x/info.json b/keyboards/dumbpad/v1x/info.json
index 24c73bfece..d8cd5b2304 100644
--- a/keyboards/dumbpad/v1x/info.json
+++ b/keyboards/dumbpad/v1x/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v1x",
- "keyboard_folder": "dumbpad/v1x",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v1x/rules.mk b/keyboards/dumbpad/v1x/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v1x/rules.mk
+++ b/keyboards/dumbpad/v1x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbpad/v1x_dualencoder/info.json b/keyboards/dumbpad/v1x_dualencoder/info.json
index 3e4cffbc5c..42eb5a3e77 100644
--- a/keyboards/dumbpad/v1x_dualencoder/info.json
+++ b/keyboards/dumbpad/v1x_dualencoder/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v1x_dualencoder",
- "keyboard_folder": "dumbpad/v1x_dualencoder",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v1x_dualencoder/rules.mk b/keyboards/dumbpad/v1x_dualencoder/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v1x_dualencoder/rules.mk
+++ b/keyboards/dumbpad/v1x_dualencoder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dumbpad/v1x_right/info.json b/keyboards/dumbpad/v1x_right/info.json
index 31c0cac447..05734d16b0 100644
--- a/keyboards/dumbpad/v1x_right/info.json
+++ b/keyboards/dumbpad/v1x_right/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "dumbpad/v1x_right",
- "keyboard_folder": "dumbpad/v1x_right",
"url": "https://www.github.com/imchipwood/dumbpad",
"maintainer": "imchipwood",
"layouts": {
diff --git a/keyboards/dumbpad/v1x_right/rules.mk b/keyboards/dumbpad/v1x_right/rules.mk
index 6302e98d3e..af19256136 100644
--- a/keyboards/dumbpad/v1x_right/rules.mk
+++ b/keyboards/dumbpad/v1x_right/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/durgod/dgk6x/rules.mk b/keyboards/durgod/dgk6x/rules.mk
index e6129f5716..56c5b1ac24 100644
--- a/keyboards/durgod/dgk6x/rules.mk
+++ b/keyboards/durgod/dgk6x/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/durgod/k3x0/rules.mk b/keyboards/durgod/k3x0/rules.mk
index 327c1723b7..bccaec46b3 100644
--- a/keyboards/durgod/k3x0/rules.mk
+++ b/keyboards/durgod/k3x0/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dyz/dyz40/rules.mk b/keyboards/dyz/dyz40/rules.mk
index 209bdae2ee..5afe617b1d 100644
--- a/keyboards/dyz/dyz40/rules.mk
+++ b/keyboards/dyz/dyz40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dyz/dyz60/rules.mk b/keyboards/dyz/dyz60/rules.mk
index 209bdae2ee..5afe617b1d 100644
--- a/keyboards/dyz/dyz60/rules.mk
+++ b/keyboards/dyz/dyz60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dyz/dyz_tkl/dyz_tkl.h b/keyboards/dyz/dyz_tkl/dyz_tkl.h
index 1ad6272070..e6f140fe7e 100644
--- a/keyboards/dyz/dyz_tkl/dyz_tkl.h
+++ b/keyboards/dyz/dyz_tkl/dyz_tkl.h
@@ -85,7 +85,7 @@
{ KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \
}
-#define LAYOUT_tkl_ansi_f13( \
+#define LAYOUT_tkl_f13_ansi( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \
K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, \
@@ -129,7 +129,7 @@
{ KB0, _X_, _X_, KB3, _X_, KB5, KB6, KB7, KB8 } \
}
-#define LAYOUT_tkl_iso_f13( \
+#define LAYOUT_tkl_f13_iso( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K06, K16, K07, K17, K08, K18, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \
K40, K50, K41, K51, K42, K52, K53, K44, K54, K45, K55, K46, K56, K57, K48, K58, \
diff --git a/keyboards/dyz/dyz_tkl/info.json b/keyboards/dyz/dyz_tkl/info.json
index 615bc197a0..8cba9c24e7 100644
--- a/keyboards/dyz/dyz_tkl/info.json
+++ b/keyboards/dyz/dyz_tkl/info.json
@@ -217,7 +217,7 @@
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_ansi_f13": {
+ "LAYOUT_tkl_f13_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
@@ -411,7 +411,7 @@
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_iso_f13": {
+ "LAYOUT_tkl_f13_iso": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
diff --git a/keyboards/dyz/dyz_tkl/rules.mk b/keyboards/dyz/dyz_tkl/rules.mk
index a488e3dc0b..df217b5640 100644
--- a/keyboards/dyz/dyz_tkl/rules.mk
+++ b/keyboards/dyz/dyz_tkl/rules.mk
@@ -12,10 +12,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = tkl_f13_ansi tkl_f13_iso
diff --git a/keyboards/dyz/selka40/rules.mk b/keyboards/dyz/selka40/rules.mk
index 209bdae2ee..5afe617b1d 100644
--- a/keyboards/dyz/selka40/rules.mk
+++ b/keyboards/dyz/selka40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dyz/synthesis60/config.h b/keyboards/dyz/synthesis60/config.h
new file mode 100644
index 0000000000..8b14dd4fe6
--- /dev/null
+++ b/keyboards/dyz/synthesis60/config.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2022 dayatz
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define MANUFACTURER dyz
+#define PRODUCT Synthesis60 v2.1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+#define LED_CAPS_LOCK_PIN D5
+#define LED_NUM_LOCK_PIN C7
+#define LED_PIN_ON_STATE 0
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/dyz/synthesis60/info.json b/keyboards/dyz/synthesis60/info.json
new file mode 100644
index 0000000000..381e7efb36
--- /dev/null
+++ b/keyboards/dyz/synthesis60/info.json
@@ -0,0 +1,113 @@
+{
+ "keyboard_name": "synthesis60",
+ "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/synthesis60",
+ "maintainer": "dayatz",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": [
+ "F7",
+ "F6",
+ "F5",
+ "F4",
+ "F1",
+ "F0",
+ "D7",
+ "D3",
+ "D2",
+ "E6",
+ "B3",
+ "B2",
+ "B1",
+ "B0"
+ ],
+ "rows": ["B4", "B5", "B6", "D6", "D4"]
+ },
+ "rgblight": {
+ "led_count": 19,
+ "pin": "B7",
+ "hue_steps": 10,
+ "saturation_steps": 10,
+ "brightness_steps": 10,
+ "animations": {
+ "all": true
+ }
+ },
+ "usb": {
+ "vid": "0xD772",
+ "pid": "0x0017",
+ "device_ver": "0x0001"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Home", "x": 0, "y": 0 },
+ { "label": "~", "x": 1.25, "y": 0 },
+ { "label": "!", "x": 2.25, "y": 0 },
+ { "label": "@", "x": 3.25, "y": 0 },
+ { "label": "#", "x": 4.25, "y": 0 },
+ { "label": "$", "x": 5.25, "y": 0 },
+ { "label": "%", "x": 6.25, "y": 0 },
+ { "label": "^", "x": 7.25, "y": 0 },
+ { "label": "&", "x": 10.25, "y": 0 },
+ { "label": "*", "x": 11.25, "y": 0 },
+ { "label": "(", "x": 12.25, "y": 0 },
+ { "label": ")", "x": 13.25, "y": 0 },
+ { "label": "_", "x": 14.25, "y": 0 },
+ { "label": "+", "x": 15.25, "y": 0 },
+ { "label": "|", "x": 16.25, "y": 0 },
+ { "label": "~", "x": 17.25, "y": 0 },
+ { "label": "PgUp", "x": 0, "y": 1 },
+ { "label": "Tab", "x": 1.25, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 2.75, "y": 1 },
+ { "label": "W", "x": 3.75, "y": 1 },
+ { "label": "E", "x": 4.75, "y": 1 },
+ { "label": "R", "x": 5.75, "y": 1 },
+ { "label": "T", "x": 6.75, "y": 1 },
+ { "label": "Y", "x": 9.75, "y": 1 },
+ { "label": "U", "x": 10.75, "y": 1 },
+ { "label": "I", "x": 11.75, "y": 1 },
+ { "label": "O", "x": 12.75, "y": 1 },
+ { "label": "P", "x": 13.75, "y": 1 },
+ { "label": "{", "x": 14.75, "y": 1 },
+ { "label": "}", "x": 15.75, "y": 1 },
+ { "label": "Backspace", "x": 16.75, "y": 1, "w": 1.5 },
+ { "label": "PgDn", "x": 0, "y": 2 },
+ { "label": "Caps Lock", "x": 1.25, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 3, "y": 2 },
+ { "label": "S", "x": 4, "y": 2 },
+ { "label": "D", "x": 5, "y": 2 },
+ { "label": "F", "x": 6, "y": 2 },
+ { "label": "G", "x": 7, "y": 2 },
+ { "label": "H", "x": 10, "y": 2 },
+ { "label": "J", "x": 11, "y": 2 },
+ { "label": "K", "x": 12, "y": 2 },
+ { "label": "L", "x": 13, "y": 2 },
+ { "label": ":", "x": 14, "y": 2 },
+ { "label": "\"", "x": 15, "y": 2 },
+ { "label": "Enter", "x": 16, "y": 2, "w": 2.25 },
+ { "label": "Shift", "x": 1.25, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 3.5, "y": 3 },
+ { "label": "X", "x": 4.5, "y": 3 },
+ { "label": "C", "x": 5.5, "y": 3 },
+ { "label": "V", "x": 6.5, "y": 3 },
+ { "label": "B", "x": 7.5, "y": 3 },
+ { "label": "B", "x": 9.5, "y": 3 },
+ { "label": "N", "x": 10.5, "y": 3 },
+ { "label": "M", "x": 11.5, "y": 3 },
+ { "label": "<", "x": 12.5, "y": 3 },
+ { "label": ">", "x": 13.5, "y": 3 },
+ { "label": "?", "x": 14.5, "y": 3 },
+ { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 },
+ { "label": "Fn", "x": 17.25, "y": 3 },
+ { "label": "Ctrl", "x": 1.25, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 4, "y": 4, "w": 1.5 },
+ { "label": "Space", "x": 5.5, "y": 4, "w": 2.25 },
+ { "label": "Space", "x": 7.75, "y": 4 },
+ { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 },
+ { "label": "Space", "x": 11, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 12.25, "y": 4, "w": 1.5 },
+ { "label": "Ctrl", "x": 16.75, "y": 4, "w": 1.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/dyz/synthesis60/keymaps/default/keymap.c b/keyboards/dyz/synthesis60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5cf1b94cf3
--- /dev/null
+++ b/keyboards/dyz/synthesis60/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all( /* Base */
+ KC_HOME, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [_FN] = LAYOUT_all(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_VOLU, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_VOLD, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (get_highest_layer(state) != 0) {
+ writePinLow(C6);
+ } else {
+ writePinHigh(C6);
+ }
+ return state;
+}
diff --git a/keyboards/dyz/synthesis60/keymaps/via/keymap.c b/keyboards/dyz/synthesis60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5cf1b94cf3
--- /dev/null
+++ b/keyboards/dyz/synthesis60/keymaps/via/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all( /* Base */
+ KC_HOME, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [_FN] = LAYOUT_all(
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_VOLU, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_VOLD, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (get_highest_layer(state) != 0) {
+ writePinLow(C6);
+ } else {
+ writePinHigh(C6);
+ }
+ return state;
+}
diff --git a/keyboards/dyz/synthesis60/keymaps/via/rules.mk b/keyboards/dyz/synthesis60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/dyz/synthesis60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/dyz/synthesis60/rules.mk b/keyboards/dyz/synthesis60/rules.mk
new file mode 100644
index 0000000000..fe65a2143c
--- /dev/null
+++ b/keyboards/dyz/synthesis60/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no
+OLED_ENABLE = yes
diff --git a/keyboards/dyz/synthesis60/synthesis60.c b/keyboards/dyz/synthesis60/synthesis60.c
new file mode 100644
index 0000000000..c56a61b1ec
--- /dev/null
+++ b/keyboards/dyz/synthesis60/synthesis60.c
@@ -0,0 +1,31 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "synthesis60.h"
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_kb()) { return false; }
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Synthesis60\nLayer: "), false);
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return true;
+}
+#endif
diff --git a/keyboards/dyz/synthesis60/synthesis60.h b/keyboards/dyz/synthesis60/synthesis60.h
new file mode 100644
index 0000000000..0ad730e128
--- /dev/null
+++ b/keyboards/dyz/synthesis60/synthesis60.h
@@ -0,0 +1,41 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+#define KNO KC_NO
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ K40, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4D, \
+ K41, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K42, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K43, K44, K45, K46, K47, K48, K49, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KNO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, KNO, KNO, K4C, K4D } \
+}
diff --git a/keyboards/dz60/dz60.h b/keyboards/dz60/dz60.h
index 8062a74ce1..ba542dcbe8 100644
--- a/keyboards/dz60/dz60.h
+++ b/keyboards/dz60/dz60.h
@@ -331,6 +331,33 @@
{ k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, KC_NO, k4d, k4e } \
}
+/* LAYOUT_60_iso_arrow_one_bksp
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐2d │
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │1e │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬──┴┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │40 │41 │43 │46 │4a │4b │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+*/
+#define LAYOUT_60_iso_arrow_one_bksp( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3c, k3d, k3e, \
+ k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e }, \
+ { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
+ { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, KC_NO, k3c, k3d, k3e }, \
+ { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c, k4d, k4e } \
+}
+
/* LAYOUT_60_abnt2
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │
diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json
index bb607a4a29..9673315168 100644
--- a/keyboards/dz60/info.json
+++ b/keyboards/dz60/info.json
@@ -793,6 +793,78 @@
{"x": 13.75, "y": 4, "w": 1.25}
]
},
+ "LAYOUT_60_iso_arrow_one_bksp": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w":2},
+
+ {"x": 0, "y": 1, "w":1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+
+ {"x": 0, "y": 2, "w":1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2},
+ {"x": 13.75, "y": 1, "w":1.25, "h":2},
+
+ {"x": 0, "y": 3, "w":1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3, "w":1.75},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w":1.25},
+ {"x": 1.25, "y": 4, "w":1.25},
+ {"x": 2.5, "y": 4, "w":1.25},
+ {"x": 3.75, "y": 4, "w":6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4}
+ ]
+ },
"LAYOUT_60_hhkb": {
"layout": [
{"x": 0, "y": 0},
diff --git a/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c
new file mode 100644
index 0000000000..fb1bcd8dca
--- /dev/null
+++ b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2021 Tobias Minn (@0x544D)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers_idx{
+ _BL = 0, // base layer
+ _FN1, // function layer 1
+ _FN2 // function layer 2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* ISO 60 layout by 0x544D (ISO German keyboard layout shown)
+ *
+ * Keyboard uses a HW layout with dedicated arrow keys. To accomplish that, the key on the
+ * left of the "UP arrow" key serves a dual purpose as "-_" when pressed short and as "RShift" key
+ * when you hold the key. To trigger the "underscore" you need to hold LShift and press "-_".
+ *
+ * ,-----------------------------------------------------------------------------------------.
+ * | Esc | 1 ! | 2 " | 3 § | 4 $ | 5 % | 6 & | 7 / | 8 ( | 9 ) | 0 = | ß ? | ´ ` | Backspace |
+ * |-----------------------------------------------------------------------------------------|
+ * | Tab | Q | W | E | R | T | Z | U | I | O | P | Ü | + * | Enter |
+ * |---------------------------------------------------------------------------------- |
+ * | MO(2) | A | S | D | F | G | H | J | K | L | Ö | Ä | # ' | |
+ * |-----------------------------------------------------------------------------------------|
+ * | Shift | < > | Y | X | C | V | B | N | M | , ; | .: |-_ /Shift | Up | Del |
+ * |-----------------------------------------------------------------------------------------|
+ * | LCtl | LGUI | LAlt | Space |RAlt| MO(1)| Lft | Dwn | Rgh |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [_BL] = LAYOUT_60_iso_arrow_one_bksp(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ MO(2), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Funtion Layer 1: Media Controls with arrow keys / RShift (Play Pause), F keys,
+ * RGB backlight control
+ * ,-----------------------------------------------------------------------------------------.
+ * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
+ * |-----------------------------------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------------------------- |
+ * | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------------------------------------|
+ * | | | | | | RGB-|RGB_T| RGB+| | | | MPlay |Vol_U| |
+ * |-----------------------------------------------------------------------------------------|
+ * | | | | | |Trans| MPrv|Vol_D| MNxt|
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [_FN1] = LAYOUT_60_iso_arrow_one_bksp(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_RMOD,RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_VOLU, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+
+ /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/RESET
+ * ,-----------------------------------------------------------------------------------------.
+ * | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
+ * |-----------------------------------------------------------------------------------------|
+ * | | |Vol_D|Vol_U| | | | | | |RESET| | | |
+ * |---------------------------------------------------------------------------------- |
+ * | Trans |MPrv |MPlay| MNxt| | | | | | | | | | |
+ * |-----------------------------------------------------------------------------------------|
+ * | | | | | | | | | | | | |PGUP | |
+ * |-----------------------------------------------------------------------------------------|
+ * | | | | | | | Home|PGDN | End |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [_FN2] = LAYOUT_60_iso_arrow_one_bksp(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_NO,
+ KC_TRNS, KC_MRWD, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/iso_de_arrow_0x544d/readme.md b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/readme.md
new file mode 100644
index 0000000000..a3d58c159f
--- /dev/null
+++ b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/readme.md
@@ -0,0 +1,10 @@
+# DZ60 - ISO DE Arrow Layout
+
+![DZ60 ISO DE Arrow Layout Image](https://i.imgur.com/rfQRr7n.png)
+
+This is a modified version of the ISO DE layout for the DZ60 board. It has dedicated
+arrow keys and standard spacebar and backspace keys.
+
+The keyboard uses a hardware layout with dedicated arrow keys. To accomplish that, the key on the
+left of the "UP arrow" key serves a dual purpose as "-\_" when pressed short and as "RShift" key
+when you hold the key. To trigger the "underscore" you need to hold LShift and press "-\_".
diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk
index 9d8586ede3..d021d41757 100644
--- a/keyboards/dz60/rules.mk
+++ b/keyboards/dz60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/bocc/rules.mk b/keyboards/dztech/bocc/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/dztech/bocc/rules.mk
+++ b/keyboards/dztech/bocc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/duo_s/rules.mk b/keyboards/dztech/duo_s/rules.mk
index 843d46f37e..cdf974336d 100644
--- a/keyboards/dztech/duo_s/rules.mk
+++ b/keyboards/dztech/duo_s/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb/v1/rules.mk b/keyboards/dztech/dz60rgb/v1/rules.mk
index e055ded922..22ecf071a7 100644
--- a/keyboards/dztech/dz60rgb/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb/v1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb/v2/rules.mk b/keyboards/dztech/dz60rgb/v2/rules.mk
index 41fdb211ed..036987413e 100644
--- a/keyboards/dztech/dz60rgb/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb/v2_1/rules.mk b/keyboards/dztech/dz60rgb/v2_1/rules.mk
index 831b1b94f8..b9fce504f2 100644
--- a/keyboards/dztech/dz60rgb/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb/v2_1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
index e055ded922..22ecf071a7 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
index 8318468880..d538e324f3 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
index c52676f87f..800fb47256 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
index d5f879081a..6b750f76ad 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
index 89aea76078..ad358c6383 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
index 1f81ab573a..1ad0e95bdb 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz64rgb/config.h b/keyboards/dztech/dz64rgb/config.h
new file mode 100644
index 0000000000..224c2672cc
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/config.h
@@ -0,0 +1,72 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define VENDOR_ID 0x445A
+#define PRODUCT_ID 0x1013
+#define DEVICE_VER 0x0002
+#define MANUFACTURER DZTECH
+#define PRODUCT DZ64RGB
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+#define MATRIX_ROW_PINS { F5, F4, F1, B3, B2 }
+#define MATRIX_COL_PINS { C7, F7, F6, F0, B0, B1, B4, D7, D6, D4, D5, D3, D2, B7 }
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define USB_SUSPEND_WAKEUP_DELAY 5000
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 64
+#endif
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file
diff --git a/keyboards/dztech/dz64rgb/dz64rgb.c b/keyboards/dztech/dz64rgb/dz64rgb.c
new file mode 100644
index 0000000000..3850dbe276
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/dz64rgb.c
@@ -0,0 +1,121 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "dz64rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ { 0, K_14, J_14, L_14 },
+ { 0, K_13, J_13, L_13 },
+ { 0, K_12, J_12, L_12 },
+ { 0, K_11, J_11, L_11 },
+ { 0, K_10, J_10, L_10 },
+ { 0, K_9, J_9, L_9 },
+ { 0, K_8, J_8, L_8 },
+ { 0, K_7, J_7, L_7 },
+ { 0, K_6, J_6, L_6 },
+ { 0, K_5, J_5, L_5 },
+ { 0, K_4, J_4, L_4 },
+ { 0, K_3, J_3, L_3 },
+ { 0, K_2, J_2, L_2 },
+ { 0, K_1, J_1, L_1 },
+
+ { 0, H_14, G_14, I_14 },
+ { 0, H_13, G_13, I_13 },
+ { 0, H_12, G_12, I_12 },
+ { 0, H_11, G_11, I_11 },
+ { 0, H_10, G_10, I_10 },
+ { 0, H_9, G_9, I_9 },
+ { 0, H_8, G_8, I_8 },
+ { 0, H_7, G_7, I_7 },
+ { 0, H_6, G_6, I_6 },
+ { 0, H_5, G_5, I_5 },
+ { 0, H_4, G_4, I_4 },
+ { 0, H_3, G_3, I_3 },
+ { 0, H_2, G_2, I_2 },
+ { 0, H_1, G_1, I_1 },
+
+ { 0, E_14, D_14, F_14 },
+ { 0, E_12, D_12, F_12 },
+ { 0, E_11, D_11, F_11 },
+ { 0, E_10, D_10, F_10 },
+ { 0, E_9, D_9, F_9 },
+ { 0, E_8, D_8, F_8 },
+ { 0, E_7, D_7, F_7 },
+ { 0, E_6, D_6, F_6 },
+ { 0, E_5, D_5, F_5 },
+ { 0, E_4, D_4, F_4 },
+ { 0, E_3, D_3, F_3 },
+ { 0, E_2, D_2, F_2 },
+ { 0, E_1, D_1, F_1 },
+
+ { 0, B_14, A_14, C_14 },
+ { 0, B_13, A_13, C_13 },
+ { 0, B_12, A_12, C_12 },
+ { 0, B_11, A_11, C_11 },
+ { 0, B_10, A_10, C_10 },
+ { 0, B_9, A_9, C_9 },
+ { 0, B_8, A_8, C_8 },
+ { 0, B_7, A_7, C_7 },
+ { 0, B_6, A_6, C_6 },
+ { 0, B_5, A_5, C_5 },
+ { 0, B_4, A_4, C_4 },
+ { 0, B_3, A_3, C_3 },
+ { 0, B_2, A_2, C_2 },
+ { 0, B_1, A_1, C_1 },
+
+ { 0, B_15, A_15, C_15 },
+ { 0, E_13, D_13, F_13 },
+ { 0, K_15, J_15, L_15 },
+ { 0, E_15, D_15, F_15 },
+ { 0, H_15, G_15, I_15 },
+ { 0, B_16, A_16, C_16 },
+ { 0, E_16, D_16, F_16 },
+ { 0, H_16, G_16, I_16 },
+ { 0, K_16, J_16, L_16 }
+};
+
+led_config_t g_led_config = {
+ {
+ { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, NO_LED, 28 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41 },
+ { 63, 62, 61, NO_LED, NO_LED, 60, NO_LED, NO_LED, 59, 58, 57, 56, NO_LED, 55 }
+ }, {
+ { 216, 0 }, { 192, 0 }, { 176, 0 }, { 160, 0 }, { 144, 0 }, { 128, 0 }, { 112, 0 }, { 96, 0 }, { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 220, 16 }, { 200, 16 }, { 184, 16 }, { 168, 16 }, { 152, 16 }, { 136, 16 }, { 120, 16 }, { 104, 16 }, { 88, 16 }, { 72, 16 }, { 56, 16 }, { 40, 16 }, { 24, 16 }, { 4, 16 },
+ { 214, 32 }, { 188, 32 }, { 172, 32 }, { 156, 32 }, { 140, 32 }, { 124, 32 }, { 108, 32 }, { 92, 32 }, { 76, 32 }, { 60, 32 }, { 44, 32 }, { 28, 32 }, { 6, 32 },
+ { 224, 48 }, { 218, 48 }, { 192, 48 }, { 176, 48 }, { 160, 48 }, { 144, 48 }, { 128, 48 }, { 112, 48 }, { 96, 48 },{80, 48}, { 64, 48 }, { 48, 48 }, { 32, 48 }, { 8, 48 },
+ { 224, 64 }, { 208, 64 }, { 192, 64 }, { 176, 64 }, { 160, 64 }, { 102, 64 }, { 42, 64 }, { 22, 64 }, { 2, 64 }
+ }, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1
+ }
+};
+
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
+
diff --git a/keyboards/dztech/dz64rgb/dz64rgb.h b/keyboards/dztech/dz64rgb/dz64rgb.h
new file mode 100644
index 0000000000..3d27e2620d
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/dz64rgb.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_64_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K48, K49, K4A, K4B, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, K48, K49, K4A, K4B, XXX, K4D } \
+}
diff --git a/keyboards/dztech/dz64rgb/keymaps/default/keymap.c b/keyboards/dztech/dz64rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..877793b892
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_64_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_64_ansi(
+ TO(3), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
+ _______, _______, _______, TO(4), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [2] = LAYOUT_64_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_64_ansi(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______,
+ _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, TO(0),
+ _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT,
+ _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
+ _______, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, _______, _______, _______
+ )
+};
diff --git a/keyboards/dztech/dz64rgb/keymaps/via/keymap.c b/keyboards/dztech/dz64rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..877793b892
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_64_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_64_ansi(
+ TO(3), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
+ _______, _______, _______, TO(4), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [2] = LAYOUT_64_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_64_ansi(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______,
+ _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, TO(0),
+ _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, KC_PENT,
+ _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
+ _______, KC_P0, KC_PDOT, KC_PENT, KC_P0, KC_PDOT, _______, _______, _______
+ )
+};
diff --git a/keyboards/dztech/dz64rgb/keymaps/via/rules.mk b/keyboards/dztech/dz64rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/dztech/dz64rgb/readme.md b/keyboards/dztech/dz64rgb/readme.md
new file mode 100644
index 0000000000..132a1710d7
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/readme.md
@@ -0,0 +1,21 @@
+# DZ64RGB
+
+A hotswap 60% RGB keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: DZtech DZ64RGB
+* Hardware Availability: [KBDfans](https://kbdfans.com/)
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dztech/dz64rgb:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/dztech/dz64rgb/rules.mk b/keyboards/dztech/dz64rgb/rules.mk
new file mode 100644
index 0000000000..f4982e7fd2
--- /dev/null
+++ b/keyboards/dztech/dz64rgb/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = lufa-ms
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3733
+LTO_ENABLE = yes
+LAYOUT= 64_ansi \ No newline at end of file
diff --git a/keyboards/dztech/dz65rgb/v1/rules.mk b/keyboards/dztech/dz65rgb/v1/rules.mk
index 32233c3e94..2773046964 100644
--- a/keyboards/dztech/dz65rgb/v1/rules.mk
+++ b/keyboards/dztech/dz65rgb/v1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz65rgb/v2/rules.mk b/keyboards/dztech/dz65rgb/v2/rules.mk
index 5b7a9ae3a2..ca3b0e72b5 100644
--- a/keyboards/dztech/dz65rgb/v2/rules.mk
+++ b/keyboards/dztech/dz65rgb/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz65rgb/v3/rules.mk b/keyboards/dztech/dz65rgb/v3/rules.mk
index 5623823ae4..8f6dee4c8a 100755
--- a/keyboards/dztech/dz65rgb/v3/rules.mk
+++ b/keyboards/dztech/dz65rgb/v3/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/dz96/rules.mk b/keyboards/dztech/dz96/rules.mk
index 4f1faaec80..02fbe72525 100644
--- a/keyboards/dztech/dz96/rules.mk
+++ b/keyboards/dztech/dz96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dztech/endless80/config.h b/keyboards/dztech/endless80/config.h
new file mode 100644
index 0000000000..9874ea99a8
--- /dev/null
+++ b/keyboards/dztech/endless80/config.h
@@ -0,0 +1,53 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "config_common.h"
+#define VENDOR_ID 0x445A
+#define PRODUCT_ID 0X1015
+#define DEVICE_VER 0x0001
+#define MANUFACTURER dztech
+#define PRODUCT endless80
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, B5 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, C6, C7, F5, F4, F1, F0 }
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_PIN_ON_STATE 0
+#define LED_CAPS_LOCK_PIN E6
+
+#define RGB_DI_PIN F7
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 6)
+#define RGBLIGHT_DEFAULT_SPD 10
+#define RGBLED_NUM 30
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 10
+#define RGBLIGHT_VAL_STEP 10
+#define RGBLIGHT_LIMIT_VAL 130 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+#endif
+#define DEBOUNCE 5 \ No newline at end of file
diff --git a/keyboards/dztech/endless80/endless80.c b/keyboards/dztech/endless80/endless80.c
new file mode 100644
index 0000000000..27135b54d4
--- /dev/null
+++ b/keyboards/dztech/endless80/endless80.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "endless80.h" \ No newline at end of file
diff --git a/keyboards/dztech/endless80/endless80.h b/keyboards/dztech/endless80/endless80.h
new file mode 100644
index 0000000000..114f158a90
--- /dev/null
+++ b/keyboards/dztech/endless80/endless80.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#define XXX KC_NO
+#include "quantum.h"
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K1E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2E, K3D, K3E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K4C, K4D, K4E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K53, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K5C, \
+ K50, K51, K52, K56, K57, K58, K59, K5A, K5B, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, K53, XXX, XXX, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/dztech/endless80/info.json b/keyboards/dztech/endless80/info.json
new file mode 100644
index 0000000000..219d7ec0fe
--- /dev/null
+++ b/keyboards/dztech/endless80/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "endless80",
+ "url": "",
+ "maintainer": "moyi4681",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+ }
+ }
+}
+
+
+
diff --git a/keyboards/dztech/endless80/keymaps/default/keymap.c b/keyboards/dztech/endless80/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e3a5258665
--- /dev/null
+++ b/keyboards/dztech/endless80/keymaps/default/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Layer Zero */
+
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all( /* Layer One */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all( /* Layer Two */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all( /* Layer Three */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/dztech/endless80/keymaps/via/keymap.c b/keyboards/dztech/endless80/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8140d7c1fb
--- /dev/null
+++ b/keyboards/dztech/endless80/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Layer Zero */
+
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all( /* Layer One */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all( /* Layer Two */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all( /* Layer Three */
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/dztech/endless80/keymaps/via/rules.mk b/keyboards/dztech/endless80/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/dztech/endless80/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/dztech/endless80/readme.md b/keyboards/dztech/endless80/readme.md
new file mode 100644
index 0000000000..58238afefe
--- /dev/null
+++ b/keyboards/dztech/endless80/readme.md
@@ -0,0 +1,18 @@
+# ENDLESS80
+
+A customizable 80% keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: ENDLESS80
+* Hardware Availability: [moyi4681](https://github.com/moyi4681)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dztech/endless80:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down esc in the keyboard then replug
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` \ No newline at end of file
diff --git a/keyboards/dztech/endless80/rules.mk b/keyboards/dztech/endless80/rules.mk
new file mode 100644
index 0000000000..533eacc989
--- /dev/null
+++ b/keyboards/dztech/endless80/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/e88/rules.mk b/keyboards/e88/rules.mk
index 2c660c9867..1c5d9aa0f5 100644
--- a/keyboards/e88/rules.mk
+++ b/keyboards/e88/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ealdin/quadrant/rules.mk b/keyboards/ealdin/quadrant/rules.mk
index 8841536eb4..532b0d736a 100644
--- a/keyboards/ealdin/quadrant/rules.mk
+++ b/keyboards/ealdin/quadrant/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/earth_rover/rules.mk b/keyboards/earth_rover/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/earth_rover/rules.mk
+++ b/keyboards/earth_rover/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ebastler/isometria_75/rev1/rules.mk b/keyboards/ebastler/isometria_75/rev1/rules.mk
index 85d85a70ab..b755e9eb2d 100644
--- a/keyboards/ebastler/isometria_75/rev1/rules.mk
+++ b/keyboards/ebastler/isometria_75/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eco/keymaps/bcat/config.h b/keyboards/eco/keymaps/bcat/config.h
index dffdc7b40a..f2d51c324a 100644
--- a/keyboards/eco/keymaps/bcat/config.h
+++ b/keyboards/eco/keymaps/bcat/config.h
@@ -16,6 +16,8 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
/* WS2812B RGB LED strip hand wired to Elite-C. */
#define RGB_DI_PIN B7
#define RGBLED_NUM 15
diff --git a/keyboards/eco/keymaps/bcat/keymap.c b/keyboards/eco/keymaps/bcat/keymap.c
index d46a7d416b..8c50a9ed55 100644
--- a/keyboards/eco/keymaps/bcat/keymap.c
+++ b/keyboards/eco/keymaps/bcat/keymap.c
@@ -18,21 +18,6 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/2c11371c7a5f7cd08a0132631d3d3281 */
@@ -58,12 +43,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21 */
[LAYER_ADJUST] = LAYOUT(
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______,
_______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______
),
// clang-format on
};
-
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
diff --git a/keyboards/eco/keymaps/bcat/readme.md b/keyboards/eco/keymaps/bcat/readme.md
index 85e2615512..fd9e1bea73 100644
--- a/keyboards/eco/keymaps/bcat/readme.md
+++ b/keyboards/eco/keymaps/bcat/readme.md
@@ -39,6 +39,6 @@ nothing really useful to bind them to anyway.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/J2rOshm.png)
+![Adjust layer layout](https://i.imgur.com/63vm0ke.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21))
diff --git a/keyboards/eco/keymaps/default/rules.mk b/keyboards/eco/keymaps/default/rules.mk
index f5b5fcbc2e..a4ca41ace9 100644
--- a/keyboards/eco/keymaps/default/rules.mk
+++ b/keyboards/eco/keymaps/default/rules.mk
@@ -1,20 +1,10 @@
-
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/eco/rules.mk b/keyboards/eco/rules.mk
index 5e2c0138ff..aec1299db4 100644
--- a/keyboards/eco/rules.mk
+++ b/keyboards/eco/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = eco/rev2
diff --git a/keyboards/edc40/rules.mk b/keyboards/edc40/rules.mk
index 4bda63662a..da3defc0d1 100644
--- a/keyboards/edc40/rules.mk
+++ b/keyboards/edc40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/edda/rules.mk b/keyboards/edda/rules.mk
index d5cb34b852..fe1bebb5b2 100644
--- a/keyboards/edda/rules.mk
+++ b/keyboards/edda/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/edi/hardlight/mk1/keymaps/default/config.h b/keyboards/edi/hardlight/mk1/keymaps/default/config.h
deleted file mode 100644
index 2db5f3b328..0000000000
--- a/keyboards/edi/hardlight/mk1/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/edi/hardlight/mk1/rules.mk b/keyboards/edi/hardlight/mk1/rules.mk
index c3af341ad9..cb90be7699 100644
--- a/keyboards/edi/hardlight/mk1/rules.mk
+++ b/keyboards/edi/hardlight/mk1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/edi/hardlight/mk2/config.h b/keyboards/edi/hardlight/mk2/config.h
new file mode 100644
index 0000000000..ab4b006827
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/config.h
@@ -0,0 +1,81 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xF7E0
+#define PRODUCT_ID 0x2408
+#define DEVICE_VER 0x0007
+#define MANUFACTURER Everywhere Defense Industries
+#define PRODUCT Hard Light Mk 2
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+#define MATRIX_COL_PINS { B2, B6, B5, F1, F0, C15, C14, C13 }
+#define MATRIX_ROW_PINS { B10, B11, A14, A15, A3, A0, A2, A1 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* RGB Underglow */
+#define RGB_DI_PIN A10
+#define RGBLED_NUM 32
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 5
+//#define RGBLIGHT_LIMIT_VAL 200
+
+/* PWM RGB Underglow Defines */
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_EXTERNAL_PULLUP
+
+/* I2C driver overrides */
+#define I2C1_SCL 7
+#define I2C1_SDA 8
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/edi/hardlight/mk2/halconf.h b/keyboards/edi/hardlight/mk2/halconf.h
new file mode 100644
index 0000000000..498f31a919
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/halconf.h
@@ -0,0 +1,32 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// Activate PWM mode
+#define HAL_USE_PWM TRUE
+
+// Activate Inter-Integrated-Circuit Networking (I2C/2Wire)
+#define HAL_USE_I2C TRUE
+
+// Activate Serial Peripheral Interface
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+
+#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/edi/hardlight/mk2/keymaps/.gitignore b/keyboards/edi/hardlight/mk2/keymaps/.gitignore
new file mode 100644
index 0000000000..08a0f321a2
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/keymaps/.gitignore
@@ -0,0 +1 @@
+fate \ No newline at end of file
diff --git a/keyboards/edi/hardlight/mk2/keymaps/default/config.h b/keyboards/edi/hardlight/mk2/keymaps/default/config.h
new file mode 100644
index 0000000000..6887510933
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#undef LEADER_TIMEOUT
+#define LEADER_TIMEOUT 250
+#define LEADER_PER_KEY_TIMING
+
+// place overrides here
diff --git a/keyboards/edi/hardlight/mk2/keymaps/default/keymap.c b/keyboards/edi/hardlight/mk2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6683e647d3
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/keymaps/default/keymap.c
@@ -0,0 +1,115 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _MAIN,
+ _RAISE,
+ _LOWER,
+ _SET,
+};
+
+// Readability keycodes
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define SET MO(_SET)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+/* MAIN
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Backsp | Delete | 7 | 8 | 9 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | Pause | 4 | 5 | 6 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LShift | Z | X | C | V | B | N | M | , | . | / | Up | Enter | 1 | 2 | 3 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCtrl | Lock | GUI | Alt | Lower | Space | Space | Raise | PrtScr | RShift | Left | Down | Right | 0 | . | Enter |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_MAIN] = LAYOUT_ortho_4x16(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL, KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PAUS, KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, KC_KP_1, KC_KP_2, KC_KP_3,
+ KC_LCTL, KC_LOCK, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_PSCR, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_KP_DOT, KC_PENT
+ ),
+
+/* RAISE
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Insert | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | - | = | [ | ] | \ | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | | PgUp | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | Vol- | PgDn | Vol+ | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_RAISE] = LAYOUT_ortho_4x16(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_INS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_PGDN, KC_VOLU, _______, _______, _______
+ ),
+
+/* LOWER
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Home | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | Mute | End | Play | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_LOWER] = LAYOUT_ortho_4x16(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_END, KC_MPLY, _______, _______, _______
+ ),
+
+ /* SETTINGS
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | | CapLok | ScrLok | NumLok | VK I/O | | | RGB IO | Mode+ | Mode- | Plain | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | Hue+ | Sat+ | Val+ | Larsen | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | Hue- | Sat- | Val- | Rswirl | | Reset | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_SET] = LAYOUT_ortho_4x16(
+ _______, KC_CAPS, KC_SLCK, KC_NLCK, VLK_TOG, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_P, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SW,_______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, _______, RESET, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _SET);
+} \ No newline at end of file
diff --git a/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c b/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c
new file mode 100644
index 0000000000..a493c2288a
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c
@@ -0,0 +1,115 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _MAIN,
+ _RAISE,
+ _LOWER,
+ _SET,
+};
+
+// Readability keycodes
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define SET MO(_SET)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+/* MAIN
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Backsp | Delete | 7 | 8 | 9 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | Enter | 4 | 5 | 6 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LShift | Z | X | C | V | B | N | M | , | . | / | Up | Pause | 1 | 2 | 3 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | LCtrl | Lock | GUI | Alt | Lower | Space | Space | Raise | PrtScr | RShift | Left | Down | Right | 0 | . | Enter |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_MAIN] = LAYOUT_ortho_4x16(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_DEL, KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_PAUS, KC_KP_1, KC_KP_2, KC_KP_3,
+ KC_LCTL, KC_LOCK, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_PSCR, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_KP_0, KC_KP_DOT, KC_PENT
+ ),
+
+/* RAISE
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Insert | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | - | = | [ | ] | \ | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | | PgUp | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | Vol- | PgDn | Vol+ | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_RAISE] = LAYOUT_ortho_4x16(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_INS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_PGDN, KC_VOLU, _______, _______, _______
+ ),
+
+/* LOWER
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Home | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | Mute | End | Play | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_LOWER] = LAYOUT_ortho_4x16(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_END, KC_MPLY, _______, _______, _______
+ ),
+
+ /* SETTINGS
+ * .-----------------------------------------------------------------------------------------------------------------------------------------------.
+ * | | CapLok | ScrLok | NumLok | VK I/O | | | RGB IO | Mode+ | Mode- | Plain | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | Hue+ | Sat+ | Val+ | Larsen | | Reset | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | Hue- | Sat- | Val- | Rswirl | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | | | | | | | | |
+ * '-----------------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_SET] = LAYOUT_ortho_4x16(
+ _______, KC_CAPS, KC_SLCK, KC_NLCK, VLK_TOG, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_P, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_M_SW,_______, RESET, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _SET);
+} \ No newline at end of file
diff --git a/keyboards/edi/hardlight/mk2/mcuconf.h b/keyboards/edi/hardlight/mk2/mcuconf.h
new file mode 100644
index 0000000000..95e698d9ec
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/mcuconf.h
@@ -0,0 +1,32 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+// Enable PWM
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
+// Enable I2C
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+//Enable SPI
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 TRUE \ No newline at end of file
diff --git a/keyboards/edi/hardlight/mk2/mk2.c b/keyboards/edi/hardlight/mk2/mk2.c
new file mode 100644
index 0000000000..ab4414e4d2
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/mk2.c
@@ -0,0 +1,18 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "mk2.h"
diff --git a/keyboards/edi/hardlight/mk2/mk2.h b/keyboards/edi/hardlight/mk2/mk2.h
new file mode 100644
index 0000000000..5065582d65
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/mk2.h
@@ -0,0 +1,37 @@
+/*
+©2021 Everywhere Defense Industries / Fate Everywhere <fate@7storm.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_4x16( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, \
+ K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, \
+ K48, K49, K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62, K63 \
+) \
+{ \
+ { K00, K02, K04, K06, K08, K10, K12, K14 }, \
+ { K01, K03, K05, K07, K09, K11, K13, K15 }, \
+ { K16, K18, K20, K22, K24, K26, K28, K30 }, \
+ { K17, K19, K21, K23, K25, K27, K29, K31 }, \
+ { K32, K34, K36, K38, K40, K42, K44, K46 }, \
+ { K33, K35, K37, K39, K41, K43, K45, K47 }, \
+ { K48, K50, K52, K54, K56, K58, K60, K62 }, \
+ { K49, K51, K53, K55, K57, K59, K61, K63 } \
+}
diff --git a/keyboards/edi/hardlight/mk2/readme.md b/keyboards/edi/hardlight/mk2/readme.md
new file mode 100644
index 0000000000..54b14a220e
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/readme.md
@@ -0,0 +1,22 @@
+# Hard Light Mark 2
+
+![Hard Light Mark 2](https://i.imgur.com/X6Katarh.png)
+
+A compact 60% keyboard designed by Fate Everywhere. Born out of the desire for a Planck with a numpad for technical work and a lack of reliance on the Elite-C.
+
+* Keyboard Maintainer: [Fate Everywhere](https://github.com/fateeverywhere)
+* Hardware Supported: Mark 2 Hard Light.
+* Hardware Availability: [Seven Store](https://store.7storm.org).
+* To Enter Bootloader:
+ If keyboard is operational, hold RAISE and LOWER then press ENTER.
+ If keyboard is unresponsive, unplug board then hold the BTLDR button on the bottom of the PCB and plug in the keyboard.
+
+Build example for this keyboard (after setting up your build environment):
+
+ make edi/hardlight/mk2:default
+
+Flash example for this keyboard (after setting up your build environment):
+
+ make edi/hardlight/mk2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/edi/hardlight/mk2/rules.mk b/keyboards/edi/hardlight/mk2/rules.mk
new file mode 100644
index 0000000000..5ffab4a55e
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+Bootloader = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+VELOCIKEY_ENABLE = yes
+KEY_LOCK_ENABLE = yes
+WS2812_DRIVER = pwm
+
+# Layout definitions
+LAYOUTS = ortho_4x16
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/eek/rules.mk b/keyboards/eek/rules.mk
index c2b406abeb..886a894fa3 100644
--- a/keyboards/eek/rules.mk
+++ b/keyboards/eek/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/efreet/rules.mk b/keyboards/efreet/rules.mk
index cf6c485661..0fa7a5abb6 100644
--- a/keyboards/efreet/rules.mk
+++ b/keyboards/efreet/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eggman/rules.mk b/keyboards/eggman/rules.mk
index b309c4db77..7cb0dc381f 100644
--- a/keyboards/eggman/rules.mk
+++ b/keyboards/eggman/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ein_60/rules.mk b/keyboards/ein_60/rules.mk
index 47cbb0c12f..c4dbb87202 100644
--- a/keyboards/ein_60/rules.mk
+++ b/keyboards/ein_60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/emajesty/eiri/rules.mk b/keyboards/emajesty/eiri/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/emajesty/eiri/rules.mk
+++ b/keyboards/emajesty/eiri/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/emery65/rules.mk b/keyboards/emery65/rules.mk
index 853d4afb29..169c45b479 100644
--- a/keyboards/emery65/rules.mk
+++ b/keyboards/emery65/rules.mk
@@ -20,10 +20,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/emi20/rules.mk b/keyboards/emi20/rules.mk
index 2eb9369659..e0403a960b 100644
--- a/keyboards/emi20/rules.mk
+++ b/keyboards/emi20/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/emptystring/NQG/keymaps/default/keymap.c b/keyboards/emptystring/NQG/keymaps/default/keymap.c
index cd465519bf..aca045342c 100644
--- a/keyboards/emptystring/NQG/keymaps/default/keymap.c
+++ b/keyboards/emptystring/NQG/keymaps/default/keymap.c
@@ -37,23 +37,23 @@ qk_tap_dance_action_t tap_dance_actions[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENSL,\
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCCL,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENSL,
KC_STAB, KC_ESLO, KC_BSCT, KC_BSCT, KC_SPC, KC_SPC, MO(_RAISE)
),
[_LOWER] = LAYOUT(
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPPI, \
- _______, _______, KC_DSTP, _______, KC_WLNG, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \
- _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, KC_HOME, KC_END,\
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPPI,
+ _______, _______, KC_DSTP, _______, KC_WLNG, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
+ _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, KC_HOME, KC_END,
KC_CTEN, _______, KC_BSCT, KC_BSCT, KC_SPC, KC_SPC, KC_ULCK
),
[_RAISE] = LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_N0BS, \
- _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \
- _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,\
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_N0BS,
+ _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
KC_ALEN, KC_LOCK, KC_BSCT, KC_BSCT, KC_SPC, KC_SPC, _______
),
diff --git a/keyboards/emptystring/NQG/rules.mk b/keyboards/emptystring/NQG/rules.mk
index d4c6e1fcaf..e61c7dbfd0 100644
--- a/keyboards/emptystring/NQG/rules.mk
+++ b/keyboards/emptystring/NQG/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/eniigmakeyboards/ek60/rules.mk b/keyboards/eniigmakeyboards/ek60/rules.mk
index c14a1c5088..9c493f4e20 100644
--- a/keyboards/eniigmakeyboards/ek60/rules.mk
+++ b/keyboards/eniigmakeyboards/ek60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eniigmakeyboards/ek65/rules.mk b/keyboards/eniigmakeyboards/ek65/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/eniigmakeyboards/ek65/rules.mk
+++ b/keyboards/eniigmakeyboards/ek65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eniigmakeyboards/ek87/rules.mk b/keyboards/eniigmakeyboards/ek87/rules.mk
index ab4a4e3e61..1df819bb08 100644
--- a/keyboards/eniigmakeyboards/ek87/rules.mk
+++ b/keyboards/eniigmakeyboards/ek87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ep/40/keymaps/default/keymap.c b/keyboards/ep/40/keymaps/default/keymap.c
index 1ac66bc012..38d0e62287 100644
--- a/keyboards/ep/40/keymaps/default/keymap.c
+++ b/keyboards/ep/40/keymaps/default/keymap.c
@@ -23,24 +23,24 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, M_BSDEL,\
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,\
- LCTL_T(KC_LBRC), KC_LGUI, KC_LALT, KC_SPC, LT(1, KC_SPC), KC_RALT, MO(2), RCTL_T(KC_RBRC), KC_F5 \
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, M_BSDEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
+ LCTL_T(KC_LBRC), KC_LGUI, KC_LALT, KC_SPC, LT(1, KC_SPC), KC_RALT, MO(2), RCTL_T(KC_RBRC), KC_F5
),
[1] = LAYOUT( /* Base */
- KC_TRNS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_TRNS,\
- KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_TRNS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT( /* Base */
- KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS, KC_TRNS,\
- KC_TRNS, KC_NUBS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET \
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS, KC_TRNS,
+ KC_TRNS, KC_NUBS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET
),
};
diff --git a/keyboards/ep/40/rules.mk b/keyboards/ep/40/rules.mk
index 66d778a952..d69504a9de 100644
--- a/keyboards/ep/40/rules.mk
+++ b/keyboards/ep/40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ep/96/keymaps/default/keymap.c b/keyboards/ep/96/keymaps/default/keymap.c
index c3892148e6..8794fb9f51 100644
--- a/keyboards/ep/96/keymaps/default/keymap.c
+++ b/keyboards/ep/96/keymaps/default/keymap.c
@@ -23,12 +23,12 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
};
diff --git a/keyboards/ep/96/rules.mk b/keyboards/ep/96/rules.mk
index 66d778a952..d69504a9de 100644
--- a/keyboards/ep/96/rules.mk
+++ b/keyboards/ep/96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ep/comsn/hs68/rules.mk b/keyboards/ep/comsn/hs68/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/ep/comsn/hs68/rules.mk
+++ b/keyboards/ep/comsn/hs68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ep/comsn/mollydooker/rules.mk b/keyboards/ep/comsn/mollydooker/rules.mk
index c9228dd8df..81074884fe 100644
--- a/keyboards/ep/comsn/mollydooker/rules.mk
+++ b/keyboards/ep/comsn/mollydooker/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ep/comsn/tf_longeboye/rules.mk b/keyboards/ep/comsn/tf_longeboye/rules.mk
index 5c194d1aeb..717cc07b4b 100644
--- a/keyboards/ep/comsn/tf_longeboye/rules.mk
+++ b/keyboards/ep/comsn/tf_longeboye/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/epoch80/rules.mk b/keyboards/epoch80/rules.mk
index 94c5d640ae..24d13f46c6 100644
--- a/keyboards/epoch80/rules.mk
+++ b/keyboards/epoch80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ergo42/keymaps/default/keymap.c b/keyboards/ergo42/keymaps/default/keymap.c
index afe748aa64..0e03a12267 100644
--- a/keyboards/ergo42/keymaps/default/keymap.c
+++ b/keyboards/ergo42/keymaps/default/keymap.c
@@ -19,11 +19,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | LGUI | LCtrl| ` | \ | LAlt | META |Space | |Space | ' | - | = | LEFT | DOWN | RIGHT|
* `------------------------------------------------' `------------------------------------------------'
*/
- [BASE] = LAYOUT( \
- KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, \
- KC_DEL, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT, \
- MO(SYMB), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \
- KC_LGUI, KC_LCTL, KC_GRV, KC_BSLS, KC_LALT, MO(META), KC_SPC, KC_SPC, KC_QUOT, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT \
+ [BASE] = LAYOUT(
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ KC_DEL, KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RBRC, KC_ENT,
+ MO(SYMB), KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ KC_LGUI, KC_LCTL, KC_GRV, KC_BSLS, KC_LALT, MO(META), KC_SPC, KC_SPC, KC_QUOT, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* META
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | LGUI | LCtrl| ` | \ | LAlt | META |Space | |Space | ' | - | = | | | |
* `------------------------------------------------' `------------------------------------------------'
*/
- [META] = LAYOUT( \
- RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
- _______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, _______, \
- _______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, S(KC_LBRC), S(KC_RBRC), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX \
+ [META] = LAYOUT(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, _______,
+ _______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, S(KC_LBRC), S(KC_RBRC), KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
),
/* SYMB
@@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | LGUI | LCtrl| ` | \ | LAlt | META |Space | |Space | ' | - | = | LEFT | DOWN | RIGHT|
* `------------------------------------------------' `------------------------------------------------'
*/
- [SYMB] = LAYOUT( \
- _______, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), KC_LBRC, KC_RBRC, S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), _______, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_9), S(KC_0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_LBRC), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [SYMB] = LAYOUT(
+ _______, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), KC_LBRC, KC_RBRC, S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_9), S(KC_0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, S(KC_LBRC), S(KC_RBRC), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/ergo42/rules.mk b/keyboards/ergo42/rules.mk
index 03a0147fd1..2225bdcb59 100644
--- a/keyboards/ergo42/rules.mk
+++ b/keyboards/ergo42/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ergoarrows/rules.mk b/keyboards/ergoarrows/rules.mk
index 9bdc73b761..aba3644c9e 100644
--- a/keyboards/ergoarrows/rules.mk
+++ b/keyboards/ergoarrows/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ergodash/mini/keymaps/default/keymap.c b/keyboards/ergodash/mini/keymaps/default/keymap.c
index 18ba519841..064584e43a 100644
--- a/keyboards/ergodash/mini/keymaps/default/keymap.c
+++ b/keyboards/ergodash/mini/keymaps/default/keymap.c
@@ -28,11 +28,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | ALt | EISU |||||||| Lower| Space|Delete|||||||| Bksp | Enter| Raise|||||||| Left | Down | Up | Right|
* ,----------------------------------------------------------------------------------------------------------------------.
*/
- [_QWERTY] = LAYOUT( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -47,10 +47,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_LOWER] = LAYOUT(
- KC_GRV , KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_GRV , KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_COLN, KC_DQT ,
+ KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Raise
@@ -65,10 +65,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_RAISE] = LAYOUT(
- KC_GRV , KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_COLN, KC_DQT , \
- KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_F11 , KC_F12, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_GRV , KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_COLN, KC_DQT ,
+ KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
+ KC_LCTL, KC_F11 , KC_F12, EISU, LOWER, KC_SPC , KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Adjust
@@ -83,10 +83,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_ADJUST] = LAYOUT(
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
- _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______ \
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
+ _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/ergodash/rev1/keymaps/default/keymap.c b/keyboards/ergodash/rev1/keymaps/default/keymap.c
index 0c9159497a..68c5e52708 100644
--- a/keyboards/ergodash/rev1/keymaps/default/keymap.c
+++ b/keyboards/ergodash/rev1/keymaps/default/keymap.c
@@ -30,12 +30,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | ALt | EISU |||||||| Lower| Space| Del |||||||| Bksp | Enter| Raise|||||||| Left | Down | Up | Right|
* ,----------------------------------------------------------------------------------------------------------------------.
*/
- [_QWERTY] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, \
- KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR,
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, KC_EQL , KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC , KC_ENT , KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -52,11 +52,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_LOWER] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT ,
+ KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Raise
@@ -73,11 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_RAISE] = LAYOUT(
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT , \
- KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCBR, KC_RCBR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_UNDS, KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL , KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_DQT ,
+ KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SPC , KC_ENT , KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, LOWER, KC_SPC ,KC_DEL, KC_BSPC,KC_ENT , RAISE, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Adjust
@@ -94,11 +94,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
- _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
+ _______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,_______,_______, _______,_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/ergodash/rules.mk b/keyboards/ergodash/rules.mk
index 587b0396fd..de097dfbb3 100644
--- a/keyboards/ergodash/rules.mk
+++ b/keyboards/ergodash/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes # Enables split keyboard support
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index c3b794f108..109a80d2c5 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -43,12 +43,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_EXPANDER_COL_PINS { 5, 4, 3, 2, 1, 0 }
#define MATRIX_EXPANDER_ROW_PINS { 0, 1, 2, 3, 4, 5, 6 }
-
-#define MOUSEKEY_INTERVAL 20
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_TIME_TO_MAX 60
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_WHEEL_DELAY 0
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 400
+#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
+#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
#define DEBOUNCE 30
diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c
index 49f690fa70..8d3790088d 100644
--- a/keyboards/ergodox_ez/ergodox_ez.c
+++ b/keyboards/ergodox_ez/ergodox_ez.c
@@ -398,3 +398,54 @@ void eeconfig_init_kb(void) { // EEPROM is getting reset!
eeconfig_update_kb(keyboard_config.raw);
eeconfig_init_user();
}
+
+#ifdef ORYX_ENABLE
+static uint16_t loops = 0;
+static bool is_on = false;
+#endif
+
+#ifdef DYNAMIC_MACRO_ENABLE
+static bool is_dynamic_recording = false;
+static uint16_t dynamic_loop_timer;
+
+void dynamic_macro_record_start_user(void) {
+ is_dynamic_recording = true;
+ dynamic_loop_timer = timer_read();
+ ergodox_right_led_1_on();
+}
+
+void dynamic_macro_record_end_user(int8_t direction) {
+ is_dynamic_recording = false;
+ layer_state_set_user(layer_state);
+}
+#endif
+
+void matrix_scan_kb(void) {
+#ifdef DYNAMIC_MACRO_ENABLE
+ if (is_dynamic_recording) {
+ ergodox_right_led_1_off();
+ // if (timer_elapsed(dynamic_loop_timer) > 5)
+ {
+ static uint8_t counter;
+ counter++;
+ if (counter > 100) ergodox_right_led_1_on();
+ dynamic_loop_timer = timer_read();
+ }
+ }
+#endif
+
+#ifdef CAPS_LOCK_STATUS
+ led_t led_state = host_keyboard_led_state();
+ if(led_state.caps_lock) {
+ ergodox_right_led_3_on();
+ }
+ else {
+ uint8_t layer = get_highest_layer(layer_state);
+ if(layer != 1) {
+ ergodox_right_led_3_off();
+ }
+ }
+#endif
+
+ matrix_scan_user();
+}
diff --git a/keyboards/ergodox_ez/ergodox_ez.h b/keyboards/ergodox_ez/ergodox_ez.h
index 7bb2717147..7243a6a18d 100644
--- a/keyboards/ergodox_ez/ergodox_ez.h
+++ b/keyboards/ergodox_ez/ergodox_ez.h
@@ -292,3 +292,25 @@ extern keyboard_config_t keyboard_config;
{ R05, R15, R25, R35, R45, R55 }, \
{ R06, R16, R26, R36, R46, KC_NO } \
}
+
+/* ---- LEFT HAND ---- ---- RIGHT HAND ---- */
+#define LED_LAYOUT_ergodox_pretty( \
+ L01,L02,L03,L04,L05, R01,R02,R03,R04,R05, \
+ L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \
+ L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \
+ L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \
+ L41,L42,L43,L44, R42,R43,R44,R45 ) \
+ \
+ /* matrix positions */ \
+ { R01, R02, R03, R04, R05, \
+ R11, R12, R13, R14, R15, \
+ R21, R22, R23, R24, R25, \
+ R31, R32, R33, R34, R35, \
+ R42, R43, R44, R45, \
+ \
+ L05, L04, L03, L02, L01, \
+ L15, L14, L13, L12, L11, \
+ L25, L24, L23, L22, L21, \
+ L35, L34, L33, L32, L31, \
+ L44, L43, L42, L41 \
+ }
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
index 86aa1c2e6b..67a09188ab 100644
--- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
@@ -111,6 +111,7 @@ enum custom_keycodes {
#define AS_CLASS LCTL(KC_N)
#define AS_FINDUSAGE LALT(KC_F7)
#define AS_BACK LCTL(LALT(KC_LEFT))
+#define AS_BRACKET LCTL(LSFT(KC_M))
#define AS_GO_DECLARATION LCTL(KC_B)
#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B))
#define AS_CLOSETAB LCTL(KC_F4)
@@ -118,6 +119,12 @@ enum custom_keycodes {
#define AS_COPYLINEDOWN LCTL(KC_D)
#define AS_DEL_LINE LCTL(KC_Y)
#define AS_LINE LCTL(KC_G)
+#define AS_CMT_BLOCK LCTL(LSFT(KC_SLSH))
+#define AS_CMT_LINE LCTL(KC_SLSH)
+#define AS_BM_PREV LALT(KC_P)
+#define AS_BM_NEXT LALT(KC_N)
+#define AS_BM_TOGGLE KC_F11
+#define AS_BM_LIST LSFT(KC_F11)
// visual studio code shortcuts
#define VS_FILE LCTL(KC_P)
@@ -148,7 +155,7 @@ enum custom_keycodes {
#define VS_BM_PREV LCTL(LALT(KC_P))
#define VS_BM_NEXT LCTL(LALT(KC_N))
#define VS_BM_TOGGLE LCTL(LALT(KC_K))
-#define VS_BM_LABEL LCTL(LALT(KC_B))
+#define VS_BM_CLEARALL LCTL(LALT(KC_C))
#define MACRO_SCREEN_NUM(MACRO_NAME,NUM) \
@@ -362,12 +369,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, AS_COPYLINEDOWN, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, AS_LINE, KC_TRNS,
- AS_CLOSETAB, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, AS_CLOSETOOLWINDOW, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ AS_CMT_LINE, AS_COPYLINEDOWN, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, AS_LINE, AS_BRACKET,
+ AS_CLOSETAB, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK,
+ AS_CMT_BLOCK, KC_TRNS, AS_BM_PREV, AS_BM_NEXT, KC_TRNS, AS_CLOSETOOLWINDOW, AS_BM_TOGGLE,
// bottom row
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, AS_BM_LIST, KC_TRNS, KC_TRNS, KC_TRNS,
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
@@ -393,7 +400,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
VS_CLOSETAB, VS_TABLEFT, VS_TABRIGHT, VS_SYMBOLEDITOR, VS_FILE, VS_BACK,
VS_CMT_BLOCK, KC_TRNS, VS_BM_PREV, VS_BM_NEXT, VS_GROUP_1, VS_GROUP_2, VS_BM_TOGGLE,
// bottom row
- VS_COMMANDS, VS_OPEN_FILE, VS_TERMINAL, VS_CLOSEPANEL, VS_BM_LABEL,
+ VS_COMMANDS, VS_BM_LIST, VS_BM_LISTALL, VS_CLOSEPANEL, VS_BM_CLEARALL,
// thumb cluster
KC_TRNS, KC_TRNS,
KC_TRNS,
diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
index 55bf4209fd..e76e3296bf 100644
--- a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
@@ -16,369 +16,33 @@
*/
#include "keymap_bepo.h"
#include "ericgebhart.h"
-
+#include "layouts.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [DVORAK] = LAYOUT_ergodox_wrapper(
- // left hand
- KC_GRV, ___NUMBER_L___, OSL(LAYERS),
- KC_LOCK, ___DVORAK_L1___, LCTL(KC_C),
- TAB_BKTAB, ___DVORAK_L2___,
- KC_LSFT, ___DVORAK_L3___, TO(MDIA),
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
- LCTL(KC_V), ___DVORAK_R1___, KC_SLASH,
- /* */ ___DVORAK_R2___, KC_MINUS,
- TO(KEYPAD), ___DVORAK_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [XMONAD] = LAYOUT_ergodox_wrapper(
- // left hand
- ___, ___FUNC_L___, ___,
- ___, ___DVORAK_L1___, ___,
- ___, ___DVORAK_L2___,
- ___, ___DVORAK_L3___, ___,
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- ___, ___FUNC_R___, ___,
- ___, ___DVORAK_R1___, ___,
- /**/ ___DVORAK_R2___, ___,
- ___, ___DVORAK_R3___, ___,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [QWERTY] = LAYOUT_ergodox_wrapper(
- // left hand
- KC_GRV, ___NUMBER_L___, OSL(LAYERS),
- KC_LOCK, ___QWERTY_L1___, LCTL(KC_C),
- TAB_BKTAB, ___QWERTY_L2___,
- KC_LSFT, ___QWERTY_L3___, TO(MDIA),
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
- LCTL(KC_V), ___QWERTY_R1___, KC_SLASH,
- /* */ ___QWERTY_R2___, KC_MINUS,
- TO(KEYPAD), ___QWERTY_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [COLEMAK] = LAYOUT_ergodox_wrapper(
- // left hand
- KC_GRV, ___NUMBER_L___, OSL(LAYERS),
- KC_LOCK, ___COLEMAK_L1___, LCTL(KC_C),
- TAB_BKTAB, ___COLEMAK_L2___,
- KC_LSFT, ___COLEMAK_L3___, TO(MDIA),
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
- LCTL(KC_V), ___COLEMAK_R1___, KC_SLASH,
- /* */ ___COLEMAK_R2___, KC_MINUS,
- TO(KEYPAD), ___COLEMAK_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [WORKMAN] = LAYOUT_ergodox_wrapper(
- // left hand
- KC_GRV, ___NUMBER_L___, OSL(LAYERS),
- KC_LOCK, ___WORKMAN_L1___, LCTL(KC_C),
- TAB_BKTAB, ___WORKMAN_L2___,
- KC_LSFT, ___WORKMAN_L3___, TO(MDIA),
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
- LCTL(KC_V), ___WORKMAN_R1___, KC_SLASH,
- /* */ ___WORKMAN_R2___, KC_MINUS,
- TO(KEYPAD), ___WORKMAN_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [NORMAN] = LAYOUT_ergodox_wrapper(
- // left hand
- KC_GRV, ___NUMBER_L___, OSL(LAYERS),
- KC_LOCK, ___NORMAN_L1___, LCTL(KC_C),
- TAB_BKTAB, ___NORMAN_L2___,
- KC_LSFT, ___NORMAN_L3___, TO(MDIA),
-
- ___BOTTOM_LEFT___,
- ___ERGODOX_THUMB_LEFT___,
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_R___, KC_EQL,
- LCTL(KC_V), ___NORMAN_R1___, KC_SLASH,
- /* */ ___NORMAN_R2___, KC_MINUS,
- TO(KEYPAD), ___NORMAN_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT___,
- ___ERGODOX_THUMB_RIGHT___
- ),
-
- [DVORAK_ON_BEPO] = LAYOUT_ergodox_wrapper(
- // left hand
- DB_GRV, ___NUMBER_BEPO_L___, OSL(LAYERS),
- KC_LOCK, ___DVORAK_FR_L1___, DB_LBRC,
- TAB_BKTAB, ___DVORAK_FR_L2___,
- KC_LSFT, ___DVORAK_FR_L3___, DB_LPRN,
-
- ___BOTTOM_LEFT_FR___,
- ___ERGODOX_THUMB_LEFT_BP___,
-
-
- // right hand
- MDIA_SYMB_KP_LAYERS, ___NUMBER_BEPO_R___, DB_EQL,
- DB_RBRC, ___DVORAK_FR_R1___, DB_SLASH,
-
- /* */ ___DVORAK_FR_R2___, DB_MINUS,
- DB_RPRN, ___DVORAK_FR_R3___, KC_RSFT,
-
- ___BOTTOM_RIGHT_FR___,
- ___ERGODOX_THUMB_RIGHT_BP___
- ),
-
- [BEPO] = LAYOUT_ergodox_wrapper(
- // Left hand
- BP_DLR, ___SYMBOL_BEPO_L___, OSL(LAYERS),
- KC_LOCK, ___BEPO_FR_L1___, DB_LBRC,
- TAB_BKTAB, ___BEPO_FR_L2___,
- BP_SFT_T_ECRC, ___BEPO_FR_L3___, DB_RBRC,
-
- ___5___,
- ___6___,
+ // Qwerty Base layers
+ [_DVORAK] = Dox_base(___NUMS___, ___DVORAK___),
+ [_QWERTY] = Dox_base(___NUMS___, ___QWERTY___),
+ [_COLEMAK] = Dox_base(___NUMS___, ___COLEMAK_DH___),
+ [_BEAKL] = Dox_base(___NUMS___, ___BEAKL15___),
+ // Bepo Base layers
+ [_DVORAK_BP] = Dox_bepo_base(___NUMS_BP___, ___DVORAK_FR___),
+ [_BEAKL_BP] = Dox_bepo_base(___BKLNUMS_BP___, ___BEAKL15_FR___),
+ [_BEPO] = Dox_bepo_base6(___BEPO6___),
- // Right hand
- MDIA_SYMB_KP_LAYERS, ___SYMBOL_BEPO_R___, BP_EQL,
- BP_DCIR, ___BEPO_FR_R1___, BP_W,
- /* */ ___BEPO_FR_R2___, BP_CCED,
- BP_C, ___BEPO_FR_R3___, KC_RSFT,
+ // transient layers.
+ // Switch to using a transient layer macro
+ [_SYMB] = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
+ [_SYMB_BP] = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
- ___5___,
- ___6___
- ),
+ [_TOPROWS] = Dox_transient(___12___, ___TOPROWS_3x12___),
+ [_TOPROWS_BP] = Dox_transient(___12___, ___TOPROWS_BP_3x12___),
- [XMONAD_FR] = LAYOUT_ergodox_wrapper(
- // left hand
- ___, ___FUNC_L___, ___,
- ___, ___DVORAK_FR_L1___, ___,
- ___, ___DVORAK_FR_L2___,
- ___, ___DVORAK_FR_L3___, ___,
+ [_KEYPAD] = Dox_transient(___KEYPAD_BKL_FUNC_4x12___),
+ [_KEYPAD_BP] = Dox_transient(___KEYPAD_BKL_FUNC_BP_4x12___),
- ___BOTTOM_LEFT_FR___,
- ___ERGODOX_THUMB_LEFT_BP___,
-
-
- // right hand
- ___, ___FUNC_R___, ___,
- ___, ___DVORAK_FR_R1___, ___,
- /**/ ___DVORAK_FR_R2___, ___,
- ___, ___DVORAK_FR_R3___, ___,
-
- ___BOTTOM_RIGHT_FR___,
- ___ERGODOX_THUMB_RIGHT_BP___
- ),
-
- // SYMBOLS
- [SYMB] = LAYOUT_ergodox_wrapper(
- // left hand
- ___FUNC_1_6___, ___,
- ___SYMBOLS6_1___, ___,
- ___SYMBOLS6_2___,
- ___SYMBOLS6_3___, ___,
- ___SYMBOLS5_4___,
- ___6___,
-
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, ___SYMPAD_1___,
- /**/ ___SYMPAD_2___,
- ___, ___SYMPAD_3___,
- /**/ ___5_SYMPAD_4___,
- ___6___
- ),
-
- [SYMB_ON_BEPO] = LAYOUT_ergodox_wrapper(
- // left hand
- ___FUNC_1_6___, ___,
- ___SYMBOLS6_1_BP___, ___,
- ___SYMBOLS6_2_BP___,
- ___SYMBOLS6_3_BP___, ___,
- ___SYMBOLS5_4_BP___,
- ___6___,
-
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, ___SYMPAD_1_BP___,
- /**/ ___SYMPAD_2_BP___,
- ___, ___SYMPAD_3_BP___,
- /**/ ___5_SYMPAD_4_BP___,
- ___6___
- ),
-
- [KEYPAD] = LAYOUT_ergodox_wrapper(
- ___FUNC_1_6___, ___,
- ___2___, ___FUNCPAD_T___, ___, ___,
- ___2___, ___FUNCPAD_1___, ___,
- ___2___, ___FUNCPAD_2___, ___, ___,
- ___2___, ___FUNCPAD_3___,
- ___6___,
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, ___, ___KEYPAD_1___, ___,
- /**/ ___, ___KEYPAD_2___, ___,
- ___, ___, ___KEYPAD_3___, ___,
- /* */ ___KEYPAD_4___, ___,
- ___6___
- ),
-
- [KEYPAD_ON_BEPO] = LAYOUT_ergodox_wrapper(
- ___FUNC_1_6___, ___,
- ___2___, ___FUNCPAD_T___, ___, ___,
- ___2___, ___FUNCPAD_1___, ___,
- ___2___, ___FUNCPAD_2___, ___, ___,
- ___2___, ___FUNCPAD_3___,
- ___6___,
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, ___, ___KEYPAD_1_BP___, ___,
- /**/ ___, ___KEYPAD_2_BP___, ___,
- ___, ___, ___KEYPAD_3_BP___, ___,
- /* */ ___KEYPAD_4_BP___, ___,
- ___6___
- ),
-
- // MEDIA AND MOUSE
- [MDIA] = LAYOUT_ergodox_wrapper(
- // left hand
- ___FUNC_1_6___, ___,
- ___MOUSE_BTNS_L___, ___, ___,
- ___, ___MOUSE_LDUR___, ___,
- ___, ___MWHEEL_LDUR___, XXX, ___,
- ___, ___, ___MOUSE_ACCL_012___,
- ___6___,
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___,
- /**/ KC_VOLD, ___VI_ARROWS___, ___,
- ___, ___, ___MOUSE_BTNS_R___,
- /* */ KC_PGDN, KC_PGUP, ___3___,
- ___6___
- ),
-
- [LAYERS] = LAYOUT_ergodox_wrapper(
- // left hand
- ___FUNC_1_6___, ___,
- XXX, XXX, XXX, ___2_LAYERS_B1___, XXX, ___,
- XXX, XXX, XXX, ___2_LAYERS_B2___, XXX,
- XXX, XXX, ___3_LAYERS_B3___, XXX, ___,
- ___5___,
- ___6___,
-
- // right hand
- ___, ___FUNC_7_12___,
- ___, XXX, ___3_LAYERS_T_BP___, ___2___,
- /**/ XXX, ___3_LAYERS_T___, ___2___,
- ___, XXX, ___3_LAYERS_T_CTL___, ___2___,
- ___5___,
- ___6___
- ),
+ [_NAV] = Dox_transient(___12___, ___NAV_3x12___),
+ [_LAYERS] = Dox_transient(___12___, ___LAYERS_3x12___),
+ [_RGB] = Dox_transient(___12___, ___RGB_3x12___),
};
-
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
-
- uint8_t layer = biton32(layer_state);
-
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
- if(!on_qwerty())
- ergodox_right_led_1_on();
- switch (layer) {
- //case DVORAK:
- //ergodox_right_led_1_off();
- //break;
- // first led on for a bepo software keyboard layer
- case DVORAK_ON_BEPO:
- ergodox_right_led_2_on();
- break;
- case BEPO:
- ergodox_right_led_1_on();
- ergodox_right_led_1_off();
- ergodox_right_led_1_on();
- ergodox_right_led_1_off();
- ergodox_right_led_1_on();
- break;
- case SYMB:
- ergodox_right_led_3_on();
- break;
- case MDIA:
- ergodox_right_led_3_on();
- break;
- case LAYERS:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- ergodox_right_led_3_on();
- break;
- default:
- ergodox_board_led_off();
- break;
-
- /* default: */
- /* // none */
- /* break; */
-
- }
-}
-
-
-/*
- clear_oneshot_mods();
- set_oneshot_locked_mods(mods);
- register_mods(mods);
-
- register_code(action.key.code);
- unregister_code(action.key.code);
-
- layer_on(action.layer_tap.val);
- layer_off(action.layer_tap.val);
-
- clear_oneshot_locked_mods();
- clear_oneshot_mods();
- unregister_mods(mods);
-
-*/
diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h b/keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h
new file mode 100644
index 0000000000..dd8f193dfc
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h
@@ -0,0 +1,139 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/********************************************************************/
+/* Ergodox EZ */
+/********************************************************************/
+// This one is is set up to pass in the number row.
+// Beakl and bepo both change the number row.
+// Left, middle, right, bottom, and thumbs all stay the same.
+#define Base_dox( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A \
+ ) \
+ LVARG_edox( \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ___2_MIDDLE_1___, \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ___2_MIDDLE_2___, \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ___2_MIDDLE_3___, \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___5_BOTTOM_LEFT___, ___5_BOTTOM_RIGHT___, \
+ ___12_DOX_ALL_THUMBS___ \
+ )
+
+#define Base_dox_bepo( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A \
+ ) \
+ LVARG_edox( \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ___2_MIDDLE_1___, \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ___2_MIDDLE_2___, \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ___2_MIDDLE_3___, \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___5_BOTTOM_LEFT___, ___5_BOTTOM_RIGHT___, \
+ ___12_DOX_ALL_THUMBS_BP___ \
+ )
+
+
+#define Base_dox_bepo6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_edox( \
+ ___6SYMBOL_BEPO_L___, \
+ ___2_MIDDLE_T_BP___, \
+ ___6SYMBOL_BEPO_R___, \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ___2_MIDDLE_2_BP___, \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ___2_MIDDLE_3_BP___, \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ \
+ ___5_BOTTOM_LEFT_BP___, ___5_BOTTOM_RIGHT_BP___, \
+ ___12_DOX_ALL_THUMBS_BP___ \
+ )
+
+#define Transient_dox6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ K37, K38, K39, K3A, K3B, K3C \
+ ) \
+ LVARG_edox( \
+ K01, K02, K03, K04, K05, K06, \
+ ___2___, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ ___2___, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ ___2___, \
+ K37, K38, K39, K3A, K3B, K3C, \
+ ___5___, ___5___, \
+ ___12___ \
+ )
+
+#define Dox_base(...) Base_dox(__VA_ARGS__)
+#define Dox_bepo_base(...) Base_dox_bepo(__VA_ARGS__)
+#define Dox_bepo_base6(...) Base_dox_bepo6(__VA_ARGS__)
+#define Dox_transient(...) Transient_dox6(__VA_ARGS__)
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
index fcc7c11be7..9a0d0e54f7 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
@@ -19,5 +19,3 @@
// place overrides here
#define USB_POLLING_INTERVAL_MS 1
#define FORCE_NKRO
-#undef DEBOUNCE
-#define DEBOUNCE 5
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
index 27524b1782..56c1ff28a7 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
@@ -24,19 +24,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | ESC | A | S | D | F | G | | | | H | J | K | L | ; | ' |
+ * | ESC | A | S | D | F | G | Del | | | H | J | K | L | ; | ' |
* |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
* | Shift | Z | X | C | V | B | | N | M | , | . | / | Shift |
* |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | Ctrl | Super | Alt | TT(3) | MO(2) | | MO(2) | Left | Down | Up | Right |
+ * | Ctrl | Super | Alt | MO(4) | MO(3) | | MO(3) | Left | Down | Up | Right |
* *-------------------------------------------------* *-------------------------------------------------*
*
* *-------------------* *-------------------*
- * | | TG(1) | | | |
+ * | MO(2) | | | | |
* *---------+---------+---------| |---------+---------+---------*
* | | | | | | | |
* | Bckspc | Enter |---------| |---------| Enter | Space |
- * | | | PgDn | | PgUp | | |
+ * | | | Space | | | | |
* *---------+---------+---------* *---------+---------+---------*
*/
@@ -44,14 +44,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, TT(3), MO(2), MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(4), MO(3), MO(3), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
- KC_NO, TG(1), KC_NO, KC_NO,
+ MO(2), KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
- KC_BSPC, KC_ENT, KC_PGDN, KC_PGUP, KC_ENT, KC_SPC
+ KC_BSPC, KC_ENT, KC_SPC, KC_NO, KC_ENT, KC_SPC
),
+
+
/* Gaming Layer
* *---------------------------------------------------------------------* *---------------------------------------------------------------------*
* | | | | | | | 6 | | | | | | | | |
@@ -86,15 +88,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SPC, _______, _______, _______, _______, _______
),
- /* Function Keys Layer
+
+
+ /* Left Hand Layer
* *---------------------------------------------------------------------* *---------------------------------------------------------------------*
- * | | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
+ * | | 6 | 7 | 8 | 9 | 0 | = | | | | | | | | |
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | | Up | | | | | | | | | | | | |
+ * | \ | Y | U | I | O | P | ] | | | | | | | | |
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | Left | Down | Right | | | | | | Left | Down | Up | Right | | |
+ * | ' | H | J | K | L | ; | | | | | | | | | |
* |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | |
+ * | | N | M | , | . | / | | | | | | | |
* |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
* | | | | | | | | | | | |
* *-------------------------------------------------* *-------------------------------------------------*
@@ -109,10 +113,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
LAYOUT_ergodox_pretty(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______, _______, _______, _______, _______, _______, _______,
+ KC_BSLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, _______, _______, _______, _______, _______, _______, _______,
+ KC_QUOT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, _______, _______, _______, _______, _______, _______,
+ _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______,
@@ -120,15 +124,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______
),
- /* CAD Layer
+
+
+ /* Function Keys Layer
* *---------------------------------------------------------------------* *---------------------------------------------------------------------*
- * | Del | 0 | 9 | 8 | 7 | 6 | = | | | | | | | | |
+ * | NumLock | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | \ | P | O | I | U | Y | ] | | | | | | | | |
+ * | | + | 7 | 8 | 9 | * | | | | | | | | | |
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | ' | ; | L | K | J | H | | | | | | | | | |
+ * | | - | 4 | 5 | 6 | / | | | | Left | Down | Up | Right | | |
* |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | / | . | , | M | N | | | | | | | |
+ * | | 0 | 1 | 2 | 3 | . | | | | | | | |
* |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
* | | | | | | | | | | | |
* *-------------------------------------------------* *-------------------------------------------------*
@@ -137,21 +143,57 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | |
* *---------+---------+---------| |---------+---------+---------*
* | | | | | | | |
- * | Space | |---------| |---------| | |
- * | | | PgUp | | | | |
+ * | | Enter |---------| |---------| | |
+ * | | | PgUp | | PgDn | | |
+ * *---------+---------+---------* *---------+---------+---------*
+ */
+
+ LAYOUT_ergodox_pretty(
+ KC_NUM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PAST, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_PSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, KC_PENT, KC_PGUP, KC_PGDN, _______, _______
+ ),
+
+
+
+ /* Layers Layer
+ * *---------------------------------------------------------------------* *---------------------------------------------------------------------*
+ * | | TO(0) | TO(1) | | | | | | | | | | | | |
+ * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ * | | | | | | | | | | | | | | | |
+ * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
+ * | | | | | | | | | | | | | | | |
+ * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
+ * | | | | | | | | | | | | | |
+ * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
+ * | | | | | | | | | | | |
+ * *-------------------------------------------------* *-------------------------------------------------*
+ *
+ * *-------------------* *-------------------*
+ * | | | | | |
+ * *---------+---------+---------| |---------+---------+---------*
+ * | | | | | | | |
+ * | | |---------| |---------| | |
+ * | | | | | | | |
* *---------+---------+---------* *---------+---------+---------*
*/
LAYOUT_ergodox_pretty(
- KC_DEL, KC_0, KC_9, KC_8, KC_7, KC_6, KC_EQL, _______, _______, _______, _______, _______, _______, _______,
- KC_BSLS, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_RBRC, _______, _______, _______, _______, _______, _______, _______,
- KC_QUOT, KC_SCLN, KC_L, KC_K, KC_J, KC_H, _______, _______, _______, _______, _______, _______,
- _______, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, TO(0), TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______,
- KC_SPC, _______, KC_PGUP, _______, _______, _______
+ _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
index 6bda1f2fc5..daa581062c 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
@@ -1,19 +1,20 @@
-![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/v0kRHX5.png)
+![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/BlH0ZdE.png)
# IFo Hancroft's ErgoDox EZ Layout
-- Layer 0: A Standard ANSI QWERTY Layer.
-- Layer 1: A Gaming Layer. It replaces the Backspace with a Space, and the Dash with a 6, so you can play CS:GO without needing to lift your right hand from the mouse.
-- Layer 2: A function layer. It contains the F1-F12 keys and arrows on WASD.
-- Layer 3: A CAD Layer. It is basically a mirrored version of the right hand side, so you can use CAD without needing to lift your right hand from the the mouse.
+- Layer 0: A Standard ANSI QWERTY Layer. It adds some additional keys from the right half in-order to avoid having to lift your right hand of the mouse.
+- Layer 1: A Gaming Layer. It replaces the Backspace with a Space, and the Dash with a 6, so you can play CS:GO without needing to lift your right hand of the mouse.
+- Layer 2: A Left Hand Layer. It is basically a left hand version of the right half, so you can have access to a full-sized keyboard without needing to lift your right hand from the the mouse.
+- Layer 3: A Function Layer. It contains the F1-F12 keys, PgUp, PgDn, Numpad, and arrows on HJKL.
+- Layer 4: A Layer Switching Layer. The keys in this layer turn on a specific layer while disabling the rest. Basically, you come here to switch between the QWERTY and Gaming layers.
+
This keymap also does the following:
- Sets the polling rate of the keyboard to 1ms
-- Sets the debounce time to 5ms
-- NKRO (Forced on)
+- Forces NKRO on
+- Enables:
+ - Command
- Disables:
- Mouse Key
- Extra Key
- - Unicode
- - Swap Hands
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
index bf0efc77e5..775ecbd12b 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
@@ -1,4 +1,3 @@
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
-UNICODE_ENABLE = no
-SWAP_HANDS_ENABLE = no
+COMMAND_ENABLE = yes
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c
index c091b6eb97..e84a5e2bd3 100644
--- a/keyboards/ergodox_ez/matrix.c
+++ b/keyboards/ergodox_ez/matrix.c
@@ -70,7 +70,7 @@ void matrix_init_custom(void) {
// Reads and stores a row, returning
// whether a change occurred.
static inline bool store_raw_matrix_row(uint8_t index) {
- matrix_row_t temp = read_cols(index);
+ matrix_row_t temp = 0x3F & read_cols(index);
if (raw_matrix[index] != temp) {
raw_matrix[index] = temp;
return true;
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
index 25e51ae4e5..1b4ace5ee5 100644
--- a/keyboards/ergodox_ez/rules.mk
+++ b/keyboards/ergodox_ez/rules.mk
@@ -10,18 +10,17 @@ BOOTLOADER = halfkay
# OPT_DEFS += -DLEFT_LEDS
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
+COMMAND_ENABLE = no # Commands for debug and configuration
CUSTOM_MATRIX = lite # Custom matrix file for the ErgoDox EZ
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-UNICODE_ENABLE = yes # Unicode
-SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard
-SLEEP_LED_ENABLE = no
+NKRO_ENABLE = yes # Enable N-Key Rollover
+UNICODE_ENABLE = no # Unicode
+SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard
RGB_MATRIX_ENABLE = no # enable later
RGB_MATRIX_DRIVER = IS31FL3731
@@ -37,3 +36,5 @@ LAYOUTS = ergodox
# Disable unsupported hardware
AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
+
+MOUSE_SHARED_EP = no
diff --git a/keyboards/ergodox_infinity/rules.mk b/keyboards/ergodox_infinity/rules.mk
index b6922e1ee6..c35f54de30 100644
--- a/keyboards/ergodox_infinity/rules.mk
+++ b/keyboards/ergodox_infinity/rules.mk
@@ -12,17 +12,17 @@ BOOTLOADER = kiibohd
BOARD = IC_TEENSY_3_1
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
UNICODE_ENABLE = yes # Unicode
SWAP_HANDS_ENABLE= yes # Allow swapping hands of keyboard
+SLEEP_LED_ENABLE = yes
RGBLIGHT_ENABLE = no
diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk
index b3fba38517..3a035cee01 100644
--- a/keyboards/ergodox_stm32/rules.mk
+++ b/keyboards/ergodox_stm32/rules.mk
@@ -12,10 +12,8 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
CUSTOM_MATRIX = yes # Custom matrix file
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
UNICODE_ENABLE = yes # Unicode
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/ergosaurus/rules.mk b/keyboards/ergosaurus/rules.mk
index 07a7efce74..a00db322a6 100644
--- a/keyboards/ergosaurus/rules.mk
+++ b/keyboards/ergosaurus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ergoslab/rules.mk b/keyboards/ergoslab/rules.mk
index 2be04af745..57c06b8c11 100644
--- a/keyboards/ergoslab/rules.mk
+++ b/keyboards/ergoslab/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/ergotravel/keymaps/default/keymap.c b/keyboards/ergotravel/keymaps/default/keymap.c
index 71971d391b..728519d277 100644
--- a/keyboards/ergotravel/keymaps/default/keymap.c
+++ b/keyboards/ergotravel/keymaps/default/keymap.c
@@ -31,19 +31,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_HOME, KC_PGUP, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_END , KC_PGDN, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_BSPC, KC_BSPC, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE, \
- _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_HOME, KC_PGUP, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_END , KC_PGDN, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_BSPC, KC_BSPC, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE,
+ _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_RAISE] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_4, KC_5, KC_6, KC_PLUS, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, \
- KC_ENT, KC_7, KC_8, KC_9, KC_MINS, _______, _______, _______, _______, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, \
- _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_4, KC_5, KC_6, KC_PLUS, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ KC_ENT, KC_7, KC_8, KC_9, KC_MINS, _______, _______, _______, _______, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
+ _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
diff --git a/keyboards/ergotravel/rules.mk b/keyboards/ergotravel/rules.mk
index f7eb590b9f..aab244a217 100644
--- a/keyboards/ergotravel/rules.mk
+++ b/keyboards/ergotravel/rules.mk
@@ -1,18 +1,15 @@
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/ericrlau/numdiscipline/rev1/rules.mk b/keyboards/ericrlau/numdiscipline/rev1/rules.mk
index c1b6074978..9493018f5c 100644
--- a/keyboards/ericrlau/numdiscipline/rev1/rules.mk
+++ b/keyboards/ericrlau/numdiscipline/rev1/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/esca/getawayvan/rules.mk b/keyboards/esca/getawayvan/rules.mk
index a7596be365..0200ce9dae 100644
--- a/keyboards/esca/getawayvan/rules.mk
+++ b/keyboards/esca/getawayvan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/esca/getawayvan_f042/rules.mk b/keyboards/esca/getawayvan_f042/rules.mk
index bf874f71ac..575ffbdd01 100644
--- a/keyboards/esca/getawayvan_f042/rules.mk
+++ b/keyboards/esca/getawayvan_f042/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/espectro/keymaps/default/keymap.c b/keyboards/espectro/keymaps/default/keymap.c
index b78fdbcac1..3b23fee190 100755
--- a/keyboards/espectro/keymaps/default/keymap.c
+++ b/keyboards/espectro/keymaps/default/keymap.c
@@ -45,12 +45,12 @@ ________________________________________________________________________________
*/
[_BL] = LAYOUT_default(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* FN_1
@@ -76,12 +76,12 @@ ________________________________________________________________________________
*/
[_FN1] = LAYOUT_default(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
- _______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/espectro/keymaps/iso/keymap.c b/keyboards/espectro/keymaps/iso/keymap.c
index a9625e4d96..b001f9417d 100755
--- a/keyboards/espectro/keymaps/iso/keymap.c
+++ b/keyboards/espectro/keymaps/iso/keymap.c
@@ -45,12 +45,12 @@ ________________________________________________________________________________
*/
[_BL] = LAYOUT_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* FN_1
@@ -76,12 +76,12 @@ ________________________________________________________________________________
*/
[_FN1] = LAYOUT_iso(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, \
- _______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END,
+ _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/espectro/rules.mk b/keyboards/espectro/rules.mk
index 42b4288ff1..ad15c847bd 100755
--- a/keyboards/espectro/rules.mk
+++ b/keyboards/espectro/rules.mk
@@ -5,15 +5,15 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
+SLEEP_LED_ENABLE = yes
diff --git a/keyboards/eternal_keypad/config.h b/keyboards/eternal_keypad/config.h
new file mode 100644
index 0000000000..fbcdb45021
--- /dev/null
+++ b/keyboards/eternal_keypad/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 duckyb
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xDB00
+#define DEVICE_VER 0x0001
+#define MANUFACTURER duckyb
+#define PRODUCT eternal_keypad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6 }
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 1
diff --git a/keyboards/eternal_keypad/eternal_keypad.c b/keyboards/eternal_keypad/eternal_keypad.c
new file mode 100644
index 0000000000..abaa94a288
--- /dev/null
+++ b/keyboards/eternal_keypad/eternal_keypad.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "eternal_keypad.h"
diff --git a/keyboards/eternal_keypad/eternal_keypad.h b/keyboards/eternal_keypad/eternal_keypad.h
new file mode 100644
index 0000000000..45afff5a01
--- /dev/null
+++ b/keyboards/eternal_keypad/eternal_keypad.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k01, k02, k03, k04, k05, k06, k07, \
+ k11, k12, k13, k14, k15, k16, k17, \
+ k20, k21, k22, k23, k24, k25, k26, k27, \
+ k30, k31, k32, k33, k34, k35, k36, k37, \
+ k40, k41, k42, k43, k45, k47 \
+) { \
+ { KC_NO, k01, k02, k03, k04, k05, k06, k07 }, \
+ { KC_NO, k11, k12, k13, k14, k15, k16, k17 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, KC_NO, k45, KC_NO, k47 } \
+}
diff --git a/keyboards/eternal_keypad/info.json b/keyboards/eternal_keypad/info.json
new file mode 100644
index 0000000000..2bdf9624ce
--- /dev/null
+++ b/keyboards/eternal_keypad/info.json
@@ -0,0 +1,47 @@
+{
+ "keyboard_name": "eternal_keypad",
+ "url": "https://github.com/duckyb/eternal-keypad",
+ "maintainer": "duckyb",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k01", "x": 1.5, "y": 0, "w": 1.25},
+ {"label": "k02", "x": 2.75, "y": 0},
+ {"label": "k03", "x": 3.75, "y": 0},
+ {"label": "k04", "x": 4.75, "y": 0},
+ {"label": "k05", "x": 5.75, "y": 0},
+ {"label": "k06", "x": 6.75, "y": 0},
+ {"label": "k07", "x": 7.75, "y": 0},
+ {"label": "k11", "x": 1.5, "y": 1, "w": 1.25},
+ {"label": "k12", "x": 2.75, "y": 1},
+ {"label": "k13", "x": 3.75, "y": 1},
+ {"label": "k14", "x": 4.75, "y": 1},
+ {"label": "k15", "x": 5.75, "y": 1},
+ {"label": "k16", "x": 6.75, "y": 1},
+ {"label": "k17", "x": 7.75, "y": 1},
+ {"label": "k20", "x": 0, "y": 2},
+ {"label": "k21", "x": 1.5, "y": 2, "w": 1.25},
+ {"label": "k22", "x": 2.75, "y": 2},
+ {"label": "k23", "x": 3.75, "y": 2},
+ {"label": "k24", "x": 4.75, "y": 2},
+ {"label": "k25", "x": 5.75, "y": 2},
+ {"label": "k26", "x": 6.75, "y": 2},
+ {"label": "k27", "x": 7.75, "y": 2},
+ {"label": "k30", "x": 0, "y": 3},
+ {"label": "k31", "x": 1.5, "y": 3, "w": 1.25},
+ {"label": "k32", "x": 2.75, "y": 3},
+ {"label": "k33", "x": 3.75, "y": 3},
+ {"label": "k34", "x": 4.75, "y": 3},
+ {"label": "k35", "x": 5.75, "y": 3},
+ {"label": "k36", "x": 6.75, "y": 3},
+ {"label": "k37", "x": 7.75, "y": 3},
+ {"label": "k40", "x": 0, "y": 4},
+ {"label": "k41", "x": 1.5, "y": 4, "w": 1.25},
+ {"label": "k42", "x": 2.75, "y": 4, "w": 1.25},
+ {"label": "k43", "x": 4, "y": 4},
+ {"label": "k45", "x": 5, "y": 4, "w": 2.75},
+ {"label": "k47", "x": 7.75, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/eternal_keypad/keymaps/default/config.h b/keyboards/eternal_keypad/keymaps/default/config.h
new file mode 100644
index 0000000000..36ab46334c
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define ONESHOT_TIMEOUT 2000
+#define FORCE_NKRO
diff --git a/keyboards/eternal_keypad/keymaps/default/keymap.c b/keyboards/eternal_keypad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dc2f60319f
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/default/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _ARROW,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base Layer
+ * ,-------------------------------------.
+ * | | Esc | 1| 2| 3| 4| 5| 6|
+ * | |-------+---+---+---+---+---+---|
+ * | | Tab | Q| W| E| R| T| 7|
+ * |----||-------+---+---+---+---+---+---|
+ * | F13|| Enter | A| S| D| F| G| 8|
+ * |----||-------+---+---+---+---+---+---|
+ * | F14|| Shift | Z| X| C| V| B| 9|
+ * |----||-------------------------------|
+ * | F15|| LCtrl | _FN |Alt| Space | 0|
+ * `----'`-------------------------------'
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7,
+ KC_F13, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_8,
+ KC_F14, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_9,
+ KC_F15, KC_LCTL, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
+ ),
+ /* Arrows Layer
+ * ,-----------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+---+---+---|
+ * | | | | UP| | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || |LEFT|DOWN|RIGHT| | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-----------------------------------|
+ * | RST|| | | | | |
+ * `----'`-----------------------------------'
+ */
+ [_ARROW] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______
+ ),
+ /* Function Layer
+ * ,-------------------------------------.
+ * | | | F1| F2| F3| F4| F5| F6|
+ * | |-------+---+---+---+---+---+---|
+ * | | | P| O| I| U| Y| F7|
+ * |----||-------+---+---+---+---+---+---|
+ * | || Bspc | ;| L| K| J| H| F8|
+ * |----||-------+---+---+---+---+---+---|
+ * | || |Gui| M| N|F12|F11| F9|
+ * |----||-------------------------------|
+ * | || | | | |F10|
+ * `----'`-------------------------------'
+ */
+ [_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_F7,
+ _______, KC_BSPC, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_F8,
+ _______, _______, KC_LGUI, KC_M, KC_N, KC_F12, KC_F11, KC_F9,
+ _______, _______, _______, _______, _______, KC_F10
+ )
+};
diff --git a/keyboards/eternal_keypad/keymaps/default/readme.md b/keyboards/eternal_keypad/keymaps/default/readme.md
new file mode 100644
index 0000000000..aaf3872888
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for eternal_keypad
diff --git a/keyboards/eternal_keypad/keymaps/kyek/config.h b/keyboards/eternal_keypad/keymaps/kyek/config.h
new file mode 100644
index 0000000000..226b16e546
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/kyek/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define ONESHOT_TIMEOUT 2000
+#define FORCE_NKRO
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/eternal_keypad/keymaps/kyek/keymap.c b/keyboards/eternal_keypad/keymaps/kyek/keymap.c
new file mode 100644
index 0000000000..592e73bc74
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/kyek/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _ARROW,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base Layer
+ * ,-------------------------------------.
+ * | | Esc | 1| 2| 3| 4| 5| 6|
+ * | |-------+---+---+---+---+---+---|
+ * | | Tab | Q| W| E| R| T| 7|
+ * |----||-------+---+---+---+---+---+---|
+ * | F13|| Enter | A| S| D| F| G| 8|
+ * |----||-------+---+---+---+---+---+---|
+ * | F14|| Shift | Z| X| C| V| B| 9|
+ * |----||-------------------------------|
+ * | F15|| LCtrl | _FN |Alt| Space | 0|
+ * `----'`-------------------------------'
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7,
+ KC_F13, KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_8,
+ KC_F14, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_9,
+ KC_LGUI, KC_LCTL, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
+ ),
+ /* Arrows Layer
+ * ,-----------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+---+---+---|
+ * | | | | UP| | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || |LEFT|DOWN|RIGHT| | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-----------------------------------|
+ * | RST|| | | | | |
+ * `----'`-----------------------------------'
+ */
+ [_ARROW] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______,
+ _______, KC_DEL , KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______
+ ),
+ /* Function Layer
+ * ,-------------------------------------.
+ * | | | F1| F2| F3| F4| F5| F6|
+ * | |-------+---+---+---+---+---+---|
+ * | | | P| O| I| U| Y| F7|
+ * |----||-------+---+---+---+---+---+---|
+ * | || Bspc | ;| L| K| J| H| F8|
+ * |----||-------+---+---+---+---+---+---|
+ * | || |Gui| M| N|F12|F11| F9|
+ * |----||-------------------------------|
+ * | || | | | |F10|
+ * `----'`-------------------------------'
+ */
+ [_FN] = LAYOUT(
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6,
+ _______, KC_P , KC_O , KC_I , KC_U , KC_Y , KC_F7,
+ _______, KC_BSPC, KC_SCLN, KC_L , KC_K , KC_J , KC_H , KC_F8,
+ _______, _______, _______, KC_M , KC_N , KC_F12, KC_F11, KC_F9,
+ _______, _______, _______, _______, _______, KC_F10
+ )
+};
diff --git a/keyboards/eternal_keypad/keymaps/kyek/readme.md b/keyboards/eternal_keypad/keymaps/kyek/readme.md
new file mode 100644
index 0000000000..d4c6162b0f
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/kyek/readme.md
@@ -0,0 +1 @@
+# Kyek's personal keymap for eternal_keypad
diff --git a/keyboards/eternal_keypad/keymaps/lefty/config.h b/keyboards/eternal_keypad/keymaps/lefty/config.h
new file mode 100644
index 0000000000..36ab46334c
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/lefty/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define ONESHOT_TIMEOUT 2000
+#define FORCE_NKRO
diff --git a/keyboards/eternal_keypad/keymaps/lefty/keymap.c b/keyboards/eternal_keypad/keymaps/lefty/keymap.c
new file mode 100644
index 0000000000..886ac25ccd
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/lefty/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _ARROW,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base Layer
+ * ,-------------------------------------.
+ * | | Esc | 1| 2| 3| 4| 5| 6|
+ * | |-------+---+---+---+---+---+---|
+ * | | Tab | Q| W| E| R| T| 7|
+ * |----||-------+---+---+---+---+---+---|
+ * | F13|| Enter | D| S| A| F| G| 8|
+ * |----||-------+---+---+---+---+---+---|
+ * | F14|| Shift | Z| X| C| V| B| 9|
+ * |----||-------------------------------|
+ * | F15|| LCtrl | _FN |Alt| Space | 0|
+ * `----'`-------------------------------'
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7,
+ KC_F13, KC_ENT, KC_D, KC_S, KC_A, KC_F, KC_G, KC_8,
+ KC_F14, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_9,
+ KC_F15, KC_LCTL, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
+ ),
+ /* Arrows Layer
+ * ,-----------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+---+---+---|
+ * | | | | UP| | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || |RIGHT|DOWN|LEFT| | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-----------------------------------|
+ * | RST|| | | | | |
+ * `----'`-----------------------------------'
+ */
+ [_ARROW] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______,
+ _______, _______, KC_RIGHT,KC_DOWN, KC_LEFT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______
+ ),
+ /* Function Layer
+ * ,-------------------------------------.
+ * | | | F1| F2| F3| F4| F5| F6|
+ * | |-------+---+---+---+---+---+---|
+ * | | | P| O| I| U| Y| F7|
+ * |----||-------+---+---+---+---+---+---|
+ * | || Bspc | ;| L| K| J| H| F8|
+ * |----||-------+---+---+---+---+---+---|
+ * | || |Gui| M| N|F12|F11| F9|
+ * |----||-------------------------------|
+ * | || | | | |F10|
+ * `----'`-------------------------------'
+ */
+ [_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_F7,
+ _______, KC_BSPC, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_F8,
+ _______, _______, KC_LGUI, KC_M, KC_N, KC_F12, KC_F11, KC_F9,
+ _______, _______, _______, _______, _______, KC_F10
+ )
+};
diff --git a/keyboards/eternal_keypad/keymaps/via/keymap.c b/keyboards/eternal_keypad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..725cc12240
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/via/keymap.c
@@ -0,0 +1,107 @@
+/* Copyright 2021 duckyb
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE = 0,
+ _ARROW,
+ _FN,
+ _ADJUST
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base Layer
+ * ,-------------------------------------.
+ * | | Esc | 1| 2| 3| 4| 5| 6|
+ * | |-------+---+---+---+---+---+---|
+ * | | Tab | Q| W| E| R| T| 7|
+ * |----||-------+---+---+---+---+---+---|
+ * | F13|| LCtrl | A| S| D| F| G| 8|
+ * |----||-------+---+---+---+---+---+---|
+ * | F14|| Shif | Z| X| C| V| B| 9|
+ * |----||-------------------------------|
+ * | F15|| AltTab| _FN |Alt| Space | 0|
+ * `----'`-------------------------------'
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7,
+ KC_F13, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_8,
+ KC_F14, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_9,
+ KC_F15, KC_ENT, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
+ ),
+ /* Arrows Layer
+ * ,-----------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+---+---+---|
+ * | | | | UP| | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || |LEFT|DOWN|RIGHT| | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-----------------------------------|
+ * | RST|| | | | | |
+ * `----'`-----------------------------------'
+ */
+ [_ARROW] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______,
+ _______, _______, KC_LEFT,KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, MO(_ADJUST), _______, _______, _______
+ ),
+ /* Function Layer
+ * ,-------------------------------------.
+ * | | | F1| F2| F3| F4| F5| F6|
+ * | |-------+---+---+---+---+---+---|
+ * | | | P| O| I| U| Y| F7|
+ * |----||-------+---+---+---+---+---+---|
+ * | || Bspc | ;| L| K| J| H| F8|
+ * |----||-------+---+---+---+---+---+---|
+ * | || |Gui| M| N|F12|F11| F9|
+ * |----||-------------------------------|
+ * | || | | | |F10|
+ * `----'`-------------------------------'
+ */
+ [_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_F7,
+ _______, KC_BSPC, KC_SCLN, KC_L, KC_K, KC_J, KC_H, KC_F8,
+ _______, _______, KC_LGUI, KC_M, KC_N, KC_F12, KC_F11, KC_F9,
+ _______, _______, _______, _______, _______, KC_F10
+ ),
+
+ /* Adjust Layer
+ * ,-----------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+---+---+---|
+ * | | | | | | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-------+----+----+-----+---+---+---|
+ * | || | | | | | | |
+ * |----||-----------------------------------|
+ * | RST|| | | | | |
+ * `----'`-----------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/eternal_keypad/keymaps/via/rules.mk b/keyboards/eternal_keypad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/eternal_keypad/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/eternal_keypad/readme.md b/keyboards/eternal_keypad/readme.md
new file mode 100644
index 0000000000..196f51b31d
--- /dev/null
+++ b/keyboards/eternal_keypad/readme.md
@@ -0,0 +1,27 @@
+# eternal_keypad
+
+![eternal_keypad](https://i.imgur.com/BAzc343.png)
+
+A 36 key gaming keypad that can be assembled and configured for both left and right handed mouse users.
+
+* Keyboard Maintainer: [duckyb](https://github.com/duckyb)
+* Hardware Supported: ETERNAL Keypad
+* Hardware Availability: Open Source, files available on [gitHub](https://github.com/duckyb/eternal-keypad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make eternal_keypad:default
+
+Flashing example for this keyboard:
+
+ make eternal_keypad:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (the top left key or Escape) and plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (activated by holding the lower right key and tapping the lower left key)
+* **Physical reset button**: Briefly sort the pads labeled "RST" and "GND" on the micro-controller
diff --git a/keyboards/eternal_keypad/rules.mk b/keyboards/eternal_keypad/rules.mk
new file mode 100644
index 0000000000..ef9b9d80de
--- /dev/null
+++ b/keyboards/eternal_keypad/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evancookaudio/sleepingdinosaur/config.h b/keyboards/evancookaudio/sleepingdinosaur/config.h
new file mode 100644
index 0000000000..4412e9eb60
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/config.h
@@ -0,0 +1,44 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x636F
+#define PRODUCT_ID 0x0002
+#define DEVICE_VER 0x0000
+#define MANUFACTURER evancook.audio
+#define PRODUCT sleepingdinosaur
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/* key matrix pins */
+
+#define MATRIX_ROW_PINS {D0, D1, D4, C6, D7}
+#define MATRIX_COL_PINS {F4, F5, F6, F7, B1, B3}
+
+#define UNUSED_PINS {B2, B6, B7, D5, C7, F1, F0, B4, E6}
+
diff --git a/keyboards/evancookaudio/sleepingdinosaur/info.json b/keyboards/evancookaudio/sleepingdinosaur/info.json
new file mode 100644
index 0000000000..2c21777d49
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/info.json
@@ -0,0 +1,44 @@
+{
+ "keyboard_name": "evancook.audio sleepingdinosaur",
+ "url": "https://evancook.audio/",
+ "maintainer": "evanmcook",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"1", "x":0, "y":0},
+ {"label":"2", "x":1, "y":0},
+ {"label":"3", "x":2, "y":0},
+ {"label":"4", "x":3, "y":0},
+ {"label":"5", "x":4, "y":0},
+ {"label":"-", "x":5, "y":0},
+
+ {"label":"6", "x":0, "y":1},
+ {"label":"7", "x":1, "y":1},
+ {"label":"8", "x":2, "y":1},
+ {"label":"9", "x":3, "y":1},
+ {"label":"0", "x":4, "y":1},
+ {"label":"R", "x":5, "y":1},
+
+ {"label":"/", "x":0, "y":2},
+ {"label":"Q", "x":1, "y":2},
+ {"label":"W", "x":2, "y":2},
+ {"label":"E", "x":3, "y":2},
+ {"label":"U", "x":4, "y":2},
+ {"label":"V", "x":5, "y":2},
+
+ {"label":"Enter", "x":0, "y":3, "h":2},
+ {"label":"A", "x":1, "y":3},
+ {"label":"S", "x":2, "y":3},
+ {"label":"D", "x":3, "y":3},
+ {"label":"Space", "x":4, "y":3, "h":2},
+ {"label":"O", "x":5, "y":3},
+
+ {"label":"Z", "x":1, "y":4},
+ {"label":"X", "x":2, "y":4},
+ {"label":"C", "x":3, "y":4},
+ {"label":"N", "x":5, "y":4}
+
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/evancookaudio/sleepingdinosaur/keymaps/default/keymap.c b/keyboards/evancookaudio/sleepingdinosaur/keymaps/default/keymap.c
new file mode 100644
index 0000000000..94cbc390df
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* LAYER 0
+ * ,-----------------------------------------------.
+ * | 1 | 2 | 3 | 4 | 5 | - |
+ * |-------+-------+-------|-------|-------|-------|
+ * | 6 | 7 | 8 | 9 | 0 | R |
+ * |-------+-------+-------|-------|-------|-------|
+ * | / | Q | W | E | U | V |
+ * -------+-------+-------|-------|-------|-------|
+ * | ENTER | A | S | D | SPACE | O |
+ * | |-------+-------+-------| |-------|
+ * | | Z | X | C | | N |
+ * ,-----------------------------------------------.
+ */
+[0] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS,
+ KC_6, KC_7, KC_8, KC_9, KC_0, KC_R,
+ KC_SLSH, KC_Q, KC_W, KC_E, KC_U, KC_V,
+ KC_ENT, KC_A, KC_S, KC_D, KC_SPC, KC_O,
+ KC_Z, KC_X, KC_C, KC_N
+)
+};
diff --git a/keyboards/evancookaudio/sleepingdinosaur/readme.md b/keyboards/evancookaudio/sleepingdinosaur/readme.md
new file mode 100644
index 0000000000..064e4981fe
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/readme.md
@@ -0,0 +1,17 @@
+# tenpad macropad
+
+A 28 button macropad, in a format that is closest to a 5x6 grid, designed by evan cook
+[Default Layout](https://raw.githubusercontent.com/evanmcook/sleepingdinosaur/main/images/layouts/sleepingdinosaurdefault.jpg)
+
+* Keyboard Maintainer: [evan cook](https://github.com/evanmcook/)
+* Hardware Supported: sleepingdinosaur Macropad PCB
+* Hardware Availability: [tenpad Github](https://github.com/evanmcook/sleepingdinosaur)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make evancookaudio/sleepingdinosaur:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Enter the bootloader:
+* **Physical reset button**: On the underside of the board, near the USB connector and microcontroller, press and hold the small button labeled reset for more than one second to enter the bootloader. \ No newline at end of file
diff --git a/keyboards/evancookaudio/sleepingdinosaur/rules.mk b/keyboards/evancookaudio/sleepingdinosaur/rules.mk
new file mode 100644
index 0000000000..6cf6d9358b
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.c b/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.c
new file mode 100644
index 0000000000..814275e3f0
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+*/
+#include "sleepingdinosaur.h"
diff --git a/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.h b/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.h
new file mode 100644
index 0000000000..9672fca289
--- /dev/null
+++ b/keyboards/evancookaudio/sleepingdinosaur/sleepingdinosaur.h
@@ -0,0 +1,41 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT(\
+ k00, k01, k02, k03, k04, k05, \
+ k06, k07, k08, k09, k10, k11, \
+ k12, k13, k14, k15, k16, k17, \
+ k18, k19, k20, k21, k22, k23, \
+ k24, k25, k26, k27 \
+ ) \
+ { \
+ {k00, k01, k02, k03, k04, k05},\
+ {k06, k07, k08, k09, k10, k11},\
+ {k12, k13, k14, k15, k16, k17},\
+ {k18, k19, k20, k21, k22, k23},\
+ {KC_NO, k24, k25, k26, KC_NO, k27},\
+ }
diff --git a/keyboards/evancookaudio/tenpad/config.h b/keyboards/evancookaudio/tenpad/config.h
new file mode 100644
index 0000000000..c9d7d05251
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/config.h
@@ -0,0 +1,44 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x636F
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0000
+#define MANUFACTURER evancook.audio
+#define PRODUCT tenpad
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 5
+
+/* key matrix pins */
+
+#define MATRIX_ROW_PINS {D0, D1}
+#define MATRIX_COL_PINS {F4, F5, F6, F7, B1}
+
+#define UNUSED_PINS {B3, B2, B6, B7, D5, C7, F1, F0, B4, E6, D7, C6, D4 }
+
diff --git a/keyboards/evancookaudio/tenpad/info.json b/keyboards/evancookaudio/tenpad/info.json
new file mode 100644
index 0000000000..52c62775dc
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/info.json
@@ -0,0 +1,24 @@
+{
+ "keyboard_name": "evancook.audio tenpad",
+ "url": "https://evancook.audio/",
+ "maintainer": "evanmcook",
+ "layouts": {
+
+ "LAYOUT_ortho_2x5": {
+ "layout": [
+ { "label": "K01", "x": 0, "y": 0 },
+ { "label": "K02", "x": 1, "y": 0 },
+ { "label": "K03", "x": 2, "y": 0 },
+ { "label": "K04", "x": 3, "y": 0 },
+ { "label": "K05", "x": 4, "y": 0 },
+
+ { "label": "K06", "x": 0, "y": 1 },
+ { "label": "K07", "x": 1, "y": 1 },
+ { "label": "K08", "x": 2, "y": 1 },
+ { "label": "K09", "x": 3, "y": 1 },
+ { "label": "K10", "x": 4, "y": 1 }
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/evancookaudio/tenpad/keymaps/default/keymap.c b/keyboards/evancookaudio/tenpad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2238a238d3
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* LAYER 0
+ * ,---------------------------------------.
+ * | Q | W | E | R | T |
+ * |-------+-------+-------|-------|-------|
+ * | A | S | D | F | G |
+ * ,---------------------------------------.
+ *
+ *
+ */
+[0] = LAYOUT_ortho_2x5(
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G
+)
+};
diff --git a/keyboards/evancookaudio/tenpad/readme.md b/keyboards/evancookaudio/tenpad/readme.md
new file mode 100644
index 0000000000..0bcb7a7bce
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/readme.md
@@ -0,0 +1,17 @@
+# tenpad macropad
+
+A 2x5 macropad designed by Evan Cook, with the design goal of being compact in the Z axis
+[Default Layout](https://raw.githubusercontent.com/evanmcook/tenpad/main/keyboard-layout.jpg)
+
+* Keyboard Maintainer: [Evan Cook](https://github.com/evanmcook/)
+* Hardware Supported: tenpad Macropad PCB
+* Hardware Availability: [tenpad Github](https://github.com/evanmcook/tenpad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make evancookaudio/tenpad:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Enter the bootloader:
+* **Physical reset button**: Briefly short the pair of pins marked "reset" on the top right corner of the bottom PCB of the keyboard. \ No newline at end of file
diff --git a/keyboards/evancookaudio/tenpad/rules.mk b/keyboards/evancookaudio/tenpad/rules.mk
new file mode 100644
index 0000000000..6cf6d9358b
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evancookaudio/tenpad/tenpad.c b/keyboards/evancookaudio/tenpad/tenpad.c
new file mode 100644
index 0000000000..abd852baf2
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/tenpad.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+*/
+#include "tenpad.h"
diff --git a/keyboards/evancookaudio/tenpad/tenpad.h b/keyboards/evancookaudio/tenpad/tenpad.h
new file mode 100644
index 0000000000..c9d6fa62c9
--- /dev/null
+++ b/keyboards/evancookaudio/tenpad/tenpad.h
@@ -0,0 +1,26 @@
+/* Copyright 2022 evan cook <evan@evancook.audio>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_2x5(\
+ k00, k01, k02, k03, k04, \
+ k05, k06, k07, k08, k09 \
+ ) { \
+ {k00, k01, k02, k03, k04},\
+ {k05, k06, k07, k08, k09},\
+ }
diff --git a/keyboards/eve/meteor/rules.mk b/keyboards/eve/meteor/rules.mk
index 4c4a33355e..7bc9adda6b 100644
--- a/keyboards/eve/meteor/rules.mk
+++ b/keyboards/eve/meteor/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/evil80/keymaps/default/keymap.c b/keyboards/evil80/keymaps/default/keymap.c
index 1706517a25..8deb3d4a7e 100644
--- a/keyboards/evil80/keymaps/default/keymap.c
+++ b/keyboards/evil80/keymaps/default/keymap.c
@@ -3,29 +3,29 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: Winkey */
LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,\
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, MO(2), KC_UP, \
- KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, MO(2), KC_UP,
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
),
/* 1: Winkeyless */
LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,\
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, MO(2), KC_UP, \
- KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,KC_RGUI,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, MO(2), KC_UP,
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,KC_RGUI,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
),
/* 2: Fn */
LAYOUT(
- KC_TRNS, BL_ON, BL_OFF,BL_STEP,BL_BRTG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,\
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,\
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,\
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
- KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS \
+ KC_TRNS, BL_ON, BL_OFF,BL_STEP,BL_BRTG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS
),
};
diff --git a/keyboards/evil80/rules.mk b/keyboards/evil80/rules.mk
index 5020a0d3f5..f5e84cd3e3 100644
--- a/keyboards/evil80/rules.mk
+++ b/keyboards/evil80/rules.mk
@@ -5,18 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/evolv/keymaps/gondolindrim/keymap.c b/keyboards/evolv/keymaps/gondolindrim/keymap.c
new file mode 100755
index 0000000000..3ab66bd056
--- /dev/null
+++ b/keyboards/evolv/keymaps/gondolindrim/keymap.c
@@ -0,0 +1,410 @@
+/*
+Copyright 2021 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* ---------------------------------------------- EVOLV75 GONDOLINDRIM LAYOUT
+This is the firmware for the Evolv75 CE (pre-Alpha) PCBs as designed by Gondolindrim.
+
+The final objective is to achieve a joystic encoder feature where the encoder can exhibit multiple behaviours, hereby called "encoder modes", which can be switched seamlessly by the user. In order to make the user know what encoder mode is active at a given instant, the keyboard has RGB underglow LEDs that shine a particular color; each mode has its own color.
+
+Modes, their behaviours and their colors are user-customizable.
+*/
+
+/* ---------------------------------------------- BASIC DEFINITIONS
+DON"T CHANGE ANY OF THESE.
+*/
+
+#include QMK_KEYBOARD_H
+typedef uint8_t color[3];
+#define COLOR(h,s,v) ((color){h,s,v})
+
+// Defining custom keycodes
+enum keyboard_keycodes {
+ ENCCLK = 0x5F80, // For "encoder click"
+ ENCNTH, // "Encoder north"
+ ENCSTH, // "Encoder south"
+ ENCEST, // "Encoder east"
+ ENCWST, // "Encoder west"
+ ALTTABN, // For alt-tab-switch, next
+ ALTTABP, // For alt-tab-switch, previous
+ ALTTABC, // For alt-tab-click
+ ENCMUP, // Encoder mode up
+ ENCMDN // Encoder mode down
+};
+
+// Defining the encoder mode data structure
+typedef struct _encoder_mode_t {
+ color indicator_color;
+ uint16_t clockwise_key[4];
+ uint16_t counterclockwise_key[4];
+ uint16_t clicked_key[4];
+ uint16_t north_key[4];
+ uint16_t south_key[4];
+ uint16_t east_key[4];
+ uint16_t west_key[4];
+} encoder_mode_t;
+
+/* ---------------------------------------------- COLORS
+Colors are defined as HSV values where the values range from 0 to 255. Template:
+
+#define <COLOR NAME> COLOR( <HSV CODE> )
+
+Use these to define the colors for encoder modes.
+*/
+
+#define CYAN COLOR(128,255,255)
+#define PINK COLOR(191,255,255)
+#define YELLOW COLOR(36,255,255)
+#define WHITE COLOR(0,0,255)
+#define STARTUP_COLOR WHITE
+
+/* ---------------------------------------------- DELAYS
+These delays define some important behaviours on the firmware.
+
+MEDIA_KEY_DELAY is used throughout the code to hold certain keycodes for a time before holding them; this allows the use of media keys like volume up and down everywhere.
+
+ALT_TAB_DELAY is the time delay the firmware holds the LALT key before letting it go; in practical use this means once you rotate the encoder in alt-tabbing mode, it will keep the alt-tab window held for this amount of time.
+
+ENCODER_CLICK_DELAY defines a delayed behavior for the encoder click. Once you click it, a timer is triggered and monitored. If the click is held for more than this macro (defaults to 1000 or 1 second), encoder modes start cycling, each per second, and stops when you release. If you hold the click for shorter than the time defined in this macro, then the firmware registers the key contained in the .clicked_key list of that mode.
+*/
+
+#define MEDIA_KEY_DELAY 20
+#define ALT_TAB_DELAY 2000
+#define ENCODER_CLICK_DELAY 1000
+
+// -------------------------------------------- ENCODER MODES
+/* Encoder mode list
+WARNING: DO NOT, ABSOLUTELY DO NOT use ENCNTH, ENCSTH, ENCWST or ENCEST in any of the encoder mode keys. The reason is because these keycodes are used in process_record_user and they point to these very same encoder mode keys; this could generate a loop in process_record_user and freeze the keyboard.
+
+You can add and remove modes at will as long as you have at least one.
+*/
+const encoder_mode_t encoder_modes[] = {
+ // PINK MODE: "media mode". Encoder controls volume (and mode change on layer 1); click does media pause (mute on layer 1), directionals do arrows.
+ { .indicator_color = PINK,
+ .clockwise_key = {KC_VOLU, ENCMUP, KC_VOLU, KC_VOLU},
+ .counterclockwise_key = {KC_VOLD, ENCMDN, KC_VOLD, KC_VOLD},
+ .clicked_key = {KC_MUTE, KC_MUTE, KC_MPLY, KC_MUTE},
+ .north_key = {KC_UP, KC_UP, KC_UP, KC_UP},
+ .south_key = {KC_DOWN, KC_DOWN, KC_DOWN, KC_DOWN},
+ .east_key = {KC_RGHT, KC_RGHT, KC_RGHT, KC_RGHT},
+ .west_key = {KC_LEFT, KC_LEFT, KC_LEFT, KC_LEFT}
+ },
+ /* CYAN MODE: "application mode". Switches back and forth between applications ("alt-tabbing"); click stops the alt-tabbing at the selected application. When on layer 1, encoder changes modes. East-west switches tabs ("ctrl-tabbing") and north-sourh maximizes/minimizes windows (GUI plus up and down). Note: these are modifier keys defined natively in QMK
+ - C(kc) means hold left control and press kc
+ - MEH(kc) means hold left control, left shift and press kc
+ - G(kc) means hold LGUI and press kc
+*/
+ { .indicator_color = CYAN,
+ .clockwise_key = {ALTTABN, ENCMUP, ALTTABN, ALTTABN},
+ .counterclockwise_key = {ALTTABP, ENCMDN, ALTTABP, ALTTABP},
+ .clicked_key = {ALTTABC, ALTTABC, ALTTABC, ALTTABC},
+ .north_key = {G(KC_UP),G(KC_UP), G(KC_UP), G(KC_UP)},
+ .south_key = {G(KC_DOWN), G(KC_DOWN), G(KC_DOWN), G(KC_DOWN)},
+ .east_key = {C(KC_TAB), C(KC_TAB), C(KC_TAB), C(KC_TAB)},
+ .west_key = {S(C(KC_TAB)), S(C(KC_TAB)), S(C(KC_TAB)), S(C(KC_TAB))}
+ },
+ // YELLOW MODE: "navigation mode". Encoder mimicks mousehwheel, click does mouseclick. North-wouth does page up/down, east-west do home and end.
+ { .indicator_color = YELLOW,
+ .clockwise_key = {KC_WH_U, ENCMUP, KC_WH_U, KC_WH_U},
+ .counterclockwise_key = {KC_WH_D, ENCMDN, KC_WH_D, KC_WH_D},
+ .clicked_key = {KC_BTN1, KC_BTN2, KC_BTN1, KC_BTN1},
+ .north_key = {KC_PGUP, KC_PGUP, KC_PGUP, KC_PGUP},
+ .south_key = {KC_PGDN, KC_PGDN, KC_PGDN, KC_PGDN},
+ .east_key = {KC_END, KC_END, KC_END, KC_END},
+ .west_key = {KC_HOME, KC_HOME, KC_HOME, KC_HOME}
+ }
+ // Insert your custom encoder mode here
+};
+
+#define NUM_ENCODER_MODES (sizeof(encoder_modes)/sizeof(encoder_modes[0])) // DO NOT CHANGE THIS. NUM_ENCODER_MODES calculates how many modes there are.
+
+// This counter is used to track what encoder mode is being used at a certain time
+int encoder_mode_count = 0;
+
+/* ---------------------------------------------- RGB STARTING COLOR
+Due to the way rgblight.c stores to and re-stores RGB configurations from EEPROM, the first time the MCU boots up, the EEPROM will not have stored the default value for the RGB animation which in QMK is the static red light; however, during the first bootup, this EEPROM will be set so that, in all subsequent bootups, the RGBs will glow red instead of whatever color the first encoder mode is. What these lines do is re-define the default RGB color so that the default RGB color is defined the same as encoder mode [0] so that the RGB will glow this color once the keyboard boots. DONT CHANGE THIS.
+*/
+#define RGBLIGHT_DEFAULT_HUE encoder_modes[0].indicator_color[0]
+#define RGBLIGHT_DEFAULT_SAT encoder_modes[0].indicator_color[1]
+#define RGBLIGHT_DEFAULT_VAL encoder_modes[0].indicator_color[2]
+
+/* ---------------------------------------------- DEFINING DEFAULT KEYMAP
+Adapt this at will with the caveat that you should not have more nor less than four layers. And let's be honest, if you find yourself needing more than four layers on a 75% keyboard you are probably doing something wrong.
+*/
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_evolv_iso(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL , ENCNTH,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_ENT , KC_PGUP, ENCWST , ENCCLK, ENCEST,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN, ENCSTH,
+ KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , MO(1) ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT_evolv_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCSTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [2] = LAYOUT_evolv_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCSTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [3] = LAYOUT_evolv_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCSTH,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+/* ---------------------------------------------- END OF USER CUSTOMIZABLE CODE
+Everything past here are functions that operate the firmware. There is nothing to be customized by the user for encoder modes or keyboard keymap.
+*/
+
+/* ---------------------------------------------- SET INDICATOR COLOR FUNCTION
+This is the function used when the RGB colors need to change.
+*/
+void set_indicator_colors(const color target_color){
+ rgblight_sethsv(target_color[0],target_color[1],target_color[2]);
+};
+
+// Board init: RGB indicator is set to the first encoder mode color, also encoder mode is set to first mode.
+void keyboard_pre_init_user(void){
+ set_indicator_colors(STARTUP_COLOR);
+ encoder_mode_count = 0;
+};
+
+void keyboard_post_init_user(void){
+ set_indicator_colors(encoder_modes[0].indicator_color);
+};
+
+/* ---------------------------------------------- SPECIAL KEYCODE PROCESSING
+ The heart of this firmware is the process_custom_keycode function; this allows all the customized keycodes ENCMUP, ENCMDN, ALTTABN, ALLTABP and so on to be used in any place including the encoder callback. Its main mechanic is calling the process_record_user function, where there is a function for each one of the customized keycodes.
+ What process_custom_keycode does is, if a "normal" keycode is passed on, then it is registered and held for a small period of time (MEDIA_KEY_DELAY to be more specific). This "holding" allows it to correctly register media keys. However, if a custom keycode is used, then the function executes process_record_user again, but now with a new argument keycode that will be whatever is mapped inside the special key requested.
+ Admittedly, this implementation looks redundant: process_record_user calls process_custom_keycode which calls process_record_user again. However, the ingenuity of this recursion is this allows any of the custom keycodes to be mappable both to encoder action as well as keys by having their behavior mapped to a single function in a switch-case structure. For instance, by having the encoder update function encoder_update_user use process_custom_keycode, the code for each custom keycode can be present in a single place in the code, that is, in process_record_user. On another hand, if the user wants to map a certain special keycode to a particular key, they can do so; for instance, if the user wants to map the encoder mode switch keys ENCMUP/ENCMDN to, say, left and right keys of layer 1, they can also do so.
+ The glaring problem with this approach is the same as with all recursions: a recursion mapped to itself is a loop, meaning that it is very easy to put the program in a loop within process_record_user by nesting the custom keycodes, for instance, using the keycode ENCNTH in a north key in any of the modes. This then requires a certain care from whoever is adapting or customizing their encoder modes to not use ENCNTH, ENCSTH, ENCWST, ENCEST in the keymap or the encoder modes. The way the firmware deals with this is by only processing keycodes inside the 0x5F85 and 0x5F89 range which exclude these keys; if the given keycode is in the 0x5F80 to 0x5F84 range, which pertains to these forbidden keycodes, nothing is done; to the user it will seem like nothing happens.
+ In the case of the encoder rotating action, in order to call process_record_user a placeholder record is used, the idea being to use values not obtainable phisically on the keyboard like col 20, row 20, with a timer right at the begginig of the code initialization.
+keyrecord_t record {
+ keyevent_t event {
+ keypos_t key {
+ uint8_t col
+ uint8_t row
+ }
+ bool pressed
+ uint16_t time
+ }
+}
+
+Despite this long description, process_custom_kc is fairly simple. It tests the passed keycode and, if it is one of the custom-defined keys in the forbidden range, nothing is done; if it's one of the good ones, process_record_user is called and the function for that particular keycode will be executed. In other cases, if the event was a press the keycode is registered and held for MEDIA_KEY_DELAY ms. In the case the event was a release, the keycode is unregistered.
+*/
+
+keyrecord_t placeholder_record ;
+//placeholder_record->event.key.col = 20;
+//placeholder_record.event.key.row = 20;
+//placeholder_record.event.time = timer_read32();
+
+uint16_t mapped_code = 0;
+uint32_t held_keycode_timer = 0;
+void process_custom_keycode(uint16_t keycode, keyrecord_t *record){
+ if (keycode >= 0x05F80 && keycode < 0x5F85) ;
+ else if (keycode >= 0x5F85 && keycode <= 0x5F89) process_record_user(keycode, record);
+ else {
+ // Note: (un)register_keycode16 need to be the 16 bit versions in case modifier keys like C(), G() and so on are used. This is specially true for the "application control" encoder mode.
+ if (record->event.pressed){
+ register_code16(keycode);
+ held_keycode_timer = timer_read32();
+ while (timer_elapsed32(held_keycode_timer) < MEDIA_KEY_DELAY);
+ } else unregister_code16(keycode);
+ }
+}
+
+// Basically calls process_custom_keycode in a press event and then in a release event. This is basically done to tap custom keycodes.
+void tap_custom_keycode(uint16_t keycode){
+ placeholder_record.event.pressed = true;
+ process_custom_keycode(keycode, &placeholder_record);
+ placeholder_record.event.pressed = false;
+ process_custom_keycode(keycode, &placeholder_record);
+}
+
+/* ---------------------------------------------- LAYER UPDATING
+Keeps track of the highest active layer.
+*/
+int current_layer = 0 ; // Updated in layer_state_set_user each time a layer change is made
+layer_state_t layer_state_set_user(layer_state_t state) {
+ current_layer = get_highest_layer(state);
+ return state;
+}
+
+/* ---------------------------------------------- ENCODER MDOE CYCLING
+Pretty straightforward: cycles encoder mode forwards if passed a true value and backwards otherwise.
+
+Some care is taken for two edge cases:
+ - The user is at mode 0 and the encoder mode is changed backwards
+ - The user is at the last mode and changes it forward.
+
+The program deals with this last case by taking the division remainder, which will take encoder_mode_count to 0. For the first case, encoder_mode_count is just made equal to the last (highest) mode.
+*/
+void cycle_encoder_mode(bool forward){
+ forward ? encoder_mode_count++ : encoder_mode_count-- ;
+ if (encoder_mode_count == -1) encoder_mode_count = NUM_ENCODER_MODES - 1;
+ encoder_mode_count = encoder_mode_count%NUM_ENCODER_MODES ; // This makes sure encoder_mode_count keeps cycling between 0,1,...,NUM_ENCODER_MODES and doesnt eventually overflow
+ set_indicator_colors( encoder_modes[ encoder_mode_count ].indicator_color ); // Set indicator color to the corresponding defined color
+}
+
+/* ---------------------------------------------- PROCESSING ALT-TABBING
+This function process the alt-tabbing keycode ALTTABS. The process works in a few steps:
+- At first, the flag is_alt_tab_active is false. When the user first uses this keycode (rotating the encoder, for instance) then the function turns the flag and "presses" left alt (KC_LALT), also triggering a timer alt_tab_timer.
+- The alt_tab_timer is supposed to keep track of how many miliseconds the alt-tab window should be kept, that is, how much time the LALT keycode should be held. The objective being, once the user cycles through the applications to the desired one, they select it either by not rotating the applications anymore or clicking the encoder.
+- Finally, the function shoots out the KC_TAB keycode if the encoder was rotated clockwise or the S(KC_TAB) (shift + tab) if the encoder was rotated counterclockwise.
+- If the user cycles the encoder still while alt-tab is active, then the function refreshes the timer and shoots out tab or shift+tab.
+- The function that keeps track of the timer expiration is housekeeping_task_user, where if the alt_tab_timer surpasses the defined ALT_TAB_DELAY macro (defaults to 2 seconds or 2000 ms) then the release_alt_tab function is called: the LALT keycode is released and the is_alt_tab_active flag is set to false again
+- The release_alt_tab function is also called when the ALTTABC keycode is hit, thus selecting the desired application.
+*/
+
+// This bool records if LALT is pressed or not. Due to the automatic disabling of the ALT-TAB of the ALTTABS custom keystroke, the automatic disabling can un-register KC_LALT even when the LALT key is phisically pressed. Hence there needs to be two bools: one that keebs track of the ALT-TAB activity and one that keeps track of LALT so that the automatic disabling will not disable LALT if it is phisically pressed.
+bool is_lalt_pressed = false;
+bool is_alt_tab_active = false; // Flag to check if alt tab is active
+uint32_t alt_tab_timer = 0; // Time trigger for alt tab
+void process_alt_tabbing(bool next){
+ if(!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read32();
+ tap_code16(next ? KC_TAB : S(KC_TAB));
+}
+
+void release_alt_tab(void){
+ is_alt_tab_active = false;
+ unregister_code(KC_LALT);
+}
+
+/* ---------------------------------------------- ENCODER UPDATE CALLBACK
+This taps the keycode stored in the encoder mode struct, at the current encoder mode, at the current layer. Because the user can use non-QMK-native keycodes in the encoder, like the alt-tabbing keycodes like ALTTABP and ATLTTABN, the tap function is the custom tap one.
+*/
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ mapped_code = clockwise ? encoder_modes[ encoder_mode_count ].clockwise_key[ current_layer ] : encoder_modes[ encoder_mode_count ].counterclockwise_key[ current_layer ] ; // mapped code is the clockwise key if a clockwise motion is sensed, otherwise it registers the counterclockwise key
+ tap_custom_keycode(mapped_code);
+ return false; // This function needs to return false in order to inhibit the action of encoder_update_user as defined in evolv.c
+}
+
+/* ---------------------------------------------- DEALING WITH THE ENCODER CLICK
+The encoder used in the Evolv has a construction particularity in that not only it has rotation and clicking but also directional joystic capabilities in the four cardinal directions, as in, it can also register four directions. The way that this works is, there are A,B and a common pin for the encoder rotation , with a PUSH and a COM pin. The encoder pins work pretty much like common encoders, as does the switch click: once you click it, PUSH and COM short-circuit, so the pushing mechanic can be easily integrated into a switch matrix and treated like a switch would.
+
+The problem, however, lies in the directionals. For each directional, say N,S,W,E, there is a corresponding pin on the encoder; once one directional is hit its pin is shorted with PUSH and COM. This means that the directionals can be treated as four short-circuit keys and integrated into the matrix, but with the added hassle that every time one of them is registered, the encoder push is also registered.
+
+The way this firmware deals with this problem is threefold.
+
+- First, there is a is_click_blocked flag that is set true whenever one of the directionals is sensed by the matrix; the name suggests that in this case the click keycode processing should be "blocked". This allows the firmware to differentiate between an event where a directional was hit (the encoder push is recognized but is_click_blocked is true) and an event where only the push was used (is_click_blocked is false albeit the push being sensed).
+- Second, in order to prevent the encoder push key from registering before the flag is set, a 20ms delay takes place when the encoder click was sensed; this means that when a directional is hit, the encoder action is guaranteed to be processed only after the is_click_blocked flag is true.
+- Finally, held_click_timer and is_click_held are used to differentiate between a click short push and a long push; when a directional key is hit, is_click_held is immediately reset, further preventing any action corresponding to the encoder push click being held down.
+
+automatic_encoder_mode_cycle is a flag used by the housekeeping function to communicate an encoder mode change was made during an encoder push, meaning that the user has held the encoder enough to trigger an encoder mode change. What the housekeeping function does is constantly monitor the timer so that, when it extrapolates the designated ENCODER_CLICK_DELAY, a mode change takes place; the held_click_timer timer is refreshed. The problem is that, once the user reaches their desired mode and releases the encoder, the timer had been refreshed and is lower than the designated delay, which would cause the "fast click" keycode to be triggered, which is of course unwanted. Hence the algorithm filters out these situations by knowing when the automatic mode change has taken place and not registering the click key, only resetting the automatic_encoder_mode_cycle flag.
+
+Finally, the process_encoder_click function has two parts. In a click press event, it sets the flag is_click_held and triggers a timer. When the encoder push is released, the timer is sampled and the pertinent action is taken depending on how much time the encoder was held for.
+*/
+
+uint32_t held_click_timer = 0;
+bool is_click_held = false;
+bool is_shift_held = false;
+bool automatic_encoder_mode_cycle = false; // This flag registers if the encoder mode was automatically cycled
+bool is_click_blocked = false;
+void process_encoder_click(bool clickpress){
+ // What to do when the encoder is pressed: turn the flag to true, start (or refresh) timer
+ if (clickpress) {
+ is_click_held = true;
+ held_click_timer = timer_read32();
+ } else { // What to do when encoder is released
+ is_click_held = false;
+ // Checking if the time the encoder click was held was smaller than the delay defined and if an automatic mode change was not already performed. If it was, just register whatever it is the click does.
+ if (timer_elapsed32(held_click_timer) < ENCODER_CLICK_DELAY && !automatic_encoder_mode_cycle ) tap_custom_keycode(encoder_modes[ encoder_mode_count ].clicked_key[ current_layer ]);
+ automatic_encoder_mode_cycle = false;
+ }
+}
+
+bool process_directional(uint16_t keycode, keyrecord_t *record){
+ is_click_held = false;
+ is_click_blocked = record->event.pressed ;
+ process_custom_keycode( keycode , record );
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_LSFT:
+ case KC_RSFT:
+ is_shift_held = record->event.pressed;
+ break;
+ case KC_LALT: // If this is not defined, if the encoder is activated in the alt-tab mode while the LALT key is pressed, the menu goes away.
+ is_lalt_pressed = record->event.pressed;
+ break;
+// ---------------------------------------------- CUSTOM KEYCODES: they do their thing and retun false right away to prevent any further action
+// --------------------- Encoder directionals (note: process_directional always returns false)
+ case ENCNTH: return process_directional( encoder_modes[ encoder_mode_count ].north_key[ current_layer ] , record);
+ case ENCSTH: return process_directional( encoder_modes[ encoder_mode_count ].south_key[ current_layer ] , record);
+ case ENCEST: return process_directional( encoder_modes[ encoder_mode_count ].east_key[ current_layer ] , record);
+ case ENCWST: return process_directional( encoder_modes[ encoder_mode_count ].west_key[ current_layer ] , record);
+// --------------------- Encoder click
+ case ENCCLK:
+ held_keycode_timer = timer_read32();
+ while (timer_elapsed32(held_keycode_timer) < 20);
+ if(!is_click_blocked) process_encoder_click(record->event.pressed);
+ return false; // Skip all further processing of this key
+// --------------------- Alt-tabbing
+ case ALTTABN:
+ case ALTTABP:
+ if(record->event.pressed) process_alt_tabbing(keycode == ALTTABN); // alt-tabs forward if the keycode is ALTTABN, else alt-tabs backwards if it's ALTTABP
+ return false;
+ case ALTTABC:
+ if(record->event.pressed) release_alt_tab();
+ return false;
+// --------------------- Encoder mode up/down
+ case ENCMUP:
+ case ENCMDN:
+ if(record->event.pressed) cycle_encoder_mode(keycode == ENCMUP); // Cycles encoder mode up if keycode is ENCMUP, else cycles backwards if the keycode is ENCMDN
+ return false;
+// ---------------------------------------------- DEFAULT
+ default:
+ return true;
+ }
+ return true;
+}
+
+/* ---------------------------------------------- HOUSEKEEPING
+Housekeeping keeps track of three events:
+- Keeps track of the alt-tabbing timer. If it surpasses ALT_TAB_DELAY the release_alt_tab function is called;
+- Keeps track of the encoder click hold timer; if the encoder click is held for more than a certain delay, cycles encoder mode and sets the automatic_mode_change flag.
+- The is_click_blocked flag marks if the encoder click has been registered with a directional key (recall that in this encoder, when a directional key is hit, both the directional key and the encoder push key are triggered in the keymap). In this case, only the directional should be registered. Hence, this housekeeping function resets the held_click_timer timer because, if this is not done, if the directional key is held for more than ENCODER_CLICK_DELAY then this will trigger an automatic mode change.
+*/
+void housekeeping_task_user(void) {
+ if (is_alt_tab_active){
+ if (is_lalt_pressed) alt_tab_timer = timer_read32(); // If the user is holding the LALT key, refresh the timer
+ else if (timer_elapsed32(alt_tab_timer) > ALT_TAB_DELAY) release_alt_tab(); // If the timer surpasses the delay, release alt tab
+ }
+ if (is_click_blocked) held_click_timer = timer_read32(); // To prevent mode changing when directionals are held
+ if (is_click_held && timer_elapsed32(held_click_timer) > ENCODER_CLICK_DELAY ){
+ automatic_encoder_mode_cycle = true;
+ held_click_timer = timer_read32();
+ if (is_shift_held) cycle_encoder_mode(false);
+ else cycle_encoder_mode(true);
+ }
+}
diff --git a/keyboards/evolv/rules.mk b/keyboards/evolv/rules.mk
index 35f3cc75ee..5b705106b8 100644
--- a/keyboards/evolv/rules.mk
+++ b/keyboards/evolv/rules.mk
@@ -10,14 +10,11 @@ BOOTLOADER = stm32-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
diff --git a/keyboards/evyd13/atom47/rev2/config.h b/keyboards/evyd13/atom47/rev2/config.h
index 95fc7a4789..42661c3311 100644
--- a/keyboards/evyd13/atom47/rev2/config.h
+++ b/keyboards/evyd13/atom47/rev2/config.h
@@ -58,6 +58,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 4
#define LED_CAPS_LOCK_PIN F5
+#define LED_PIN_ON_STATE 1
#define RGB_DI_PIN D0 // The pin the LED strip is connected to
#define RGBLED_NUM 1 // Number of LEDs in your strip
diff --git a/keyboards/evyd13/atom47/rev2/rules.mk b/keyboards/evyd13/atom47/rev2/rules.mk
index 632bdae8f3..104711e420 100644
--- a/keyboards/evyd13/atom47/rev2/rules.mk
+++ b/keyboards/evyd13/atom47/rev2/rules.mk
@@ -1,2 +1,3 @@
# Build Options
RGBLIGHT_ENABLE = no
+BACKLIGHT_ENABLE = yes
diff --git a/keyboards/evyd13/atom47/rev3/config.h b/keyboards/evyd13/atom47/rev3/config.h
index 4e53abd01e..90cb4a1952 100644
--- a/keyboards/evyd13/atom47/rev3/config.h
+++ b/keyboards/evyd13/atom47/rev3/config.h
@@ -53,6 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 5
#define LED_CAPS_LOCK_PIN E6
+#define LED_PIN_ON_STATE 0
#define RGB_DI_PIN F5 // The pin the LED strip is connected to
#define RGBLED_NUM 6 // Number of LEDs in your strip
diff --git a/keyboards/evyd13/atom47/rev3/rules.mk b/keyboards/evyd13/atom47/rev3/rules.mk
index e69de29bb2..54a2685bf6 100644
--- a/keyboards/evyd13/atom47/rev3/rules.mk
+++ b/keyboards/evyd13/atom47/rev3/rules.mk
@@ -0,0 +1 @@
+BACKLIGHT_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/evyd13/atom47/rev4/config.h b/keyboards/evyd13/atom47/rev4/config.h
index 02a1b16755..a88c538716 100644
--- a/keyboards/evyd13/atom47/rev4/config.h
+++ b/keyboards/evyd13/atom47/rev4/config.h
@@ -56,3 +56,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define QMK_LED D1
#define LED_CAPS_LOCK_PIN D1
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/evyd13/atom47/rules.mk b/keyboards/evyd13/atom47/rules.mk
index 2ed1993fbc..1ba88ed80b 100644
--- a/keyboards/evyd13/atom47/rules.mk
+++ b/keyboards/evyd13/atom47/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/eon40/rules.mk b/keyboards/evyd13/eon40/rules.mk
index fc92321702..0c95018913 100644
--- a/keyboards/evyd13/eon40/rules.mk
+++ b/keyboards/evyd13/eon40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/eon65/rules.mk b/keyboards/evyd13/eon65/rules.mk
index 9cf47b43a7..990f7e04ca 100644
--- a/keyboards/evyd13/eon65/rules.mk
+++ b/keyboards/evyd13/eon65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/eon75/rules.mk b/keyboards/evyd13/eon75/rules.mk
index 6d598770a3..30e86c0190 100644
--- a/keyboards/evyd13/eon75/rules.mk
+++ b/keyboards/evyd13/eon75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/eon87/rules.mk b/keyboards/evyd13/eon87/rules.mk
index 6ead804b7b..9f3c003683 100644
--- a/keyboards/evyd13/eon87/rules.mk
+++ b/keyboards/evyd13/eon87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/eon95/rules.mk b/keyboards/evyd13/eon95/rules.mk
index 6d598770a3..30e86c0190 100644
--- a/keyboards/evyd13/eon95/rules.mk
+++ b/keyboards/evyd13/eon95/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/gh80_1800/rules.mk b/keyboards/evyd13/gh80_1800/rules.mk
index d9f2b4f15b..0fb6b61338 100644
--- a/keyboards/evyd13/gh80_1800/rules.mk
+++ b/keyboards/evyd13/gh80_1800/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/evyd13/gh80_3700/rules.mk b/keyboards/evyd13/gh80_3700/rules.mk
index fdf9908627..41b8fdd2a8 100644
--- a/keyboards/evyd13/gh80_3700/rules.mk
+++ b/keyboards/evyd13/gh80_3700/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable support for rotary encoders
diff --git a/keyboards/evyd13/gud70/rules.mk b/keyboards/evyd13/gud70/rules.mk
index 2ff67b2721..0200e4799a 100644
--- a/keyboards/evyd13/gud70/rules.mk
+++ b/keyboards/evyd13/gud70/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/minitomic/keymaps/default/keymap.c b/keyboards/evyd13/minitomic/keymaps/default/keymap.c
index 74c1e50230..5315026b91 100644
--- a/keyboards/evyd13/minitomic/keymaps/default/keymap.c
+++ b/keyboards/evyd13/minitomic/keymaps/default/keymap.c
@@ -26,21 +26,21 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_split_space(
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, MO(_LO), KC_SPC, KC_SPC, MO(_HI), KC_RALT, KC_APP, KC_RCTRL), \
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_LO), KC_SPC, KC_SPC, MO(_HI), KC_RALT, KC_APP, KC_RCTRL),
[_LO] = LAYOUT_split_space(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
- _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET), \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+ _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
[_HI] = LAYOUT_split_space(
- _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, \
- KC_CAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_PSCR, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
+ _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, KC_PSCR,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
}; \ No newline at end of file
diff --git a/keyboards/evyd13/minitomic/rules.mk b/keyboards/evyd13/minitomic/rules.mk
index b30d61c867..bb01468a00 100644
--- a/keyboards/evyd13/minitomic/rules.mk
+++ b/keyboards/evyd13/minitomic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/mx5160/keymaps/default/keymap.c b/keyboards/evyd13/mx5160/keymaps/default/keymap.c
index ad198fe29e..e60d5302d6 100644
--- a/keyboards/evyd13/mx5160/keymaps/default/keymap.c
+++ b/keyboards/evyd13/mx5160/keymaps/default/keymap.c
@@ -25,17 +25,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_all(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, _______, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_F7, KC_F8, KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_P1, KC_P2, KC_P3, \
- KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_P0, _______, KC_PDOT, KC_PENT), \
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, _______,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_F7, KC_F8, KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______, KC_P1, KC_P2, KC_P3,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_P0, _______, KC_PDOT, KC_PENT),
[_FN] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_PSCR, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_PSCR, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/evyd13/mx5160/rules.mk b/keyboards/evyd13/mx5160/rules.mk
index b090193a55..9603d89f82 100644
--- a/keyboards/evyd13/mx5160/rules.mk
+++ b/keyboards/evyd13/mx5160/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/nt660/rules.mk b/keyboards/evyd13/nt660/rules.mk
index 2b211132c2..42a32340d0 100644
--- a/keyboards/evyd13/nt660/rules.mk
+++ b/keyboards/evyd13/nt660/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/nt750/rules.mk b/keyboards/evyd13/nt750/rules.mk
index d0729e22b1..f1b1f19b4e 100644
--- a/keyboards/evyd13/nt750/rules.mk
+++ b/keyboards/evyd13/nt750/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/evyd13/nt980/rules.mk b/keyboards/evyd13/nt980/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/evyd13/nt980/rules.mk
+++ b/keyboards/evyd13/nt980/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/omrontkl/rules.mk b/keyboards/evyd13/omrontkl/rules.mk
index dcb857f2c6..d26b5d2e07 100644
--- a/keyboards/evyd13/omrontkl/rules.mk
+++ b/keyboards/evyd13/omrontkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/plain60/keymaps/default/keymap.c b/keyboards/evyd13/plain60/keymaps/default/keymap.c
index 2e23dece01..185355e9cc 100644
--- a/keyboards/evyd13/plain60/keymaps/default/keymap.c
+++ b/keyboards/evyd13/plain60/keymaps/default/keymap.c
@@ -12,16 +12,16 @@ enum _layer {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, LT(_FN, KC_UP), \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, LT(_FN, KC_UP),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(_FN, KC_APP), KC_RCTRL),
[_FN] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/evyd13/plain60/rules.mk b/keyboards/evyd13/plain60/rules.mk
index b7f94e84e6..262bffdb16 100644
--- a/keyboards/evyd13/plain60/rules.mk
+++ b/keyboards/evyd13/plain60/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/evyd13/pockettype/rules.mk b/keyboards/evyd13/pockettype/rules.mk
index df0efd3c43..fb9e128716 100644
--- a/keyboards/evyd13/pockettype/rules.mk
+++ b/keyboards/evyd13/pockettype/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/quackfire/rules.mk b/keyboards/evyd13/quackfire/rules.mk
index 7593cc0a3b..9240b8457d 100644
--- a/keyboards/evyd13/quackfire/rules.mk
+++ b/keyboards/evyd13/quackfire/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/solheim68/rules.mk b/keyboards/evyd13/solheim68/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/evyd13/solheim68/rules.mk
+++ b/keyboards/evyd13/solheim68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/ta65/rules.mk b/keyboards/evyd13/ta65/rules.mk
index bf3ad7e132..6d60f1ca7e 100644
--- a/keyboards/evyd13/ta65/rules.mk
+++ b/keyboards/evyd13/ta65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/wasdat/rules.mk b/keyboards/evyd13/wasdat/rules.mk
index dfd38a5122..d9f65747fb 100644
--- a/keyboards/evyd13/wasdat/rules.mk
+++ b/keyboards/evyd13/wasdat/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/wasdat_code/rules.mk b/keyboards/evyd13/wasdat_code/rules.mk
index 5c989a4939..6fd1fce10e 100644
--- a/keyboards/evyd13/wasdat_code/rules.mk
+++ b/keyboards/evyd13/wasdat_code/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/evyd13/wonderland/keymaps/default/keymap.c b/keyboards/evyd13/wonderland/keymaps/default/keymap.c
index da03d7615e..7109993bcb 100644
--- a/keyboards/evyd13/wonderland/keymaps/default/keymap.c
+++ b/keyboards/evyd13/wonderland/keymaps/default/keymap.c
@@ -8,18 +8,18 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, \
- KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \
- KC_LCTL, KC_LAPO, KC_BSPC, KC_LGUI, KC_SPC, KC_RAPC, KC_RCTRL \
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LAPO, KC_BSPC, KC_LGUI, KC_SPC, KC_RAPC, KC_RCTRL
),
[_FUNC] = LAYOUT(
- RGB_TOG, VLK_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, RESET, \
- RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
-RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, \
- KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX, \
- _______, KC_LALT, _______, _______, _______, KC_RALT, _______ \
+ RGB_TOG, VLK_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, RESET,
+ RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX,
+ KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, XXXXXXX,
+ _______, KC_LALT, _______, _______, _______, KC_RALT, _______
)
};
diff --git a/keyboards/evyd13/wonderland/rules.mk b/keyboards/evyd13/wonderland/rules.mk
index efea8c1740..e97fa9e99e 100644
--- a/keyboards/evyd13/wonderland/rules.mk
+++ b/keyboards/evyd13/wonderland/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/exclusive/e65/rules.mk b/keyboards/exclusive/e65/rules.mk
index aaa3b1129b..4362ef0fd1 100644
--- a/keyboards/exclusive/e65/rules.mk
+++ b/keyboards/exclusive/e65/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/exclusive/e6_rgb/rules.mk b/keyboards/exclusive/e6_rgb/rules.mk
index 46f86ec2fe..a7d49b23bc 100644
--- a/keyboards/exclusive/e6_rgb/rules.mk
+++ b/keyboards/exclusive/e6_rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/exclusive/e6v2/le/rules.mk b/keyboards/exclusive/e6v2/le/rules.mk
index 9b4f420857..716d2928d1 100644
--- a/keyboards/exclusive/e6v2/le/rules.mk
+++ b/keyboards/exclusive/e6v2/le/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/exclusive/e6v2/le_bmc/keymaps/default/config.h b/keyboards/exclusive/e6v2/le_bmc/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/exclusive/e6v2/le_bmc/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/exclusive/e6v2/le_bmc/keymaps/default/keymap.c b/keyboards/exclusive/e6v2/le_bmc/keymaps/default/keymap.c
index 6d9209e487..26a4f9109d 100644
--- a/keyboards/exclusive/e6v2/le_bmc/keymaps/default/keymap.c
+++ b/keyboards/exclusive/e6v2/le_bmc/keymaps/default/keymap.c
@@ -31,10 +31,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c b/keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c
index 33b8aae228..4b9ba19d95 100644
--- a/keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c
+++ b/keyboards/exclusive/e6v2/le_bmc/keymaps/via/keymap.c
@@ -24,24 +24,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/exclusive/e6v2/le_bmc/rules.mk b/keyboards/exclusive/e6v2/le_bmc/rules.mk
index 0b3dd40232..9650691b5f 100644
--- a/keyboards/exclusive/e6v2/le_bmc/rules.mk
+++ b/keyboards/exclusive/e6v2/le_bmc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
WS2812_DRIVER = i2c
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/exclusive/e6v2/oe/rules.mk b/keyboards/exclusive/e6v2/oe/rules.mk
index 9b4f420857..716d2928d1 100644
--- a/keyboards/exclusive/e6v2/oe/rules.mk
+++ b/keyboards/exclusive/e6v2/oe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/config.h b/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/keymap.c b/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/keymap.c
index 6d9209e487..26a4f9109d 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/keymap.c
+++ b/keyboards/exclusive/e6v2/oe_bmc/keymaps/default/keymap.c
@@ -31,10 +31,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c b/keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c
index 9f8752e9b9..5e84a478e5 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c
+++ b/keyboards/exclusive/e6v2/oe_bmc/keymaps/via/keymap.c
@@ -24,24 +24,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, EEP_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/exclusive/e6v2/oe_bmc/rules.mk b/keyboards/exclusive/e6v2/oe_bmc/rules.mk
index 0b3dd40232..9650691b5f 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/rules.mk
+++ b/keyboards/exclusive/e6v2/oe_bmc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
WS2812_DRIVER = i2c
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/exclusive/e7v1/rules.mk b/keyboards/exclusive/e7v1/rules.mk
index aea6e25e21..efb00a6ba1 100644
--- a/keyboards/exclusive/e7v1/rules.mk
+++ b/keyboards/exclusive/e7v1/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/exclusive/e7v1se/rules.mk b/keyboards/exclusive/e7v1se/rules.mk
index c8629bd704..a7d70049c2 100644
--- a/keyboards/exclusive/e7v1se/rules.mk
+++ b/keyboards/exclusive/e7v1se/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/exclusive/e85/rules.mk b/keyboards/exclusive/e85/rules.mk
index f3856b93f0..7cbb5f8cb3 100644
--- a/keyboards/exclusive/e85/rules.mk
+++ b/keyboards/exclusive/e85/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/exent/rules.mk b/keyboards/exent/rules.mk
index 3684f0844c..c25a10a025 100644
--- a/keyboards/exent/rules.mk
+++ b/keyboards/exent/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eyeohdesigns/babyv/rules.mk b/keyboards/eyeohdesigns/babyv/rules.mk
index 2bc3619c24..a2e7480465 100644
--- a/keyboards/eyeohdesigns/babyv/rules.mk
+++ b/keyboards/eyeohdesigns/babyv/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eyeohdesigns/sprh/info.json b/keyboards/eyeohdesigns/sprh/info.json
index 7c99615965..7e79dd821e 100644
--- a/keyboards/eyeohdesigns/sprh/info.json
+++ b/keyboards/eyeohdesigns/sprh/info.json
@@ -1,147 +1,598 @@
{
"keyboard_name": "sprh",
- "maintainer": "eye oh designs",
- "url": "",
+ "url": "https://github.com/joedinkle/eyeohdesigns/tree/main/keyboards/sprh",
+ "maintainer": "joedinkle",
"layouts": {
- "LAYOUT_default": {
+ "LAYOUT_ac5": {
"layout": [
- { "label": "Encd", "x": 0.5, "y": 0 },
- { "label": "Esc", "x": 1.5, "y": 0 },
- { "label": "1", "x": 2.5, "y": 0 },
- { "label": "2", "x": 3.5, "y": 0 },
- { "label": "3", "x": 4.5, "y": 0 },
- { "label": "4", "x": 5.5, "y": 0 },
- { "label": "5", "x": 6.5, "y": 0 },
- { "label": "6", "x": 7.5, "y": 0 },
- { "label": "7", "x": 8.5, "y": 0 },
- { "label": "8", "x": 9.5, "y": 0 },
- { "label": "9", "x": 10.5, "y": 0 },
- { "label": "0", "x": 11.5, "y": 0 },
- { "label": "_", "x": 12.5, "y": 0 },
- { "label": "+", "x": 13.5, "y": 0 },
- { "label": "Backspace", "w": 2, "x": 14.5, "y": 0 },
- { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
- { "label": "Q", "x": 2.5, "y": 1 },
- { "label": "W", "x": 3.5, "y": 1 },
- { "label": "E", "x": 4.5, "y": 1 },
- { "label": "R", "x": 5.5, "y": 1 },
- { "label": "T", "x": 6.5, "y": 1 },
- { "label": "Y", "x": 7.5, "y": 1 },
- { "label": "U", "x": 8.5, "y": 1 },
- { "label": "I", "x": 9.5, "y": 1 },
- { "label": "O", "x": 10.5, "y": 1 },
- { "label": "P", "x": 11.5, "y": 1 },
- { "label": "[", "x": 12.5, "y": 1 },
- { "label": "]", "x": 13.5, "y": 1 },
- { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
- { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
- { "label": "A", "x": 2.5, "y": 2 },
- { "label": "S", "x": 3.5, "y": 2 },
- { "label": "D", "x": 4.5, "y": 2 },
- { "label": "F", "x": 5.5, "y": 2 },
- { "label": "G", "x": 6.5, "y": 2 },
- { "label": "H", "x": 7.5, "y": 2 },
- { "label": "J", "x": 8.5, "y": 2 },
- { "label": "K", "x": 9.5, "y": 2 },
- { "label": "L", "x": 10.5, "y": 2 },
- { "label": ";", "x": 11.5, "y": 2 },
- { "label": "'", "x": 12.5, "y": 2 },
- { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
- { "label": "Shift", "w": 2.25, "x": 0.25, "y": 3 },
- { "label": "Z", "x": 2.5, "y": 3 },
- { "label": "X", "x": 3.5, "y": 3 },
- { "label": "C", "x": 4.5, "y": 3 },
- { "label": "V", "x": 5.5, "y": 3 },
- { "label": "B", "x": 6.5, "y": 3 },
- { "label": "N", "x": 7.5, "y": 3 },
- { "label": "M", "x": 8.5, "y": 3 },
- { "label": ",", "x": 9.5, "y": 3 },
- { "label": ".", "x": 10.5, "y": 3 },
- { "label": "/", "x": 11.5, "y": 3 },
- { "label": "Shift", "w": 2.75, "x": 12.5, "y": 3 },
- { "label": "\u2191", "x": 15.25, "y": 3 },
- { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
- { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
- { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
- { "w": 6.25, "x": 4.62, "y": 4 },
- { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
- { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
- { "label": "\u2190", "x": 14.25, "y": 4 },
- { "label": "\u2193", "x": 15.25, "y": 4 },
- { "label": "\u2192", "x": 16.25, "y": 4 }
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"Backspace", "x":14.5, "y":0, "w":2},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":6.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
]
},
- "LAYOUT_split": {
+ "LAYOUT_acs": {
"layout": [
- { "label": "Encd", "x": 0.5, "y": 0 },
- { "label": "Esc", "x": 1.5, "y": 0 },
- { "label": "1", "x": 2.5, "y": 0 },
- { "label": "2", "x": 3.5, "y": 0 },
- { "label": "3", "x": 4.5, "y": 0 },
- { "label": "4", "x": 5.5, "y": 0 },
- { "label": "5", "x": 6.5, "y": 0 },
- { "label": "6", "x": 7.5, "y": 0 },
- { "label": "7", "x": 8.5, "y": 0 },
- { "label": "8", "x": 9.5, "y": 0 },
- { "label": "9", "x": 10.5, "y": 0 },
- { "label": "0", "x": 11.5, "y": 0 },
- { "label": "_", "x": 12.5, "y": 0 },
- { "label": "+", "x": 13.5, "y": 0 },
- { "label": "\u2190", "x": 14.5, "y": 0 },
- { "label": "Del", "x": 15.5, "y": 0 },
- { "label": "Tab", "w": 1.5, "x": 1, "y": 1 },
- { "label": "Q", "x": 2.5, "y": 1 },
- { "label": "W", "x": 3.5, "y": 1 },
- { "label": "E", "x": 4.5, "y": 1 },
- { "label": "R", "x": 5.5, "y": 1 },
- { "label": "T", "x": 6.5, "y": 1 },
- { "label": "Y", "x": 7.5, "y": 1 },
- { "label": "U", "x": 8.5, "y": 1 },
- { "label": "I", "x": 9.5, "y": 1 },
- { "label": "O", "x": 10.5, "y": 1 },
- { "label": "P", "x": 11.5, "y": 1 },
- { "label": "[", "x": 12.5, "y": 1 },
- { "label": "]", "x": 13.5, "y": 1 },
- { "label": "\\", "w": 1.5, "x": 14.5, "y": 1 },
- { "label": "Caps Lock", "w": 1.75, "x": 0.75, "y": 2 },
- { "label": "A", "x": 2.5, "y": 2 },
- { "label": "S", "x": 3.5, "y": 2 },
- { "label": "D", "x": 4.5, "y": 2 },
- { "label": "F", "x": 5.5, "y": 2 },
- { "label": "G", "x": 6.5, "y": 2 },
- { "label": "H", "x": 7.5, "y": 2 },
- { "label": "J", "x": 8.5, "y": 2 },
- { "label": "K", "x": 9.5, "y": 2 },
- { "label": "L", "x": 10.5, "y": 2 },
- { "label": ";", "x": 11.5, "y": 2 },
- { "label": "'", "x": 12.5, "y": 2 },
- { "label": "Enter", "w": 2.25, "x": 13.5, "y": 2 },
- { "label": "CapsLock", "x": 0.25, "y": 3 },
- { "label": "Shift", "w": 1.25, "x": 1.25, "y": 3 },
- { "label": "Z", "x": 2.5, "y": 3 },
- { "label": "X", "x": 3.5, "y": 3 },
- { "label": "C", "x": 4.5, "y": 3 },
- { "label": "V", "x": 5.5, "y": 3 },
- { "label": "B", "x": 6.5, "y": 3 },
- { "label": "N", "x": 7.5, "y": 3 },
- { "label": "M", "x": 8.5, "y": 3 },
- { "label": ",", "x": 9.5, "y": 3 },
- { "label": ".", "x": 10.5, "y": 3 },
- { "label": "/", "x": 11.5, "y": 3 },
- { "label": "Shift", "w": 1.75, "x": 12.5, "y": 3 },
- { "label": "Fn", "x": 14.25, "y": 3 },
- { "label": "\u2191", "x": 15.25, "y": 3 },
- { "label": "Super", "w": 1.25, "x": 0, "y": 4 },
- { "label": "Ctrl", "w": 1.25, "x": 1.25, "y": 4 },
- { "label": "Alt", "w": 1.25, "x": 3.37, "y": 4 },
- { "w": 2.75, "x": 4.62, "y": 4 },
- { "w": 2.25, "x": 7.37, "y": 4 },
- { "w": 1.25, "x": 9.62, "y": 4 },
- { "label": "Alt", "w": 1.25, "x": 10.87, "y": 4 },
- { "label": "Function", "w": 1.25, "x": 12.12, "y": 4 },
- { "label": "\u2190", "x": 14.25, "y": 4 },
- { "label": "\u2193", "x": 15.25, "y": 4 },
- { "label": "\u2192", "x": 16.25, "y": 4 }
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"Backspace", "x":14.5, "y":0, "w":2},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":2.75},
+ {"x":7.37, "y":4, "w":2.25},
+ {"x":9.62, "y":4, "w":1.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_ad5": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"Backspace", "x":14.5, "y":0, "w":2},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":14.25, "y":3},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":6.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_ads": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"Backspace", "x":14.5, "y":0, "w":2},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":14.25, "y":3},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":2.75},
+ {"x":7.37, "y":4, "w":2.25},
+ {"x":9.62, "y":4, "w":1.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_bc5": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"\u2190", "x":14.5, "y":0},
+ {"label":"Del", "x":15.5, "y":0},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":6.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_bcs": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"\u2190", "x":14.5, "y":0},
+ {"label":"Del", "x":15.5, "y":0},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":2.75},
+ {"x":7.37, "y":4, "w":2.25},
+ {"x":9.62, "y":4, "w":1.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_bd5": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"\u2190", "x":14.5, "y":0},
+ {"label":"Del", "x":15.5, "y":0},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":14.25, "y":3},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":6.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
+ ]
+ },
+ "LAYOUT_bds": {
+ "layout": [
+ {"label":"Mute", "x":0.5, "y":0},
+ {"label":"Esc", "x":1.5, "y":0},
+ {"label":"1", "x":2.5, "y":0},
+ {"label":"2", "x":3.5, "y":0},
+ {"label":"3", "x":4.5, "y":0},
+ {"label":"4", "x":5.5, "y":0},
+ {"label":"5", "x":6.5, "y":0},
+ {"label":"6", "x":7.5, "y":0},
+ {"label":"7", "x":8.5, "y":0},
+ {"label":"8", "x":9.5, "y":0},
+ {"label":"9", "x":10.5, "y":0},
+ {"label":"0", "x":11.5, "y":0},
+ {"label":"_", "x":12.5, "y":0},
+ {"label":"+", "x":13.5, "y":0},
+ {"label":"\u2190", "x":14.5, "y":0},
+ {"label":"Del", "x":15.5, "y":0},
+
+ {"label":"Tab", "x":1, "y":1, "w":1.5},
+ {"label":"Q", "x":2.5, "y":1},
+ {"label":"W", "x":3.5, "y":1},
+ {"label":"E", "x":4.5, "y":1},
+ {"label":"R", "x":5.5, "y":1},
+ {"label":"T", "x":6.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"[", "x":12.5, "y":1},
+ {"label":"]", "x":13.5, "y":1},
+ {"label":"\\", "x":14.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.75, "y":2, "w":1.75},
+ {"label":"A", "x":2.5, "y":2},
+ {"label":"S", "x":3.5, "y":2},
+ {"label":"D", "x":4.5, "y":2},
+ {"label":"F", "x":5.5, "y":2},
+ {"label":"G", "x":6.5, "y":2},
+ {"label":"H", "x":7.5, "y":2},
+ {"label":"J", "x":8.5, "y":2},
+ {"label":"K", "x":9.5, "y":2},
+ {"label":"L", "x":10.5, "y":2},
+ {"label":";", "x":11.5, "y":2},
+ {"label":"'", "x":12.5, "y":2},
+ {"label":"Enter", "x":13.5, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0.25, "y":3, "w":2.25},
+ {"label":"Z", "x":2.5, "y":3},
+ {"label":"X", "x":3.5, "y":3},
+ {"label":"C", "x":4.5, "y":3},
+ {"label":"V", "x":5.5, "y":3},
+ {"label":"B", "x":6.5, "y":3},
+ {"label":"N", "x":7.5, "y":3},
+ {"label":"M", "x":8.5, "y":3},
+ {"label":",", "x":9.5, "y":3},
+ {"label":".", "x":10.5, "y":3},
+ {"label":"/", "x":11.5, "y":3},
+ {"label":"Shift", "x":12.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":14.25, "y":3},
+ {"label":"\u2191", "x":15.25, "y":3},
+
+ {"label":"Super", "x":0, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.37, "y":4, "w":1.25},
+ {"x":4.62, "y":4, "w":2.75},
+ {"x":7.37, "y":4, "w":2.25},
+ {"x":9.62, "y":4, "w":1.25},
+ {"label":"Alt", "x":10.87, "y":4, "w":1.25},
+ {"label":"Function", "x":12.12, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":4},
+ {"label":"\u2193", "x":15.25, "y":4},
+ {"label":"\u2192", "x":16.25, "y":4}
]
}
}
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c
new file mode 100644
index 0000000000..06f9af8811
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 IOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_acs(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LGUI, KC_LCTL, KC_LALT, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, MO(_FUNCTN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_acs(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c
new file mode 100644
index 0000000000..0ceebfd3ce
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 IOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ad5(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_ad5(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RALT, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c
new file mode 100644
index 0000000000..614236bddc
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 IOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ads(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, KC_UP,
+ KC_LGUI, KC_LCTL, KC_LALT, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, MO(_FUNCTN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_ads(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c
new file mode 100644
index 0000000000..0de227f085
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2022 EOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_bc5(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_bc5(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RALT, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c
new file mode 100644
index 0000000000..bfb3bc5938
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2022 EOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_bcs(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LGUI, KC_LCTL, KC_LALT, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, MO(_FUNCTN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_bcs(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c
new file mode 100644
index 0000000000..022b62e932
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 IOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_bd5(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_bd5(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RALT, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c
new file mode 100644
index 0000000000..7755bab5a8
--- /dev/null
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2019 IOD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+enum custom_layers {
+ _QWERTY,
+ _FUNCTN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_bds(/* Base */
+ KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGUI, KC_UP,
+ KC_LGUI, KC_LCTL, KC_LALT, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, MO(_FUNCTN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FUNCTN] = LAYOUT_bds(/* Base */
+ RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c
index c66fb90c29..b0f7be00ac 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 IOD
+/* Copyright 2022 EOD
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,30 +20,19 @@ enum custom_layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_default(/* Base */
+ [_QWERTY] = LAYOUT_ac5(/* Base */
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
- [_FUNCTN] = LAYOUT_default(/* Base */
+ [_FUNCTN] = LAYOUT_ac5(/* Base */
RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RALT, KC_HOME, KC_PGDN, KC_END
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FUNCTN), KC_RCTL, KC_HOME, KC_PGDN, KC_END
)
-};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else{
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
+}; \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c
deleted file mode 100644
index 3ed21b6e4d..0000000000
--- a/keyboards/eyeohdesigns/sprh/keymaps/split/keymap.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright 2019 IOD
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-enum custom_layers {
- _QWERTY,
- _FUNCTN,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_split(/* Base */
- KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_MINS, KC_EQL,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FUNCTN), KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_ESC, MO(_FUNCTN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
- ),
-
- [_FUNCTN] = LAYOUT_split(/* Base */
- RESET, KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
- )
-};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else{
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
diff --git a/keyboards/eyeohdesigns/sprh/rules.mk b/keyboards/eyeohdesigns/sprh/rules.mk
index a8f69d103a..0727dc5a83 100644
--- a/keyboards/eyeohdesigns/sprh/rules.mk
+++ b/keyboards/eyeohdesigns/sprh/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eyeohdesigns/sprh/sprh.c b/keyboards/eyeohdesigns/sprh/sprh.c
index bc7ad7b9ba..903e0c68e2 100644
--- a/keyboards/eyeohdesigns/sprh/sprh.c
+++ b/keyboards/eyeohdesigns/sprh/sprh.c
@@ -13,4 +13,18 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "sprh.h" \ No newline at end of file
+#include "sprh.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/sprh/sprh.h b/keyboards/eyeohdesigns/sprh/sprh.h
index 772a40a977..5a367131c5 100644
--- a/keyboards/eyeohdesigns/sprh/sprh.h
+++ b/keyboards/eyeohdesigns/sprh/sprh.h
@@ -25,31 +25,115 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT_default( \
+#define LAYOUT_ac5( \
k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d,\
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,\
- k40, k41, k42, k46, k48, k49, k4b, k4c, k4d\
+ k40, k41, k42, k45, k48, k49, k4b, k4c, k4d\
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
{KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
- {k40, k41, k42, k43, KC_NO, KC_NO, k46, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\
+ {k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\
}
-#define LAYOUT_split( \
+#define LAYOUT_acs( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,\
+ k40, k41, k42, k44, k45, k46, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, k44, k45, k46, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\
+}
+#define LAYOUT_ad5( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k4a, k3d,\
+ k40, k41, k42, k45, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, k49, k4a, k4b, k4c, k4d},\
+}
+#define LAYOUT_ads( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k4a, k3d,\
+ k40, k41, k42, k44, k45, k46, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, k44, k45, k46, KC_NO, k48, k49, k4a, k4b, k4c, k4d},\
+}
+#define LAYOUT_bc5( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,\
+ k40, k41, k42, k45, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\
+}
+#define LAYOUT_bcs( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d,\
+ k40, k41, k42, k44, k45, k46, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, k49, KC_NO, k4b, k4c, k4d},\
+}
+#define LAYOUT_bd5( \
+ k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k4a, k3d,\
+ k40, k41, k42, k45, k48, k49, k4b, k4c, k4d\
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, k49, k4a, k4b, k4c, k4d},\
+}
+#define LAYOUT_bds( \
k43, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k2d,\
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,\
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c,\
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k49, k3d,\
- k40, k41, k42, k44, k45, k46, k47, k48, k4b, k4c, k4d\
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k4a, k3d,\
+ k40, k41, k42, k44, k45, k46, k48, k49, k4b, k4c, k4d\
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d},\
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d},\
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d},\
- {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
- {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, KC_NO, k4b, k4c, k4d},\
+ {KC_NO, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d},\
+ {k40, k41, k42, k43, k44, k45, k46, KC_NO, k48, k49, k4a, k4b, k4c, k4d},\
}
diff --git a/keyboards/eyeohdesigns/theboulevard/config.h b/keyboards/eyeohdesigns/theboulevard/config.h
new file mode 100644
index 0000000000..db734bbb6c
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 eye oh designs
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER eye oh designs
+#define PRODUCT theboulevard
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 13
+#define ENCODERS_PAD_A {F5}
+#define ENCODERS_PAD_B {F4}
+#define ENCODER_RESOLUTION 2
+
+#define MATRIX_ROW_PINS { F7, B1, E6, F0, F1 }
+#define MATRIX_COL_PINS { B0, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F6
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+
+#define DEBOUNCE 5 \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/theboulevard/info.json b/keyboards/eyeohdesigns/theboulevard/info.json
new file mode 100644
index 0000000000..ca2b888648
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/info.json
@@ -0,0 +1,38 @@
+{
+ "keyboard_name": "the boulevard",
+ "url": "",
+ "maintainer": "eye oh designs",
+ "layouts": {
+ "LAYOUT_ortho1": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5}, {"label":"A", "x":2.5, "y":2.5}, {"label":"S", "x":3.5, "y":2.5}, {"label":"D", "x":4.5, "y":2.5}, {"label":"F", "x":5.5, "y":2.5}, {"label":"G", "x":6.5, "y":2.5}, {"label":"H", "x":7.5, "y":2.5}, {"label":"J", "x":8.5, "y":2.5}, {"label":"K", "x":9.5, "y":2.5}, {"label":"L", "x":10.5, "y":2.5}, {"label":";", "x":11.5, "y":2.5}, {"label":"ENTER", "x":12.5, "y":2.5}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5}, {"label":"Z", "x":2.5, "y":3.5}, {"label":"X", "x":3.5, "y":3.5}, {"label":"C", "x":4.5, "y":3.5}, {"label":"V", "x":5.5, "y":3.5}, {"label":"B", "x":6.5, "y":3.5}, {"label":"N", "x":7.5, "y":3.5}, {"label":"M", "x":8.5, "y":3.5}, {"label":",", "x":9.5, "y":3.5}, {"label":".", "x":10.5, "y":3.5}, {"label":"/", "x":11.5, "y":3.5}, {"label":"SHIFT", "x":12.5, "y":3.5}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5}, {"x":3.5, "y":4.5}, {"x":4.5, "y":4.5}, {"x":5.5, "y":4.5}, {"x":6.5, "y":4.5, "w":2}, {"x":8.5, "y":4.5}, {"x":9.5, "y":4.5}, {"x":10.5, "y":4.5}, {"x":11.5, "y":4.5}, {"x":12.5, "y":4.5}]
+ },
+ "LAYOUT_ortho2": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5}, {"label":"A", "x":2.5, "y":2.5}, {"label":"S", "x":3.5, "y":2.5}, {"label":"D", "x":4.5, "y":2.5}, {"label":"F", "x":5.5, "y":2.5}, {"label":"G", "x":6.5, "y":2.5}, {"label":"H", "x":7.5, "y":2.5}, {"label":"J", "x":8.5, "y":2.5}, {"label":"K", "x":9.5, "y":2.5}, {"label":"L", "x":10.5, "y":2.5}, {"label":";", "x":11.5, "y":2.5}, {"label":"ENTER", "x":12.5, "y":2.5}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5}, {"label":"Z", "x":2.5, "y":3.5}, {"label":"X", "x":3.5, "y":3.5}, {"label":"C", "x":4.5, "y":3.5}, {"label":"V", "x":5.5, "y":3.5}, {"label":"B", "x":6.5, "y":3.5}, {"label":"N", "x":7.5, "y":3.5}, {"label":"M", "x":8.5, "y":3.5}, {"label":",", "x":9.5, "y":3.5}, {"label":".", "x":10.5, "y":3.5}, {"label":"/", "x":11.5, "y":3.5}, {"label":"SHIFT", "x":12.5, "y":3.5}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5}, {"x":3.5, "y":4.5}, {"x":4.5, "y":4.5}, {"x":5.5, "y":4.5, "w":2}, {"x":7.5, "y":4.5, "w":2}, {"x":9.5, "y":4.5}, {"x":10.5, "y":4.5}, {"x":11.5, "y":4.5}, {"x":12.5, "y":4.5}]
+ },
+ "LAYOUT_ortho3": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5}, {"label":"A", "x":2.5, "y":2.5}, {"label":"S", "x":3.5, "y":2.5}, {"label":"D", "x":4.5, "y":2.5}, {"label":"F", "x":5.5, "y":2.5}, {"label":"G", "x":6.5, "y":2.5}, {"label":"H", "x":7.5, "y":2.5}, {"label":"J", "x":8.5, "y":2.5}, {"label":"K", "x":9.5, "y":2.5}, {"label":"L", "x":10.5, "y":2.5}, {"label":";", "x":11.5, "y":2.5}, {"label":"ENTER", "x":12.5, "y":2.5}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5}, {"label":"Z", "x":2.5, "y":3.5}, {"label":"X", "x":3.5, "y":3.5}, {"label":"C", "x":4.5, "y":3.5}, {"label":"V", "x":5.5, "y":3.5}, {"label":"B", "x":6.5, "y":3.5}, {"label":"N", "x":7.5, "y":3.5}, {"label":"M", "x":8.5, "y":3.5}, {"label":",", "x":9.5, "y":3.5}, {"label":".", "x":10.5, "y":3.5}, {"label":"/", "x":11.5, "y":3.5}, {"label":"SHIFT", "x":12.5, "y":3.5}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5, "w":1.25}, {"x":2.75, "y":4.5}, {"x":3.75, "y":4.5, "w":1.25}, {"x":5, "y":4.5, "w":2.75}, {"x":7.75, "y":4.5, "w":2.25}, {"x":10, "y":4.5, "w":1.25}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.25}]
+ },
+ "LAYOUT_ortho4": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5}, {"label":"A", "x":2.5, "y":2.5}, {"label":"S", "x":3.5, "y":2.5}, {"label":"D", "x":4.5, "y":2.5}, {"label":"F", "x":5.5, "y":2.5}, {"label":"G", "x":6.5, "y":2.5}, {"label":"H", "x":7.5, "y":2.5}, {"label":"J", "x":8.5, "y":2.5}, {"label":"K", "x":9.5, "y":2.5}, {"label":"L", "x":10.5, "y":2.5}, {"label":";", "x":11.5, "y":2.5}, {"label":"ENTER", "x":12.5, "y":2.5}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5}, {"label":"Z", "x":2.5, "y":3.5}, {"label":"X", "x":3.5, "y":3.5}, {"label":"C", "x":4.5, "y":3.5}, {"label":"V", "x":5.5, "y":3.5}, {"label":"B", "x":6.5, "y":3.5}, {"label":"N", "x":7.5, "y":3.5}, {"label":"M", "x":8.5, "y":3.5}, {"label":",", "x":9.5, "y":3.5}, {"label":".", "x":10.5, "y":3.5}, {"label":"/", "x":11.5, "y":3.5}, {"label":"SHIFT", "x":12.5, "y":3.5}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5, "w":1.25}, {"x":2.75, "y":4.5}, {"x":3.75, "y":4.5, "w":6.25}, {"x":10, "y":4.5, "w":1.25}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.25}]
+ },
+ "LAYOUT_ortho5": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5}, {"label":"A", "x":2.5, "y":2.5}, {"label":"S", "x":3.5, "y":2.5}, {"label":"D", "x":4.5, "y":2.5}, {"label":"F", "x":5.5, "y":2.5}, {"label":"G", "x":6.5, "y":2.5}, {"label":"H", "x":7.5, "y":2.5}, {"label":"J", "x":8.5, "y":2.5}, {"label":"K", "x":9.5, "y":2.5}, {"label":"L", "x":10.5, "y":2.5}, {"label":";", "x":11.5, "y":2.5}, {"label":"ENTER", "x":12.5, "y":2.5}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5}, {"label":"Z", "x":2.5, "y":3.5}, {"label":"X", "x":3.5, "y":3.5}, {"label":"C", "x":4.5, "y":3.5}, {"label":"V", "x":5.5, "y":3.5}, {"label":"B", "x":6.5, "y":3.5}, {"label":"N", "x":7.5, "y":3.5}, {"label":"M", "x":8.5, "y":3.5}, {"label":",", "x":9.5, "y":3.5}, {"label":".", "x":10.5, "y":3.5}, {"label":"/", "x":11.5, "y":3.5}, {"label":"SHIFT", "x":12.5, "y":3.5}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5, "w":1.5}, {"x":4, "y":4.5, "w":7}, {"x":11, "y":4.5, "w":1.5}, {"x":12.5, "y":4.5}]
+ },
+ "LAYOUT_stagger1": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5, "w":1.25}, {"label":"A", "x":2.75, "y":2.5}, {"label":"S", "x":3.75, "y":2.5}, {"label":"D", "x":4.75, "y":2.5}, {"label":"F", "x":5.75, "y":2.5}, {"label":"G", "x":6.75, "y":2.5}, {"label":"H", "x":7.75, "y":2.5}, {"label":"J", "x":8.75, "y":2.5}, {"label":"K", "x":9.75, "y":2.5}, {"label":"L", "x":10.75, "y":2.5}, {"label":"Enter", "x":11.75, "y":2.5, "w":1.75}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5, "w":1.75}, {"label":"Z", "x":3.25, "y":3.5}, {"label":"X", "x":4.25, "y":3.5}, {"label":"C", "x":5.25, "y":3.5}, {"label":"V", "x":6.25, "y":3.5}, {"label":"B", "x":7.25, "y":3.5}, {"label":"N", "x":8.25, "y":3.5}, {"label":"M", "x":9.25, "y":3.5}, {"label":",", "x":10.25, "y":3.5}, {"label":".", "x":11.25, "y":3.5}, {"label":"Shift", "x":12.25, "y":3.5, "w":1.25}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5}, {"x":3.5, "y":4.5}, {"x":4.5, "y":4.5}, {"x":5.5, "y":4.5}, {"x":6.5, "y":4.5, "w":2}, {"x":8.5, "y":4.5}, {"x":9.5, "y":4.5}, {"x":10.5, "y":4.5}, {"x":11.5, "y":4.5}, {"x":12.5, "y":4.5}]
+ },
+ "LAYOUT_stagger2": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5, "w":1.25}, {"label":"A", "x":2.75, "y":2.5}, {"label":"S", "x":3.75, "y":2.5}, {"label":"D", "x":4.75, "y":2.5}, {"label":"F", "x":5.75, "y":2.5}, {"label":"G", "x":6.75, "y":2.5}, {"label":"H", "x":7.75, "y":2.5}, {"label":"J", "x":8.75, "y":2.5}, {"label":"K", "x":9.75, "y":2.5}, {"label":"L", "x":10.75, "y":2.5}, {"label":"Enter", "x":11.75, "y":2.5, "w":1.75}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5, "w":1.75}, {"label":"Z", "x":3.25, "y":3.5}, {"label":"X", "x":4.25, "y":3.5}, {"label":"C", "x":5.25, "y":3.5}, {"label":"V", "x":6.25, "y":3.5}, {"label":"B", "x":7.25, "y":3.5}, {"label":"N", "x":8.25, "y":3.5}, {"label":"M", "x":9.25, "y":3.5}, {"label":",", "x":10.25, "y":3.5}, {"label":".", "x":11.25, "y":3.5}, {"label":"Shift", "x":12.25, "y":3.5, "w":1.25}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5}, {"x":3.5, "y":4.5}, {"x":4.5, "y":4.5}, {"x":5.5, "y":4.5, "w":2}, {"x":7.5, "y":4.5, "w":2}, {"x":9.5, "y":4.5}, {"x":10.5, "y":4.5}, {"x":11.5, "y":4.5}, {"x":12.5, "y":4.5}]
+ },
+ "LAYOUT_stagger3": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5, "w":1.25}, {"label":"A", "x":2.75, "y":2.5}, {"label":"S", "x":3.75, "y":2.5}, {"label":"D", "x":4.75, "y":2.5}, {"label":"F", "x":5.75, "y":2.5}, {"label":"G", "x":6.75, "y":2.5}, {"label":"H", "x":7.75, "y":2.5}, {"label":"J", "x":8.75, "y":2.5}, {"label":"K", "x":9.75, "y":2.5}, {"label":"L", "x":10.75, "y":2.5}, {"label":"Enter", "x":11.75, "y":2.5, "w":1.75}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5, "w":1.75}, {"label":"Z", "x":3.25, "y":3.5}, {"label":"X", "x":4.25, "y":3.5}, {"label":"C", "x":5.25, "y":3.5}, {"label":"V", "x":6.25, "y":3.5}, {"label":"B", "x":7.25, "y":3.5}, {"label":"N", "x":8.25, "y":3.5}, {"label":"M", "x":9.25, "y":3.5}, {"label":",", "x":10.25, "y":3.5}, {"label":".", "x":11.25, "y":3.5}, {"label":"Shift", "x":12.25, "y":3.5, "w":1.25}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5, "w":1.25}, {"x":2.75, "y":4.5}, {"x":3.75, "y":4.5, "w":1.25}, {"x":5, "y":4.5, "w":2.75}, {"x":7.75, "y":4.5, "w":2.25}, {"x":10, "y":4.5, "w":1.25}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.25}]
+ },
+ "LAYOUT_stagger4": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5, "w":1.25}, {"label":"A", "x":2.75, "y":2.5}, {"label":"S", "x":3.75, "y":2.5}, {"label":"D", "x":4.75, "y":2.5}, {"label":"F", "x":5.75, "y":2.5}, {"label":"G", "x":6.75, "y":2.5}, {"label":"H", "x":7.75, "y":2.5}, {"label":"J", "x":8.75, "y":2.5}, {"label":"K", "x":9.75, "y":2.5}, {"label":"L", "x":10.75, "y":2.5}, {"label":"Enter", "x":11.75, "y":2.5, "w":1.75}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5, "w":1.75}, {"label":"Z", "x":3.25, "y":3.5}, {"label":"X", "x":4.25, "y":3.5}, {"label":"C", "x":5.25, "y":3.5}, {"label":"V", "x":6.25, "y":3.5}, {"label":"B", "x":7.25, "y":3.5}, {"label":"N", "x":8.25, "y":3.5}, {"label":"M", "x":9.25, "y":3.5}, {"label":",", "x":10.25, "y":3.5}, {"label":".", "x":11.25, "y":3.5}, {"label":"Shift", "x":12.25, "y":3.5, "w":1.25}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5, "w":1.25}, {"x":2.75, "y":4.5}, {"x":3.75, "y":4.5, "w":6.25}, {"x":10, "y":4.5, "w":1.25}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.25}]
+ },
+ "LAYOUT_stagger5": {
+ "layout": [{"label":"Knob", "x":0, "y":0}, {"x":1.5, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":0, "y":1.5}, {"label":"ESC", "x":1.5, "y":1.5}, {"label":"Q", "x":2.5, "y":1.5}, {"label":"W", "x":3.5, "y":1.5}, {"label":"E", "x":4.5, "y":1.5}, {"label":"R", "x":5.5, "y":1.5}, {"label":"T", "x":6.5, "y":1.5}, {"label":"Y", "x":7.5, "y":1.5}, {"label":"U", "x":8.5, "y":1.5}, {"label":"I", "x":9.5, "y":1.5}, {"label":"O", "x":10.5, "y":1.5}, {"label":"P", "x":11.5, "y":1.5}, {"label":"BKSPC", "x":12.5, "y":1.5}, {"x":0, "y":2.5}, {"label":"TAB", "x":1.5, "y":2.5, "w":1.25}, {"label":"A", "x":2.75, "y":2.5}, {"label":"S", "x":3.75, "y":2.5}, {"label":"D", "x":4.75, "y":2.5}, {"label":"F", "x":5.75, "y":2.5}, {"label":"G", "x":6.75, "y":2.5}, {"label":"H", "x":7.75, "y":2.5}, {"label":"J", "x":8.75, "y":2.5}, {"label":"K", "x":9.75, "y":2.5}, {"label":"L", "x":10.75, "y":2.5}, {"label":"Enter", "x":11.75, "y":2.5, "w":1.75}, {"x":0, "y":3.5}, {"label":"SHIFT", "x":1.5, "y":3.5, "w":1.75}, {"label":"Z", "x":3.25, "y":3.5}, {"label":"X", "x":4.25, "y":3.5}, {"label":"C", "x":5.25, "y":3.5}, {"label":"V", "x":6.25, "y":3.5}, {"label":"B", "x":7.25, "y":3.5}, {"label":"N", "x":8.25, "y":3.5}, {"label":"M", "x":9.25, "y":3.5}, {"label":",", "x":10.25, "y":3.5}, {"label":".", "x":11.25, "y":3.5}, {"label":"Shift", "x":12.25, "y":3.5, "w":1.25}, {"x":0, "y":4.5}, {"x":1.5, "y":4.5}, {"x":2.5, "y":4.5, "w":1.5}, {"x":4, "y":4.5, "w":7}, {"x":11, "y":4.5, "w":1.5}, {"x":12.5, "y":4.5}]
+ }
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/default/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bda0c900d0
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ortho1(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F4, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_ortho1(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SCLN, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT,
+ KC_F8, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_ortho1(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
+ KC_F12, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c
new file mode 100644
index 0000000000..38d4bbfb47
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ortho2(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F4, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_ortho2(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SCLN, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT,
+ KC_F8, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_ortho2(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
+ KC_F12, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c
new file mode 100644
index 0000000000..d4dbd5aa92
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ortho3(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F4, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_ortho3(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SCLN, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT,
+ KC_F8, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_ortho3(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
+ KC_F12, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c
new file mode 100644
index 0000000000..2c9f792e51
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ortho4(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F4, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_ortho4(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SCLN, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT,
+ KC_F8, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_ortho4(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
+ KC_F12, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c
new file mode 100644
index 0000000000..09fc9e5fac
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_ortho5(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F4, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_ortho5(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_SCLN, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, KC_BSLS, KC_RSFT,
+ KC_F8, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_ortho5(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_RSFT,
+ KC_F12, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c
new file mode 100644
index 0000000000..f0a19ce659
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_stagger1(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_F4, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_stagger1(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_BSLS),
+ KC_F8, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_stagger1(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F12, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), MO(_NUMBRS), KC_RALT, KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c
new file mode 100644
index 0000000000..189e584371
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_stagger2(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_F4, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_stagger2(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_BSLS),
+ KC_F8, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_stagger2(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F12, KC_LCTL, KC_LGUI, MO(_FUNCTN), KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RALT, KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c
new file mode 100644
index 0000000000..da25899479
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_stagger3(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_F4, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_stagger3(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_BSLS),
+ KC_F8, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_stagger3(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F12, KC_LCTL, KC_LGUI, KC_LALT, MO(_NUMBRS), KC_SPACE, MO(_FUNCTN), KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c
new file mode 100644
index 0000000000..2a4910965c
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_stagger4(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_F4, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_stagger4(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_BSLS),
+ KC_F8, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_stagger4(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F12, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RCTL, KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c
new file mode 100644
index 0000000000..367cf1ccb5
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _FUNCTN,
+ _NUMBRS,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_stagger5(
+ KC_MUTE, KC_ESC, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F1, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F2, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_F4, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ ),
+
+ [_FUNCTN] = LAYOUT_stagger5(
+ RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ KC_F5, KC_TAB, KC_Q, KC_PGUP, KC_E, KC_R, KC_T, KC_QUOT, KC_U, KC_UP, KC_O, KC_P, KC_BSPC,
+ KC_F6, KC_CAPS, KC_HOME, KC_PGDN, KC_END, KC_F, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
+ KC_F7, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_BSLS),
+ KC_F8, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ ),
+ [_NUMBRS] = LAYOUT_stagger5(
+ KC_MUTE, KC_GRAVE, RGB_HUI, RGB_VAI, RGB_SAI,
+ KC_F9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_F10, KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_F11, KC_LSFT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F12, KC_LCTL, KC_LALT, LT(_NUMBRS,KC_SPC), MO(_FUNCTN), KC_RGUI
+ )
+};
diff --git a/keyboards/eyeohdesigns/theboulevard/readme.md b/keyboards/eyeohdesigns/theboulevard/readme.md
new file mode 100644
index 0000000000..c1f29becb7
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/readme.md
@@ -0,0 +1,21 @@
+# theboulevard
+
+![theboulevard](https://i.imgur.com/LavWn91.jpg)
+
+The Boulevard is an open source battlestation style keyboard.
+
+* Keyboard Maintainer: [eye oh designs](https://github.com/yourusername)
+* Hardware Supported: The Boulevard ver 1.00
+* Hardware Availability: https://github.com/joedinkle/eyeohdesigns
+
+Make example for this keyboard (after setting up your build environment):
+
+ make eyeohdesigns/theboulevard:default
+
+Flashing example for this keyboard:
+
+ make eyeohdesigns/theboulevard:default:flash
+
+To enter the bootloader, either depress the reset button on the back of the PCB, or use the 'RESET' keycode found on the function layer.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/theboulevard/rules.mk b/keyboards/eyeohdesigns/theboulevard/rules.mk
new file mode 100644
index 0000000000..824dd0089f
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/theboulevard/theboulevard.c b/keyboards/eyeohdesigns/theboulevard/theboulevard.c
new file mode 100644
index 0000000000..a2b40cd9e9
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/theboulevard.c
@@ -0,0 +1,31 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "theboulevard.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/eyeohdesigns/theboulevard/theboulevard.h b/keyboards/eyeohdesigns/theboulevard/theboulevard.h
new file mode 100644
index 0000000000..0b4828a1b1
--- /dev/null
+++ b/keyboards/eyeohdesigns/theboulevard/theboulevard.h
@@ -0,0 +1,169 @@
+/* Copyright 2021 eye oh designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho1( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_ortho2( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, KC_NO, KC_NO, k48, k49, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_ortho3( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k45, k48, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, KC_NO, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_ortho4( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k46, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_ortho5( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k47, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k4b, k4c }\
+}
+
+#define LAYOUT_stagger1( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, KC_NO, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_stagger2( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k48, k49, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, KC_NO, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, k44, k45, KC_NO, KC_NO, k48, k49, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_stagger3( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k45, k48, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, KC_NO, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, k43, KC_NO, k45, KC_NO, KC_NO, k48, KC_NO, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_stagger4( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k46, k4a, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, KC_NO, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, KC_NO, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, k4c }\
+}
+
+#define LAYOUT_stagger5( \
+ k00, k01, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
+ k20, k21, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k47, k4b, k4c \
+) \
+{ \
+ { k00, k01, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k0a, k0b, k0c },\
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c },\
+ { k20, k21, KC_NO, k23, k24, k25, k26, k27, k28, k29, k2a, KC_NO, k2c },\
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c }, \
+ { k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k4b, k4c }\
+}
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/info.json b/keyboards/ez_maker/directpins/teensy_2pp/info.json
index e12544a5ef..578fe1c0db 100644
--- a/keyboards/ez_maker/directpins/teensy_2pp/info.json
+++ b/keyboards/ez_maker/directpins/teensy_2pp/info.json
@@ -31,7 +31,7 @@
["C4", "A7", "A3", "F4"],
["C5", null, null, "F5"],
["C6", null, null, "F6"],
- ["C7", null, null, "F7"],
+ ["C7", null, null, "F7"]
]
},
"usb": {
diff --git a/keyboards/ez_maker/directpins/teensy_32/info.json b/keyboards/ez_maker/directpins/teensy_32/info.json
index e0c024ec94..207bc4fd0b 100644
--- a/keyboards/ez_maker/directpins/teensy_32/info.json
+++ b/keyboards/ez_maker/directpins/teensy_32/info.json
@@ -23,7 +23,7 @@
["LINE_PIN9", null, "LINE_PIN16"],
["LINE_PIN10", null, "LINE_PIN15"],
["LINE_PIN11", null, "LINE_PIN14"],
- ["LINE_PIN12", "E30", "LINE_PIN13"],
+ ["LINE_PIN12", "E30", "LINE_PIN13"]
]
},
"usb": {
diff --git a/keyboards/ez_maker/directpins/teensy_lc/info.json b/keyboards/ez_maker/directpins/teensy_lc/info.json
index bf93c41fab..8477fd0d83 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/info.json
+++ b/keyboards/ez_maker/directpins/teensy_lc/info.json
@@ -23,7 +23,7 @@
["LINE_PIN9", null, "LINE_PIN16"],
["LINE_PIN10", null, "LINE_PIN15"],
["LINE_PIN11", null, "LINE_PIN14"],
- ["LINE_PIN12", "E30", "LINE_PIN13"],
+ ["LINE_PIN12", "E30", "LINE_PIN13"]
]
},
"usb": {
diff --git a/keyboards/facew/rules.mk b/keyboards/facew/rules.mk
index 96f4fd3d71..ff226444b8 100644
--- a/keyboards/facew/rules.mk
+++ b/keyboards/facew/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk
index 78ee2f1f69..006f632528 100755
--- a/keyboards/fallacy/rules.mk
+++ b/keyboards/fallacy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fc660c/keymaps/default/config.h b/keyboards/fc660c/keymaps/default/config.h
deleted file mode 100644
index b89b05009a..0000000000
--- a/keyboards/fc660c/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Balz Guenat
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/fc660c/keymaps/default_rgb/config.h b/keyboards/fc660c/keymaps/default_rgb/config.h
new file mode 100644
index 0000000000..13153dd8fa
--- /dev/null
+++ b/keyboards/fc660c/keymaps/default_rgb/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2017 Balz Guenat
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
+
+/*RGB*/
+/*Repurpose Insert LED */
+#define RGB_DI_PIN B5
+ #ifdef RGB_DI_PIN
+ #define RGBLED_NUM 16
+ #define RGBLIGHT_DEFAULT_HUE 127
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+ /*== all animations enable ==*/
+ //#define RGBLIGHT_ANIMATIONS
+ /*== or choose animations ==*/
+ #define RGBLIGHT_EFFECT_PLAIN
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+ /*== customize breathing effect ==*/
+ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ //#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ /*==== use exp() and sin() ====*/
+ //#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+ //#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+ #endif \ No newline at end of file
diff --git a/keyboards/fc660c/keymaps/default_rgb/keymap.c b/keyboards/fc660c/keymaps/default_rgb/keymap.c
new file mode 100644
index 0000000000..677797e39b
--- /dev/null
+++ b/keyboards/fc660c/keymaps/default_rgb/keymap.c
@@ -0,0 +1,46 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RCTL,MO(1), KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_END, KC_PGDN,_______,_______, KC_PGUP,
+ _______,_______,_______, _______, _______,MO(2), _______, KC_HOME,KC_PGDN,KC_END
+ ),
+ [2] = LAYOUT(
+ RESET, EEPROM_RESET,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_TOG,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_MOD,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAI,
+ _______,_______,_______, _______, _______,_______,_______, RGB_HUI,_______,RGB_SAI
+ ),
+ [3] = LAYOUT(
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______,_______,_______, _______,_______,_______
+ )
+};
diff --git a/keyboards/fc660c/keymaps/default_rgb/readme.md b/keyboards/fc660c/keymaps/default_rgb/readme.md
new file mode 100644
index 0000000000..e52576231a
--- /dev/null
+++ b/keyboards/fc660c/keymaps/default_rgb/readme.md
@@ -0,0 +1,6 @@
+# Keymap with Insert LED remapped to RGB control
+
+Emulates original keymap, but replaces insert LED pin with RGB Underglow & respective configuration.
+Allows users to add underglow lighting. See [this keebtalk thread](https://www.keebtalk.com/t/adding-rgb-to-fc660c-with-hasu-controller/14484) for more information.
+
+![](https://i.imgur.com/fg89nez.jpg)
diff --git a/keyboards/fc660c/keymaps/default_rgb/rules.mk b/keyboards/fc660c/keymaps/default_rgb/rules.mk
new file mode 100644
index 0000000000..7ad666d1a3
--- /dev/null
+++ b/keyboards/fc660c/keymaps/default_rgb/rules.mk
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/fc660c/keymaps/via_rgb/config.h b/keyboards/fc660c/keymaps/via_rgb/config.h
new file mode 100644
index 0000000000..13153dd8fa
--- /dev/null
+++ b/keyboards/fc660c/keymaps/via_rgb/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2017 Balz Guenat
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
+
+/*RGB*/
+/*Repurpose Insert LED */
+#define RGB_DI_PIN B5
+ #ifdef RGB_DI_PIN
+ #define RGBLED_NUM 16
+ #define RGBLIGHT_DEFAULT_HUE 127
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+ /*== all animations enable ==*/
+ //#define RGBLIGHT_ANIMATIONS
+ /*== or choose animations ==*/
+ #define RGBLIGHT_EFFECT_PLAIN
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ //#define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ //#define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ //#define RGBLIGHT_EFFECT_RGB_TEST
+ //#define RGBLIGHT_EFFECT_ALTERNATING
+ /*== customize breathing effect ==*/
+ /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ //#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+ /*==== use exp() and sin() ====*/
+ //#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+ //#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+ #endif \ No newline at end of file
diff --git a/keyboards/fc660c/keymaps/via_rgb/keymap.c b/keyboards/fc660c/keymaps/via_rgb/keymap.c
new file mode 100644
index 0000000000..f9d95b332d
--- /dev/null
+++ b/keyboards/fc660c/keymaps/via_rgb/keymap.c
@@ -0,0 +1,46 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RCTL,MO(1), KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_END, KC_PGDN,_______,_______, KC_PGUP,
+ _______,_______,_______, _______, _______,MO(2), _______, KC_HOME,KC_PGDN,KC_END
+ ),
+ [2] = LAYOUT(
+ RESET, EEPROM_RESET,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_MOD,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAI,
+ _______,_______,_______, _______, _______,_______,_______, RGB_HUI,_______,RGB_SAI
+ ),
+ [3] = LAYOUT(
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______,_______,_______, _______,_______,_______
+ )
+};
diff --git a/keyboards/fc660c/keymaps/via_rgb/readme.md b/keyboards/fc660c/keymaps/via_rgb/readme.md
new file mode 100644
index 0000000000..7e16e937d3
--- /dev/null
+++ b/keyboards/fc660c/keymaps/via_rgb/readme.md
@@ -0,0 +1,6 @@
+# Keymap with Insert LED remapped to RGB control
+
+Emulates original VIA keymap, but replaces insert LED pin with RGB Underglow & respective configuration.
+Allows users to add underglow lighting. See [this keebtalk thread](https://www.keebtalk.com/t/adding-rgb-to-fc660c-with-hasu-controller/14484) for more information.
+
+![](https://i.imgur.com/fg89nez.jpg)
diff --git a/keyboards/fc660c/keymaps/via_rgb/rules.mk b/keyboards/fc660c/keymaps/via_rgb/rules.mk
new file mode 100644
index 0000000000..0345a48f7d
--- /dev/null
+++ b/keyboards/fc660c/keymaps/via_rgb/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+COMMAND_ENABLE = no \ No newline at end of file
diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk
index 1b6187acb3..b1b11676bb 100644
--- a/keyboards/fc660c/rules.mk
+++ b/keyboards/fc660c/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
diff --git a/keyboards/fc980c/keymaps/default/config.h b/keyboards/fc980c/keymaps/default/config.h
deleted file mode 100644
index 20fd511474..0000000000
--- a/keyboards/fc980c/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2017 Balz Guenat
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk
index 1b6187acb3..b1b11676bb 100644
--- a/keyboards/fc980c/rules.mk
+++ b/keyboards/fc980c/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
diff --git a/keyboards/feels/feels65/rules.mk b/keyboards/feels/feels65/rules.mk
index c28943230a..bd527e9598 100644
--- a/keyboards/feels/feels65/rules.mk
+++ b/keyboards/feels/feels65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/felix/rules.mk b/keyboards/felix/rules.mk
index 3efb7c99a6..9fbe5d4dad 100644
--- a/keyboards/felix/rules.mk
+++ b/keyboards/felix/rules.mk
@@ -12,9 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ferris/0_1/0_1.h b/keyboards/ferris/0_1/0_1.h
index 4602637ca6..2f58831df7 100644
--- a/keyboards/ferris/0_1/0_1.h
+++ b/keyboards/ferris/0_1/0_1.h
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// clang-format off
/* left hand right hand */
-#define LAYOUT(\
+#define LAYOUT_split_3x5_2(\
K0_0, K0_1, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9,\
K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9,\
K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9,\
@@ -41,3 +41,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
}
// clang-format on
+#define LAYOUT LAYOUT_split_3x5_2
diff --git a/keyboards/ferris/0_1/rules.mk b/keyboards/ferris/0_1/rules.mk
index 1369a41b86..4b8f1f0c9a 100644
--- a/keyboards/ferris/0_1/rules.mk
+++ b/keyboards/ferris/0_1/rules.mk
@@ -4,6 +4,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
@@ -11,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -25,3 +23,5 @@ LTO_ENABLE = yes
SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
+
+LAYOUTS = split_3x5_2
diff --git a/keyboards/ferris/0_2/0_2.h b/keyboards/ferris/0_2/0_2.h
index 4602637ca6..2f58831df7 100644
--- a/keyboards/ferris/0_2/0_2.h
+++ b/keyboards/ferris/0_2/0_2.h
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// clang-format off
/* left hand right hand */
-#define LAYOUT(\
+#define LAYOUT_split_3x5_2(\
K0_0, K0_1, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9,\
K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9,\
K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9,\
@@ -41,3 +41,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
}
// clang-format on
+#define LAYOUT LAYOUT_split_3x5_2
diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk
index 75ec20b4db..2d406f5c1d 100644
--- a/keyboards/ferris/0_2/rules.mk
+++ b/keyboards/ferris/0_2/rules.mk
@@ -4,6 +4,7 @@ MCU = STM32F072
# Bootloader selection
BOOTLOADER = stm32-dfu
+# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -11,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -25,3 +23,5 @@ LTO_ENABLE = no
SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
+
+LAYOUTS = split_3x5_2
diff --git a/keyboards/ferris/info.json b/keyboards/ferris/info.json
index d167bc3f37..93470c7253 100644
--- a/keyboards/ferris/info.json
+++ b/keyboards/ferris/info.json
@@ -3,7 +3,7 @@
"url": "https://github.com/pierrechevalier83/ferris/",
"maintainer": "@pierrec83",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 0.93},
{"x": 1, "y": 0.31},
diff --git a/keyboards/ferris/keymaps/default/keymap.json b/keyboards/ferris/keymaps/default/keymap.json
index f651b2d8c8..b7f635b758 100644
--- a/keyboards/ferris/keymaps/default/keymap.json
+++ b/keyboards/ferris/keymaps/default/keymap.json
@@ -3,7 +3,7 @@
"documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
"keyboard": "ferris/0_1",
"keymap": "default",
- "layout": "LAYOUT",
+ "layout": "LAYOUT_split_3x5_2",
"layers": [
["KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T",
"KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P",
diff --git a/keyboards/ferris/keymaps/via/keymap.c b/keyboards/ferris/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b1ccd84fee
--- /dev/null
+++ b/keyboards/ferris/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include QMK_KEYBOARD_H
+
+#define KC_CTSC RCTL_T(KC_SCLN)
+#define KC_CTLA LCTL_T(KC_A)
+#define KC_LSHZ LSFT_T(KC_Z)
+#define KC_RLSH RSFT_T(KC_SLSH)
+#define KC_SPM2 LT(2, KC_SPC)
+#define KC_BSM1 LT(1, KC_BSPC)
+#define KC_GUTA GUI_T(KC_TAB)
+#define KC_CLGV CTL_T(KC_GRV)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_CTLA, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_LSHZ, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RLSH,
+ KC_CLGV, KC_BSM1, KC_SPM2, KC_GUTA
+ ),
+
+ [1] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_GESC, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/ferris/keymaps/via/rules.mk b/keyboards/ferris/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/ferris/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/ferris/sweep/config.h b/keyboards/ferris/sweep/config.h
index 702f31a895..4d4d7d309f 100644
--- a/keyboards/ferris/sweep/config.h
+++ b/keyboards/ferris/sweep/config.h
@@ -1,4 +1,7 @@
-/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com>
+/* Copyright 2018-2020
+ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+David Philip Barr <@davidphilipbarr>
+Pierre Chevalier <pierrechevalier83@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -61,11 +64,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
/* Serial settings */
#define USE_SERIAL
/* serial.c configuration for split keyboard */
@@ -74,8 +72,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EE_HANDS
/* Top left key on left half */
-#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
/* Top right key on right half */
-#define BOOTMAGIC_LITE_ROW_RIGHT 4
+#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 4
diff --git a/keyboards/ferris/sweep/readme.md b/keyboards/ferris/sweep/readme.md
index a8cbf8fd80..332ab2c790 100644
--- a/keyboards/ferris/sweep/readme.md
+++ b/keyboards/ferris/sweep/readme.md
@@ -8,9 +8,8 @@ A version of the Ferris keyboard that uses a daughterboard, designed by the fant
## Keyboard Info
* Keyboard Maintainer: [Pierre Chevalier](https://github.com/pierrechevalier83)
-* Hardware Supported:
- * Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout)
-* Hardware Availability: @iamnotyourbroom in the 40% discord chat server may have some spares for you.
+* Hardware Supported: [Sweep](https://github.com/davidphilipbarr/Sweep) (all versions)
+* Hardware Availability: Print the PCB with gerber files from the repository
Make example for this keyboard (after setting up your build environment):
@@ -20,18 +19,43 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Setting Handedness
-Keyboard uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default. The make commands are:
+Firmware uses [handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default and it must be *configured once* on each side. The make commands for Pro micros are:
make ferris/sweep:default:avrdude-split-left
make ferris/sweep:default:avrdude-split-right
+For Elite-C or compatible controllers using `DFU` bootloader, add the line `BOOTLOADER = atmel-dfu` into the user keymap `rules.mk` file and use the following make commands:
+
+ make ferris/sweep:default:dfu-split-left
+ make ferris/sweep:default:dfu-split-right
+
[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand
## Bootloader
Enter the bootloader in 3 ways:
-* **Bootmagic reset**: Hold down the top left key on the left half (or the top right right key on the right half) and plug in the controller on that side.
+* **Bootmagic reset**: Hold down the top left key on the left half (or the top right key on the right half) and plug in the controller on that side.
* **Physical reset button**: Briefly press the reset button soldered on the PCB.
* **Keycode in layout**: Press the key mapped to `RESET` if it is configured.
+## Swapped Pins
+
+If you printed one of the PCB variant with swapped letters `Q` and `B` / `P` and `N`, add the following code to your keymap's `config.h` to swap pins `E6` and `D7` in the firmware:
+```c
+#undef DIRECT_PINS
+#define DIRECT_PINS { \
+ { D7, F7, F6, F5, F4 }, \
+ { B1, B3, B2, B6, D3 }, \
+ { D1, D0, D4, C6, E6 }, \
+ { B4, B5, NO_PIN, NO_PIN, NO_PIN } \
+}
+#undef DIRECT_PINS_RIGHT
+#define DIRECT_PINS_RIGHT { \
+ { F4, F5, F6, F7, D7 }, \
+ { D3, B6, B2, B3, B1 }, \
+ { E6, C6, D4, D0, D1 }, \
+ { B5, B4, NO_PIN, NO_PIN, NO_PIN } \
+}
+```
+
diff --git a/keyboards/ferris/sweep/rules.mk b/keyboards/ferris/sweep/rules.mk
index 2ebda6a6aa..ffc17739f7 100644
--- a/keyboards/ferris/sweep/rules.mk
+++ b/keyboards/ferris/sweep/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes # Use shared split_common code
+LAYOUTS = split_3x5_2
diff --git a/keyboards/ferris/sweep/sweep.c b/keyboards/ferris/sweep/sweep.c
index 5b41bad848..98467f18ae 100644
--- a/keyboards/ferris/sweep/sweep.c
+++ b/keyboards/ferris/sweep/sweep.c
@@ -14,3 +14,20 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "sweep.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ // Left
+ {{4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{1, 7}, {0, 7}, {2, 7}, {3, 7}, {4, 7}},
+ // Right
+ {{4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}}
+};
+#endif
+
diff --git a/keyboards/ferris/sweep/sweep.h b/keyboards/ferris/sweep/sweep.h
index e8d66ebc67..ebfa4ede1d 100644
--- a/keyboards/ferris/sweep/sweep.h
+++ b/keyboards/ferris/sweep/sweep.h
@@ -28,7 +28,7 @@
// readability
#define ___ KC_NO
-#define LAYOUT( \
+#define LAYOUT_split_3x5_2( \
L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
@@ -45,3 +45,4 @@
{ R16, R17, ___, ___, ___ } \
}
+#define LAYOUT LAYOUT_split_3x5_2
diff --git a/keyboards/ffkeebs/puca/rules.mk b/keyboards/ffkeebs/puca/rules.mk
index ede448ac23..1d3a66c797 100644
--- a/keyboards/ffkeebs/puca/rules.mk
+++ b/keyboards/ffkeebs/puca/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/ffkeebs/siris/rules.mk b/keyboards/ffkeebs/siris/rules.mk
index 812a7965e4..20114254e4 100644
--- a/keyboards/ffkeebs/siris/rules.mk
+++ b/keyboards/ffkeebs/siris/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/7vhotswap/7vhotswap.c b/keyboards/fjlabs/7vhotswap/7vhotswap.c
new file mode 100644
index 0000000000..60a9dffc43
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/7vhotswap.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2021 <me@fjlaboratories.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "7vhotswap.h"
diff --git a/keyboards/fjlabs/7vhotswap/7vhotswap.h b/keyboards/fjlabs/7vhotswap/7vhotswap.h
new file mode 100644
index 0000000000..741f7d53af
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/7vhotswap.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 <me@fjlaboratories.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* === All used matrix spots populated === */
+#define LAYOUT_75_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, \
+ K50, K51, K52, K55, K59, K5A, K5C, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, KC_NO, K5C, K5D, K5E } \
+}
diff --git a/keyboards/fjlabs/7vhotswap/config.h b/keyboards/fjlabs/7vhotswap/config.h
new file mode 100644
index 0000000000..a34bf8f5fa
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/config.h
@@ -0,0 +1,118 @@
+/*
+Copyright 2021 <me@fjlaboratories.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7074 // FJLaboratories
+#define PRODUCT_ID 0x0014 // 7V Hotswap
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER FJLaboratories
+#define PRODUCT 7V Hotswap
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *å
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B0, F4, F1, F7, F6, F5 }
+#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Define RGB */
+#define RGB_DI_PIN C7
+#define RGBLED_NUM 4
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LIMIT_VAL 255
+#define RGB_VAL_STEP 12
+
+/* Define less important options */
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/fjlabs/7vhotswap/info.json b/keyboards/fjlabs/7vhotswap/info.json
new file mode 100644
index 0000000000..07404031e3
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "7V Hotswap PCBs",
+ "url": "http://www.fjlaboratories.com/",
+ "maintainer": "mrnoisytiger",
+ "layouts": {
+ "LAYOUT_75_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Print Screen", "x":14, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "x":14, "y":1.25},
+ {"label":"Delete", "x":15.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Page Up", "x":15.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"Page Down", "x":15.25, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.5},
+ {"label":"MO(1)", "x":11.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":13.25, "y":5.5},
+ {"label":"\u2193", "x":14.25, "y":5.5},
+ {"label":"\u2192", "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c b/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c
new file mode 100644
index 0000000000..86b34a0446
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 <me@fjlaboratories.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_75_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_75_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c b/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c
new file mode 100644
index 0000000000..67838a1a84
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/*
+Copyright 2021 <felix@fjlaboratories.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_75_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_75_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER2] = LAYOUT_75_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT_75_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk b/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/7vhotswap/readme.md b/keyboards/fjlabs/7vhotswap/readme.md
new file mode 100644
index 0000000000..0f6f847285
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/readme.md
@@ -0,0 +1,16 @@
+# 7V Hotswap PCB by FJLaboratories
+
+The following is the QMK Firmware for the 7V Hotswap PCB by [FJLaboratories](https://www.fjlaboratories.com/).
+
+* Keyboard Maintainer: [FJLaboratories](https://github.com/mrnoisytiger)
+* Hardware Supported: 7V Hotswap
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/7vhotswap:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+You can enter the bootloader by shorting the RST pads on the back of the PCB while the PCB is plugged into the computer.
diff --git a/keyboards/fjlabs/7vhotswap/rules.mk b/keyboards/fjlabs/7vhotswap/rules.mk
new file mode 100644
index 0000000000..82e9a04fa5
--- /dev/null
+++ b/keyboards/fjlabs/7vhotswap/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/ad65/rules.mk b/keyboards/fjlabs/ad65/rules.mk
index 4f87390759..67f00abb1e 100644
--- a/keyboards/fjlabs/ad65/rules.mk
+++ b/keyboards/fjlabs/ad65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/bks65/rules.mk b/keyboards/fjlabs/bks65/rules.mk
index 64214ee66a..d412b138ca 100644
--- a/keyboards/fjlabs/bks65/rules.mk
+++ b/keyboards/fjlabs/bks65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/bks65solder/rules.mk b/keyboards/fjlabs/bks65solder/rules.mk
index 64214ee66a..d412b138ca 100644
--- a/keyboards/fjlabs/bks65solder/rules.mk
+++ b/keyboards/fjlabs/bks65solder/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/bolsa65/rules.mk b/keyboards/fjlabs/bolsa65/rules.mk
index a49a628735..88051c08ed 100644
--- a/keyboards/fjlabs/bolsa65/rules.mk
+++ b/keyboards/fjlabs/bolsa65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/kf87/rules.mk b/keyboards/fjlabs/kf87/rules.mk
index 509c10d0fd..a5745c3490 100644
--- a/keyboards/fjlabs/kf87/rules.mk
+++ b/keyboards/fjlabs/kf87/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/ldk65/rules.mk b/keyboards/fjlabs/ldk65/rules.mk
index c6a391a1d5..15d8b3c359 100644
--- a/keyboards/fjlabs/ldk65/rules.mk
+++ b/keyboards/fjlabs/ldk65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/midway60/rules.mk b/keyboards/fjlabs/midway60/rules.mk
index 4f87390759..67f00abb1e 100644
--- a/keyboards/fjlabs/midway60/rules.mk
+++ b/keyboards/fjlabs/midway60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/mk61rgbansi/rules.mk b/keyboards/fjlabs/mk61rgbansi/rules.mk
index dbd20b9e1e..e64258fe9b 100644
--- a/keyboards/fjlabs/mk61rgbansi/rules.mk
+++ b/keyboards/fjlabs/mk61rgbansi/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/polaris/rules.mk b/keyboards/fjlabs/polaris/rules.mk
index 4f87390759..67f00abb1e 100644
--- a/keyboards/fjlabs/polaris/rules.mk
+++ b/keyboards/fjlabs/polaris/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/ready100/rules.mk b/keyboards/fjlabs/ready100/rules.mk
index 1c5940f4f7..939f49303c 100644
--- a/keyboards/fjlabs/ready100/rules.mk
+++ b/keyboards/fjlabs/ready100/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/tf60ansi/rules.mk b/keyboards/fjlabs/tf60ansi/rules.mk
index dbd20b9e1e..e64258fe9b 100644
--- a/keyboards/fjlabs/tf60ansi/rules.mk
+++ b/keyboards/fjlabs/tf60ansi/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/tf60v2/rules.mk b/keyboards/fjlabs/tf60v2/rules.mk
index db42667cfc..a28677e7e1 100644
--- a/keyboards/fjlabs/tf60v2/rules.mk
+++ b/keyboards/fjlabs/tf60v2/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/tf65rgbv2/rules.mk b/keyboards/fjlabs/tf65rgbv2/rules.mk
index 4e9cde50cc..14620e11af 100644
--- a/keyboards/fjlabs/tf65rgbv2/rules.mk
+++ b/keyboards/fjlabs/tf65rgbv2/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/flehrad/bigswitch/rules.mk b/keyboards/flehrad/bigswitch/rules.mk
index 0cd3f65d9c..84bf0aa220 100644
--- a/keyboards/flehrad/bigswitch/rules.mk
+++ b/keyboards/flehrad/bigswitch/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/flehrad/downbubble/keymaps/default/config.h b/keyboards/flehrad/downbubble/keymaps/default/config.h
deleted file mode 100644
index 4496c59100..0000000000
--- a/keyboards/flehrad/downbubble/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/flehrad/downbubble/keymaps/default/keymap.c b/keyboards/flehrad/downbubble/keymaps/default/keymap.c
index 6abe3d532f..b6e340a008 100644
--- a/keyboards/flehrad/downbubble/keymaps/default/keymap.c
+++ b/keyboards/flehrad/downbubble/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_standard(\
+ [0] = LAYOUT_standard(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- LAYOUT_split_bs(\
+ LAYOUT_split_bs(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- LAYOUT_split_rshift(\
+ LAYOUT_split_rshift(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- LAYOUT_split_numpad(\
+ LAYOUT_split_numpad(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- LAYOUT_all(\
+ LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
diff --git a/keyboards/flehrad/downbubble/rules.mk b/keyboards/flehrad/downbubble/rules.mk
index db959254ff..d26afafd10 100644
--- a/keyboards/flehrad/downbubble/rules.mk
+++ b/keyboards/flehrad/downbubble/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/flehrad/numbrero/rules.mk b/keyboards/flehrad/numbrero/rules.mk
index 50f5eaf1cd..bab0fd2837 100644
--- a/keyboards/flehrad/numbrero/rules.mk
+++ b/keyboards/flehrad/numbrero/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/flehrad/snagpad/rules.mk b/keyboards/flehrad/snagpad/rules.mk
index a64baaeb55..4d45c93abc 100644
--- a/keyboards/flehrad/snagpad/rules.mk
+++ b/keyboards/flehrad/snagpad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/flehrad/tradestation/rules.mk b/keyboards/flehrad/tradestation/rules.mk
index c129afe553..65a94295bb 100644
--- a/keyboards/flehrad/tradestation/rules.mk
+++ b/keyboards/flehrad/tradestation/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/fleuron/keymaps/default/config.h b/keyboards/fleuron/keymaps/default/config.h
deleted file mode 100644
index 1ce0a168f5..0000000000
--- a/keyboards/fleuron/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2018 James Underwood
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-// Place overrides here \ No newline at end of file
diff --git a/keyboards/fleuron/keymaps/default/keymap.c b/keyboards/fleuron/keymaps/default/keymap.c
index 6240312b37..c33f4ea4f8 100644
--- a/keyboards/fleuron/keymaps/default/keymap.c
+++ b/keyboards/fleuron/keymaps/default/keymap.c
@@ -51,12 +51,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | RGB | Ctrl | Alt | GUI |Lower |Shift |Space |Raise | Left | Down | Up |Right | 0 | 00 | . |Enter |
* `---------------------------------------------------------------------------------------------------------------'
*/
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_PSLS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PAST, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_P4, KC_P5, KC_P6, KC_PMNS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_P1, KC_P2, KC_P3, KC_PPLS, \
- RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, DZ, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, KC_PGUP, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_PSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PAST,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_P4, KC_P5, KC_P6, KC_PMNS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_P1, KC_P2, KC_P3, KC_PPLS,
+ RGB_MOD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, DZ, KC_PDOT, KC_PENT
),
[_LOWER] = LAYOUT_ortho_6x16(
@@ -75,12 +75,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |RGBtog| | | | | | | | Home | PgUp | PgDn | End | | | | |
* `---------------------------------------------------------------------------------------------------------------'
*/
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, _______, \
- RGB_TOG, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______ \
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_ortho_6x16(
@@ -99,12 +99,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | Prev | Vol- | Vol+ | Next | | | | |
* `---------------------------------------------------------------------------------------------------------------'
*/
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MRWD, KC_VOLD, KC_VOLU, KC_MFFD, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MRWD, KC_VOLD, KC_VOLU, KC_MFFD, _______, _______, _______, _______
)
};
diff --git a/keyboards/fleuron/rules.mk b/keyboards/fleuron/rules.mk
index 8e9acb3046..5ae3d75b58 100644
--- a/keyboards/fleuron/rules.mk
+++ b/keyboards/fleuron/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fluorite/keymaps/default/keymap.c b/keyboards/fluorite/keymaps/default/keymap.c
index 38efa333b3..3dfd8e2efc 100644
--- a/keyboards/fluorite/keymaps/default/keymap.c
+++ b/keyboards/fluorite/keymaps/default/keymap.c
@@ -54,121 +54,121 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,\
+ KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,\
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,\
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,\
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_TTCM1, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_QUOT, KC_EQL, KC_BSPC \
+ KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_TTCM1, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_QUOT, KC_EQL, KC_BSPC
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
[_LOWER] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,\
+ KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_RBRC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_RBRC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_RSJY,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_RSJY,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_BSPC, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN,\
+ KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_BSPC, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LCTLZ, KC_LCTLX, KC_LCTLC, KC_LCTLV, KC_DEL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ KC_LCTLZ, KC_LCTLX, KC_LCTLC, KC_LCTLV, KC_DEL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, KC_EQL, KC_DEL \
+ KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, KC_EQL, KC_DEL
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
[_RAISE] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PAST, KC_PSLS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,\
+ KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_RSJY,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, KC_Y, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_RSJY,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRC,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_N, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_BSPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LBRC,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, KC_RSRO, KC_SCLN, KC_QUOT, KC_RO,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, KC_RSRO, KC_SCLN, KC_QUOT, KC_RO,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, KC_BSLS, KC_DEL \
+ KC_GRV, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, KC_BSLS, KC_DEL
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
[_CUSTOM1] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PPLS, KC_PMNS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PPLS, KC_PMNS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,\
+ KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ESC, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_P0, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,\
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_P0, KC_INS, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_H, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,\
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_H, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,\
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_N, KC_TAB, KC_LSFT, KC_LCTL, KC_TTCM2, KC_LALT, KC_TTCM1, KC_LCTL, KC_LCTLY, KC_RALT, KC_RCTL, KC_TTCM1, KC_ENT, KC_ESC, KC_SPC, KC_ENT, KC_DEL, KC_BSPC \
+ KC_N, KC_TAB, KC_LSFT, KC_LCTL, KC_TTCM2, KC_LALT, KC_TTCM1, KC_LCTL, KC_LCTLY, KC_RALT, KC_RCTL, KC_TTCM1, KC_ENT, KC_ESC, KC_SPC, KC_ENT, KC_DEL, KC_BSPC
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
[_CUSTOM2] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PPLS, KC_PMNS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_PSCR, KC_PPLS, KC_PMNS, KC_P0, KC_NLCK, KC_PSLS, KC_PAST, KC_BSPC, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,\
+ KC_LGUI, KC_F9, KC_F10, KC_F11, KC_F12, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F9, KC_F10, KC_F11, KC_F12, KC_RGUI,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Y, KC_M, KC_I, KC_L, KC_P, KC_H, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ KC_Y, KC_M, KC_I, KC_L, KC_P, KC_H, KC_P1, KC_P2, KC_P3, KC_P1, KC_P2, KC_P3, KC_TAB, KC_6, KC_7, KC_8, KC_9, KC_0,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_COMM, KC_BSPC, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,\
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_RBRC, KC_COMM, KC_BSPC, KC_PDOT, KC_P0, KC_PDOT, KC_PGUP, KC_HOME, KC_Y, KC_U, KC_I, KC_O, KC_P,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSLS, KC_DOT, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,\
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_BSLS, KC_DOT, KC_UP, KC_PENT, KC_PENT, KC_UP, KC_PGDN, KC_END, KC_H, KC_J, KC_K, KC_L, KC_MINS,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,\
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_N, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_LALT, KC_TTCM2, KC_LCTLZ, KC_LCTLY, KC_RALT, KC_RCTL, KC_TTCM2, KC_ENT, KC_ESC, KC_SPC, KC_ENT, KC_DEL, KC_BSPC \
+ KC_N, KC_TAB, KC_LSFT, KC_LCTL, KC_ESC, KC_LALT, KC_TTCM2, KC_LCTLZ, KC_LCTLY, KC_RALT, KC_RCTL, KC_TTCM2, KC_ENT, KC_ESC, KC_SPC, KC_ENT, KC_DEL, KC_BSPC
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
[_ADJUST] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------------. ,-------------------------------------------------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4,\
+ KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4,
//|---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------|
- KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,\
+ KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,\
+ XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_6, KC_7, KC_8, KC_9, KC_0,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_LSFCO, KC_RCBR, KC_RBRC, KC_ASTR, KC_BSPC, KC_DEL, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_END, KC_BSPC, KC_LPRN, KC_BSLS, KC_PIPE, KC_LSFDO,\
+ KC_LSFCO, KC_RCBR, KC_RBRC, KC_ASTR, KC_BSPC, KC_DEL, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, KC_END, KC_BSPC, KC_LPRN, KC_BSLS, KC_PIPE, KC_LSFDO,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_RSFT, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
- KC_GRV, KC_TAB, KC_LSFT, KC_LALT, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, XXXXXXX, XXXXXXX \
+ KC_GRV, KC_TAB, KC_LSFT, KC_LALT, KC_ESC, KC_SPC, LOWER, KC_LCTL, KC_LALT, KC_RALT, KC_RCTL, RAISE, KC_ENT, KC_ESC, KC_APP, KC_ENT, XXXXXXX, XXXXXXX
//|---------+---------+---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------+---------+---------|
),
};
diff --git a/keyboards/fluorite/rules.mk b/keyboards/fluorite/rules.mk
index dd9ff71e5e..67ae030041 100644
--- a/keyboards/fluorite/rules.mk
+++ b/keyboards/fluorite/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/flx/lodestone/rules.mk b/keyboards/flx/lodestone/rules.mk
index 2542e5d6dc..226bef90fc 100644
--- a/keyboards/flx/lodestone/rules.mk
+++ b/keyboards/flx/lodestone/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes
diff --git a/keyboards/flx/virgo/keymaps/default/config.h b/keyboards/flx/virgo/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/flx/virgo/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/flx/virgo/rules.mk b/keyboards/flx/virgo/rules.mk
index 16501de0ae..1daeed7bd7 100644
--- a/keyboards/flx/virgo/rules.mk
+++ b/keyboards/flx/virgo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/flxlb/zplit/rules.mk b/keyboards/flxlb/zplit/rules.mk
index ea13fd30df..cca31bca40 100644
--- a/keyboards/flxlb/zplit/rules.mk
+++ b/keyboards/flxlb/zplit/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/flygone60/rev3/rules.mk b/keyboards/flygone60/rev3/rules.mk
index f1448c6b26..53b2c80086 100644
--- a/keyboards/flygone60/rev3/rules.mk
+++ b/keyboards/flygone60/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foostan/cornelius/rules.mk b/keyboards/foostan/cornelius/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/foostan/cornelius/rules.mk
+++ b/keyboards/foostan/cornelius/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/for_science/rules.mk b/keyboards/for_science/rules.mk
index 608ac37502..33d28b3a89 100644
--- a/keyboards/for_science/rules.mk
+++ b/keyboards/for_science/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fortitude60/keymaps/default/keymap.c b/keyboards/fortitude60/keymaps/default/keymap.c
index 8db5de904a..0e6d8cc553 100644
--- a/keyboards/fortitude60/keymaps/default/keymap.c
+++ b/keyboards/fortitude60/keymaps/default/keymap.c
@@ -41,12 +41,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | GUI | Alt |Lower |Space | Ctrl |Enter |Space |Raise | Alt | GUI |
* `---------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI\
+[_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI
),
/* Colemak
@@ -62,12 +62,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | GUI | Alt |Lower |Space | Ctrl |Enter |Space |Raise | Alt | GUI |
* `---------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI\
+[_COLEMAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI
),
/* Dvorak
@@ -83,12 +83,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | GUI | Alt |Lower |Space | Ctrl |Enter |Space |Raise | Alt | GUI |
* `---------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI\
+[_DVORAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_LCTL, KC_ENT, KC_SPC, RAISE, KC_RALT, KC_RGUI
),
/* Lower
@@ -104,12 +104,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | |
* `---------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
+[_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Raise
@@ -125,12 +125,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | |
* `---------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_GRV, KC_1, KC_UP, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_F4, KC_F5, KC_F6,KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
+[_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_GRV, KC_1, KC_UP, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_F4, KC_F5, KC_F6,KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Adjust (Lower + Raise)
@@ -146,12 +146,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | |
* `---------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_BSPC, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP, _______, _______, \
- QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
+[_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_BSPC,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP, _______, _______,
+ QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/fortitude60/keymaps/default/rules.mk b/keyboards/fortitude60/keymaps/default/rules.mk
index 1964bd0a7c..e69de29bb2 100644
--- a/keyboards/fortitude60/keymaps/default/rules.mk
+++ b/keyboards/fortitude60/keymaps/default/rules.mk
@@ -1,2 +0,0 @@
-RGBLIGHT_ENABLE = no
-BACKLIGHT_ENABLE = no \ No newline at end of file
diff --git a/keyboards/fortitude60/keymaps/via/config.h b/keyboards/fortitude60/keymaps/via/config.h
new file mode 100644
index 0000000000..ac47978bab
--- /dev/null
+++ b/keyboards/fortitude60/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2017 Danny Nguyen <danny@hexwire.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define USE_SERIAL
diff --git a/keyboards/fortitude60/keymaps/via/keymap.c b/keyboards/fortitude60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..74d4b9fcc9
--- /dev/null
+++ b/keyboards/fortitude60/keymaps/via/keymap.c
@@ -0,0 +1,127 @@
+/* Copyright 2021 Pekaso
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum my_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | [ | ] | N | M | , | . | / |Enter |
+ * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
+ * | GUI | Alt |Lower |Space | Ctrl |Enter |Space |Raise | Alt | GUI |
+ * `---------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LGUI, KC_LALT, FN_MO13, KC_SPC, KC_LCTL, KC_ENT, KC_SPC,FN_MO23, KC_RALT, KC_RGUI
+),
+
+/* Lower
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | | \ | | |
+ * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | | | F12 |ISO ~ |ISO | | | | |
+ * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
+ * | | | | | | | | | | |
+ * `---------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Raise
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+------. ,------+------+------+------+------+------|
+ * | ` | 1 | ↑ | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------. ,------+------+------+------+------+------|
+ * | Del | ← | ↓ | → | F4 | F5 | | F6 | - | = | [ | ] | | |
+ * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | | | F12 |ISO # |ISO / | | | |
+ * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
+ * | | | | | | | | | | |
+ * `---------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_GRV, KC_1, KC_UP, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_F4, KC_F5, KC_F6,KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------. ,------+------+------+------+------+------|
+ * | | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn| |Sat Up|Sat Dn|Val Up|Val Dn| | Bksp |
+ * |------+------+------+------+------+------. ,------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm| |AGswap| |BL TOG|BL STP| | |
+ * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | |
+ * `-------------+------+------+------+------+------+------+------+------+------+------+-------------'
+ * | | | | | | | | | | |
+ * `---------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_BSPC,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
diff --git a/keyboards/fortitude60/keymaps/via/rules.mk b/keyboards/fortitude60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fortitude60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fortitude60/rev1/config.h b/keyboards/fortitude60/rev1/config.h
index 9d5104be54..472472329c 100644
--- a/keyboards/fortitude60/rev1/config.h
+++ b/keyboards/fortitude60/rev1/config.h
@@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT_ID 0x1156
#define DEVICE_VER 0x0100
#define MANUFACTURER Pekaso
-#define PRODUCT The Fortitude60 Keyboard
+#define PRODUCT Fortitude60
/* key matrix size */
// Rows are doubled-up
@@ -43,10 +43,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define SOFT_SERIAL_PIN D2
-#define EE_HANDS
+//#define EE_HANDS
#define SPLIT_USB_DETECT
-#define SPLIT_USB_TIMEOUT 1000
+#define SPLIT_USB_TIMEOUT 500
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/fortitude60/rules.mk b/keyboards/fortitude60/rules.mk
index ebbb18e5e6..afa77eb88b 100644
--- a/keyboards/fortitude60/rules.mk
+++ b/keyboards/fortitude60/rules.mk
@@ -11,11 +11,8 @@ BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/four_banger/rules.mk b/keyboards/four_banger/rules.mk
index 855e36c3dd..8f9b670fd9 100644
--- a/keyboards/four_banger/rules.mk
+++ b/keyboards/four_banger/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/foxlab/key65/hotswap/rules.mk b/keyboards/foxlab/key65/hotswap/rules.mk
index 1074896ac5..c483c98ee3 100644
--- a/keyboards/foxlab/key65/hotswap/rules.mk
+++ b/keyboards/foxlab/key65/hotswap/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foxlab/key65/universal/rules.mk b/keyboards/foxlab/key65/universal/rules.mk
index 60e7e46595..5d93138381 100644
--- a/keyboards/foxlab/key65/universal/rules.mk
+++ b/keyboards/foxlab/key65/universal/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foxlab/leaf60/hotswap/keymaps/default/config.h b/keyboards/foxlab/leaf60/hotswap/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/foxlab/leaf60/hotswap/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/foxlab/leaf60/hotswap/rules.mk b/keyboards/foxlab/leaf60/hotswap/rules.mk
index 0d9012c70b..3ca912f6ec 100644
--- a/keyboards/foxlab/leaf60/hotswap/rules.mk
+++ b/keyboards/foxlab/leaf60/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foxlab/leaf60/universal/keymaps/default/config.h b/keyboards/foxlab/leaf60/universal/keymaps/default/config.h
deleted file mode 100644
index d8f6533c6b..0000000000
--- a/keyboards/foxlab/leaf60/universal/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Fox Lab
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/foxlab/leaf60/universal/rules.mk b/keyboards/foxlab/leaf60/universal/rules.mk
index 4fa1fd5e1f..b2f9ffe48c 100644
--- a/keyboards/foxlab/leaf60/universal/rules.mk
+++ b/keyboards/foxlab/leaf60/universal/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foxlab/time80/rules.mk b/keyboards/foxlab/time80/rules.mk
index b374eca336..1bbfa8fa0e 100644
--- a/keyboards/foxlab/time80/rules.mk
+++ b/keyboards/foxlab/time80/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/foxlab/time_re/hotswap/rules.mk b/keyboards/foxlab/time_re/hotswap/rules.mk
index 4023d7d3f4..b03288f7ae 100644
--- a/keyboards/foxlab/time_re/hotswap/rules.mk
+++ b/keyboards/foxlab/time_re/hotswap/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/foxlab/time_re/universal/rules.mk b/keyboards/foxlab/time_re/universal/rules.mk
index 20ed7beacd..3c2afd0583 100644
--- a/keyboards/foxlab/time_re/universal/rules.mk
+++ b/keyboards/foxlab/time_re/universal/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fr4/southpaw75/rules.mk b/keyboards/fr4/southpaw75/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/fr4/southpaw75/rules.mk
+++ b/keyboards/fr4/southpaw75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fr4/unix60/rules.mk b/keyboards/fr4/unix60/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/fr4/unix60/rules.mk
+++ b/keyboards/fr4/unix60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fractal/keymaps/default/keymap.c b/keyboards/fractal/keymaps/default/keymap.c
index 553dad034c..e803bf6785 100644
--- a/keyboards/fractal/keymaps/default/keymap.c
+++ b/keyboards/fractal/keymaps/default/keymap.c
@@ -51,12 +51,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Alt | GUI |Lower | Bksp | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -72,12 +72,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -93,12 +93,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
- KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
+ KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -114,12 +114,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -135,12 +135,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -156,12 +156,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
- _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/fractal/rules.mk b/keyboards/fractal/rules.mk
index 914a692f9c..78036356ef 100755
--- a/keyboards/fractal/rules.mk
+++ b/keyboards/fractal/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/free_willy/rules.mk b/keyboards/free_willy/rules.mk
index 45b153a573..1ea0b3fdfb 100644
--- a/keyboards/free_willy/rules.mk
+++ b/keyboards/free_willy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/freyr/rules.mk b/keyboards/freyr/rules.mk
index f20cfda3fa..063d967a7f 100644
--- a/keyboards/freyr/rules.mk
+++ b/keyboards/freyr/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/friedrich/rules.mk b/keyboards/friedrich/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/friedrich/rules.mk
+++ b/keyboards/friedrich/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/frooastboard/config.h b/keyboards/frooastboard/config.h
deleted file mode 100644
index ebfc6a75d7..0000000000
--- a/keyboards/frooastboard/config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define MANUFACTURER frooastside
-#define PRODUCT Frooastboard
-
-/* key matrix size */
-#define MATRIX_ROWS 2
-#define MATRIX_COLS 2
-
-#define BOOTMAGIC_LITE_ROW 1
-#define BOOTMAGIC_LITE_COLUMN 1
-
-#define RGB_DI_PIN B4
-#define RGBLED_NUM 8
-
-#define RGBLIGHT_SLEEP
-
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-
-#define RGBLIGHT_DEFAULT_HUE 234
-
-#define RGBLIGHT_LIMIT_VAL 255
-#define RGBLIGHT_DEFAULT_VAL 190
-
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_SNAKE
-
-#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD + 2
diff --git a/keyboards/frooastboard/frooastboard.c b/keyboards/frooastboard/frooastboard.c
deleted file mode 100644
index 8e7f3c8998..0000000000
--- a/keyboards/frooastboard/frooastboard.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "frooastboard.h"
diff --git a/keyboards/frooastboard/frooastboard.h b/keyboards/frooastboard/frooastboard.h
deleted file mode 100644
index da598cf4aa..0000000000
--- a/keyboards/frooastboard/frooastboard.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define LAYOUT( \
- K00, K01, \
- K10, K11 \
-) { \
- { K00, K01 }, \
- { K10, K11 } \
-}
diff --git a/keyboards/frooastboard/info.json b/keyboards/frooastboard/info.json
deleted file mode 100644
index ca99cf594a..0000000000
--- a/keyboards/frooastboard/info.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "keyboard_name": "Frooastboard",
- "url": "https://github.com/frooastside/qmk_firmware/tree/master/keyboards/frooastboard",
- "maintainer": "frooastside",
- "debounce": 5,
- "diode_direction": "COL2ROW",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {
- "label": "Z",
- "x": 0,
- "y": 0
- },
- {
- "label": "X",
- "x": 1,
- "y": 0
- },
- {
- "label": "Esc",
- "x": 0,
- "y": 1
- },
- {
- "label": "~",
- "x": 1,
- "y": 1
- }
- ]
- },
- },
- "matrix_pins": {
- "rows": ["B0", "B1"],
- "cols": ["B2", "B3"]
- },
- "usb": {
- "vid": "0x4642",
- "pid": "0x6F21",
- "device_ver": "0x0001"
- }
-}
diff --git a/keyboards/frooastboard/keymaps/default/keymap.c b/keyboards/frooastboard/keymaps/default/keymap.c
deleted file mode 100644
index 569937d8e2..0000000000
--- a/keyboards/frooastboard/keymaps/default/keymap.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- KC_Z, KC_X,
- LT(1, KC_ESC), KC_TILD),
-
- [1] = LAYOUT(
- KC_F23, KC_F24,
- KC_TRNS, TO(2)),
-
- [2] = LAYOUT(
- RGB_TOG, RGB_MOD,
- TO(3), TO(0)),
-
- [3] = LAYOUT(
- RGB_HUD, RGB_HUI,
- TO(4), TO(2)),
-
- [4] = LAYOUT(
- RGB_SAD, RGB_SAI,
- TO(5), TO(3)),
-
- [5] = LAYOUT(
- RGB_VAD, RGB_VAI,
- TO(6), TO(4)),
-
- [6] = LAYOUT(
- KC_TRNS, KC_TRNS,
- RESET, TO(5))
-};
diff --git a/keyboards/frooastboard/keymaps/safe_mode/keymap.c b/keyboards/frooastboard/keymaps/safe_mode/keymap.c
deleted file mode 100644
index dc040070ed..0000000000
--- a/keyboards/frooastboard/keymaps/safe_mode/keymap.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- KC_Z, KC_X,
- TO(1), KC_TILD),
-
- [1] = LAYOUT(
- RGB_TOG, RGB_MOD,
- TO(2), TO(0)),
-
- [2] = LAYOUT(
- RGB_HUD, RGB_HUI,
- TO(3), TO(1)),
-
- [3] = LAYOUT(
- RGB_SAD, RGB_SAI,
- TO(4), TO(2)),
-
- [4] = LAYOUT(
- RGB_VAD, RGB_VAI,
- TO(5), TO(3)),
-
- [5] = LAYOUT(
- KC_TRNS, KC_TRNS,
- RESET, TO(4))
-};
diff --git a/keyboards/frooastboard/keymaps/via/config.h b/keyboards/frooastboard/keymaps/via/config.h
deleted file mode 100644
index 6bd3c6ea37..0000000000
--- a/keyboards/frooastboard/keymaps/via/config.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#define RGBLIGHT_EFFECT_BREATHING
-#define RGBLIGHT_EFFECT_RAINBOW_MOOD
-#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#define RGBLIGHT_EFFECT_SNAKE
-#define RGBLIGHT_EFFECT_KNIGHT
-#define RGBLIGHT_EFFECT_CHRISTMAS
-#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_RGB_TEST
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/frooastboard/keymaps/via/keymap.c b/keyboards/frooastboard/keymaps/via/keymap.c
deleted file mode 100644
index 028462cded..0000000000
--- a/keyboards/frooastboard/keymaps/via/keymap.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2021 frooastside
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- KC_Z, KC_X,
- LT(1, KC_ESC), KC_TILD),
-
- [1] = LAYOUT(
- KC_F23, KC_F24,
- KC_TRNS, RGB_TOG)
-};
diff --git a/keyboards/frooastboard/nano/config.h b/keyboards/frooastboard/nano/config.h
new file mode 100644
index 0000000000..48af8e7e9c
--- /dev/null
+++ b/keyboards/frooastboard/nano/config.h
@@ -0,0 +1,52 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define MANUFACTURER frooastside
+#define PRODUCT Frooastboard Nano
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 2
+
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 1
+
+#define RGB_DI_PIN B4
+#define RGBLED_NUM 8
+
+#define RGBLIGHT_SLEEP
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#define RGBLIGHT_DEFAULT_HUE 234
+
+#define RGBLIGHT_LIMIT_VAL 255
+#define RGBLIGHT_DEFAULT_VAL 190
+
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_SNAKE
+
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD + 2
diff --git a/keyboards/frooastboard/nano/info.json b/keyboards/frooastboard/nano/info.json
new file mode 100644
index 0000000000..7c594187eb
--- /dev/null
+++ b/keyboards/frooastboard/nano/info.json
@@ -0,0 +1,42 @@
+{
+ "keyboard_name": "Frooastboard Nano",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/frooastboard/nano",
+ "maintainer": "frooastside",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "Z",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "X",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "Esc",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "~",
+ "x": 1,
+ "y": 1
+ }
+ ]
+ }
+ },
+ "matrix_pins": {
+ "rows": ["B0", "B1"],
+ "cols": ["B2", "B3"]
+ },
+ "usb": {
+ "vid": "0x4642",
+ "pid": "0x6F21",
+ "device_ver": "0x0001"
+ }
+}
diff --git a/keyboards/frooastboard/nano/keymaps/default/keymap.c b/keyboards/frooastboard/nano/keymaps/default/keymap.c
new file mode 100644
index 0000000000..aa3ed88da2
--- /dev/null
+++ b/keyboards/frooastboard/nano/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Z, KC_X,
+ LT(1, KC_ESC), KC_TILD),
+
+ [1] = LAYOUT(
+ KC_F23, KC_F24,
+ KC_TRNS, TO(2)),
+
+ [2] = LAYOUT(
+ RGB_TOG, RGB_MOD,
+ TO(3), TO(0)),
+
+ [3] = LAYOUT(
+ RGB_HUD, RGB_HUI,
+ TO(4), TO(2)),
+
+ [4] = LAYOUT(
+ RGB_SAD, RGB_SAI,
+ TO(5), TO(3)),
+
+ [5] = LAYOUT(
+ RGB_VAD, RGB_VAI,
+ TO(6), TO(4)),
+
+ [6] = LAYOUT(
+ KC_TRNS, KC_TRNS,
+ RESET, TO(5))
+};
diff --git a/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c b/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c
new file mode 100644
index 0000000000..d237438da3
--- /dev/null
+++ b/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Z, KC_X,
+ TO(1), KC_TILD),
+
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD,
+ TO(2), TO(0)),
+
+ [2] = LAYOUT(
+ RGB_HUD, RGB_HUI,
+ TO(3), TO(1)),
+
+ [3] = LAYOUT(
+ RGB_SAD, RGB_SAI,
+ TO(4), TO(2)),
+
+ [4] = LAYOUT(
+ RGB_VAD, RGB_VAI,
+ TO(5), TO(3)),
+
+ [5] = LAYOUT(
+ KC_TRNS, KC_TRNS,
+ RESET, TO(4))
+};
diff --git a/keyboards/frooastboard/nano/keymaps/via/config.h b/keyboards/frooastboard/nano/keymaps/via/config.h
new file mode 100644
index 0000000000..8c39695693
--- /dev/null
+++ b/keyboards/frooastboard/nano/keymaps/via/config.h
@@ -0,0 +1,30 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/frooastboard/nano/keymaps/via/keymap.c b/keyboards/frooastboard/nano/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bddd16bae5
--- /dev/null
+++ b/keyboards/frooastboard/nano/keymaps/via/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_Z, KC_X,
+ LT(1, KC_ESC), KC_TILD),
+
+ [1] = LAYOUT(
+ KC_F23, KC_F24,
+ KC_TRNS, RGB_TOG)
+};
diff --git a/keyboards/frooastboard/nano/keymaps/via/rules.mk b/keyboards/frooastboard/nano/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/frooastboard/nano/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/frooastboard/nano/nano.c b/keyboards/frooastboard/nano/nano.c
new file mode 100644
index 0000000000..584176a4e9
--- /dev/null
+++ b/keyboards/frooastboard/nano/nano.c
@@ -0,0 +1,17 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "nano.h"
diff --git a/keyboards/frooastboard/nano/nano.h b/keyboards/frooastboard/nano/nano.h
new file mode 100644
index 0000000000..76d1a42eac
--- /dev/null
+++ b/keyboards/frooastboard/nano/nano.h
@@ -0,0 +1,27 @@
+/* Copyright 2021-2022 frooastside
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, \
+ K10, K11 \
+) { \
+ { K00, K01 }, \
+ { K10, K11 } \
+}
diff --git a/keyboards/frooastboard/nano/readme.md b/keyboards/frooastboard/nano/readme.md
new file mode 100644
index 0000000000..d67f17483f
--- /dev/null
+++ b/keyboards/frooastboard/nano/readme.md
@@ -0,0 +1,19 @@
+# Frooastboard Nano
+
+![Frooastboard Nano](https://i.imgur.com/f26O8JLh.jpg)
+
+* Keyboard Maintainer: [Frooastside](https://github.com/frooastside)
+* Hardware Supported: Frooastboard Nano
+* Hardware Availability: https://github.com/Frooastside/Frooastboard
+
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as ESCAPE while plugging in the keyboard. (If via is used it is the key located at `K10`.)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make frooastboard/nano:default
+
+Flashing example for this keyboard:
+
+ make frooastboard/nano:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/frooastboard/nano/rules.mk b/keyboards/frooastboard/nano/rules.mk
new file mode 100644
index 0000000000..bef90c50ac
--- /dev/null
+++ b/keyboards/frooastboard/nano/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/frooastboard/readme.md b/keyboards/frooastboard/readme.md
deleted file mode 100644
index d465c3f4b7..0000000000
--- a/keyboards/frooastboard/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Frooastboard
-
-![Frooastboard](https://i.imgur.com/f26O8JLh.jpg)
-
-* Keyboard Maintainer: [Frooastside](https://github.com/frooastside)
-* Hardware Supported: Frooastboard
-* Hardware Availability: https://github.com/Frooastside/Frooastboard
-
-**Reset Key:** Hold down the key located at `K00`, commonly programmed as ESCAPE while plugging in the keyboard. (If via is used it is the key located at `K10`.)
-
-Make example for this keyboard (after setting up your build environment):
-
- make frooastboard:default
-
-Flashing example for this keyboard:
-
- make frooastboard:default:flash
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/frooastboard/rules.mk b/keyboards/frooastboard/rules.mk
deleted file mode 100644
index dde9957c71..0000000000
--- a/keyboards/frooastboard/rules.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# MCU name
-MCU = atmega32u2
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = no # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ft/mars80/keymaps/default/config.h b/keyboards/ft/mars80/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/ft/mars80/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/ft/mars80/keymaps/default/keymap.c b/keyboards/ft/mars80/keymaps/default/keymap.c
index 010102d723..5df02136fc 100644
--- a/keyboards/ft/mars80/keymaps/default/keymap.c
+++ b/keyboards/ft/mars80/keymaps/default/keymap.c
@@ -23,20 +23,20 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_BRK, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_BRK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSEL, \
- _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSEL,
+ _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/ft/mars80/rules.mk b/keyboards/ft/mars80/rules.mk
index 3faff68b16..3cf7107cc9 100644
--- a/keyboards/ft/mars80/rules.mk
+++ b/keyboards/ft/mars80/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/function96/v1/rules.mk b/keyboards/function96/v1/rules.mk
index 99d54b5c27..f1409914df 100644
--- a/keyboards/function96/v1/rules.mk
+++ b/keyboards/function96/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/function96/v2/rules.mk b/keyboards/function96/v2/rules.mk
index 99d54b5c27..f1409914df 100644
--- a/keyboards/function96/v2/rules.mk
+++ b/keyboards/function96/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/funky40/rules.mk b/keyboards/funky40/rules.mk
index 9b70c8d5b7..e54b18efd8 100644
--- a/keyboards/funky40/rules.mk
+++ b/keyboards/funky40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration - this may disable space cadet right shift/enter
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gami_studio/lex60/keymaps/default/keymap.c b/keyboards/gami_studio/lex60/keymaps/default/keymap.c
index 039eb93b3a..153089997c 100644
--- a/keyboards/gami_studio/lex60/keymaps/default/keymap.c
+++ b/keyboards/gami_studio/lex60/keymaps/default/keymap.c
@@ -13,30 +13,30 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(2, KC_ENT), KC_RGUI, KC_RALT, KC_APP, KC_RCTRL),
[_GAMING] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, XXXXXXX, KC_RGUI, KC_RALT, KC_APP, KC_RCTRL),
[_FUNCTION] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, KC_DEL,\
- KC_TAB, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, KC_DEL,
+ KC_TAB, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, LT(2, KC_ENT), KC_RGUI, KC_RALT, KC_APP, KC_RCTRL),
[_FIRMWARE] = LAYOUT(
- RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_DEC, BL_TOGG, BL_INC, XXXXXXX, XXXXXXX, TG(1),\
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_DEC, BL_TOGG, BL_INC, XXXXXXX, XXXXXXX, TG(1),
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
};
diff --git a/keyboards/gami_studio/lex60/rules.mk b/keyboards/gami_studio/lex60/rules.mk
index e312e7afd6..6cc11b6895 100644
--- a/keyboards/gami_studio/lex60/rules.mk
+++ b/keyboards/gami_studio/lex60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gboards/gergoplex/info.json b/keyboards/gboards/gergoplex/info.json
new file mode 100644
index 0000000000..5aa696d5de
--- /dev/null
+++ b/keyboards/gboards/gergoplex/info.json
@@ -0,0 +1,50 @@
+{
+ "keyboard_name": "GergoPlex",
+ "url": "",
+ "maintainer": "germ",
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0.25},
+ {"label":"L01", "x":1, "y":0.125},
+ {"label":"L02", "x":2, "y":0},
+ {"label":"L03", "x":3, "y":0.125},
+ {"label":"L04", "x":4, "y":0.375},
+ {"label":"R00", "x":8, "y":0.375},
+ {"label":"R01", "x":9, "y":0.125},
+ {"label":"R02", "x":10, "y":0},
+ {"label":"R03", "x":11, "y":0.125},
+ {"label":"R04", "x":12, "y":0.25},
+
+ {"label":"L10", "x":0, "y":1.25},
+ {"label":"L11", "x":1, "y":1.125},
+ {"label":"L12", "x":2, "y":1},
+ {"label":"L13", "x":3, "y":1.125},
+ {"label":"L14", "x":4, "y":1.375},
+ {"label":"R10", "x":8, "y":1.375},
+ {"label":"R11", "x":9, "y":1.125},
+ {"label":"R12", "x":10, "y":1},
+ {"label":"R13", "x":11, "y":1.125},
+ {"label":"R14", "x":12, "y":1.25},
+
+ {"label":"L20", "x":0, "y":2.25},
+ {"label":"L21", "x":1, "y":2.125},
+ {"label":"L22", "x":2, "y":2},
+ {"label":"L23", "x":3, "y":2.125},
+ {"label":"L24", "x":4, "y":2.375},
+ {"label":"R20", "x":8, "y":2.375},
+ {"label":"R21", "x":9, "y":2.125},
+ {"label":"R22", "x":10, "y":2},
+ {"label":"R23", "x":11, "y":2.125},
+ {"label":"R24", "x":12, "y":2.25},
+
+ {"label":"L30", "x":2, "y":3.5},
+ {"label":"L31", "x":3.25, "y":3.625, "w":1.5},
+ {"label":"L32", "x":5, "y":3.125, "h":2},
+ {"label":"R30", "x":7, "y":3.125, "h":2},
+ {"label":"R31", "x":8.25, "y":3.625, "w":1.5},
+ {"label":"R32", "x":10, "y":3.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk
index 422c841146..e557d9f39a 100644
--- a/keyboards/gboards/gergoplex/rules.mk
+++ b/keyboards/gboards/gergoplex/rules.mk
@@ -7,7 +7,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
COMBO_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
COMMAND_ENABLE = yes
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
diff --git a/keyboards/geekboards/macropad_v2/rules.mk b/keyboards/geekboards/macropad_v2/rules.mk
index 2462b08410..4aa4ccfdef 100644
--- a/keyboards/geekboards/macropad_v2/rules.mk
+++ b/keyboards/geekboards/macropad_v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/geekboards/tester/rules.mk b/keyboards/geekboards/tester/rules.mk
index 1783008e01..923f1f383c 100644
--- a/keyboards/geekboards/tester/rules.mk
+++ b/keyboards/geekboards/tester/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/geminate60/rules.mk b/keyboards/geminate60/rules.mk
index 722be24d1b..f6ad535987 100644
--- a/keyboards/geminate60/rules.mk
+++ b/keyboards/geminate60/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/generic_panda/panda65_01/rules.mk b/keyboards/generic_panda/panda65_01/rules.mk
index c2aea0d505..72615cd64c 100644
--- a/keyboards/generic_panda/panda65_01/rules.mk
+++ b/keyboards/generic_panda/panda65_01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/genone/eclipse_65/rules.mk b/keyboards/genone/eclipse_65/rules.mk
index 9d2145ff0a..883e137762 100644
--- a/keyboards/genone/eclipse_65/rules.mk
+++ b/keyboards/genone/eclipse_65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keybaord RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/genone/g1_65/rules.mk b/keyboards/genone/g1_65/rules.mk
index 9d2145ff0a..883e137762 100644
--- a/keyboards/genone/g1_65/rules.mk
+++ b/keyboards/genone/g1_65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keybaord RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gentleman65/rules.mk b/keyboards/gentleman65/rules.mk
index 0f86307a97..fceba7b48c 100644
--- a/keyboards/gentleman65/rules.mk
+++ b/keyboards/gentleman65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/georgi/rules.mk b/keyboards/georgi/rules.mk
index 0cf996ed48..a884d8b3b9 100644
--- a/keyboards/georgi/rules.mk
+++ b/keyboards/georgi/rules.mk
@@ -4,13 +4,16 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
CUSTOM_MATRIX = yes
MOUSEKEY_ENABLE = no
STENO_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = no
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
SRC += matrix.c i2c_master.c sten.c
diff --git a/keyboards/gergo/rules.mk b/keyboards/gergo/rules.mk
index b5752ad934..0f877e2d4b 100644
--- a/keyboards/gergo/rules.mk
+++ b/keyboards/gergo/rules.mk
@@ -4,6 +4,9 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
CUSTOM_MATRIX = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = yes
diff --git a/keyboards/getta25/rules.mk b/keyboards/getta25/rules.mk
index 949655634f..54265d2285 100644
--- a/keyboards/getta25/rules.mk
+++ b/keyboards/getta25/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_ENABLE = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
DEFAULT_FOLDER = getta25/rev1
diff --git a/keyboards/ggkeyboards/genesis/hotswap/rules.mk b/keyboards/ggkeyboards/genesis/hotswap/rules.mk
index 26dae43913..5680df52f7 100644
--- a/keyboards/ggkeyboards/genesis/hotswap/rules.mk
+++ b/keyboards/ggkeyboards/genesis/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ggkeyboards/genesis/solder/rules.mk b/keyboards/ggkeyboards/genesis/solder/rules.mk
index 26dae43913..5680df52f7 100644
--- a/keyboards/ggkeyboards/genesis/solder/rules.mk
+++ b/keyboards/ggkeyboards/genesis/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gh60/revc/rules.mk b/keyboards/gh60/revc/rules.mk
index 395f5dc83a..06720ec5e4 100644
--- a/keyboards/gh60/revc/rules.mk
+++ b/keyboards/gh60/revc/rules.mk
@@ -5,16 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_tsangan_hhkb
diff --git a/keyboards/gh60/satan/keymaps/default/keymap.c b/keyboards/gh60/satan/keymaps/default/keymap.c
index 77c1b5005c..8146b87954 100644
--- a/keyboards/gh60/satan/keymaps/default/keymap.c
+++ b/keyboards/gh60/satan/keymaps/default/keymap.c
@@ -24,10 +24,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_BL] = LAYOUT_60_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FL), KC_RCTL
),
@@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_FL] = LAYOUT_60_ansi(
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/gh60/satan/keymaps/default/rules.mk b/keyboards/gh60/satan/keymaps/default/rules.mk
index 344a2850d8..a4baffa9f9 100644
--- a/keyboards/gh60/satan/keymaps/default/rules.mk
+++ b/keyboards/gh60/satan/keymaps/default/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk
index 11fca23b72..14a7691e0f 100644
--- a/keyboards/gh60/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/gh60/v1p3/rules.mk b/keyboards/gh60/v1p3/rules.mk
index 855a9c1e3f..0b24315d03 100644
--- a/keyboards/gh60/v1p3/rules.mk
+++ b/keyboards/gh60/v1p3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gh80_3000/keymaps/ansi_std/keymap.c b/keyboards/gh80_3000/keymaps/ansi_std/keymap.c
index 2d008cee33..99f5b6bb06 100644
--- a/keyboards/gh80_3000/keymaps/ansi_std/keymap.c
+++ b/keyboards/gh80_3000/keymaps/ansi_std/keymap.c
@@ -2,13 +2,13 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT_fullsize_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ LAYOUT_fullsize_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c
index 77a5963f23..39d783d01b 100644
--- a/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c
+++ b/keyboards/gh80_3000/keymaps/ansi_wkl/keymap.c
@@ -2,13 +2,13 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT_fullsize_ansi_wkl(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ LAYOUT_fullsize_ansi_wkl(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/gh80_3000/keymaps/default/keymap.c b/keyboards/gh80_3000/keymaps/default/keymap.c
index 0bc9c2da8a..0221ffbc32 100644
--- a/keyboards/gh80_3000/keymaps/default/keymap.c
+++ b/keyboards/gh80_3000/keymaps/default/keymap.c
@@ -3,12 +3,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/gh80_3000/keymaps/iso_default/keymap.c b/keyboards/gh80_3000/keymaps/iso_default/keymap.c
index abd10618db..6add4c03be 100644
--- a/keyboards/gh80_3000/keymaps/iso_default/keymap.c
+++ b/keyboards/gh80_3000/keymaps/iso_default/keymap.c
@@ -3,12 +3,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PCMM, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/gh80_3000/keymaps/iso_std/keymap.c b/keyboards/gh80_3000/keymaps/iso_std/keymap.c
index 09e27f4cc8..4e9b8e8653 100644
--- a/keyboards/gh80_3000/keymaps/iso_std/keymap.c
+++ b/keyboards/gh80_3000/keymaps/iso_std/keymap.c
@@ -3,12 +3,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_fullsize_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c
index f60de743f8..4d822dfb68 100644
--- a/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c
+++ b/keyboards/gh80_3000/keymaps/iso_wkl/keymap.c
@@ -3,12 +3,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_fullsize_iso_wkl(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};
diff --git a/keyboards/gh80_3000/rules.mk b/keyboards/gh80_3000/rules.mk
index 395a753d19..fb984117ab 100644
--- a/keyboards/gh80_3000/rules.mk
+++ b/keyboards/gh80_3000/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/ghs/rar/rules.mk b/keyboards/ghs/rar/rules.mk
index 75eaa798ac..4c9451f9a1 100644
--- a/keyboards/ghs/rar/rules.mk
+++ b/keyboards/ghs/rar/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gingham/rules.mk b/keyboards/gingham/rules.mk
index 9f2fc0ee5c..977d9b9d81 100644
--- a/keyboards/gingham/rules.mk
+++ b/keyboards/gingham/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gizmo_engineering/gk6/config.h b/keyboards/gizmo_engineering/gk6/config.h
new file mode 100755
index 0000000000..f437840f91
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/config.h
@@ -0,0 +1,83 @@
+/*
+Copyright 2021 Gizmo Engineering
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6532
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x3031
+#define MANUFACTURER Gizmo Engineering
+#define PRODUCT GK6
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 12
+
+/*
+ * Keyboard Matrix Assignments
+*/
+#define MATRIX_ROW_PINS { B6, B4, D7, D6, D4}
+#define MATRIX_COL_PINS { B5, C6, C7, F7, F6, D5, D3, D2, F1, F4, B7, F5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+// Use ~ key for the bootloader
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+// RGB Matrix
+#define DRIVER_ADDR_1 0b1110100
+#define DRIVER_ADDR_2 0b1110111
+
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 32
+#define DRIVER_2_LED_TOTAL 32
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define RGB_MATRIX_STARTUP_SPD 127
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+
diff --git a/keyboards/gizmo_engineering/gk6/gk6.c b/keyboards/gizmo_engineering/gk6/gk6.c
new file mode 100755
index 0000000000..9066fc85a5
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/gk6.c
@@ -0,0 +1,183 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gk6.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, C1_8, C2_8, C3_8}, //0 led1
+ {0, C1_7, C2_7, C3_7}, //1 led2
+ {0, C1_6, C2_6, C3_6}, //2 led3
+ {0, C1_5, C2_5, C3_5}, //3 led4
+ {0, C1_4, C2_4, C3_4}, //4 led5
+ {0, C1_3, C2_3, C3_3}, //5 led6
+ {0, C1_2, C2_2, C4_3}, //6 led7
+ {0, C1_1, C3_2, C4_2}, //7 led7b
+ {0, C9_1, C8_1, C7_1}, //8 led8
+ {0, C9_2, C8_2, C7_2}, //9 led9
+ {0, C9_3, C8_3, C7_3}, //10 led10
+ {0, C9_4, C8_4, C7_4}, //11 led11
+ {0, C9_5, C8_5, C7_5}, //12 led12
+ {0, C9_6, C8_6, C7_6}, //13 led13
+ {0, C9_7, C8_7, C6_6}, //14 led14
+ {0, C9_8, C7_7, C6_7}, //15 led15
+ {0, C1_16, C2_16, C3_16}, //16 led16
+ {0, C1_15, C2_15, C3_15}, //17 led17
+ {0, C1_14, C2_14, C3_14}, //18 led18
+ {0, C1_13, C2_13, C3_13}, //19 led19
+ {0, C1_12, C2_12, C3_12}, //20 led20
+ {0, C1_11, C2_11, C3_11}, //21 led21
+ {0, C1_10, C2_10, C4_11}, //22 led22
+ {0, C9_9, C8_9, C7_9}, //23 led23
+ {0, C9_10, C8_10, C7_10}, //24 led24 missing on [default]
+ {0, C9_11, C8_11, C7_11}, //25 led25 missing on [1x2u, 12x5]
+ {0, C9_12, C8_12, C7_12}, //26 led26
+ {0, C9_13, C8_13, C7_13}, //27 led27
+ {0, C9_14, C8_14, C7_14}, //28 led28
+ {0, C9_15, C8_15, C6_14}, //29 led29
+ {0, C9_16, C7_15, C6_15}, //30 led30 missing on [default, 1x2u]
+ {1, C1_8, C2_8, C3_8}, //31 led31
+ {1, C1_7, C2_7, C3_7}, //32 led32
+ {1, C1_6, C2_6, C3_6}, //33 led33
+ {1, C1_5, C2_5, C3_5}, //34 led34
+ {1, C1_4, C2_4, C3_4}, //35 led35 missing on [default, 1x2u]
+ {1, C1_3, C2_3, C3_3}, //36 led36 missing on [default, 12x5]
+ {1, C1_2, C2_2, C4_3}, //37 led37
+ {1, C1_1, C3_2, C4_2}, //38 led37b
+ {1, C9_1, C8_1, C7_1}, //39 led38
+ {1, C9_2, C8_2, C7_2}, //40 led39
+ {1, C9_3, C8_3, C7_3}, //41 led40 missing on [default]
+ {1, C9_4, C8_4, C7_4}, //42 led41 missing on [1x2u, 12x5]
+ {1, C9_5, C8_5, C7_5}, //43 led42
+ {1, C9_6, C8_6, C7_6}, //44 led43
+ {1, C9_7, C8_7, C6_6}, //45 led44
+ {1, C9_8, C7_7, C6_7}, //46 led45
+ {1, C1_16, C2_16, C3_16}, //47 led46
+ {1, C1_15, C2_15, C3_15}, //48 led47
+ {1, C1_14, C2_14, C3_14}, //49 led48
+ {1, C1_13, C2_13, C3_13}, //50 led49
+ {1, C1_12, C2_12, C3_12}, //51 led50
+ {1, C1_11, C2_11, C3_11}, //52 led51
+ {1, C1_10, C2_10, C4_11}, //53 led52
+ {1, C1_9, C3_10, C4_10}, //54 led52b
+ {1, C9_9, C8_9, C7_9}, //55 led53
+ {1, C9_10, C8_10, C7_10}, //56 led54
+ {1, C9_11, C8_11, C7_11}, //57 led55
+ {1, C9_12, C8_12, C7_12}, //58 led56
+ {1, C9_13, C8_13, C7_13}, //59 led57
+ {1, C9_14, C8_14, C7_14}, //60 led58
+ {1, C9_15, C8_15, C6_14}, //61 led59
+ {1, C9_16, C7_15, C6_15}, //62 led60
+};
+
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+// 1, 6, 10, 15, 20, 26, 31, 37, 42, 47, 52, 56
+ {0, 5, 10, 15, 20, 26, 31, 37, 43, 48, 53, 58},
+// 2, 7, 11, 16, 21, 27, 32, 37b, 43, 48, 52b, 57
+ {1, 6, 11, 16, 21, 27, 32, 38, 44, 49, 54, 59},
+// 3, 7b, 12, 17, 22, 28, 33, 38, 44, 49, 53, 58
+ {2, 7, 12, 17, 22, 28, 33, 39, 45, 50, 55, 60},
+// 4, 8, 13, 18, 23, 29, 34, 39, 45, 50, 54, 59
+ {3, 8, 13, 18, 23, 29, 34, 40, 46, 51, 56, 61},
+// 5, 9, 14, 19, 25, NO_LED, NO_LED, 41, 46, 51, 55, 60
+ {4, 9, 14, 19, 25, NO_LED, NO_LED, 42, 47, 52, 57, 62},
+}, {
+ // LED Index to Physical Position
+ {0, 0}, // 0
+ {0, 16}, // 1
+ {0, 32}, // 2
+ {0, 48}, // 3
+ {0, 64}, // 4
+
+ {21, 0}, // 5
+ {21, 16}, // 6
+ {21, 32}, // 7
+ {21, 48}, // 8
+ {21, 64}, // 9
+
+ {41, 0}, // 10
+ {41, 16}, // 11
+ {41, 32}, // 12
+ {41, 48}, // 13
+ {41, 64}, // 14
+
+ {61, 0}, // 15
+ {61, 16}, // 16
+ {61, 32}, // 17
+ {61, 48}, // 18
+ {61, 64}, // 19
+
+ {82, 0}, // 20
+ {82, 16}, // 21
+ {82, 32}, // 22
+ {82, 48}, // 23
+ {82, 64}, // 24
+ {92, 64}, // 25
+
+ {102, 0}, // 26
+ {102, 16}, // 27
+ {102, 32}, // 28
+ {102, 48}, // 29
+ {102, 64}, // 30
+
+ {122, 0}, // 31
+ {122, 16}, // 32
+ {122, 32}, // 33
+ {122, 48}, // 34
+ {122, 64}, // 35
+ {112, 64}, // 36
+
+ {142, 0}, // 37
+ {142, 16}, // 38
+ {142, 32}, // 39
+ {142, 48}, // 40
+ {142, 64}, // 41
+ {132, 64}, // 42
+
+ {163, 0}, // 43
+ {163, 16}, // 44
+ {163, 32}, // 45
+ {163, 48}, // 46
+ {163, 64}, // 47
+
+ {183, 0}, // 48
+ {183, 16}, // 49
+ {183, 32}, // 50
+ {183, 48}, // 51
+ {183, 64}, // 52
+
+ {203, 0}, // 53
+ {203, 16}, // 54
+ {203, 32}, // 55
+ {203, 48}, // 56
+ {203, 64}, // 57
+
+ {224, 0}, // 58
+ {224, 16}, // 59
+ {224, 32}, // 60
+ {224, 48}, // 61
+ {224, 64}, // 62
+}, {
+ // LED Index to Flag
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04
+} };
+#endif
diff --git a/keyboards/gizmo_engineering/gk6/gk6.h b/keyboards/gizmo_engineering/gk6/gk6.h
new file mode 100755
index 0000000000..70c0bee4ae
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/gk6.h
@@ -0,0 +1,64 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_gk6_2x2u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, KC_NO, KC_NO, k47, k48, k49, k4a, k4b }, \
+}
+
+#define LAYOUT_gk6_1x2u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, KC_NO, k46, k47, k48, k49, k4a, k4b }, \
+}
+
+#define LAYOUT_ortho_5x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b }, \
+}
diff --git a/keyboards/gizmo_engineering/gk6/info.json b/keyboards/gizmo_engineering/gk6/info.json
new file mode 100755
index 0000000000..e38702d941
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/info.json
@@ -0,0 +1,209 @@
+{
+ "keyboard_name": "Gizmo Engineering GK6",
+ "keyboard_folder": "gk6",
+ "url": "https://gizmo.engineering/",
+ "maintainer": "federicoweber",
+ "layouts": {
+ "LAYOUT_gk6_2x2u": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+ {"x": 6, "y": 1},
+ {"x": 7, "y": 1},
+ {"x": 8, "y": 1},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1},
+ {"x": 11, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+ {"x": 7, "y": 2},
+ {"x": 8, "y": 2},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+ {"x": 6, "y": 3},
+ {"x": 7, "y": 3},
+ {"x": 8, "y": 3},
+ {"x": 9, "y": 3},
+ {"x": 10, "y": 3},
+ {"x": 11, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4, "w": 2},
+ {"x": 6, "y": 4, "w": 2},
+ {"x": 8, "y": 4},
+ {"x": 9, "y": 4},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4}
+ ]
+ },
+ "LAYOUT_ortho_5x12": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+ {"x": 6, "y": 1},
+ {"x": 7, "y": 1},
+ {"x": 8, "y": 1},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1},
+ {"x": 11, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+ {"x": 7, "y": 2},
+ {"x": 8, "y": 2},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+ {"x": 6, "y": 3},
+ {"x": 7, "y": 3},
+ {"x": 8, "y": 3},
+ {"x": 9, "y": 3},
+ {"x": 10, "y": 3},
+ {"x": 11, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+ {"x": 6, "y": 4},
+ {"x": 7, "y": 4},
+ {"x": 8, "y": 4},
+ {"x": 9, "y": 4},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4}
+ ]
+ },
+ "LAYOUT_gk6_1x2u": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+ {"x": 6, "y": 1},
+ {"x": 7, "y": 1},
+ {"x": 8, "y": 1},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1},
+ {"x": 11, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+ {"x": 7, "y": 2},
+ {"x": 8, "y": 2},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+ {"x": 6, "y": 3},
+ {"x": 7, "y": 3},
+ {"x": 8, "y": 3},
+ {"x": 9, "y": 3},
+ {"x": 10, "y": 3},
+ {"x": 11, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4, "w": 2},
+ {"x": 7, "y": 4},
+ {"x": 8, "y": 4},
+ {"x": 9, "y": 4},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/12x5/keymap.c b/keyboards/gizmo_engineering/gk6/keymaps/12x5/keymap.c
new file mode 100755
index 0000000000..bb7b627ce4
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/12x5/keymap.c
@@ -0,0 +1,118 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | GUI | Alt |Lower | Back|Space |Space | Alt |Raise | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, KC_SPC, KC_RALT, RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |RGB_TG|RGB_M |RGB_HU|RGB_SI|RGB_VI|RGB_SP| | | | | | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Debug | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_5x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_PIPE, KC_BSLS,
+ DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | PSCR | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | End | Ins | Play | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | << | >> | Mute | Vol- | Vol+ | | | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | PgDn | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_CAPS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_HOME, KC_END, KC_INS, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
+),
+
+};
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void)
+{
+ rgb_matrix_set_color(25, 0, 0, 0);
+ rgb_matrix_set_color(36, 0, 0, 0);
+ rgb_matrix_set_color(42, 0, 0, 0);
+}
+
+void keyboard_pre_init_user(void) {
+ // 5, 9, 14, 19, 24, 30, 35, 40, 46, 51, 55, 60
+ g_led_config.matrix_co[4][0] = 5;
+ g_led_config.matrix_co[4][1] = 9;
+ g_led_config.matrix_co[4][2] = 14;
+ g_led_config.matrix_co[4][3] = 19;
+ g_led_config.matrix_co[4][4] = 24;
+ g_led_config.matrix_co[4][5] = 30;
+ g_led_config.matrix_co[4][6] = 35;
+ g_led_config.matrix_co[4][7] = 41;
+ g_led_config.matrix_co[4][8] = 47;
+ g_led_config.matrix_co[4][9] = 52;
+ g_led_config.matrix_co[4][10] = 57;
+ g_led_config.matrix_co[4][11] = 62;
+}
+#endif
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/1x2u/keymap.c b/keyboards/gizmo_engineering/gk6/keymaps/1x2u/keymap.c
new file mode 100755
index 0000000000..41e3062dc2
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/1x2u/keymap.c
@@ -0,0 +1,119 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | GUI | Alt |Lower | Back| Space | Alt |Raise | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_gk6_1x2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, KC_RALT, RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |RGB_TG|RGB_M |RGB_HU|RGB_SI|RGB_VI|RGB_SP| | | | | | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Debug | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_gk6_1x2u(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_PIPE, KC_BSLS,
+ DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | PSCR | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | End | Ins | Play | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | << | >> | Mute | Vol- | Vol+ | | | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | PgDn | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_gk6_1x2u(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_CAPS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_HOME, KC_END, KC_INS, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
+),
+
+};
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void)
+{
+ rgb_matrix_set_color(25, 0, 0, 0);
+ rgb_matrix_set_color(30, 0, 0, 0);
+ rgb_matrix_set_color(35, 0, 0, 0);
+ rgb_matrix_set_color(42, 0, 0, 0);
+}
+
+void keyboard_pre_init_user(void) {
+ // 5, 9, 14, 19, 24, 30, 36, 40, 46, 51, 55, 60
+ g_led_config.matrix_co[4][0] = 5;
+ g_led_config.matrix_co[4][1] = 9;
+ g_led_config.matrix_co[4][2] = 14;
+ g_led_config.matrix_co[4][3] = 19;
+ g_led_config.matrix_co[4][4] = 24;
+ g_led_config.matrix_co[4][5] = 30;
+ g_led_config.matrix_co[4][6] = 36;
+ g_led_config.matrix_co[4][7] = 41;
+ g_led_config.matrix_co[4][8] = 47;
+ g_led_config.matrix_co[4][9] = 52;
+ g_led_config.matrix_co[4][10] = 57;
+ g_led_config.matrix_co[4][11] = 62;
+}
+#endif
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/default/keymap.c b/keyboards/gizmo_engineering/gk6/keymaps/default/keymap.c
new file mode 100755
index 0000000000..ad357648ac
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/default/keymap.c
@@ -0,0 +1,104 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | GUI | Alt |Lower | Backspace | Space |Raise | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_gk6_2x2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |RGB_TG|RGB_M |RGB_HU|RGB_SI|RGB_VI|RGB_SP| | | | | | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Debug | | | | | | | | |R Alt |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_gk6_2x2u(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_PIPE, KC_BSLS,
+ DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | PSCR | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | End | Ins | Play | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | << | >> | Mute | Vol- | Vol+ | | | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | PgDn | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_gk6_2x2u(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_CAPS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_HOME, KC_END, KC_INS, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
+),
+
+};
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void)
+{
+ rgb_matrix_set_color(24, 0, 0, 0);
+ rgb_matrix_set_color(30, 0, 0, 0);
+ rgb_matrix_set_color(35, 0, 0, 0);
+ rgb_matrix_set_color(36, 0, 0, 0);
+ rgb_matrix_set_color(41, 0, 0, 0);
+}
+#endif
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/via/keymap.c b/keyboards/gizmo_engineering/gk6/keymaps/via/keymap.c
new file mode 100755
index 0000000000..e3ee7f9818
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/via/keymap.c
@@ -0,0 +1,93 @@
+/* Copyright 2021 Gizmo Engineering
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | CTRL | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | GUI | Alt |Lower | Back | Back |Space |Space |Raise | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_BSPC, KC_BSPC, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |RGB_TG|RGB_M |RGB_HU|RGB_SI|RGB_VI|RGB_SP| | | | | | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |R Alt |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_5x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_PIPE, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | PSCR | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | Home | End | Ins | Play | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | << | >> | Mute | Vol- | Vol+ | | | | | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | PgDn | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_CAPS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_HOME, KC_END, KC_INS, KC_MPLY, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
+),
+
+};
diff --git a/keyboards/gizmo_engineering/gk6/keymaps/via/rules.mk b/keyboards/gizmo_engineering/gk6/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gizmo_engineering/gk6/readme.md b/keyboards/gizmo_engineering/gk6/readme.md
new file mode 100755
index 0000000000..2d4fd2ed6e
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/readme.md
@@ -0,0 +1,13 @@
+# Gizmo Engineering GK6
+
+![GK6](https://i.imgur.com/M9xxMznh.jpg)
+
+* Keyboard Maintainer: [federicoweber](https://github.com/federicoweber)
+* Hardware Supported: atmega32a, Gizmo Engineering GK6
+* Hardware Availability: [Gizmo Engineering](https://gizmo.engineering/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gizmo_engineering/gk6:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/gizmo_engineering/gk6/rules.mk b/keyboards/gizmo_engineering/gk6/rules.mk
new file mode 100755
index 0000000000..c70d2ea88d
--- /dev/null
+++ b/keyboards/gizmo_engineering/gk6/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/gkeyboard/gkb_m16/rules.mk b/keyboards/gkeyboard/gkb_m16/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/gkeyboard/gkb_m16/rules.mk
+++ b/keyboards/gkeyboard/gkb_m16/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gl516/a52gl/a52gl.c b/keyboards/gl516/a52gl/a52gl.c
new file mode 100644
index 0000000000..67c27d2d7d
--- /dev/null
+++ b/keyboards/gl516/a52gl/a52gl.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "a52gl.h"
diff --git a/keyboards/gl516/a52gl/a52gl.h b/keyboards/gl516/a52gl/a52gl.h
new file mode 100644
index 0000000000..6ff00c541f
--- /dev/null
+++ b/keyboards/gl516/a52gl/a52gl.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L34, L35, L36, R31, R33, R34, R35, R36 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, KC_NO, L34, L35, L36 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, KC_NO }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { KC_NO, R31, KC_NO, R33, R34, R35, R36 } \
+ }
diff --git a/keyboards/gl516/a52gl/config.h b/keyboards/gl516/a52gl/config.h
new file mode 100644
index 0000000000..c9f54e0928
--- /dev/null
+++ b/keyboards/gl516/a52gl/config.h
@@ -0,0 +1,44 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE8D1
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT a52gl
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+#define UNUSED_PINS
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/gl516/a52gl/info.json b/keyboards/gl516/a52gl/info.json
new file mode 100644
index 0000000000..b2332c0eda
--- /dev/null
+++ b/keyboards/gl516/a52gl/info.json
@@ -0,0 +1,63 @@
+{
+ "keyboard_name": "a52gl",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1, "y":0},
+ {"label":"0,2", "x":2.25, "y":0},
+ {"label":"0,3", "x":3.25, "y":0},
+ {"label":"0,4", "x":4.25, "y":0},
+ {"label":"0,5", "x":5.25, "y":0},
+ {"label":"0,6", "x":7.75, "y":0},
+ {"label":"4,0", "x":8.75, "y":0},
+ {"label":"4,1", "x":9.75, "y":0},
+ {"label":"4,2", "x":10.75, "y":0},
+ {"label":"4,3", "x":12, "y":0},
+ {"label":"4,4", "x":13, "y":0},
+ {"label":"4,5", "x":14, "y":0},
+ {"label":"4,6", "x":15, "y":0, "w":1.5},
+ {"label":"1,0", "x":0, "y":1, "w":1.25},
+ {"label":"1,1", "x":1.25, "y":1},
+ {"label":"1,2", "x":2.52, "y":1},
+ {"label":"1,3", "x":3.52, "y":1},
+ {"label":"1,4", "x":4.52, "y":1},
+ {"label":"1,5", "x":5.52, "y":1},
+ {"label":"1,6", "x":8, "y":1},
+ {"label":"5,0", "x":9, "y":1},
+ {"label":"5,1", "x":10, "y":1},
+ {"label":"5,2", "x":11, "y":1},
+ {"label":"5,3", "x":12.25, "y":1},
+ {"label":"5,4", "x":13.25, "y":1},
+ {"label":"5,5", "x":14.25, "y":1, "w":2.25},
+ {"label":"2,0", "x":0, "y":2, "w":1.75},
+ {"label":"2,1", "x":1.75, "y":2},
+ {"label":"2,2", "x":3.05, "y":2},
+ {"label":"2,3", "x":4.05, "y":2},
+ {"label":"2,4", "x":5.05, "y":2},
+ {"label":"2,5", "x":6.05, "y":2},
+ {"label":"2,6", "x":7.5, "y":2},
+ {"label":"6,0", "x":8.5, "y":2},
+ {"label":"6,1", "x":9.5, "y":2},
+ {"label":"6,2", "x":10.5, "y":2},
+ {"label":"6,3", "x":12, "y":2},
+ {"label":"6,4", "x":13, "y":2},
+ {"label":"6,5", "x":14.25, "y":2.25},
+ {"label":"6,6", "x":15.5, "y":2},
+ {"label":"3,0", "x":0, "y":3, "w":1.25},
+ {"label":"3,1", "x":1.25, "y":3, "w":1.25},
+ {"label":"3,2", "x":3.05, "y":3},
+ {"label":"3,4", "x":4.05, "y":3, "w":2},
+ {"label":"3,5", "x":6.05, "y":3},
+ {"label":"3,6", "x":7.5, "y":3, "w":2.25},
+ {"label":"7,1", "x":9.75, "y":3, "w":1.25},
+ {"label":"7,3", "x":12.0, "y":3},
+ {"label":"7,4", "x":13.25, "y":3.25},
+ {"label":"7,5", "x":14.25, "y":3.25},
+ {"label":"7,6", "x":15.25, "y":3.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gl516/a52gl/keymaps/default/keymap.c b/keyboards/gl516/a52gl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..adcf71879d
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+LT(_FN,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [_FN] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ )
+};
+
diff --git a/keyboards/gl516/a52gl/keymaps/salicylic/config.h b/keyboards/gl516/a52gl/keymaps/salicylic/config.h
new file mode 100644
index 0000000000..fd96baa819
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/salicylic/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c b/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c
new file mode 100644
index 0000000000..4607d1dc50
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/salicylic/keymap.c
@@ -0,0 +1,65 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_LBRC, JP_RBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_BSLS, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_ZKHK,KC_LALT,LGUI_T(JP_MHEN),LT(_LOWER,KC_ENT),KC_BSPC,LT(_RAISE,KC_SPC),ALT_T(JP_HENK),KC_APP,KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [_LOWER] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, XXXXXXX, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,KC_LSFT,KC_0, KC_1, KC_2, KC_3, JP_PLUS, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, JP_MHEN, MO(_LOWER), _______, MO(_RAISE), JP_DOT, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ ),
+ [_RAISE] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP,LALT(KC_PSCR),KC_PSCR, KC_DEL,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,KC_LSFT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_PGDN, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, JP_MHEN, _______, KC_DEL, _______, JP_HENK, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ )
+};
+
diff --git a/keyboards/gl516/a52gl/keymaps/via/keymap.c b/keyboards/gl516/a52gl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..77386f8a25
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/via/keymap.c
@@ -0,0 +1,65 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+LT(1,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [1] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ ),
+ [3] = LAYOUT(
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______,_______,_______,_______,_______,_______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //,-----------------------------------------------------| |--------------------------------------------------------------.
+ )
+};
diff --git a/keyboards/gl516/a52gl/keymaps/via/rules.mk b/keyboards/gl516/a52gl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/gl516/a52gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/a52gl/matrix.c b/keyboards/gl516/a52gl/matrix.c
new file mode 100644
index 0000000000..1a97fdfd61
--- /dev/null
+++ b/keyboards/gl516/a52gl/matrix.c
@@ -0,0 +1,158 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "matrix.h"
+#include "quantum.h"
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+static void select_row(uint8_t row)
+{
+ setPinOutput(row_pins[row]);
+ writePinLow(row_pins[row]);
+}
+
+static void unselect_row(uint8_t row)
+{
+ setPinInputHigh(row_pins[row]);
+}
+
+static void unselect_rows(void)
+{
+ for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static void select_col(uint8_t col)
+{
+ setPinOutput(col_pins[col]);
+ writePinLow(col_pins[col]);
+}
+
+static void unselect_col(uint8_t col)
+{
+ setPinInputHigh(col_pins[col]);
+}
+
+static void unselect_cols(void)
+{
+ for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+}
+
+static void init_pins(void) {
+ unselect_rows();
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
+{
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[current_row];
+
+ // Clear data in matrix row
+ current_matrix[current_row] = 0;
+
+ // Select row and wait for row selecton to stabilize
+ select_row(current_row);
+ matrix_io_delay();
+
+ // For each col...
+ for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+
+ // Select the col pin to read (active low)
+ uint8_t pin_state = readPin(col_pins[col_index]);
+
+ // Populate the matrix row with the state of the col pin
+ current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
+
+ // Unselect row
+ unselect_row(current_row);
+
+ return (last_row_value != current_matrix[current_row]);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
+{
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ matrix_io_delay();
+
+ // For each row...
+ for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
+ {
+ uint8_t tmp = row_index + MATRIX_ROWS/2;
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[tmp];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0)
+ {
+ // Pin LO, set col bit
+ current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
+ }
+ else
+ {
+ // Pin HI, clear col bit
+ current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
+ {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[])
+{
+ bool changed = false;
+
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
+ changed |= read_cols_on_row(current_matrix, current_row);
+ }
+ //else
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+
+ return changed;
+}
diff --git a/keyboards/gl516/a52gl/readme.md b/keyboards/gl516/a52gl/readme.md
new file mode 100644
index 0000000000..cfc7277eef
--- /dev/null
+++ b/keyboards/gl516/a52gl/readme.md
@@ -0,0 +1,26 @@
+# a52gl
+
+![a52gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911005227.jpg)
+
+This is 52 keys Alice style keyboard.
+Use the GL516 case.
+
+* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+* Hardware Supported: a52gl PCB, Pro Micro
+* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple), [yushakobo Shop](https://shop.yushakobo.jp/products/3342)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gl516/a52gl:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
diff --git a/keyboards/gl516/a52gl/rules.mk b/keyboards/gl516/a52gl/rules.mk
new file mode 100644
index 0000000000..37fe9349c6
--- /dev/null
+++ b/keyboards/gl516/a52gl/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/gl516/j73gl/config.h b/keyboards/gl516/j73gl/config.h
new file mode 100644
index 0000000000..50d745ebb1
--- /dev/null
+++ b/keyboards/gl516/j73gl/config.h
@@ -0,0 +1,63 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE8D0
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT j73gl
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 }
+#define UNUSED_PINS
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifndef RGBLED_NUM
+ #define RGBLED_NUM 73
+#endif
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
diff --git a/keyboards/gl516/j73gl/info.json b/keyboards/gl516/j73gl/info.json
new file mode 100644
index 0000000000..32b771c983
--- /dev/null
+++ b/keyboards/gl516/j73gl/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "j73gl",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1, "y":0},
+ {"label":"0,2", "x":2, "y":0},
+ {"label":"0,3", "x":3, "y":0},
+ {"label":"0,4", "x":4, "y":0},
+ {"label":"0,5", "x":5, "y":0},
+ {"label":"0,6", "x":6, "y":0},
+ {"label":"5,0", "x":7, "y":0},
+ {"label":"5,1", "x":8, "y":0},
+ {"label":"5,2", "x":9, "y":0},
+ {"label":"5,3", "x":10, "y":0},
+ {"label":"5,4", "x":11, "y":0},
+ {"label":"5,5", "x":12, "y":0},
+ {"label":"5,6", "x":13, "y":0},
+ {"label":"6,6", "x":14, "y":0},
+ {"label":"5,7", "x":15, "y":0},
+ {"label":"1,0", "x":0, "y":1, "w":1.5},
+ {"label":"1,1", "x":1.5, "y":1},
+ {"label":"1,2", "x":2.5, "y":1},
+ {"label":"1,3", "x":3.5, "y":1},
+ {"label":"1,4", "x":4.5, "y":1},
+ {"label":"1,5", "x":5.5, "y":1},
+ {"label":"1,6", "x":6.5, "y":1},
+ {"label":"6,0", "x":7.5, "y":1},
+ {"label":"6,1", "x":8.5, "y":1},
+ {"label":"6,2", "x":9.5, "y":1},
+ {"label":"6,3", "x":10.5, "y":1},
+ {"label":"6,4", "x":11.5, "y":1},
+ {"label":"6,5", "x":12.5, "y":1},
+ {"label":"6,7", "x":15, "y":1},
+ {"label":"2,0", "x":0, "y":2, "w":1.75},
+ {"label":"2,1", "x":1.75, "y":2},
+ {"label":"2,2", "x":2.75, "y":2},
+ {"label":"2,3", "x":3.75, "y":2},
+ {"label":"2,4", "x":4.75, "y":2},
+ {"label":"2,5", "x":5.75, "y":2},
+ {"label":"2,6", "x":6.75, "y":2},
+ {"label":"7,0", "x":7.75, "y":2},
+ {"label":"7,1", "x":8.75, "y":2},
+ {"label":"7,2", "x":9.75, "y":2},
+ {"label":"7,3", "x":10.75, "y":2},
+ {"label":"7,4", "x":11.75, "y":2},
+ {"label":"7,5", "x":12.75, "y":2},
+ {"label":"7,6", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"7,7", "x":15, "y":2},
+ {"label":"3,0", "x":0, "y":3, "w":2.25},
+ {"label":"3,1", "x":2.25, "y":3},
+ {"label":"3,2", "x":3.25, "y":3},
+ {"label":"3,3", "x":4.25, "y":3},
+ {"label":"3,4", "x":5.25, "y":3},
+ {"label":"3,5", "x":6.25, "y":3},
+ {"label":"3,6", "x":7.25, "y":3},
+ {"label":"8,0", "x":8.25, "y":3},
+ {"label":"8,1", "x":9.25, "y":3},
+ {"label":"8,2", "x":10.25, "y":3},
+ {"label":"8,3", "x":11.25, "y":3},
+ {"label":"8,5", "x":12.25, "y":3, "w":1.75},
+ {"label":"8,6", "x":14, "y":3},
+ {"label":"8,7", "x":15, "y":3},
+ {"label":"4,0", "x":0, "y":4, "w":1.25},
+ {"label":"4,1", "x":1.25, "y":4},
+ {"label":"4,2", "x":2.25, "y":4, "w":1.25},
+ {"label":"4,3", "x":3.5, "y":4},
+ {"label":"4,4", "x":4.5, "y":4, "w":1.25},
+ {"label":"4,5", "x":5.75, "y":4},
+ {"label":"4,6", "x":6.75, "y":4},
+ {"label":"9,0", "x":7.75, "y":4, "w":1.25},
+ {"label":"9,1", "x":9, "y":4},
+ {"label":"9,2", "x":10, "y":4, "w":1.25},
+ {"label":"9,3", "x":11.25, "y":4, "w":1.25},
+ {"label":"9,5", "x":13, "y":4},
+ {"label":"9,6", "x":14, "y":4},
+ {"label":"9,7", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gl516/j73gl/j73gl.c b/keyboards/gl516/j73gl/j73gl.c
new file mode 100644
index 0000000000..483b005844
--- /dev/null
+++ b/keyboards/gl516/j73gl/j73gl.c
@@ -0,0 +1,55 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "j73gl.h"
+
+#ifdef RGB_MATRIX_ENABLE
+ led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 67,66,60,59,50,49,40,39 },
+ { 68,65,61,58,51,46,48,41 },
+ { 69,64,62,57,52,45,47,42 },
+ { 70,63,56,53,46,43,36,33 },
+ { 71, 72, 55, 54, 45,44,35,34 },
+ { 30,29,20,19,10, 9, 8, 0 },
+ { 38,31,28,21,18,11, 1 },
+ { 37,32,27,22,17,12,7,2 },
+ { 26,23,16, 13, 6,3 },
+ { 25, 24, 15, 14,5,4 }
+ }, {
+ // LED Index to Physical Position
+ { 224, 0 }, { 224, 16 }, { 224, 32 }, { 224, 48 }, { 224, 64 },{ 209, 64 }, { 209, 48 }, { 206, 24 }, { 209, 0 }, { 194, 0 },
+ { 179, 0 }, { 188, 16 }, { 191, 32 }, { 189, 48 }, { 194, 64 },{ 171, 64 }, { 169, 48 }, { 176, 32 }, { 173, 16 }, { 165, 0 },
+ { 150, 0 }, { 156, 16 }, { 161, 32 }, { 154, 48 }, { 152, 64 },{ 135, 64 }, { 139, 48 }, { 146, 32 }, { 143, 16 }, { 135, 0 },
+ { 120, 0 }, { 128, 16 }, { 131, 32 }, { 124, 48 }, { 118, 64 },{ 101, 64 }, { 109, 48 }, { 116, 32 }, { 113, 16 }, { 105, 0 },
+ { 90, 0 }, { 98, 16 }, { 101, 32 }, { 94, 48 }, { 86, 64 },{ 69, 64 }, { 79, 48 }, { 86, 32 }, { 83, 16 }, { 75, 0 },
+ { 60, 0 }, { 68, 16 }, { 71, 32 }, { 64, 48 }, { 53, 64 },{ 36, 64 }, { 49, 48 }, { 56, 32 }, { 53, 16 }, { 45, 0 },
+ { 30, 0 }, { 38, 16 }, { 41, 32 }, { 34, 48 }, { 26, 32 },{ 23, 16 }, { 15, 48 }, { 0, 0 }, { 11, 16 }, { 13, 32 },
+ { 17, 48 }, { 2, 64 }, { 19, 64 }
+ }, {
+ // LED Index to Flag
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4
+} };
+#endif
+
diff --git a/keyboards/gl516/j73gl/j73gl.h b/keyboards/gl516/j73gl/j73gl.h
new file mode 100644
index 0000000000..ad4821461a
--- /dev/null
+++ b/keyboards/gl516/j73gl/j73gl.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R16, R07, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R17, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, R27, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R45, R46, R47 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, KC_NO }, \
+ { L20, L21, L22, L23, L24, L25, L26, KC_NO }, \
+ { L30, L31, L32, L33, L34, L35, L36, KC_NO }, \
+ { L40, L41, L42, L43, L44, L45, L46, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, KC_NO, R35, R36, R37 }, \
+ { R40, R41, R42, R43, KC_NO, R45, R46, R47 } \
+ }
diff --git a/keyboards/gl516/j73gl/keymaps/default/keymap.c b/keyboards/gl516/j73gl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..846df7d2b7
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+LT(_FN,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [_FN] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ )
+};
+
diff --git a/keyboards/gl516/j73gl/keymaps/via/keymap.c b/keyboards/gl516/j73gl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3e8fba928d
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via/keymap.c
@@ -0,0 +1,74 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+LT(1,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [1] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [3] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/gl516/j73gl/keymaps/via/rules.mk b/keyboards/gl516/j73gl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
new file mode 100644
index 0000000000..d2e1d20893
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/config.h
@@ -0,0 +1,43 @@
+/* Copyright 2018 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
+
+#ifdef RGBLED_NUM
+ #undef RGBLED_NUM
+#endif
+
+#define DRIVER_LED_TOTAL 73
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+# define RGB_MATRIX_VAL_STEP 5
+# define RGB_MATRIX_SPD_STEP 10
+#endif
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
new file mode 100644
index 0000000000..3e8fba928d
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
@@ -0,0 +1,74 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_HOME,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_END,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+LT(1,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT, KC_PGUP,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(JP_BSLS), KC_UP, KC_PGDN,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, KC_SPC, KC_SPC, JP_HENK, JP_KANA, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [1] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ ),
+ [3] = LAYOUT(
+ //,-----------------------------------------------------+--------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------+--------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk
new file mode 100644
index 0000000000..294015d80b
--- /dev/null
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/rules.mk
@@ -0,0 +1,7 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+MAGIC_ENABLE = no
diff --git a/keyboards/gl516/j73gl/matrix.c b/keyboards/gl516/j73gl/matrix.c
new file mode 100644
index 0000000000..1a97fdfd61
--- /dev/null
+++ b/keyboards/gl516/j73gl/matrix.c
@@ -0,0 +1,158 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "matrix.h"
+#include "quantum.h"
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+static void select_row(uint8_t row)
+{
+ setPinOutput(row_pins[row]);
+ writePinLow(row_pins[row]);
+}
+
+static void unselect_row(uint8_t row)
+{
+ setPinInputHigh(row_pins[row]);
+}
+
+static void unselect_rows(void)
+{
+ for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static void select_col(uint8_t col)
+{
+ setPinOutput(col_pins[col]);
+ writePinLow(col_pins[col]);
+}
+
+static void unselect_col(uint8_t col)
+{
+ setPinInputHigh(col_pins[col]);
+}
+
+static void unselect_cols(void)
+{
+ for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+}
+
+static void init_pins(void) {
+ unselect_rows();
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
+{
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[current_row];
+
+ // Clear data in matrix row
+ current_matrix[current_row] = 0;
+
+ // Select row and wait for row selecton to stabilize
+ select_row(current_row);
+ matrix_io_delay();
+
+ // For each col...
+ for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+
+ // Select the col pin to read (active low)
+ uint8_t pin_state = readPin(col_pins[col_index]);
+
+ // Populate the matrix row with the state of the col pin
+ current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
+
+ // Unselect row
+ unselect_row(current_row);
+
+ return (last_row_value != current_matrix[current_row]);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
+{
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ matrix_io_delay();
+
+ // For each row...
+ for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
+ {
+ uint8_t tmp = row_index + MATRIX_ROWS/2;
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[tmp];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0)
+ {
+ // Pin LO, set col bit
+ current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
+ }
+ else
+ {
+ // Pin HI, clear col bit
+ current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
+ {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[])
+{
+ bool changed = false;
+
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
+ changed |= read_cols_on_row(current_matrix, current_row);
+ }
+ //else
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+
+ return changed;
+}
diff --git a/keyboards/gl516/j73gl/readme.md b/keyboards/gl516/j73gl/readme.md
new file mode 100644
index 0000000000..b6f1ebdc24
--- /dev/null
+++ b/keyboards/gl516/j73gl/readme.md
@@ -0,0 +1,27 @@
+# j73gl
+
+![j73gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911015520.png)
+
+This is 73 keys Japanese style keyboard.
+Use the GL516 case.
+
+* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+* Hardware Supported: j73gl PCB, Pro Micro
+* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple), [yushakobo Shop](https://shop.yushakobo.jp/products/3342)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gl516/j73gl:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
+
diff --git a/keyboards/gl516/j73gl/rules.mk b/keyboards/gl516/j73gl/rules.mk
new file mode 100644
index 0000000000..a7521a0e40
--- /dev/null
+++ b/keyboards/gl516/j73gl/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/gl516/n51gl/config.h b/keyboards/gl516/n51gl/config.h
new file mode 100644
index 0000000000..ea50fcfa1a
--- /dev/null
+++ b/keyboards/gl516/n51gl/config.h
@@ -0,0 +1,67 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE8CF
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Salicylic_Acid
+#define PRODUCT n51gl
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+#define UNUSED_PINS
+
+#define ENCODERS_PAD_A { D7 }
+#define ENCODERS_PAD_B { E6 }
+#define ENCODER_RESOLUTION 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifndef RGBLED_NUM
+ #define RGBLED_NUM 15
+#endif
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
diff --git a/keyboards/gl516/n51gl/info.json b/keyboards/gl516/n51gl/info.json
new file mode 100644
index 0000000000..6c94d32e30
--- /dev/null
+++ b/keyboards/gl516/n51gl/info.json
@@ -0,0 +1,66 @@
+{
+ "keyboard_name": "n51gl",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00", "x":0.25, "y":0},
+ {"label":"L01", "x":1.25, "y":0},
+ {"label":"L02", "x":2.25, "y":0},
+ {"label":"L03", "x":3.25, "y":0},
+ {"label":"L04", "x":4.25, "y":0},
+ {"label":"L05", "x":5.25, "y":0},
+ {"label":"L06", "x":6.25, "y":0},
+ {"label":"R00", "x":9.25, "y":0},
+ {"label":"R01", "x":10.25, "y":0},
+ {"label":"R02", "x":11.25, "y":0},
+ {"label":"R03", "x":12.25, "y":0},
+ {"label":"R04", "x":13.25, "y":0},
+ {"label":"R05", "x":14.25, "y":0},
+ {"label":"R06", "x":15.25, "y":0},
+
+ {"label":"L11", "x":0.25, "y":1, "w":1.75},
+ {"label":"L12", "x":2, "y":1},
+ {"label":"L13", "x":3.25, "y":1},
+ {"label":"L14", "x":4.25, "y":1},
+ {"label":"L15", "x":5.25, "y":1},
+ {"label":"L16", "x":6.25, "y":1},
+ {"label":"R10", "x":9.25, "y":1},
+ {"label":"R11", "x":10.25, "y":1},
+ {"label":"R12", "x":11.25, "y":1},
+ {"label":"R13", "x":12.25, "y":1},
+ {"label":"R14", "x":13.5, "y":1},
+ {"label":"R15", "x":14.5, "y":1},
+ {"label":"R16", "x":15.5, "y":1},
+
+ {"label":"L21", "x":0, "y":2, "w":1.75},
+ {"label":"L22", "x":1.75, "y":2},
+ {"label":"L23", "x":3.25, "y":2},
+ {"label":"L24", "x":4.25, "y":2},
+ {"label":"L25", "x":5.25, "y":2},
+ {"label":"L26", "x":6.25, "y":2},
+ {"label":"L20", "x":7.75, "y":2},
+ {"label":"R20", "x":9.25, "y":2},
+ {"label":"R21", "x":10.25, "y":2},
+ {"label":"R22", "x":11.25, "y":2},
+ {"label":"R23", "x":12.25, "y":2},
+ {"label":"R24", "x":13.75, "y":2},
+ {"label":"R25", "x":14.75, "y":2},
+ {"label":"R26", "x":15.75, "y":2},
+
+ {"label":"L31", "x":0.25, "y":3, "w":1.25},
+ {"label":"L32", "x":1.5, "y":3, "w":1.25},
+ {"label":"L34", "x":4.125, "y":3, "w":1.25},
+ {"label":"L35", "x":5.375, "y":3, "w":1.25},
+ {"label":"L36", "x":6.625, "y":3},
+ {"label":"R30", "x":8.875, "y":3},
+ {"label":"R31", "x":9.875, "y":3, "w":1.25},
+ {"label":"R32", "x":11.125, "y":3, "w":1.25},
+ {"label":"R34", "x":13.75, "y":3},
+ {"label":"R35", "x":14.75, "y":3},
+ {"label":"R36", "x":15.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gl516/n51gl/keymaps/default/keymap.c b/keyboards/gl516/n51gl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..469626d851
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/default/keymap.c
@@ -0,0 +1,60 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _FN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LT(_FN,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [_FN] = LAYOUT(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ _______, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code16(KC_VOLD);
+ } else {
+ tap_code16(KC_VOLU);
+ }
+ return true;
+}
diff --git a/keyboards/gl516/n51gl/keymaps/salicylic/config.h b/keyboards/gl516/n51gl/keymaps/salicylic/config.h
new file mode 100644
index 0000000000..fd96baa819
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/salicylic/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
new file mode 100644
index 0000000000..819ac94e37
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
@@ -0,0 +1,117 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLU, KC_H, KC_J, KC_K, KC_L, JP_MINS, JP_BSLS, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, JP_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_ZKHK, KC_LALT,LGUI_T(JP_MHEN),LT(_LOWER,KC_ENT),KC_BSPC, KC_VOLD, KC_DEL,LT(_RAISE,KC_SPC),ALT_T(JP_HENK),KC_LEFT, KC_DOWN, KC_RGHT
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [_LOWER] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ _______, _______, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD, KC_6, KC_7, KC_8, KC_9, JP_ASTR, JP_SLSH, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_QUOT, JP_HASH, JP_DQT, JP_LPRN, JP_RPRN, JP_AT, KC_WH_U, XXXXXXX, KC_4, KC_5, KC_6, JP_MINS, JP_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE, KC_BTN3, KC_0, KC_1, KC_2, KC_3, JP_PLUS, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, JP_MHEN, MO(_LOWER), _______, KC_WH_D, _______, MO(_RAISE), JP_DOT, _______, _______, _______
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+
+ [_RAISE] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ _______, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, XXXXXXX, KC_UP, XXXXXXX, KC_PGUP,LALT(KC_PSCR),KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LCTL_T(KC_F11), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_WH_L, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, KC_WH_R, _______, _______, JP_HENK, _______, _______, _______
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ RESET, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LALT(KC_PSCR),KC_PSCR,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG, RGB_MOD, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ SFT_T(KC_F12), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, XXXXXXX, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______,RGB_RMOD, _______, _______, _______, _______, _______, _______
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ )
+};
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+#ifdef RGBLIGHT_ENABLE
+ switch (get_highest_layer(state)) {
+ case _LOWER:
+ rgblight_sethsv_at(HSV_BLUE, 0);
+ break;
+ case _RAISE:
+ rgblight_sethsv_at(HSV_RED, 0);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_at(HSV_PURPLE, 0);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_sethsv_at( 0, 0, 0, 0);
+ break;
+ }
+ rgblight_set_effect_range( 1, 14);
+#endif
+return state;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ keypos_t key;
+ if (clockwise) {
+ key.row = 3;
+ key.col = 0;
+ } else {
+ key.row = 1;
+ key.col = 0;
+ }
+ action_exec((keyevent_t){.key = key, .pressed = true, .time = (timer_read() | 1)});
+ action_exec((keyevent_t){.key = key, .pressed = false, .time = (timer_read() | 1)});
+ return true;
+}
diff --git a/keyboards/gl516/n51gl/keymaps/via/config.h b/keyboards/gl516/n51gl/keymaps/via/config.h
new file mode 100644
index 0000000000..fd96baa819
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Salicylic_acid3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/gl516/n51gl/keymaps/via/keymap.c b/keyboards/gl516/n51gl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3ad85edcba
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/keymap.c
@@ -0,0 +1,102 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LT(1,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_VOLU, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_VOLD, KC_SPC, KC_SPC, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [1] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ _______, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [2] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ ),
+ [3] = LAYOUT_rotary_layer(
+ //,--------------------------------------------------------------| |--------------------------------------------------------------.
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ //|--------------------------------------------------------------| |--------------------------------------------------------------'
+ )
+};
+
+//A description for expressing the layer position in LED mode.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, 2, 1, 3);
+#ifdef RGBLIGHT_ENABLE
+ switch (get_highest_layer(state)) {
+ case 1:
+ rgblight_sethsv_at(HSV_BLUE, 0);
+ break;
+ case 2:
+ rgblight_sethsv_at(HSV_RED, 0);
+ break;
+ case 3:
+ rgblight_sethsv_at(HSV_PURPLE, 0);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_sethsv_at( 0, 0, 0, 0);
+ break;
+ }
+ rgblight_set_effect_range( 1, 14);
+#endif
+return state;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ keypos_t key;
+ if (clockwise) {
+ key.row = 3;
+ key.col = 0;
+ } else {
+ key.row = 1;
+ key.col = 0;
+ }
+ action_exec((keyevent_t){.key = key, .pressed = true, .time = (timer_read() | 1)});
+ action_exec((keyevent_t){.key = key, .pressed = false, .time = (timer_read() | 1)});
+ return true;
+}
diff --git a/keyboards/gl516/n51gl/keymaps/via/rules.mk b/keyboards/gl516/n51gl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/gl516/n51gl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gl516/n51gl/matrix.c b/keyboards/gl516/n51gl/matrix.c
new file mode 100644
index 0000000000..1a97fdfd61
--- /dev/null
+++ b/keyboards/gl516/n51gl/matrix.c
@@ -0,0 +1,158 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "matrix.h"
+#include "quantum.h"
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+static void select_row(uint8_t row)
+{
+ setPinOutput(row_pins[row]);
+ writePinLow(row_pins[row]);
+}
+
+static void unselect_row(uint8_t row)
+{
+ setPinInputHigh(row_pins[row]);
+}
+
+static void unselect_rows(void)
+{
+ for(uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static void select_col(uint8_t col)
+{
+ setPinOutput(col_pins[col]);
+ writePinLow(col_pins[col]);
+}
+
+static void unselect_col(uint8_t col)
+{
+ setPinInputHigh(col_pins[col]);
+}
+
+static void unselect_cols(void)
+{
+ for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+}
+
+static void init_pins(void) {
+ unselect_rows();
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ setPinInputHigh(col_pins[x]);
+ }
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+}
+
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
+{
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[current_row];
+
+ // Clear data in matrix row
+ current_matrix[current_row] = 0;
+
+ // Select row and wait for row selecton to stabilize
+ select_row(current_row);
+ matrix_io_delay();
+
+ // For each col...
+ for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+
+ // Select the col pin to read (active low)
+ uint8_t pin_state = readPin(col_pins[col_index]);
+
+ // Populate the matrix row with the state of the col pin
+ current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
+
+ // Unselect row
+ unselect_row(current_row);
+
+ return (last_row_value != current_matrix[current_row]);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
+{
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ matrix_io_delay();
+
+ // For each row...
+ for(uint8_t row_index = 0; row_index < MATRIX_ROWS/2; row_index++)
+ {
+ uint8_t tmp = row_index + MATRIX_ROWS/2;
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[tmp];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0)
+ {
+ // Pin LO, set col bit
+ current_matrix[tmp] |= (MATRIX_ROW_SHIFTER << current_col);
+ }
+ else
+ {
+ // Pin HI, clear col bit
+ current_matrix[tmp] &= ~(MATRIX_ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[tmp]) && !(matrix_changed))
+ {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[])
+{
+ bool changed = false;
+
+ // Set row, read cols
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS / 2; current_row++) {
+ changed |= read_cols_on_row(current_matrix, current_row);
+ }
+ //else
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+
+ return changed;
+}
diff --git a/keyboards/gl516/n51gl/n51gl.c b/keyboards/gl516/n51gl/n51gl.c
new file mode 100644
index 0000000000..f13d0cd78e
--- /dev/null
+++ b/keyboards/gl516/n51gl/n51gl.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "n51gl.h"
diff --git a/keyboards/gl516/n51gl/n51gl.h b/keyboards/gl516/n51gl/n51gl.h
new file mode 100644
index 0000000000..6429b78fd0
--- /dev/null
+++ b/keyboards/gl516/n51gl/n51gl.h
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 Salicylic_Acid
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L21, L22, L23, L24, L25, L26, L20, R20, R21, R22, R23, R24, R25, R26, \
+ L31, L32, L34, L35, L36, R30, R31, R32, R34, R35, R36 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { KC_NO, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { KC_NO, L31, L32, KC_NO, L34, L35, L36 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, KC_NO, R34, R35, R36 } \
+ }
+
+#define LAYOUT_rotary_layer( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L11, L12, L13, L14, L15, L16, L10, R10, R11, R12, R13, R14, R15, R16, \
+ L21, L22, L23, L24, L25, L26, L20, R20, R21, R22, R23, R24, R25, R26, \
+ L31, L32, L34, L35, L36, L30, R30, R31, R32, R34, R35, R36 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, KC_NO, L34, L35, L36 }, \
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, KC_NO, R34, R35, R36 } \
+ }
diff --git a/keyboards/gl516/n51gl/readme.md b/keyboards/gl516/n51gl/readme.md
new file mode 100644
index 0000000000..916b8ff671
--- /dev/null
+++ b/keyboards/gl516/n51gl/readme.md
@@ -0,0 +1,27 @@
+# n51gl
+
+![n51gl](https://cdn-ak.f.st-hatena.com/images/fotolife/S/Salicylic_acid3/20210911/20210911015705.png)
+
+This is 51 keys Custom keyboard.
+Use the GL516 case.
+
+* Keyboard Maintainer: [Salicylic_acid3](https://github.com/Salicylic-acid3)
+* Hardware Supported: nknl7 PCB, Pro Micro
+* Hardware Availability: [PCB & Case Data](https://github.com/Salicylic-acid3/GL516_Exemple)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gl516/n51gl:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+[Build guide](https://salicylic-acid3.hatenablog.com/entry/a52gl-j73gl-build-guide)
+
diff --git a/keyboards/gl516/n51gl/rules.mk b/keyboards/gl516/n51gl/rules.mk
new file mode 100644
index 0000000000..6279bfb0e0
--- /dev/null
+++ b/keyboards/gl516/n51gl/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c \ No newline at end of file
diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c
index b801640436..e521425f26 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c
+++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/keymap.c
@@ -1,5 +1,5 @@
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
- Copyright 2021 Andre Brait <andrebrait@gmail.com>
+ Copyright 2022 Andre Brait <andrebrait@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,11 +17,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
-#ifdef RGB_MATRIX_ENABLE
- #ifndef RGB_CONFIRMATION_BLINKING_TIME
- #define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds
- #endif
-#endif // RGB_MATRIX_ENABLE
+enum layers {
+ WIN_BASE = 0,
+ WIN_FN,
+ MAC_BASE,
+ MAC_FN
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+#define TO_WINB TO(WIN_BASE)
+#define TO_MACB TO(MAC_BASE)
+#define MO_WINF MO(WIN_FN)
+#define MO_MACF MO(MAC_FN)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -45,25 +60,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
- [0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ //
+ // RGB and function keys are inspired by the Keychron Q1 layouts instead of using the default keys.
+ //
+ // KC_PAUS/KC_BRMU and KC_SCRL/KC_BRMD are aliases for the same keys, but their names reflect better the function in each layout.
+ [WIN_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO_WINF, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT(
- _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_INS, _______,
- _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
- _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
- _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
- _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ [WIN_FN] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_INS, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_PAUS,
+ TO_MACB, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCRL,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
),
+ [MAC_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO_MACF, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [MAC_FN] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_INS, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_BRMU,
+ TO_WINB, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRMD,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ )
};
// clang-format on
@@ -80,13 +115,14 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#ifdef RGB_MATRIX_ENABLE
+#define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds
+
/* Renaming those to make the purpose on this keymap clearer */
#define LED_FLAG_CAPS LED_FLAG_NONE
#define LED_FLAG_EFFECTS LED_FLAG_INDICATOR
static void set_rgb_caps_leds(void);
-#if RGB_CONFIRMATION_BLINKING_TIME > 0
static uint16_t effect_started_time = 0;
static uint8_t r_effect = 0x0, g_effect = 0x0, b_effect = 0x0;
static void start_effects(void);
@@ -100,7 +136,31 @@ static void start_effects(void);
#endif
#define effect_red() r_effect = 0xFF, g_effect = 0x0, b_effect = 0x0
#define effect_green() r_effect = 0x0, g_effect = 0xFF, b_effect = 0x0
-#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+#define effect_blue() r_effect = 0x0, g_effect = 0x0, b_effect = 0xFF
+#define effect_white() r_effect = 0xFF, g_effect = 0xFF, b_effect = 0xFF
+
+static uint8_t previous_effect_layer = 255;
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ uint8_t current_layer = get_highest_layer(state);
+ switch (current_layer) {
+ case WIN_BASE:
+ if (previous_effect_layer != current_layer) {
+ previous_effect_layer = current_layer;
+ effect_blue();
+ start_effects();
+ }
+ break;
+ case MAC_BASE:
+ if (previous_effect_layer != current_layer) {
+ previous_effect_layer = current_layer;
+ effect_white();
+ start_effects();
+ }
+ break;
+ }
+ return state;
+}
bool led_update_user(led_t led_state) {
if (led_state.caps_lock) {
@@ -117,10 +177,26 @@ bool led_update_user(led_t led_state) {
return true;
}
+#endif // RGB_MATRIX_ENABLE
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ #ifdef RGB_MATRIX_ENABLE
#ifdef NKRO_ENABLE
- #if RGB_CONFIRMATION_BLINKING_TIME > 0
case NK_TOGG:
if (record->event.pressed) {
if (keymap_config.nkro) {
@@ -133,25 +209,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
start_effects();
}
break;
- case NK_ON:
- if (record->event.pressed) {
- if (!keymap_config.nkro) {
- /* Turning NKRO ON */
- effect_green();
- start_effects();
- }
- }
- break;
- case NK_OFF:
- if (record->event.pressed) {
- if (keymap_config.nkro) {
- /* Turning NKRO OFF */
- effect_red();
- start_effects();
- }
- }
- break;
- #endif // RGB_CONFIRMATION_BLINKING_TIME > 0
#endif // NKRO_ENABLE
case RGB_MOD:
case RGB_RMOD:
@@ -166,7 +223,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
if (rgb_matrix_get_flags() != LED_FLAG_ALL) {
/* Ignore changes to RGB settings while only it's supposed to be OFF */
- return false;
+ return false; // Skip all further processing of this key
}
}
break;
@@ -174,9 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
if (rgb_matrix_is_enabled()) {
switch (rgb_matrix_get_flags()) {
- #if RGB_CONFIRMATION_BLINKING_TIME > 0
case LED_FLAG_EFFECTS:
- #endif
case LED_FLAG_CAPS:
/* Turned ON because of EFFECTS or CAPS, is actually OFF */
/* Change to LED_FLAG_ALL to signal it's really ON */
@@ -186,14 +241,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break;
case LED_FLAG_ALL:
/* Is actually ON */
- #if RGB_CONFIRMATION_BLINKING_TIME > 0
if (effect_started_time > 0) {
/* Signal EFFECTS */
rgb_matrix_set_flags(LED_FLAG_EFFECTS);
/* Will be re-enabled by the processing of the toggle */
rgb_matrix_disable_noeeprom();
} else
- #endif
if (host_keyboard_led_state().caps_lock) {
/* Signal CAPS */
rgb_matrix_set_flags(LED_FLAG_CAPS);
@@ -205,21 +258,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
break;
+ #endif // RGB_MATRIX_ENABLE
}
return true;
}
-
+#ifdef RGB_MATRIX_ENABLE
void rgb_matrix_indicators_user() {
- #if RGB_CONFIRMATION_BLINKING_TIME > 0
if (effect_started_time > 0) {
/* Render blinking EFFECTS */
- uint16_t deltaTime = sync_timer_elapsed(effect_started_time);
+ const uint16_t deltaTime = sync_timer_elapsed(effect_started_time);
if (deltaTime <= RGB_CONFIRMATION_BLINKING_TIME) {
- uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01;
- uint8_t val_r = led_state * r_effect;
- uint8_t val_g = led_state * g_effect;
- uint8_t val_b = led_state * b_effect;
+ const uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01;
+ const uint8_t val_r = led_state * r_effect;
+ const uint8_t val_g = led_state * g_effect;
+ const uint8_t val_b = led_state * b_effect;
rgb_matrix_set_color_all(val_r, val_g, val_b);
if (host_keyboard_led_state().caps_lock) {
set_rgb_caps_leds();
@@ -241,7 +294,6 @@ void rgb_matrix_indicators_user() {
}
}
}
- #endif // RGB_CONFIRMATION_BLINKING_TIME > 0
if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
rgb_matrix_set_color_all(0x0, 0x0, 0x0);
}
@@ -250,7 +302,6 @@ void rgb_matrix_indicators_user() {
}
}
-#if RGB_CONFIRMATION_BLINKING_TIME > 0
static void start_effects() {
effect_started_time = sync_timer_read();
if (!rgb_matrix_is_enabled()) {
@@ -262,7 +313,17 @@ static void start_effects() {
rgb_matrix_set_flags(LED_FLAG_EFFECTS);
}
}
-#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+
+// RGB led number layout, function of the key
+
+// 67, led 01 0, ESC 6, F1 12, F2 18, F3 23, F4 28, F5 34, F6 39, F7 44, F8 50, F9 56, F10 61, F11 66, F12 69, Prt Rotary(Mute) 68, led 12
+// 70, led 02 1, ~ 7, 1 13, 2 19, 3 24, 4 29, 5 35, 6 40, 7 45, 8 51, 9 57, 0 62, -_ 78, (=+) 85, BackSpc 72, Home 71, led 13
+// 73, led 03 2, Tab 8, Q 14, W 20. E 25, R 30, T 36, Y 41, U 46, I 52, O 58, P 63, [{ 89, ]} 93, \| 75, PgUp 74, led 14
+// 76, led 04 3, Caps 9, A 15, S 21, D 26, F 31, G 37, H 42, J 47, K 53, L 59, ;: 64, '" 96, Enter 86, PgDn 77, led 15
+// 80, led 05 4, Sh_L 10, Z 16, X 22, C 27, V 32, B 38, N 43, M 48, ,< 54, .< 60, /? 90, Sh_R 94, Up 82, End 81, led 16
+// 83, led 06 5, Ct_L 11,Win_L 17, Alt_L 33, SPACE 49, Alt_R 55, FN 65, Ct_R 95, Left 97, Down 79, Right 84, led 17
+// 87, led 07 88, led 18
+// 91, led 08 92, led 19
static void set_rgb_caps_leds() {
rgb_matrix_set_color(67, 0xFF, 0x0, 0x0); // Left side LED 1
diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md
index e7f9978cee..99d0a36721 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md
+++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/readme.md
@@ -5,6 +5,9 @@ It basically reflects my needs for both Delete and Insert being readily availabl
The differences are as follows:
+- Dedicated MacOS and Windows/Linux layers
+ - Switching between them by pressing Fn + CAPS LOCK
+- Disabled Mouse Keys (to fix issues with KVM switches and also because they're not used here anyway)
- Short DEBOUNCE time (5 ms)
- Per-key debounce algorithm (sym_defer_pk)
- RGB turns off after 20 minutes of inactivity
diff --git a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk
index 650c79fbdc..057e9a9541 100644
--- a/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk
+++ b/keyboards/gmmk/pro/ansi/keymaps/andrebrait/rules.mk
@@ -1,3 +1,6 @@
# Enable additional features.
DEBOUNCE_TYPE = sym_defer_pk
+
+# Disabling MouseKey because it breaks my KVM switch
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/gmmk/pro/ansi/keymaps/batin/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/batin/keymap.c
new file mode 100644
index 0000000000..be88ea82f8
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/batin/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_BRID, KC_BRIU, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, KC_F9, KC_MPRV, KC_MPLY, KC_MNXT, KC_PSCR, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F10, KC_F12, _______, KC_MUTE,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+};
+// clang-format on
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/config.h b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/config.h
new file mode 100644
index 0000000000..16ac4f2407
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/config.h
@@ -0,0 +1,72 @@
+/* Copyright 2021 Choi Byungyoon <byungyoonc@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define RGB_MATRIX_KEYPRESSES
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+// #define ENABLE_RGB_MATRIX_BREATHING
+#undef ENABLE_RGB_MATRIX_BAND_SAT
+#undef ENABLE_RGB_MATRIX_BAND_VAL
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+// #define ENABLE_RGB_MATRIX_CYCLE_ALL
+// #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+// #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+// #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#undef ENABLE_RGB_MATRIX_HUE_BREATHING
+#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
+#undef ENABLE_RGB_MATRIX_HUE_WAVE
+// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#undef ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#undef DEBOUNCE
+/* High debounce time is required to avoid key chattering because of the debouncing algorithm sym_eager_pk */
+#define DEBOUNCE 40
diff --git a/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/keymap.c
new file mode 100644
index 0000000000..1ad8417de2
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/keymap.c
@@ -0,0 +1,129 @@
+/* Copyright 2021 Choi Byungyoon <byungyoonc@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "byungyoonc.h"
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mic Mute)
+// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc TaskMgr
+// Tab Q W E R T Y U I O P [ ] \ Del
+// Caps A S D F G H J K L ; " Enter Home
+// Sh_L Z X C V B N M , . ? Sh_R Up End
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MMUT,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TASK,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_CALC, KC_MSEL, RGB_VAD, RGB_VAI, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, KC_SEC1, KC_SEC2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG, _______,
+ _______, _______, _______, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
+ _______, GUI_TOG, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+
+};
+// clang-format on
+
+bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ rgblight_increase_hue();
+ }
+ return true;
+}
+
+#if defined(ENCODER_ENABLE)
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ uint8_t mod_state = get_mods();
+ if (mod_state & MOD_MASK_CTRL) {
+ unregister_mods(MOD_MASK_CTRL);
+ if (clockwise) {
+ tap_code16(LCTL(KC_RGHT));
+ } else {
+ tap_code16(LCTL(KC_LEFT));
+ }
+ set_mods(mod_state);
+ } else {
+ if (clockwise) {
+ tap_code16(KC_VOLU);
+ } else {
+ tap_code16(KC_VOLD);
+ }
+ }
+ return true;
+}
+#endif // ENCODER_ENABLE
+
+static void set_rgb_caps_leds(void);
+
+static void set_rgb_caps_leds() {
+ rgb_matrix_set_color(73, 0xFF, 0x77, 0x77); // Left side LED 3
+ rgb_matrix_set_color(74, 0xFF, 0x77, 0x77); // Right side LED 3
+ rgb_matrix_set_color(76, 0xFF, 0x77, 0x77); // Left side LED 4
+ rgb_matrix_set_color(77, 0xFF, 0x77, 0x77); // Right side LED 4
+ rgb_matrix_set_color(80, 0xFF, 0x77, 0x77); // Left side LED 5
+ rgb_matrix_set_color(81, 0xFF, 0x77, 0x77); // Right side LED 5
+ rgb_matrix_set_color(83, 0xFF, 0x77, 0x77); // Left side LED 6
+ rgb_matrix_set_color(84, 0xFF, 0x77, 0x77); // Right side LED 6
+ rgb_matrix_set_color(3, 0xFF, 0x77, 0x77); // CAPS LED
+}
+
+static void set_rgb_nlck_notset_leds(void);
+
+static void set_rgb_wlck_leds(void);
+
+static void set_rgb_nlck_notset_leds() {
+ rgb_matrix_set_color(67, 0x77, 0x77, 0xFF); // Left side LED 1
+ rgb_matrix_set_color(68, 0x77, 0x77, 0xFF); // Right side LED 1
+ rgb_matrix_set_color(70, 0x77, 0x77, 0xFF); // Left side LED 2
+ rgb_matrix_set_color(71, 0x77, 0x77, 0xFF); // Right side LED 2
+}
+
+static void set_rgb_wlck_leds() {
+ rgb_matrix_set_color(87, 0x77, 0xFF, 0x77); // Left side LED 7
+ rgb_matrix_set_color(88, 0x77, 0xFF, 0x77); // Right side LED 7
+ rgb_matrix_set_color(91, 0x77, 0xFF, 0x77); // Left side LED 8
+ rgb_matrix_set_color(92, 0x77, 0xFF, 0x77); // Right side LED 8
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ set_rgb_caps_leds();
+ }
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) {
+ set_rgb_nlck_notset_leds();
+ }
+ if (keymap_config.no_gui) {
+ set_rgb_wlck_leds();
+ }
+}
+
+void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
+ for (int i = 0; i < 20; i++) {
+ wait_cpuclock(STM32_SYSCLK / 1000000L);
+ }
+}
diff --git a/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/readme.md b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/readme.md
new file mode 100644
index 0000000000..d340bf86ed
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/readme.md
@@ -0,0 +1,41 @@
+byungyoonc's GMMK Pro Layout
+============================
+
+## Keymap
+
+### Base Layer
+![GMMK Pro Base Layer Layout Image](https://i.imgur.com/VvEL08Q.png)
+
+Made a bit of a change on the leftmost side of the keyboard to set Home and End closer to the arrow keys. Also uses a shortcut for Windows Task Manager, Windows PowerToys microphone mute.
+
+### Fn Layer
+![GMMK Pro Fn Layer Layout Image](https://i.imgur.com/uQy2gSh.png)
+
+F-row media functions roughly matches the Keychron keyboard's layout.
+
+Added Debug key for faster debugging iteration.
+
+Supports Secrets input by Fn + Numbers.
+
+The rest are pretty self-explanatory RGB controls, a GUI toggle and an NKRO toggle.
+
+## Rotary Encoder Rotation
+Volume control when no mods, Ctrl+Left/Right when Ctrl is pressed while rotating the encoder.
+
+## RGB Indicators
+Uses side strap RGB as the RGB indicators.
+- Top third lights on when the Num Lock is turned off.
+- Middle third lights on when the Caps Lock is turned on.
+- Bottom third lights on when the GUI is disabled (via `GUI_TOG`).
+
+## Debounce
+Uses the `DEBOUNCE_TYPE` of `sym_eager_pk` for the shortest response time possible, and `DEBOUNCE` time of `40` in order to eliminate any key chattering.
+
+## NKRO
+N-key rollover is turned on by default.
+
+## RGB Matrix
+Keypresses effects are enabled.
+Disabled default several RGB effects.
+Added custom RGB matrix effect `saturated_solid_multisplash`.
+Every keypress increases the RGB hue value.
diff --git a/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rgb_matrix_user.inc b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rgb_matrix_user.inc
new file mode 100644
index 0000000000..0d61e19f4c
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rgb_matrix_user.inc
@@ -0,0 +1 @@
+#include "saturated_solid_multisplash.h"
diff --git a/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rules.mk
new file mode 100644
index 0000000000..08f832c51b
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/byungyoonc/rules.mk
@@ -0,0 +1,2 @@
+DEBOUNCE_TYPE = sym_eager_pk
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/gmmk/pro/ansi/keymaps/gigahawk/config.h b/keyboards/gmmk/pro/ansi/keymaps/gigahawk/config.h
new file mode 100644
index 0000000000..9ba8a7b1b7
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/gigahawk/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Jasper Chan (@Gigahawk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+#define RGB_MATRIX_STARTUP_SPD 0
diff --git a/keyboards/gmmk/pro/ansi/keymaps/gigahawk/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/gigahawk/keymap.c
new file mode 100644
index 0000000000..8eedeb6e00
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/gigahawk/keymap.c
@@ -0,0 +1,74 @@
+// Copyright 2021 Jasper Chan (@Gigahawk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE,
+ _GAME,
+ _TRAN,
+};
+
+#define _BASE_COLOR_RGB 156, 123, 85
+#define _GAME_COLOR_RGB 147, 21, 21
+#define _TRAN_COLOR_RGB 45, 89, 24
+#define _CAPS_COLOR_RGB 146, 140, 16
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_GAME] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_TRAN] = LAYOUT(
+ KC_CAPS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_INS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ TG(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_MPLY, _______, _______, _______, KC_MPRV, _______, KC_MNXT
+ ),
+
+};
+// clang-format on
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ if (IS_LAYER_ON(_TRAN)) {
+ rgb_matrix_set_color_all(_TRAN_COLOR_RGB);
+ } else if (IS_LAYER_ON(_GAME)) {
+ rgb_matrix_set_color_all(_GAME_COLOR_RGB);
+ } else if (IS_LAYER_ON(_BASE)) {
+ rgb_matrix_set_color_all(_BASE_COLOR_RGB);
+ }
+
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) {
+ if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) {
+ rgb_matrix_set_color(i, _CAPS_COLOR_RGB);
+ }
+ }
+ }
+}
diff --git a/keyboards/gmmk/pro/ansi/keymaps/hachetman/config.h b/keyboards/gmmk/pro/ansi/keymaps/hachetman/config.h
new file mode 100644
index 0000000000..1438d317fb
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/hachetman/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Andre Brait
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_DISABLE_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms)
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+#endif
diff --git a/keyboards/gmmk/pro/ansi/keymaps/hachetman/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/hachetman/keymap.c
new file mode 100644
index 0000000000..19694d54c1
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/hachetman/keymap.c
@@ -0,0 +1,307 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+ Copyright 2021 Andre Brait <andrebrait@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#ifdef RGB_MATRIX_ENABLE
+ #ifndef RGB_CONFIRMATION_BLINKING_TIME
+ #define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds
+ #endif
+#endif // RGB_MATRIX_ENABLE
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Play/Pause)
+// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home
+// Tab Q W E R T Y U I O P [ ] \ PgUp
+// Caps A S D F G H J K L ; " Enter PgDn
+// Sh_L Z X C V B N M , . ? Sh_R Up End
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
+ // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
+ // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
+ // if that's your preference.
+ //
+ // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
+ // it'll be back to normal when you plug it back in.
+ //
+ // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
+ // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
+ // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_INS, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+
+};
+// clang-format on
+
+const key_override_t up_key_override = ko_make_basic(MOD_MASK_CTRL, KC_UP, KC_PGUP);
+const key_override_t dn_key_override = ko_make_basic(MOD_MASK_CTRL, KC_DOWN, KC_PGDN);
+
+// This globally defines all key overrides to be used
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &up_key_override,
+ &dn_key_override,
+ NULL // Null terminate the array of overrides!
+};
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+#endif // ENCODER_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+
+/* Renaming those to make the purpose on this keymap clearer */
+#define LED_FLAG_CAPS LED_FLAG_NONE
+#define LED_FLAG_EFFECTS LED_FLAG_INDICATOR
+
+static void set_rgb_caps_leds(void);
+
+#if RGB_CONFIRMATION_BLINKING_TIME > 0
+static uint16_t effect_started_time = 0;
+static uint8_t r_effect = 0x0, g_effect = 0x0, b_effect = 0x0;
+static void start_effects(void);
+
+/* The higher this is, the slower the blinking will be */
+#ifndef TIME_SELECTED_BIT
+ #define TIME_SELECTED_BIT 8
+#endif
+#if TIME_SELECTED_BIT < 0 || TIME_SELECTED_BIT >= 16
+ #error "TIME_SELECTED_BIT must be a positive integer smaller than 16"
+#endif
+#define effect_red() r_effect = 0xFF, g_effect = 0x0, b_effect = 0x0
+#define effect_green() r_effect = 0x0, g_effect = 0xFF, b_effect = 0x0
+#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+
+bool led_update_user(led_t led_state) {
+ if (led_state.caps_lock) {
+ if (!rgb_matrix_is_enabled()) {
+ /* Turn ON the RGB Matrix for CAPS LOCK */
+ rgb_matrix_set_flags(LED_FLAG_CAPS);
+ rgb_matrix_enable();
+ }
+ } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
+ /* RGB Matrix was only ON because of CAPS LOCK. Turn it OFF. */
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_disable();
+ }
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ #ifdef NKRO_ENABLE
+ #if RGB_CONFIRMATION_BLINKING_TIME > 0
+ case NK_TOGG:
+ if (record->event.pressed) {
+ if (keymap_config.nkro) {
+ /* Turning NKRO OFF */
+ effect_red();
+ } else {
+ /* Turning NKRO ON */
+ effect_green();
+ }
+ start_effects();
+ }
+ break;
+ case NK_ON:
+ if (record->event.pressed) {
+ if (!keymap_config.nkro) {
+ /* Turning NKRO ON */
+ effect_green();
+ start_effects();
+ }
+ }
+ break;
+ case NK_OFF:
+ if (record->event.pressed) {
+ if (keymap_config.nkro) {
+ /* Turning NKRO OFF */
+ effect_red();
+ start_effects();
+ }
+ }
+ break;
+ #endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+ #endif // NKRO_ENABLE
+ case RGB_MOD:
+ case RGB_RMOD:
+ case RGB_HUI:
+ case RGB_HUD:
+ case RGB_SAI:
+ case RGB_SAD:
+ case RGB_VAI:
+ case RGB_VAD:
+ case RGB_SPI:
+ case RGB_SPD:
+ if (record->event.pressed) {
+ if (rgb_matrix_get_flags() != LED_FLAG_ALL) {
+ /* Ignore changes to RGB settings while only it's supposed to be OFF */
+ return false;
+ }
+ }
+ break;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ if (rgb_matrix_is_enabled()) {
+ switch (rgb_matrix_get_flags()) {
+ #if RGB_CONFIRMATION_BLINKING_TIME > 0
+ case LED_FLAG_EFFECTS:
+ #endif
+ case LED_FLAG_CAPS:
+ /* Turned ON because of EFFECTS or CAPS, is actually OFF */
+ /* Change to LED_FLAG_ALL to signal it's really ON */
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ /* Will be re-enabled by the processing of the toggle */
+ rgb_matrix_disable_noeeprom();
+ break;
+ case LED_FLAG_ALL:
+ /* Is actually ON */
+ #if RGB_CONFIRMATION_BLINKING_TIME > 0
+ if (effect_started_time > 0) {
+ /* Signal EFFECTS */
+ rgb_matrix_set_flags(LED_FLAG_EFFECTS);
+ /* Will be re-enabled by the processing of the toggle */
+ rgb_matrix_disable_noeeprom();
+ } else
+ #endif
+ if (host_keyboard_led_state().caps_lock) {
+ /* Signal CAPS */
+ rgb_matrix_set_flags(LED_FLAG_CAPS);
+ /* Will be re-enabled by the processing of the toggle */
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ return true;
+}
+
+
+void rgb_matrix_indicators_user() {
+ #if RGB_CONFIRMATION_BLINKING_TIME > 0
+ if (effect_started_time > 0) {
+ /* Render blinking EFFECTS */
+ const uint16_t deltaTime = sync_timer_elapsed(effect_started_time);
+ if (deltaTime <= RGB_CONFIRMATION_BLINKING_TIME) {
+ const uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01;
+ const uint8_t val_r = led_state * r_effect;
+ const uint8_t val_g = led_state * g_effect;
+ const uint8_t val_b = led_state * b_effect;
+ rgb_matrix_set_color_all(val_r, val_g, val_b);
+ if (host_keyboard_led_state().caps_lock) {
+ set_rgb_caps_leds();
+ }
+ return;
+ } else {
+ /* EFFECTS duration is finished */
+ effect_started_time = 0;
+ if (rgb_matrix_get_flags() == LED_FLAG_EFFECTS) {
+ /* It was turned ON because of EFFECTS */
+ if (host_keyboard_led_state().caps_lock) {
+ /* CAPS is still ON. Demote to CAPS */
+ rgb_matrix_set_flags(LED_FLAG_CAPS);
+ } else {
+ /* There is nothing else keeping RGB enabled. Reset flags and turn if off. */
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_disable_noeeprom();
+ }
+ }
+ }
+ }
+ #endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+ if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
+ rgb_matrix_set_color_all(0x0, 0x0, 0x0);
+ }
+ if (host_keyboard_led_state().caps_lock) {
+ set_rgb_caps_leds();
+ }
+}
+
+#if RGB_CONFIRMATION_BLINKING_TIME > 0
+static void start_effects() {
+ effect_started_time = sync_timer_read();
+ if (!rgb_matrix_is_enabled()) {
+ /* Turn it ON, signal the cause (EFFECTS) */
+ rgb_matrix_set_flags(LED_FLAG_EFFECTS);
+ rgb_matrix_enable_noeeprom();
+ } else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
+ /* It's already ON, promote the cause from CAPS to EFFECTS */
+ rgb_matrix_set_flags(LED_FLAG_EFFECTS);
+ }
+}
+#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
+
+// RGB led number layout, function of the key
+
+// 67, led 01 0, ESC 6, F1 12, F2 18, F3 23, F4 28, F5 34, F6 39, F7 44, F8 50, F9 56, F10 61, F11 66, F12 69, Prt Rotary(Mute) 68, led 12
+// 70, led 02 1, ~ 7, 1 13, 2 19, 3 24, 4 29, 5 35, 6 40, 7 45, 8 51, 9 57, 0 62, -_ 78, (=+) 85, BackSpc 72, Home 71, led 13
+// 73, led 03 2, Tab 8, Q 14, W 20. E 25, R 30, T 36, Y 41, U 46, I 52, O 58, P 63, [{ 89, ]} 93, \| 75, PgUp 74, led 14
+// 76, led 04 3, Caps 9, A 15, S 21, D 26, F 31, G 37, H 42, J 47, K 53, L 59, ;: 64, '" 96, Enter 86, PgDn 77, led 15
+// 80, led 05 4, Sh_L 10, Z 16, X 22, C 27, V 32, B 38, N 43, M 48, ,< 54, .< 60, /? 90, Sh_R 94, Up 82, End 81, led 16
+// 83, led 06 5, Ct_L 11,Win_L 17, Alt_L 33, SPACE 49, Alt_R 55, FN 65, Ct_R 95, Left 97, Down 79, Right 84, led 17
+// 87, led 07 88, led 18
+// 91, led 08 92, led 19
+
+static void set_rgb_caps_leds() {
+ rgb_matrix_set_color(67, 0xFF, 0x0, 0x0); // Left side LED 1
+ rgb_matrix_set_color(68, 0xFF, 0x0, 0x0); // Right side LED 1
+ rgb_matrix_set_color(70, 0xFF, 0x0, 0x0); // Left side LED 2
+ rgb_matrix_set_color(71, 0xFF, 0x0, 0x0); // Right side LED 2
+ rgb_matrix_set_color(73, 0xFF, 0x0, 0x0); // Left side LED 3
+ rgb_matrix_set_color(74, 0xFF, 0x0, 0x0); // Right side LED 3
+ rgb_matrix_set_color(76, 0xFF, 0x0, 0x0); // Left side LED 4
+ rgb_matrix_set_color(77, 0xFF, 0x0, 0x0); // Right side LED 4
+ rgb_matrix_set_color(80, 0xFF, 0x0, 0x0); // Left side LED 5
+ rgb_matrix_set_color(81, 0xFF, 0x0, 0x0); // Right side LED 5
+ rgb_matrix_set_color(83, 0xFF, 0x0, 0x0); // Left side LED 6
+ rgb_matrix_set_color(84, 0xFF, 0x0, 0x0); // Right side LED 6
+ rgb_matrix_set_color(87, 0xFF, 0x0, 0x0); // Left side LED 7
+ rgb_matrix_set_color(88, 0xFF, 0x0, 0x0); // Right side LED 7
+ rgb_matrix_set_color(91, 0xFF, 0x0, 0x0); // Left side LED 8
+ rgb_matrix_set_color(92, 0xFF, 0x0, 0x0); // Right side LED 8
+ rgb_matrix_set_color(3, 0xFF, 0x0, 0x0); // CAPS LED
+}
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/gmmk/pro/ansi/keymaps/hachetman/readme.md b/keyboards/gmmk/pro/ansi/keymaps/hachetman/readme.md
new file mode 100644
index 0000000000..bc8c580dbb
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/hachetman/readme.md
@@ -0,0 +1,26 @@
+# hachetmans's GMMK Pro layout
+
+This is pretty much the stock layout with a few things moved around.
+It basically reflects my needs for both Delete and Insert being readily available for coding, as well as a full Home/PgUp/PgDwn/End column.
+
+The differences are as follows:
+
+- Disabled Mouse Keys (to fix issues with KVM switches and also because they're not used here anyway)
+- Short DEBOUNCE time (5 ms)
+- Per-key debounce algorithm (sym_defer_pk)
+- RGB turns off after 20 minutes of inactivity
+- RGB turns off when USB is suspended
+- Layer 0:
+ - Print Screen (default) -> Delete
+ - Delete (default) -> Home
+- Layer 1 (accessed by pressing Fn):
+ - Fn + Delete -> Insert
+ - Fn + Home -> Print Screen
+- override CTRL + UP -> PGUP
+- override CTRL + DOWN -> PGDN
+
+This keymap also includes CAPS LOCK ON indicator.\
+All left and right side LEDs, and the Caps key LED will turn solid red while CAPS LOCK is ON.
+
+No other changes have been made. \
+The other keys on each layer have been kept intact.
diff --git a/keyboards/gmmk/pro/ansi/keymaps/hachetman/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/hachetman/rules.mk
new file mode 100644
index 0000000000..9995f3f4d2
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/hachetman/rules.mk
@@ -0,0 +1,5 @@
+# Enable additional features.
+
+DEBOUNCE_TYPE = sym_defer_pk
+MOUSEKEY_ENABLE = no
+KEY_OVERRIDE_ENABLE = yes
diff --git a/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/config.h b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/config.h
new file mode 100644
index 0000000000..74c018f7f1
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Lalit Maganti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file
diff --git a/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/keymap.c
new file mode 100644
index 0000000000..7bedf05987
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/keymap.c
@@ -0,0 +1,91 @@
+/* Copyright 2021 Lalit Maganti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#ifdef PROGRAMMABLE_BUTTON_ENABLE
+#define L1_NUM1 PROGRAMMABLE_BUTTON_1
+#define L1_NUM2 PROGRAMMABLE_BUTTON_2
+#define L1_NUM3 PROGRAMMABLE_BUTTON_3
+#define L1_NUM4 PROGRAMMABLE_BUTTON_4
+#define L1_NUM5 PROGRAMMABLE_BUTTON_5
+#define L1_NUM6 PROGRAMMABLE_BUTTON_6
+#define L1_NUM7 PROGRAMMABLE_BUTTON_7
+#define L1_NUM8 PROGRAMMABLE_BUTTON_8
+#define L1_NUM9 PROGRAMMABLE_BUTTON_9
+#else
+#define L1_NUM1 _______
+#define L1_NUM2 _______
+#define L1_NUM3 _______
+#define L1_NUM4 _______
+#define L1_NUM5 _______
+#define L1_NUM6 _______
+#define L1_NUM7 _______
+#define L1_NUM8 _______
+#define L1_NUM9 _______
+#endif
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, RGB_TOG, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ return false;
+}
+
+
+#ifdef RGB_MATRIX_ENABLE
+
+static void set_rgb_side_leds(void);
+
+static void set_rgb_side_leds() {
+ rgb_matrix_set_color(67, RGB_WHITE); // Left side LED 1
+ rgb_matrix_set_color(68, RGB_WHITE); // Right side LED 1
+ rgb_matrix_set_color(91, RGB_WHITE); // Left side LED 8
+ rgb_matrix_set_color(92, RGB_WHITE); // Right side LED 8
+}
+
+void rgb_matrix_indicators_user() {
+ rgb_matrix_set_color_all(0x0, 0x0, 0x0);
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(3, RGB_WHITE); // CAPS
+ }
+ set_rgb_side_leds();
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/rules.mk
new file mode 100644
index 0000000000..0a5b666e85
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/lalitmaganti/rules.mk
@@ -0,0 +1 @@
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/gmmk/pro/ansi/rules.mk b/keyboards/gmmk/pro/ansi/rules.mk
index a10fe8e5ca..d3afa4d432 100644
--- a/keyboards/gmmk/pro/ansi/rules.mk
+++ b/keyboards/gmmk/pro/ansi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gmmk/pro/iso/keymaps/jonavin/config.h b/keyboards/gmmk/pro/iso/keymaps/jonavin/config.h
new file mode 100644
index 0000000000..fa7ebec7e5
--- /dev/null
+++ b/keyboards/gmmk/pro/iso/keymaps/jonavin/config.h
@@ -0,0 +1,39 @@
+/* Copyright 2021 Jonavin Eng
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+// TT set to two taps
+
+/* Handle GRAVESC combo keys */
+#define GRAVE_ESC_ALT_OVERRIDE
+ //Always send Escape if Alt is pressed
+#define GRAVE_ESC_CTRL_OVERRIDE
+ //Always send Escape if Control is pressed
+
+#define TAPPING_TERM 180
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+#endif
+
+// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable
+#if defined COLEMAK_LAYER_ENABLE
+# define DYNAMIC_KEYMAP_LAYER_COUNT 5
+# define _COLEMAK 4
+#endif // COLEMAK_LAYER_ENABLE
diff --git a/keyboards/gmmk/pro/iso/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/iso/keymaps/jonavin/keymap.c
new file mode 100644
index 0000000000..3164ecbf68
--- /dev/null
+++ b/keyboards/gmmk/pro/iso/keymaps/jonavin/keymap.c
@@ -0,0 +1,191 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+ Copyright 2021 Jonavin
+ Copyright 2022 RustyBrakes (ISO conversion)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "rgb_matrix_map.h"
+#include "jonavin.h"
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Ins Rotary(Mute)
+// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
+// Tab Q W E R T Y U I O P [ ] PgUp
+// Caps A S D F G H J K L ; " # Enter PgDn
+// Sh_L \ Z X C V B N M , . ? Sh_R Up End
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
+
+
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ TT(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFTCAPSWIN, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT(
+ _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CALC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, KC_HOME,
+ KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, RESET, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______,
+ _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+ [_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______,
+ _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, KC_HOME,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, _______, KC_PENT, KC_END,
+ _______, _______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, RCTL(KC_PGUP), _______,
+ _______, _______, _______, KC_BSPC, _______, _______, _______, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)
+ ),
+
+#ifdef COLEMAK_LAYER_ENABLE
+ [_COLEMAK] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_PGUP,
+ TT(_LOWER), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFTCAPSWIN, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#endif // COLEMAK_LAYER_ENABLE
+};
+
+#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults
+ void encoder_action_rgbhue(bool clockwise) {
+ if (clockwise)
+ rgblight_increase_hue_noeeprom();
+ else
+ rgblight_decrease_hue_noeeprom();
+ }
+
+ bool encoder_update_user(uint8_t index, bool clockwise) {
+ uint8_t mods_state = get_mods();
+ if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers
+ encoder_action_layerchange(clockwise);
+ } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn
+ unregister_mods(MOD_BIT(KC_RSFT));
+ encoder_action_navpage(clockwise);
+ register_mods(MOD_BIT(KC_RSFT));
+ } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word
+ encoder_action_navword(clockwise);
+ } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour
+ encoder_action_rgbhue(clockwise);
+ } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track
+ encoder_action_mediatrack(clockwise);
+ } else {
+ switch(get_highest_layer(layer_state)) {
+ case _FN1:
+ #ifdef IDLE_TIMEOUT_ENABLE
+ timeout_update_threshold(clockwise);
+ #endif
+ break;
+ default:
+ encoder_action_volume(clockwise); // Otherwise it just changes volume
+ break;
+ }
+ }
+ return true;
+ }
+#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+ // Capslock, Scroll lock and Numlock indicator on Left side lights.
+ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF);
+ if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) {
+ rgb_matrix_set_color(LED_L1, RGB_GREEN);
+ rgb_matrix_set_color(LED_L2, RGB_GREEN);
+ }
+
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF
+ rgb_matrix_set_color(LED_L3, RGB_MAGENTA);
+ rgb_matrix_set_color(LED_L4, RGB_MAGENTA);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_L3, RGB_MAGENTA);
+ rgb_matrix_set_color(LED_L4, RGB_MAGENTA);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(LED_L5, RGB_RED);
+ rgb_matrix_set_color(LED_L6, RGB_RED);
+ rgb_matrix_set_color(LED_L7, RGB_RED);
+ }
+ if (keymap_config.no_gui) {
+ rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled
+ }
+ switch(get_highest_layer(layer_state)){ // special handling per layer
+ case _FN1: // on Fn layer select what the encoder does when pressed
+ rgb_matrix_set_color(LED_R2, RGB_RED);
+ rgb_matrix_set_color(LED_R3, RGB_RED);
+ rgb_matrix_set_color(LED_R4, RGB_RED);
+ rgb_matrix_set_color(LED_FN, RGB_RED); //FN key
+
+ // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code
+ uint16_t timeout_threshold = get_timeout_threshold();
+ if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_RED);
+ else if (timeout_threshold < 140) {
+ rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_RED);
+ rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_RED);
+ } else { // >= 140 minutes, just show these 3 lights
+ rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_RED);
+ rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_RED);
+ rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_RED);
+ }
+ break;
+ case _LOWER:
+ for (uint8_t i=0; i<ARRAYSIZE(LED_LIST_NUMPAD); i++) {
+ rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_MAGENTA);
+ }
+ rgb_matrix_set_color(LED_R4, RGB_MAGENTA);
+ rgb_matrix_set_color(LED_R5, RGB_MAGENTA);
+ rgb_matrix_set_color(LED_R6, RGB_MAGENTA);
+ break;
+ case _RAISE:
+ rgb_matrix_set_color(LED_R6, RGB_GREEN);
+ rgb_matrix_set_color(LED_R7, RGB_GREEN);
+ rgb_matrix_set_color(LED_R8, RGB_GREEN);
+ break;
+#ifdef COLEMAK_LAYER_ENABLE
+ case _COLEMAK:
+ for (uint8_t i=0; i<ARRAYSIZE(LED_SIDE_RIGHT); i++) {
+ rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_BLUE);
+ }
+ break;
+#endif
+ default:
+ break;
+ }
+ }
+#endif
+
+
+void keyboard_post_init_keymap(void) {
+ // keyboard_post_init_user() moved to userspace
+ #ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_set_color_all(RGB_NAUTILUS); // Default startup colour
+ activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle
+ #endif
+}
diff --git a/keyboards/gmmk/pro/iso/keymaps/jonavin/readme.md b/keyboards/gmmk/pro/iso/keymaps/jonavin/readme.md
new file mode 100644
index 0000000000..f94a5eabbd
--- /dev/null
+++ b/keyboards/gmmk/pro/iso/keymaps/jonavin/readme.md
@@ -0,0 +1,53 @@
+# jonavin's GMMK Pro ISO layout
+# Thanks to RustyBrakes for the keymap adjustments and ISO Layout testing
+
+- Add Fn layer keys from Glorious Core mapping that's missing in the default qmk mapping
+- Add PrtScr, Scroll Lock, Break, NumLock to Fn layer
+- Implement Win key lock using Fn+Win like in Glorious Core firmware
+- Layer 2 mod on Caps Lock with double-tap to switch to this layer, double tap to switch back
+- Layer 2 provides arrows on WASD and additional nav keys + right hand numpad with 00; an be used for Alt Code entry
+- Layer 2 left spacebar Backspace
+- add double tap of Left Shift to toggle Caps Lock
+- additional encoder functionality
+ - FN Layer - change rgb idle timeout
+ - holding Left shift, change layers
+ - holding right shift, Navigate page up/down
+ - holding Left Ctrl, navigate prev/next word
+ - holding Right Ctrl, changes RGB hue/colour
+ - holding Left Alt, change media prev/next track
+ - default is change volume
+
+- LED/RGB Functionality
+ - RGB idle timeout (default 5 minutes)
+ - Can be changed in FN layer with < and > or encoder
+ - setting to zero disables timeout
+ - indicators in FN layer using RGB in FN and number rows to show the timeout in minutes
+ - LED address location map as enum definition in rgb_matrix_map.h
+ - LED group lists for arrows, numpad, F row, num row, left and right side LEDs
+ - default startup in single mode with default colour
+ - Capslock, Scroll Lock, and Num Lock (not set) indicator on left side LED
+ - Layer indicator on right side LED
+ - Fn key light up red when Fn layer activate
+ - Win Key light up red when Win Lock mode enabled
+ - Layer 2 activation lights up Numpad area
+ - Fn + Z to turn off all RGB lights except rgb indicators; press again to toggle
+
+rules.mk OPTIONS - Active features from userspace
+STARTUP_NUMLOCK_ON = yes
+ - turns on NUMLOCK by default
+
+ENCODER_DEFAULTACTIONS_ENABLE = yes
+ - Enabled default encoder funtions
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+ - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS
+
+IDLE_TIMEOUT_ENABLE = yes
+ - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
+
+INVERT_NUMLOCK_INDICATOR
+ - inverts the Num lock indicator, LED is on when num lokc is off
+
+COLEMAK_LAYER_ENABLE = yes
+ - Enabled optional 5th layer for COLEMAK layout
+ - Use Shift and encoder to enter 5th layer, right led indicator lights up BLUE
diff --git a/keyboards/gmmk/pro/iso/keymaps/jonavin/rgb_matrix_map.h b/keyboards/gmmk/pro/iso/keymaps/jonavin/rgb_matrix_map.h
new file mode 100644
index 0000000000..1aa31f2a0f
--- /dev/null
+++ b/keyboards/gmmk/pro/iso/keymaps/jonavin/rgb_matrix_map.h
@@ -0,0 +1,146 @@
+/* Copyright 2021 Jonavin Eng
+ * Copyright 2022 RustyBrakes (ISO conversion)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef RGB_MATRIX_ENABLE
+
+ // Custom RGB Colours
+ #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps
+ #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours
+
+ // RGB LED locations
+ enum led_location_map {
+ LED_ESC, // 0, ESC, k13
+ LED_GRV, // 1, `, k16
+ LEB_TAB, // 2, Tab, k11
+ LED_CAPS, // 3, Caps, k21
+ LED_LSFT, // 4, Sh_L, k00
+ LED_LCTL, // 5, Ct_L, k06
+ LED_F1, // 6, F1, k26
+ LED_1, // 7, 1, k17
+ LED_Q, // 8, Q, k10
+ LED_A, // 9, A, k12
+ LED_Z, // 10, Z, k14
+ LED_LWIN, // 11, Win_L, k90
+ LED_F2, // 12, F2, k36
+ LED_2, // 13, 2, k27
+ LED_W, // 14, W, k20
+ LED_S, // 15, S, k22
+ LED_X, // 16, X, k24
+ LED_LALT, // 17, Alt_L, k93
+ LED_F3, // 18, F3, k31
+ LED_3, // 19, 3, k37
+ LED_E, // 20, E, k30
+ LED_D, // 21, D, k32
+ LED_C, // 22, C, k34
+ LED_F4, // 23, F4, k33
+ LED_4, // 24, 4, k47
+ LED_R, // 25, R, k40
+ LED_F, // 26, F, k42
+ LED_V, // 27, V, k44
+ LED_F5, // 28, F5, k07
+ LED_5, // 29, 5, k46
+ LED_T, // 30, T, k41
+ LED_G, // 31, G, k43
+ LED_B, // 32, B, k45
+ LED_SPC, // 33, SPACE, k94
+ LED_F6, // 34, F6, k63
+ LED_6, // 35, 6, k56
+ LED_Y, // 36, Y, k51
+ LED_H, // 37, H, k53
+ LED_N, // 38, N, k55
+ LED_F7, // 39, F7, k71
+ LED_7, // 40, 7, k57
+ LED_U, // 41, U, k50
+ LED_J, // 42, J, k52
+ LED_M, // 43, M, k54
+ LED_F8, // 44, F8, k76
+ LED_8, // 45, 8, k67
+ LED_I, // 46, I, k60
+ LED_K, // 47, K, k62
+ LED_COMM, // 48, ,, k64
+ LED_RALT, // 49, Alt_R, k95
+ LED_F9, // 50, F9, ka6
+ LED_9, // 51, 9, k77
+ LED_O, // 52, O, k70
+ LED_L, // 53, L, k72
+ LED_DOT, // 54, ., k74
+ LED_FN, // 55, FN, k92
+ LED_F10, // 56, F10, ka7
+ LED_0, // 57, 0, k87
+ LED_P, // 58, P, k80
+ LED_SCLN, // 59, ;, k82
+ LED_SLSH, // 60, /, k85
+ LED_F11, // 61, F11, ka3
+ LED_MINS, // 62, -, k86
+ LED_LBRC, // 63, [, k81
+ LED_QUOT, // 64, ", k83
+ LED_RCTL, // 65, Ct_R, k04
+ LED_F12, // 66, F12, ka5
+ LED_BSLS, // 67, \, k23
+ LED_L1, // 68, LED, l01
+ LED_R1, // 69, LED, l11
+ LED_PRT, // 70, Prt, k97
+ LED_L2, // 71, LED, l02
+ LED_R2, // 72, LED, l12
+ LED_DEL, // 73, Del, k65
+ LED_L3, // 74, LED, l03
+ LED_R3, // 75, LED, l13
+ LED_PGUP, // 76, PgUp, k15
+ LED_L4, // 77, LED, l04
+ LED_R4, // 78, LED, l14
+ LED_EQL, // 79, =, k66
+ LED_RIGHT, // 80, Right, k05
+ LED_L5, // 81, LED, l05
+ LED_R5, // 82, LED, l15
+ LED_END, // 83, End, k75
+ LED_L6, // 84, LED, l06
+ LED_R6, // 85, LED, l16
+ LED_BSPC, // 86, BSpc, ka1
+ LED_PGDN, // 87, PgDn, k25
+ LED_L7, // 88, LED, l07
+ LED_R7, // 89, LED, l17
+ LED_RBRC, // 90, ], k61
+ LED_RSFT, // 91, Sh_R, k91
+ LED_L8, // 92, LED, l08
+ LED_R8, // 93, LED, l18
+ LED_UP, // 94, Up, k35
+ LED_HASH, // 95, #, k84
+ LED_LEFT, // 96, Left, k03
+ LED_ENT, // 97, Enter, ka4
+ LED_DOWN // 98, Down, k73
+ };
+
+ const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D };
+
+ const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN };
+
+ const uint8_t LED_LIST_FUNCROW[] = { LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_PRT};
+
+ const uint8_t LED_LIST_NUMROW[] = { LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL};
+
+ const uint8_t LED_LIST_NUMPAD[] = {
+ LED_7, LED_8, LED_9,
+ LED_U, LED_I, LED_O,
+ LED_J, LED_K, LED_L,
+ LED_M, LED_COMM, LED_DOT
+ };
+
+ const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8};
+
+ const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8};
+
+#endif
diff --git a/keyboards/gmmk/pro/iso/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/iso/keymaps/jonavin/rules.mk
new file mode 100644
index 0000000000..1ffc2058a2
--- /dev/null
+++ b/keyboards/gmmk/pro/iso/keymaps/jonavin/rules.mk
@@ -0,0 +1,12 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+IDLE_TIMEOUT_ENABLE = yes
+STARTUP_NUMLOCK_ON = yes
+ENCODER_DEFAULTACTIONS_ENABLE = no
+
+COLEMAK_LAYER_ENABLE = yes #Enable Colemak layer / set to no to disable
+INVERT_NUMLOCK_INDICATOR = yes
diff --git a/keyboards/gmmk/pro/iso/rules.mk b/keyboards/gmmk/pro/iso/rules.mk
index a10fe8e5ca..d3afa4d432 100644
--- a/keyboards/gmmk/pro/iso/rules.mk
+++ b/keyboards/gmmk/pro/iso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gon/nerd60/rules.mk b/keyboards/gon/nerd60/rules.mk
index eb2d15f8f4..903e60ee8e 100644
--- a/keyboards/gon/nerd60/rules.mk
+++ b/keyboards/gon/nerd60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gon/nerdtkl/keymaps/default/keymap.c b/keyboards/gon/nerdtkl/keymaps/default/keymap.c
index cca8e9108a..a05a7126c5 100644
--- a/keyboards/gon/nerdtkl/keymaps/default/keymap.c
+++ b/keyboards/gon/nerdtkl/keymaps/default/keymap.c
@@ -3,7 +3,7 @@
// Keymap layers
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl( \
+ [0] = LAYOUT_tkl(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_tkl( \
+ [1] = LAYOUT_tkl(
RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/keyboards/gon/nerdtkl/rules.mk b/keyboards/gon/nerdtkl/rules.mk
index 1450c7f451..0a88d500be 100644
--- a/keyboards/gon/nerdtkl/rules.mk
+++ b/keyboards/gon/nerdtkl/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gorthage_truck/rules.mk b/keyboards/gorthage_truck/rules.mk
index 21c0c67b11..284ea23e78 100644
--- a/keyboards/gorthage_truck/rules.mk
+++ b/keyboards/gorthage_truck/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gowla/rules.mk b/keyboards/gowla/rules.mk
index 39ecc8b469..a89938be01 100644
--- a/keyboards/gowla/rules.mk
+++ b/keyboards/gowla/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gray_studio/cod67/rules.mk b/keyboards/gray_studio/cod67/rules.mk
index 54db10299c..cb0ee6abcd 100644
--- a/keyboards/gray_studio/cod67/rules.mk
+++ b/keyboards/gray_studio/cod67/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gray_studio/hb85/keymaps/default/keymap.c b/keyboards/gray_studio/hb85/keymaps/default/keymap.c
index be89cbbf6a..cac6440bf0 100644
--- a/keyboards/gray_studio/hb85/keymaps/default/keymap.c
+++ b/keyboards/gray_studio/hb85/keymaps/default/keymap.c
@@ -27,20 +27,20 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_all(
- KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TGCT, \
-KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS, \
-KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_P7 , KC_P8 , KC_P9 , \
-KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_P4 , KC_P5 , KC_P6 , \
-KC_LSFT, KC_NO , KC_Z , KC_Z , KC_X , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 , \
- KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT \
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TGCT,
+KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
+KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_P7 , KC_P8 , KC_P9 ,
+KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_P4 , KC_P5 , KC_P6 ,
+KC_LSFT, KC_NO , KC_Z , KC_Z , KC_X , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 ,
+ KC_LCTL, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT
),
[_CTRL] = LAYOUT_all(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gray_studio/hb85/rules.mk b/keyboards/gray_studio/hb85/rules.mk
index 2dba9c3eb9..9a2e1da0de 100644
--- a/keyboards/gray_studio/hb85/rules.mk
+++ b/keyboards/gray_studio/hb85/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/gray_studio/space65/keymaps/conor/config.h b/keyboards/gray_studio/space65/keymaps/conor/config.h
new file mode 100644
index 0000000000..e32150b1a4
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/conor/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Conor Burns
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define RGBLIGHT_LAYERS
+#define GRAVE_ESC_GUI_OVERRIDE
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_EFFECT_BREATHING + 2
+#define RGBLIGHT_DEFAULT_HUE 152
+#define RGBLIGHT_DEFAULT_SAT 232
+#define RGBLIGHT_DEFAULT_VAR 255
+#define RGBLIGHT_DEFAULT_SPD 2 \ No newline at end of file
diff --git a/keyboards/gray_studio/space65/keymaps/conor/keymap.c b/keyboards/gray_studio/space65/keymaps/conor/keymap.c
new file mode 100644
index 0000000000..39bec338c5
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/conor/keymap.c
@@ -0,0 +1,93 @@
+/* Copyright 2021 Conor Burns
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _HOME,
+ _FN2,
+ _FN3,
+ _FN4
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_HOME] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RALT(KC_U), _______, RALT(KC_O), _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RALT(KC_A), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, MO(2), _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______
+ ),
+ [_FN4] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+// RGB LED Indicators
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_PURPLE} // Light 3 LEDs, starting with LED 0
+);
+const rgblight_segment_t PROGMEM my_2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {3, 1, HSV_PURPLE} // Light 1 LED, starting with LED 3
+);
+const rgblight_segment_t PROGMEM my_3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 1, HSV_PURPLE} // Light 1 LED, starting with LED 4
+);
+const rgblight_segment_t PROGMEM my_4_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {5, 1, HSV_PURPLE} // Light 1 LED, starting with LED 5
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer, // 0
+ my_2_layer, // 1
+ my_3_layer, // 2
+ my_4_layer // 3
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ return true;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _FN3));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _FN4));
+ return state;
+} \ No newline at end of file
diff --git a/keyboards/gray_studio/space65/keymaps/conor/rules.mk b/keyboards/gray_studio/space65/keymaps/conor/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gray_studio/space65/keymaps/conor/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gray_studio/space65/keymaps/default/config.h b/keyboards/gray_studio/space65/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/gray_studio/space65/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/gray_studio/space65/keymaps/default/keymap.c b/keyboards/gray_studio/space65/keymaps/default/keymap.c
index 7979bba1c0..bf747d58b1 100644
--- a/keyboards/gray_studio/space65/keymaps/default/keymap.c
+++ b/keyboards/gray_studio/space65/keymaps/default/keymap.c
@@ -22,19 +22,19 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT( \
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MUTE, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_VOLD, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END \
+ [1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/gray_studio/space65/rules.mk b/keyboards/gray_studio/space65/rules.mk
index 7e7e2133aa..df97c365e6 100644
--- a/keyboards/gray_studio/space65/rules.mk
+++ b/keyboards/gray_studio/space65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gray_studio/think65/hotswap/keymaps/default/config.h b/keyboards/gray_studio/think65/hotswap/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/gray_studio/think65/hotswap/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/gray_studio/think65/hotswap/rules.mk b/keyboards/gray_studio/think65/hotswap/rules.mk
index cc1e1b509c..415e8689e8 100644
--- a/keyboards/gray_studio/think65/hotswap/rules.mk
+++ b/keyboards/gray_studio/think65/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gray_studio/think65/solder/keymaps/default/config.h b/keyboards/gray_studio/think65/solder/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/gray_studio/think65/solder/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/gray_studio/think65/solder/rules.mk b/keyboards/gray_studio/think65/solder/rules.mk
index cc1e1b509c..415e8689e8 100644
--- a/keyboards/gray_studio/think65/solder/rules.mk
+++ b/keyboards/gray_studio/think65/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/grid600/press/keymaps/default/config.h b/keyboards/grid600/press/keymaps/default/config.h
deleted file mode 100644
index 60dd02a9d0..0000000000
--- a/keyboards/grid600/press/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 mechmerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/grid600/press/rules.mk b/keyboards/grid600/press/rules.mk
index 1efd48fa9d..05d7925057 100644
--- a/keyboards/grid600/press/rules.mk
+++ b/keyboards/grid600/press/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gurindam/config.h b/keyboards/gurindam/config.h
new file mode 100644
index 0000000000..9262bdbcda
--- /dev/null
+++ b/keyboards/gurindam/config.h
@@ -0,0 +1,117 @@
+/*
+Copyright 2021 Ibnu D. Aji
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x1209
+#define PRODUCT_ID 0x6974
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ibnu D. Aji
+#define PRODUCT Gurindam
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6, D4, D0, D1, D2}
+#define MATRIX_COL_PINS { F6, F5, F4, F7, B1, B3, B2, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 10
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/gurindam/gurindam.c b/keyboards/gurindam/gurindam.c
new file mode 100644
index 0000000000..bdca0269c2
--- /dev/null
+++ b/keyboards/gurindam/gurindam.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "gurindam.h"
diff --git a/keyboards/gurindam/gurindam.h b/keyboards/gurindam/gurindam.h
new file mode 100644
index 0000000000..9967bcf528
--- /dev/null
+++ b/keyboards/gurindam/gurindam.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define XXX KC_NO
+#define LAYOUT( \
+ k1, k6, k10, k15, k19, k24, k28, k33, k37, k42, k46, k51, k55, k60, k64, k65, \
+ k2, k7, k11, k16, k20, k25, k29, k34, k38, k43, k47, k52, k56, k61, k66, \
+ k3, k8, k12, k17, k21, k26, k30, k35, k39, k44, k48, k53, k57, k62, \
+ k4, k9, k13, k18, k22, k27, k31, k36, k40, k45, k49, k54, k58, \
+ k5, k14, k23, k32, k41, k50, k59, k63, k67 \
+) \
+{ \
+ { k1, k10, k19, k28, k37, k46, k55, k64 }, \
+ { k6, k15, k24, k33, k42, k51, k60, XXX }, \
+ { k2, k11, k20, k29, k38, k47, k56, k65 }, \
+ { k7, k16, k25, k34, k43, k52, k61, XXX }, \
+ { k3, k12, k21, k30, k39, k48, k57, k66 }, \
+ { k8, k17, k26, k35, k44, k53, k62, XXX }, \
+ { k4, k13, k22, k31, k40, k49, k58, k67 }, \
+ { k9, k18, k27, k36, k45, k54, k63, XXX }, \
+ { k5, k14, k23, k32, k41, k50, k59, XXX } \
+}
diff --git a/keyboards/gurindam/info.json b/keyboards/gurindam/info.json
new file mode 100644
index 0000000000..a196f066e0
--- /dev/null
+++ b/keyboards/gurindam/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "gurindam",
+ "url": "https://github.com/ibnuda/gurindam",
+ "maintainer": "Ibnu D. Aji",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+ {"x":16, "y":0},
+ {"x":17.3, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1},
+ {"x":14.5, "y":1},
+ {"x":15.5, "y":1, "w":1.5},
+ {"x":17.3, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":2},
+ {"x":14.75, "y":2, "w":2.25},
+ {"x":17.3, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3},
+ {"x":13.25, "y":3},
+ {"x":14.25, "y":3, "w":1.75},
+ {"x":16.3, "y":3.25},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":3.25, "y":4, "w":1.5},
+ {"x":4.75, "y":4, "w":2},
+ {"x":6.75, "y":4, "w":1.25},
+ {"x":8.75, "y":4, "w":2.75},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":15.3, "y":4.25},
+ {"x":16.3, "y":4.25},
+ {"x":17.3, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gurindam/keymaps/default/keymap.c b/keyboards/gurindam/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b451bbf050
--- /dev/null
+++ b/keyboards/gurindam/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2019 Fate
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, RESET, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
+ _______, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,RGB_M_SN,_______, _______,
+ _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/gurindam/keymaps/default/readme.md b/keyboards/gurindam/keymaps/default/readme.md
new file mode 100644
index 0000000000..52e0c72c53
--- /dev/null
+++ b/keyboards/gurindam/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for gurindam \ No newline at end of file
diff --git a/keyboards/gurindam/keymaps/via/keymap.c b/keyboards/gurindam/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3549a1bdea
--- /dev/null
+++ b/keyboards/gurindam/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2019 Fate
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/gurindam/keymaps/via/rules.mk b/keyboards/gurindam/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/gurindam/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/gurindam/readme.md b/keyboards/gurindam/readme.md
new file mode 100644
index 0000000000..0f6ae158b0
--- /dev/null
+++ b/keyboards/gurindam/readme.md
@@ -0,0 +1,23 @@
+# gurindam
+
+![Gurindam](https://raw.githubusercontent.com/ibnuda/Gurindam/master-of-puppets/imgs/gurindam-finished.jpg)
+
+A keyboard inspired by Arisu which in turn by Lyn's EM7 and TGR Alice.
+
+* Keyboard Maintainer: [Ibnu D. Aji](https://github.com/ibnuda)
+* Hardware Supported: Promicro
+* Hardware Availability: [PCB & Stacked Acrylic Case](https://github.com/ibnuda/gurindam) & private group-buy.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gurindam:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead.
+* **Keycode in layout**: Hold the mod key (lowest key on the right island) and then tap `R`.
+
diff --git a/keyboards/gurindam/rules.mk b/keyboards/gurindam/rules.mk
new file mode 100644
index 0000000000..afcb13df48
--- /dev/null
+++ b/keyboards/gurindam/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gvalchca/ga150/rules.mk b/keyboards/gvalchca/ga150/rules.mk
index 9ae669ce03..dc48de0a7e 100644
--- a/keyboards/gvalchca/ga150/rules.mk
+++ b/keyboards/gvalchca/ga150/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/gvalchca/spaccboard/rules.mk b/keyboards/gvalchca/spaccboard/rules.mk
index 8d02eb7490..d4622ab90c 100644
--- a/keyboards/gvalchca/spaccboard/rules.mk
+++ b/keyboards/gvalchca/spaccboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/h0oni/hotduck/rules.mk b/keyboards/h0oni/hotduck/rules.mk
index 5315f0856d..cb5238f27d 100644
--- a/keyboards/h0oni/hotduck/rules.mk
+++ b/keyboards/h0oni/hotduck/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/hadron/ver2/keymaps/default/keymap.c b/keyboards/hadron/ver2/keymaps/default/keymap.c
index f24239aa22..96aced2043 100644
--- a/keyboards/hadron/ver2/keymaps/default/keymap.c
+++ b/keyboards/hadron/ver2/keymaps/default/keymap.c
@@ -59,11 +59,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L,LT_MC(KC_SCLN), KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, CTL_ENT, \
- KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT,KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L,LT_MC(KC_SCLN), KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, CTL_ENT,
+ KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT,KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -80,11 +80,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_P7, KC_P8, KC_P9, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTRL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_P4, KC_P5, KC_P6, KC_H, KC_N, KC_E, KC_I, LT_MC(KC_O), KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_ENT, \
- KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_P7, KC_P8, KC_P9, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTRL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_P4, KC_P5, KC_P6, KC_H, KC_N, KC_E, KC_I, LT_MC(KC_O), KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_ENT,
+ KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -101,11 +101,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_P7, KC_P8, KC_P9, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_P4, KC_P5, KC_P6, KC_D, KC_H, KC_T, KC_N, LT_MC(KC_S), KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_P1, KC_P2, KC_P3, KC_B, KC_M, KC_W, KC_V, KC_Z, CTL_ENT, \
- KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_P7, KC_P8, KC_P9, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_P4, KC_P5, KC_P6, KC_D, KC_H, KC_T, KC_N, LT_MC(KC_S), KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_P1, KC_P2, KC_P3, KC_B, KC_M, KC_W, KC_V, KC_Z, CTL_ENT,
+ KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -122,11 +122,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -143,11 +143,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Mouse Layer (semi-col)
@@ -165,11 +165,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_MOUSECURSOR] = LAYOUT(
- KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, \
- _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______ \
+ KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______,
+ _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______
),
/* Adjust (Lower + Raise)
@@ -186,11 +186,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______, \
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/hadron/ver2/rules.mk b/keyboards/hadron/ver2/rules.mk
index 1d28cc0714..f7aeba6891 100644
--- a/keyboards/hadron/ver2/rules.mk
+++ b/keyboards/hadron/ver2/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight
diff --git a/keyboards/hadron/ver3/keymaps/default/keymap.c b/keyboards/hadron/ver3/keymaps/default/keymap.c
index b897ffcab1..030f767434 100644
--- a/keyboards/hadron/ver3/keymaps/default/keymap.c
+++ b/keyboards/hadron/ver3/keymaps/default/keymap.c
@@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L,LT_MC(KC_SCLN), KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, CTL_ENT, \
- KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT,KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L,LT_MC(KC_SCLN), KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, CTL_ENT,
+ KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT,KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -76,11 +76,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_P7, KC_P8, KC_P9, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTRL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_P4, KC_P5, KC_P6, KC_H, KC_N, KC_E, KC_I, LT_MC(KC_O), KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_ENT, \
- KC_GRV, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_P7, KC_P8, KC_P9, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTRL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_P4, KC_P5, KC_P6, KC_H, KC_N, KC_E, KC_I, LT_MC(KC_O), KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, CTL_ENT,
+ KC_GRV, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -97,11 +97,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,\
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_P7, KC_P8, KC_P9, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_P4, KC_P5, KC_P6, KC_D, KC_H, KC_T, KC_N, LT_MC(KC_S), KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_P1, KC_P2, KC_P3, KC_B, KC_M, KC_W, KC_V, KC_Z, CTL_ENT, \
- KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_P7, KC_P8, KC_P9, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_P4, KC_P5, KC_P6, KC_D, KC_H, KC_T, KC_N, LT_MC(KC_S), KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_P1, KC_P2, KC_P3, KC_B, KC_M, KC_W, KC_V, KC_Z, CTL_ENT,
+ KC_GRV, KC_LCTRL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -118,11 +118,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -139,11 +139,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Mouse Layer (semi-col)
@@ -161,11 +161,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_MOUSECURSOR] = LAYOUT(
- KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, \
- _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______ \
+ KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R,DEMOMACRO,_______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______,
+ _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______
),
/* Adjust (Lower + Raise)
@@ -182,11 +182,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- RESET, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST , _______, _______, _______, _______, _______, EEP_RST, \
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______, \
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG\
+ RESET, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST , _______, _______, _______, _______, _______, EEP_RST,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DEC, BL_INC, BL_STEP, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG
)
diff --git a/keyboards/hadron/ver3/rules.mk b/keyboards/hadron/ver3/rules.mk
index 44c34d2ad0..da70b2a9bf 100644
--- a/keyboards/hadron/ver3/rules.mk
+++ b/keyboards/hadron/ver3/rules.mk
@@ -6,7 +6,7 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -14,9 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = yes
RGBLIGHT_ENABLE = yes
RGB_MATRIX_ENABLE = no # once arm_rgb is implemented
diff --git a/keyboards/halberd/keymaps/default/config.h b/keyboards/halberd/keymaps/default/config.h
deleted file mode 100644
index cea12f905c..0000000000
--- a/keyboards/halberd/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/halberd/keymaps/right_modifiers/config.h b/keyboards/halberd/keymaps/right_modifiers/config.h
deleted file mode 100644
index cea12f905c..0000000000
--- a/keyboards/halberd/keymaps/right_modifiers/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/halberd/rules.mk b/keyboards/halberd/rules.mk
index 0fd0129553..a979346fe5 100644
--- a/keyboards/halberd/rules.mk
+++ b/keyboards/halberd/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/halfcliff/rules.mk b/keyboards/halfcliff/rules.mk
index 5f5547496d..85755081ed 100644
--- a/keyboards/halfcliff/rules.mk
+++ b/keyboards/halfcliff/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/han60/config.h b/keyboards/han60/config.h
new file mode 100644
index 0000000000..a695cd92a3
--- /dev/null
+++ b/keyboards/han60/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 farhandsome
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4842
+#define PRODUCT_ID 0xFB60
+#define DEVICE_VER 0x0001
+#define MANUFACTURER HanBoards
+#define PRODUCT han60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0}
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/han60/han60.c b/keyboards/han60/han60.c
new file mode 100644
index 0000000000..4ba3a50e72
--- /dev/null
+++ b/keyboards/han60/han60.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 farhandsome
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "han60.h"
diff --git a/keyboards/han60/han60.h b/keyboards/han60/han60.h
new file mode 100644
index 0000000000..f6e25c23b2
--- /dev/null
+++ b/keyboards/han60/han60.h
@@ -0,0 +1,103 @@
+/* Copyright 2021 farhandsome
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define XXX KC_NO
+
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K4D, \
+ K41, K42, K43, K44, K47, K48, K49, K4A, K4B, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
+ { K40, K41, K42, K43, K44, XXX, XXX, K47, K48, K49, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_tsangan( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
+ K41, K42, K43, K44, K47, K49, K4B \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, XXX }, \
+ { XXX, K41, K42, K43, K44, XXX, XXX, K47, XXX, K49, XXX, K4B, XXX, XXX } \
+}
+
+#define LAYOUT_tsangan_arrowkeys( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3D, K4D, \
+ K41, K42, K43, K44, K47, K48, K4A, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, XXX, K3D }, \
+ { XXX, K41, K42, K43, K44, XXX, XXX, K47, K48, XXX, K4A, XXX, K4C, K4D } \
+}
+
+#define LAYOUT_tsangan_iso( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, \
+ K30, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, \
+ K41, K42, K43, K44, K47, K49, K4B \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, XXX }, \
+ { K40, K41, K42, K43, K44, XXX, XXX, K47, XXX, K49, XXX, K4B, XXX, XXX } \
+}
+
+#define LAYOUT_tsangan_iso_arrowkeys( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, \
+ K30, K40, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3D, K4D, \
+ K41, K42, K43, K44, K47, K48, K4A, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, XXX, K3D }, \
+ { K40, K41, K42, K43, K44, XXX, XXX, K47, K48, XXX, K4A, XXX, K4C, K4D } \
+}
+
+
diff --git a/keyboards/han60/info.json b/keyboards/han60/info.json
new file mode 100644
index 0000000000..474b20de04
--- /dev/null
+++ b/keyboards/han60/info.json
@@ -0,0 +1,341 @@
+{
+ "keyboard_name": "han60",
+ "maintainer": "qmk",
+ "url": "hanboards.com",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "w": 1.5, "x": 0, "y": 1 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "w": 1.5, "x": 13.5, "y": 1 },
+ { "w": 1.75, "x": 0, "y": 2 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "w": 2.25, "x": 12.75, "y": 2 },
+ { "w": 1.25, "x": 0, "y": 3 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "w": 1.75, "x": 11.25, "y": 3 },
+ { "x": 13, "y": 3 },
+ { "x": 14, "y": 3 },
+ { "w": 1.5, "x": 0, "y": 4 },
+ { "x": 1.5, "y": 4 },
+ { "w": 1.5, "x": 2.5, "y": 4 },
+ { "w": 7, "x": 4, "y": 4 },
+ { "x": 11, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 12.5, "y": 4 },
+ { "x": 13, "y": 4 },
+ { "w": 1.5, "x": 13.5, "y": 4 },
+ { "x": 14, "y": 4 }
+ ]
+ },
+ "LAYOUT_tsangan": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "w": 2, "x": 13, "y": 0 },
+ { "w": 1.5, "x": 0, "y": 1 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "w": 1.5, "x": 13.5, "y": 1 },
+ { "w": 1.75, "x": 0, "y": 2 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "w": 2.25, "x": 12.75, "y": 2 },
+ { "w": 2.25, "x": 0, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "w": 2.75, "x": 12.25, "y": 3 },
+ { "w": 1.5, "x": 0, "y": 4 },
+ { "x": 1.5, "y": 4 },
+ { "w": 1.5, "x": 2.5, "y": 4 },
+ { "w": 7, "x": 4, "y": 4 },
+ { "w": 1.5, "x": 11, "y": 4 },
+ { "x": 12.5, "y": 4 },
+ { "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_tsangan_arrowkeys": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "w": 2, "x": 13, "y": 0 },
+ { "w": 1.5, "x": 0, "y": 1 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "w": 1.5, "x": 13.5, "y": 1 },
+ { "w": 1.75, "x": 0, "y": 2 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "w": 2.25, "x": 12.75, "y": 2 },
+ { "w": 2.25, "x": 0, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "w": 1.75, "x": 11.25, "y": 3 },
+ { "x": 13, "y": 3 },
+ { "x": 14, "y": 3 },
+ { "w": 1.5, "x": 0, "y": 4 },
+ { "x": 1.5, "y": 4 },
+ { "w": 1.5, "x": 2.5, "y": 4 },
+ { "w": 7, "x": 4, "y": 4 },
+ { "x": 11, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 13, "y": 4 },
+ { "x": 14, "y": 4 }
+ ]
+ },
+ "LAYOUT_tsangan_iso": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "w": 2, "x": 13, "y": 0 },
+ { "w": 1.5, "x": 0, "y": 1 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "h": 2, "w": 1.25, "x": 13.75, "y": 1 },
+ { "w": 1.75, "x": 0, "y": 2 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2 },
+ { "w": 1.25, "x": 0, "y": 3 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "x": 11.25, "y": 3 },
+ { "w": 2.75, "x": 12.25, "y": 3 },
+ { "w": 1.5, "x": 0, "y": 4 },
+ { "x": 1.5, "y": 4 },
+ { "w": 1.5, "x": 2.5, "y": 4 },
+ { "w": 7, "x": 4, "y": 4 },
+ { "w": 1.5, "x": 11, "y": 4 },
+ { "x": 12.5, "y": 4 },
+ { "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_tsangan_iso_arrowkeys": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "w": 2, "x": 13, "y": 0 },
+ { "w": 1.5, "x": 0, "y": 1 },
+ { "x": 1.5, "y": 1 },
+ { "x": 2.5, "y": 1 },
+ { "x": 3.5, "y": 1 },
+ { "x": 4.5, "y": 1 },
+ { "x": 5.5, "y": 1 },
+ { "x": 6.5, "y": 1 },
+ { "x": 7.5, "y": 1 },
+ { "x": 8.5, "y": 1 },
+ { "x": 9.5, "y": 1 },
+ { "x": 10.5, "y": 1 },
+ { "x": 11.5, "y": 1 },
+ { "x": 12.5, "y": 1 },
+ { "h": 2, "w": 1.25, "x": 13.75, "y": 1 },
+ { "w": 1.75, "x": 0, "y": 2 },
+ { "x": 1.75, "y": 2 },
+ { "x": 2.75, "y": 2 },
+ { "x": 3.75, "y": 2 },
+ { "x": 4.75, "y": 2 },
+ { "x": 5.75, "y": 2 },
+ { "x": 6.75, "y": 2 },
+ { "x": 7.75, "y": 2 },
+ { "x": 8.75, "y": 2 },
+ { "x": 9.75, "y": 2 },
+ { "x": 10.75, "y": 2 },
+ { "x": 11.75, "y": 2 },
+ { "x": 12.75, "y": 2 },
+ { "w": 1.25, "x": 0, "y": 3 },
+ { "x": 1.25, "y": 3 },
+ { "x": 2.25, "y": 3 },
+ { "x": 3.25, "y": 3 },
+ { "x": 4.25, "y": 3 },
+ { "x": 5.25, "y": 3 },
+ { "x": 6.25, "y": 3 },
+ { "x": 7.25, "y": 3 },
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+ { "x": 10.25, "y": 3 },
+ { "w": 1.75, "x": 11.25, "y": 3 },
+ { "x": 13, "y": 3 },
+ { "x": 14, "y": 3 },
+ { "w": 1.5, "x": 0, "y": 4 },
+ { "x": 1.5, "y": 4 },
+ { "w": 1.5, "x": 2.5, "y": 4 },
+ { "w": 7, "x": 4, "y": 4 },
+ { "x": 11, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 13, "y": 4 },
+ { "x": 14, "y": 4 }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/han60/keymaps/default/keymap.c b/keyboards/han60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ef75bc8c88
--- /dev/null
+++ b/keyboards/han60/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 farhandsome
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* BASE */
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_GRAVE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_SPACE, KC_RALT, KC_LEFT, MO(1), KC_DOWN, KC_RCTL, KC_RGHT
+ ),
+ /* FN */
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
+
diff --git a/keyboards/han60/keymaps/default/readme.md b/keyboards/han60/keymaps/default/readme.md
new file mode 100644
index 0000000000..02e9fab479
--- /dev/null
+++ b/keyboards/han60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for han60
diff --git a/keyboards/han60/keymaps/via/keymap.c b/keyboards/han60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1e3aee8fd0
--- /dev/null
+++ b/keyboards/han60/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 farhandsome
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* LAYER 1 */
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_GRAVE, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_SPACE, KC_RALT, KC_LEFT, MO(1), KC_DOWN, KC_RCTL, KC_RGHT
+ ),
+ /* LAYER 2 */
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ /* LAYER 3 */
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ /* LAYER 4 */
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
+
diff --git a/keyboards/han60/keymaps/via/rules.mk b/keyboards/han60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/han60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/han60/readme.md b/keyboards/han60/readme.md
new file mode 100644
index 0000000000..d2f0fb9811
--- /dev/null
+++ b/keyboards/han60/readme.md
@@ -0,0 +1,27 @@
+# han60
+
+![han60](https://i.imgur.com/nfiSGNOh.jpg)
+
+The Han60 - a 60% gasket mounted keyboard with multiple layout capabilities.
+
+* Keyboard Maintainer: [farhandsome](https://github.com/farhandsome)
+* Hardware Supported: Han60 PCB (ATmega32U4)
+* Hardware Availability: [Han Boards](hanboards.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make han60:default
+
+Flashing example for this keyboard:
+
+ make han60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/han60/rules.mk b/keyboards/han60/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/han60/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hand88/rules.mk b/keyboards/hand88/rules.mk
index 3070ff0e97..adc15fb5fc 100755
--- a/keyboards/hand88/rules.mk
+++ b/keyboards/hand88/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/108key_trackpoint/rules.mk b/keyboards/handwired/108key_trackpoint/rules.mk
index 32e013a28c..ab84b088bc 100644
--- a/keyboards/handwired/108key_trackpoint/rules.mk
+++ b/keyboards/handwired/108key_trackpoint/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/2x5keypad/rules.mk b/keyboards/handwired/2x5keypad/rules.mk
index f24ea2d096..08870622a1 100644
--- a/keyboards/handwired/2x5keypad/rules.mk
+++ b/keyboards/handwired/2x5keypad/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
-
+# Build Options
+# change yes to no to disable
+#
AUDIO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -12,7 +14,6 @@ COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE= no # Console for debug
EXTRAKEY_ENABLE = yes # Audio control and System control
MOUSEKEY_ENABLE = yes # Mouse keys
-NKRO_ENABLE = yes # USB Nkey Rollover -
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/3dfoxc/3dfoxc.c b/keyboards/handwired/3dfoxc/3dfoxc.c
new file mode 100644
index 0000000000..e83a32d295
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/3dfoxc.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "3dfoxc.h"
diff --git a/keyboards/handwired/3dfoxc/3dfoxc.h b/keyboards/handwired/3dfoxc/3dfoxc.h
new file mode 100644
index 0000000000..b632cff2ce
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/3dfoxc.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, XXX, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
+ { XXX, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, XXX, K4D, K4E, K4F }, \
+}
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/3dfoxc/config.h b/keyboards/handwired/3dfoxc/config.h
new file mode 100644
index 0000000000..ea73f91ba0
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/config.h
@@ -0,0 +1,45 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER dlgoodr
+#define PRODUCT 3dfoxc
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F0, F1, C7, D5, B7 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
+
+#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/3dfoxc/info.json b/keyboards/handwired/3dfoxc/info.json
new file mode 100644
index 0000000000..06e849bb11
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/info.json
@@ -0,0 +1,364 @@
+{
+ "keyboard_name": "3dfoxc",
+ "url": "",
+ "maintainer": "dlgoodr",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "K00 (B0,B5)",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "K01 (B0,B6)",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "K02 (B0,B7)",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "K03 (B0,C0)",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "K04 (B0,C1)",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "K05 (B0,C2)",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "K06 (B0,C3)",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "K07 (B0,C4)",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "K08 (B0,C5)",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "K09 (B0,C6)",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": "K0A (B0,C7)",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "K0B (B0,D0)",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "K0C (B0,D1)",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "K0D (B0,D2)",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "K0E (B0,D3)",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "K0F (B0,D4)",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "K10 (B1,B5)",
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "K12 (B1,B7)",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "K13 (B1,C0)",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "K14 (B1,C1)",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "K15 (B1,C2)",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "K16 (B1,C3)",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "K17 (B1,C4)",
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "label": "K18 (B1,C5)",
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "label": "K19 (B1,C6)",
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "label": "K1A (B1,C7)",
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "label": "K1B (B1,D0)",
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "label": "K1C (B1,D1)",
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "label": "K1D (B1,D2)",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "K1E (B1,D3)",
+ "x": 13.5,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "K1F (B1,D4)",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "K20 (B2,B5)",
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "label": "K22 (B2,B7)",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "K23 (B2,C0)",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "K24 (B2,C1)",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "K25 (B2,C2)",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "K26 (B2,C3)",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "K27 (B2,C4)",
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "label": "K28 (B2,C5)",
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "label": "K29 (B2,C6)",
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "label": "K2A (B2,C7)",
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "label": "K2B (B2,D0)",
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "label": "K2C (B2,D1)",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "K2D (B2,D2)",
+ "x": 12.75,
+ "y": 2,
+ "w": 2.25
+ },
+ {
+ "label": "K2F (B2,D4)",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "K31 (B3,B6)",
+ "x": 0,
+ "y": 3,
+ "w": 2.25
+ },
+ {
+ "label": "K32 (B3,B7)",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "K33 (B3,C0)",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "K34 (B3,C1)",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "K35 (B3,C2)",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "K36 (B3,C3)",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "K37 (B3,C4)",
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "label": "K38 (B3,C5)",
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "label": "K39 (B3,C6)",
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "label": "K3A (B3,C7)",
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "label": "K3B (B3,D0)",
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "label": "K3D (B3,D2)",
+ "x": 12.25,
+ "y": 3,
+ "w": 1.75
+ },
+ {
+ "label": "K3E (B3,D3)",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "K3F (B3,D4)",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "K40 (B4,B5)",
+ "x": 0,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "K41 (B4,B6)",
+ "x": 1.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "K43 (B4,C0)",
+ "x": 2.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "K46 (B4,C3)",
+ "x": 3.75,
+ "y": 4,
+ "w": 6.25
+ },
+ {
+ "label": "K4A (B4,C7)",
+ "x": 10,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "K4B (B4,D0)",
+ "x": 11.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "K4D (B4,D2)",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "K4E (B4,D3)",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "K4F (B4,D4)",
+ "x": 15,
+ "y": 4
+ }
+ ]
+ }
+ },
+ "meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+} \ No newline at end of file
diff --git a/keyboards/handwired/3dfoxc/keymaps/default/keymap.c b/keyboards/handwired/3dfoxc/keymaps/default/keymap.c
new file mode 100644
index 0000000000..aaed418709
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,---------------------------------------------------------------.
+ * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ |~` |???|
+ * |---------------------------------------------------------------|
+ * |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] |Bkspc|Del|
+ * |---------------------------------------------------------------|
+ * |Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |PUp|
+ * |---------------------------------------------------------------|
+ * |Shift | Z | X | C | V | B | N | M | , | . | / |Shift |Up |PDn|
+ * |---------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt |Fn ||Lt |Dn |Rt |
+ * `--------------------------------------------------''-----------'
+ */
+
+ [_BL] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_NO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Keymap _FL: Function Layer
+ * ,---------------------------------------------------------------.
+ * | |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| |RST| |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | |PSc| | |Del |Ins|
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | |Hme|
+ * |---------------------------------------------------------------|
+ * | | | | | | | |MUT|V- |V+ | | |PUp|End|
+ * |---------------------------------------------------------------|
+ * | | | | | | ||Hme|PDn|End|
+ * `--------------------------------------------------''-----------'
+ */
+ [_FL] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, KC_DEL, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, KC_END,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+};
+ \ No newline at end of file
diff --git a/keyboards/handwired/3dfoxc/keymaps/default/readme.md b/keyboards/handwired/3dfoxc/keymaps/default/readme.md
new file mode 100644
index 0000000000..26ced1cb91
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# 3dfoxc "Default" keymap
+
+Set up just like the [original whitefox](https://input.club/whitefox/), except the function layer is totally made up. \ No newline at end of file
diff --git a/keyboards/handwired/3dfoxc/keymaps/dlg/config.h b/keyboards/handwired/3dfoxc/keymaps/dlg/config.h
new file mode 100644
index 0000000000..d824330b04
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/keymaps/dlg/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define GRAVE_ESC_ALT_OVERRIDE
diff --git a/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c b/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c
new file mode 100644
index 0000000000..c4431acecc
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2022 david l goodrich <dlg@dsrw.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _BL,
+ _FL,
+ _MAC,
+ _LA,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,---------------------------------------------------------------.
+ * |~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bks|???|Esc|
+ * |---------------------------------------------------------------|
+ * |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |Del|
+ * |---------------------------------------------------------------|
+ * |Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |PUp|
+ * |---------------------------------------------------------------|
+ * |Shift | Z | X | C | V | B | N | M | , | . | / |Shift |Up |PDn|
+ * |---------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt |Fn ||Lt |Dn |Rt |
+ * `--------------------------------------------------''-----------'
+ */
+ [_BL] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_ESC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, LM(_LA, MOD_LALT), KC_SPC, KC_LALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Keymap _FL: Function Layer
+ * ,---------------------------------------------------------------.
+ * | |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del|RST| |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | |mac| |PSc|Br-|Br+| |Ins|
+ * |---------------------------------------------------------------|
+ * | | | | | | |Lt |Dn |Up |Rt | | | |Hme|
+ * |---------------------------------------------------------------|
+ * | | | | | | | |MUT|V- |V+ | | |PUp|End|
+ * |---------------------------------------------------------------|
+ * | | | | | | ||Hme|PDn|End|
+ * `--------------------------------------------------''-----------'
+ */
+ [_FL] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, TG(_MAC),_______, KC_PSCR, KC_BRID, KC_BRIU, _______, KC_INS,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_HOME,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, KC_END,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /* Keymap _MAC: Mac Layer
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Alt |Win | |Win | || | | |
+ * `--------------------------------------------------''-----------'
+ */
+ [_MAC] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LCTL, KC_LALT, KC_LGUI, _______, KC_RGUI, _______, _______, _______, _______
+ ),
+
+ /* Keymap _LA: Left Alt Layer - LALT-4 maps to LALT-F4 so I can quit apps
+ * ,---------------------------------------------------------------.
+ * | | | | |F4 | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | || | | |
+ * `--------------------------------------------------''-----------'
+ */
+ [_LA] = LAYOUT(
+ _______, _______, _______, _______, KC_F4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/handwired/3dfoxc/keymaps/dlg/readme.md b/keyboards/handwired/3dfoxc/keymaps/dlg/readme.md
new file mode 100755
index 0000000000..487086e572
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/keymaps/dlg/readme.md
@@ -0,0 +1,73 @@
+# dlg's layout
+
+Inspired heavily by [my tada68 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/tada68/keymaps/dlg).
+
+Notable deviation from the default keymap includes correctly placing `KC_BSLS` and moving `KC_BSPC` up to the top row where it belongs. The additional key on the top-row is a NOOP while I think of something fun. I also swapped `Esc` and `~` as in my tada68 layout.
+
+
+### Base Layer
+
+```
+,---------------------------------------------------------------.
+|~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bks|???|Esc|
+|---------------------------------------------------------------|
+|Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |Del|
+|---------------------------------------------------------------|
+|Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter |PUp|
+|---------------------------------------------------------------|
+|Shift | Z | X | C | V | B | N | M | , | . | / |Shift |Up |PDn|
+|---------------------------------------------------------------|
+|Ctrl|Win |Alt | Space |Alt |Fn ||Lt |Dn |Rt |
+`--------------------------------------------------''-----------'
+```
+
+
+### Fn Layer
+
+```
+,---------------------------------------------------------------.
+| |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del|RST| |
+|---------------------------------------------------------------|
+| | | | | | | | |mac| |PSc|Br-|Br+| |Ins|
+|---------------------------------------------------------------|
+| | | | | | |Lt |Dn |Up |Rt | | | |Hme|
+|---------------------------------------------------------------|
+| | | | | | | |MUT|V- |V+ | | |PUp|End|
+|---------------------------------------------------------------|
+| | | | | | ||Hme|PDn|End|
+`--------------------------------------------------''-----------'
+```
+
+### Mac Layer
+
+```
+,---------------------------------------------------------------.
+| | | | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+|Ctrl|Alt |Win | |Win | || | | |
+`--------------------------------------------------''-----------'
+```
+
+### `LALT` Layer
+
+Left Alt Layer - LALT-4 maps to LALT-F4 so I can quit apps
+
+```
+,---------------------------------------------------------------.
+| | | | |F4 | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | | | | | | | | | |
+|---------------------------------------------------------------|
+| | | | | | || | | |
+`--------------------------------------------------''-----------'
+```
diff --git a/keyboards/handwired/3dfoxc/readme.md b/keyboards/handwired/3dfoxc/readme.md
new file mode 100644
index 0000000000..3d6e33a5c1
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/readme.md
@@ -0,0 +1,42 @@
+# 3dfoxc
+
+![3dfoxc](https://cdn.thingiverse.com/assets/12/3a/3e/5f/47/64A223C2-57E8-4124-B6AB-3031A0BA7973.jpeg)
+
+A [3d-printed whitefox](https://www.thingiverse.com/thing:2952008) with an Elite-C microcontroller.
+
+This is a build of [matt3o's "How to Build a Custom Keyboard" guide](https://matt3o.com/book/), except that I have replaced the Teensy with an [Elite-C v4](https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4). Presumably you could replace it with anything compatible. The USB-C port had to be enlarged with dremel, and the mount for the Teensy was ground off and replaced with everyone's favorite rapid modeling polymer ... hot glue.
+
+* Keyboard Maintainer: [david l goodrich](mailto:dlg@dsrw.org)
+* Hardware Supported:
+ * [3d-printed whitefox](https://www.thingiverse.com/thing:2952008)
+ * Elite-C microcontroller
+* Hardware Availability: [keebio](https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4), [1up](https://1upkeyboards.com/shop/controllers/elite-c-v4-controller/), [keyhive](https://keyhive.xyz/shop/elite-c), [splitkb](https://splitkb.com/products/elite-c-low-profile-rev4-microcontroller)
+
+## Wiring
+
+Badly, because I have never done this before. Build pics available upon request, I guess.
+
+![wiring diagram](https://user-images.githubusercontent.com/6492494/148123622-36cae91e-97f3-40f7-a6fc-4d59b1a3ef02.png)
+
+
+## Flashing
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/3dfoxc:default
+
+Flashing example for this keyboard (use the `dfu` target for the Elite-C!):
+
+ make handwired/3dfoxc:default:dfu
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+
diff --git a/keyboards/handwired/3dfoxc/rules.mk b/keyboards/handwired/3dfoxc/rules.mk
new file mode 100644
index 0000000000..168a617754
--- /dev/null
+++ b/keyboards/handwired/3dfoxc/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/3dortho14u/keymaps/default/keymap.c b/keyboards/handwired/3dortho14u/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e8d96d22ce
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NO , KC_ENT ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_DEL ,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_NO , KC_NO , KC_SPC , KC_NO , KC_NO , KC_NO , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT(
+ KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END
+ )
+};
diff --git a/keyboards/handwired/3dortho14u/keymaps/default/readme.md b/keyboards/handwired/3dortho14u/keymaps/default/readme.md
new file mode 100644
index 0000000000..04e5d40fd5
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for 3dortho14u
diff --git a/keyboards/handwired/3dortho14u/keymaps/via/keymap.c b/keyboards/handwired/3dortho14u/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ba5a1cde3f
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NO , KC_ENT ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_DEL ,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1) , KC_NO , KC_NO , KC_SPC , KC_NO , KC_NO , KC_NO , KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/3dortho14u/keymaps/via/rules.mk b/keyboards/handwired/3dortho14u/keymaps/via/rules.mk
new file mode 100644
index 0000000000..7a49719505
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+# rules.mk overrides to enable VIA
+
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/handwired/3dortho14u/readme.md b/keyboards/handwired/3dortho14u/readme.md
new file mode 100644
index 0000000000..3163891d48
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/readme.md
@@ -0,0 +1,40 @@
+# 3dortho14u
+
+![3dortho14u](https://i.imgur.com/us16LYTh.jpg)
+
+A symmetrical 14u wide ortholinear keyboard.
+
+In addition to the 3d printed parts and microcontroller, the following hardware is required:
+* 8 * 12 mm M3 bolt
+* Either:
+ * 8 * M3 muts and CA glue
+ OR
+ * 8 * 3x3 mm threaded insert
+* Optional:
+ * USB daughter board
+
+---
+
+* Keyboard Maintainer: [xia0](https://github.com/xia0)
+* Hardware Supported:
+ * rev1: Teensy 2.0 (ATmega32u4)
+ * rev2: Arduino Pro Micro (ATmega32u4)
+* Hardware Availability: [github](https://github.com/xia0/keeb_files/tree/main/3dortho14u)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 3dortho14u/rev1:default
+
+Flashing example for this keyboard:
+
+ make 3dortho14u/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/3dortho14u/rev1/config.h b/keyboards/handwired/3dortho14u/rev1/config.h
new file mode 100644
index 0000000000..d78fd0a7f8
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/handwired/3dortho14u/rev1/info.json b/keyboards/handwired/3dortho14u/rev1/info.json
new file mode 100644
index 0000000000..72ed95e5f4
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/info.json
@@ -0,0 +1,115 @@
+{
+ "manufacturer": "xia0",
+ "keyboard_name": "3dortho14u",
+ "url": "",
+ "maintainer": "xia0",
+ "processor": "atmega32u4",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "features": {
+ "audio": false,
+ "backlight": false,
+ "bluetooth": false,
+ "bootmagic": true,
+ "command": false,
+ "console": true,
+ "extrakey": true,
+ "midi": false,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": false,
+ "unicode": false
+ },
+ "indicators": {
+ "caps_lock": "F0"
+ },
+ "matrix_pins": {
+ "cols": ["D0", "D1", "D2", "D3", "C6", "C7", "D5", "D4", "D6", "D7", "B4", "B5", "B6", "F7"],
+ "rows": ["B0", "B1", "B2", "B3", "B7"]
+ },
+ "usb": {
+ "device_ver": "0x0001",
+ "pid": "0x3D14",
+ "vid": "0x6662"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1},
+ {"matrix": [1, 9], "x": 9, "y": 1},
+ {"matrix": [1, 10], "x": 10, "y": 1},
+ {"matrix": [1, 11], "x": 11, "y": 1},
+ {"matrix": [1, 12], "x": 12, "y": 1},
+ {"matrix": [1, 13], "x": 13, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2},
+ {"matrix": [2, 5], "x": 5, "y": 2},
+ {"matrix": [2, 6], "x": 6, "y": 2},
+ {"matrix": [2, 7], "x": 7, "y": 2},
+ {"matrix": [2, 8], "x": 8, "y": 2},
+ {"matrix": [2, 9], "x": 9, "y": 2},
+ {"matrix": [2, 10], "x": 10, "y": 2},
+ {"matrix": [2, 11], "x": 11, "y": 2},
+ {"matrix": [2, 12], "x": 12, "y": 2},
+ {"matrix": [2, 13], "x": 13, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3},
+ {"matrix": [3, 5], "x": 5, "y": 3},
+ {"matrix": [3, 6], "x": 6, "y": 3},
+ {"matrix": [3, 7], "x": 7, "y": 3},
+ {"matrix": [3, 8], "x": 8, "y": 3},
+ {"matrix": [3, 9], "x": 9, "y": 3},
+ {"matrix": [3, 10], "x": 10, "y": 3},
+ {"matrix": [3, 11], "x": 11, "y": 3},
+ {"matrix": [3, 12], "x": 12, "y": 3},
+ {"matrix": [3, 13], "x": 13, "y": 3},
+
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2, "y": 4},
+ {"matrix": [4, 3], "x": 3, "y": 4},
+ {"matrix": [4, 4], "x": 4, "y": 4},
+ {"matrix": [4, 5], "x": 5, "y": 4},
+ {"matrix": [4, 6], "x": 6, "y": 4},
+ {"matrix": [4, 7], "x": 7, "y": 4},
+ {"matrix": [4, 8], "x": 8, "y": 4},
+ {"matrix": [4, 9], "x": 9, "y": 4},
+ {"matrix": [4, 10], "x": 10, "y": 4},
+ {"matrix": [4, 11], "x": 11, "y": 4},
+ {"matrix": [4, 12], "x": 12, "y": 4},
+ {"matrix": [4, 13], "x": 13, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/3dortho14u/rev1/readme.md b/keyboards/handwired/3dortho14u/rev1/readme.md
new file mode 100644
index 0000000000..e785369b23
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/readme.md
@@ -0,0 +1,39 @@
+# 3dortho14u
+
+![3dortho14u](https://i.imgur.com/us16LYTh.jpg)
+
+A symmetrical 14u wide ortholinear keyboard.
+
+In addition to the 3d printed parts and microcontroller, the following hardware is required:
+* 8 * 12 mm M3 bolt
+* Either:
+ * 8 * M3 muts and CA glue
+ OR
+ * 8 * 3x3 mm threaded insert
+* Optional:
+ * USB daughter board
+
+---
+
+* Keyboard Maintainer: [xia0](https://github.com/xia0)
+* Hardware Supported:
+ * Teensy 2.0 (ATmega32u4)
+* Hardware Availability: [github](https://github.com/xia0/keeb_files/tree/main/3dortho14u)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 3dortho14u/rev1:default
+
+Flashing example for this keyboard:
+
+ make 3dortho14u/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/3dortho14u/rev1/rev1.c b/keyboards/handwired/3dortho14u/rev1/rev1.c
new file mode 100644
index 0000000000..220fd71cfe
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/rev1.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rev1.h"
diff --git a/keyboards/handwired/3dortho14u/rev1/rev1.h b/keyboards/handwired/3dortho14u/rev1/rev1.h
new file mode 100644
index 0000000000..d8f47c43f8
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/rev1.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
diff --git a/keyboards/handwired/3dortho14u/rev1/rules.mk b/keyboards/handwired/3dortho14u/rev1/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev1/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/handwired/3dortho14u/rev2/config.h b/keyboards/handwired/3dortho14u/rev2/config.h
new file mode 100644
index 0000000000..d78fd0a7f8
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/handwired/3dortho14u/rev2/info.json b/keyboards/handwired/3dortho14u/rev2/info.json
new file mode 100644
index 0000000000..705d6b5570
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/info.json
@@ -0,0 +1,115 @@
+{
+ "manufacturer": "xia0",
+ "keyboard_name": "3dortho14u",
+ "url": "",
+ "maintainer": "xia0",
+ "processor": "atmega32u4",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "features": {
+ "audio": false,
+ "backlight": false,
+ "bluetooth": false,
+ "bootmagic": true,
+ "command": false,
+ "console": true,
+ "extrakey": true,
+ "midi": false,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": false,
+ "unicode": false
+ },
+ "indicators": {
+ "caps_lock": "F4"
+ },
+ "matrix_pins": {
+ "cols": ["F5", "F6", "F7", "B1", "B3", "B2", "B6"],
+ "rows": ["D3", "D2", "D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5"]
+ },
+ "usb": {
+ "device_ver": "0x0001",
+ "pid": "0x3D14",
+ "vid": "0x6662"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [5, 0], "x": 7, "y": 0},
+ {"matrix": [5, 1], "x": 8, "y": 0},
+ {"matrix": [5, 2], "x": 9, "y": 0},
+ {"matrix": [5, 3], "x": 10, "y": 0},
+ {"matrix": [5, 4], "x": 11, "y": 0},
+ {"matrix": [5, 5], "x": 12, "y": 0},
+ {"matrix": [5, 6], "x": 13, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+ {"matrix": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [6, 0], "x": 7, "y": 1},
+ {"matrix": [6, 1], "x": 8, "y": 1},
+ {"matrix": [6, 2], "x": 9, "y": 1},
+ {"matrix": [6, 3], "x": 10, "y": 1},
+ {"matrix": [6, 4], "x": 11, "y": 1},
+ {"matrix": [6, 5], "x": 12, "y": 1},
+ {"matrix": [6, 6], "x": 13, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+ {"matrix": [2, 3], "x": 3, "y": 2},
+ {"matrix": [2, 4], "x": 4, "y": 2},
+ {"matrix": [2, 5], "x": 5, "y": 2},
+ {"matrix": [2, 6], "x": 6, "y": 2},
+ {"matrix": [7, 0], "x": 7, "y": 2},
+ {"matrix": [7, 1], "x": 8, "y": 2},
+ {"matrix": [7, 2], "x": 9, "y": 2},
+ {"matrix": [7, 3], "x": 10, "y": 2},
+ {"matrix": [7, 4], "x": 11, "y": 2},
+ {"matrix": [7, 5], "x": 12, "y": 2},
+ {"matrix": [7, 6], "x": 13, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [3, 3], "x": 3, "y": 3},
+ {"matrix": [3, 4], "x": 4, "y": 3},
+ {"matrix": [3, 5], "x": 5, "y": 3},
+ {"matrix": [3, 6], "x": 6, "y": 3},
+ {"matrix": [8, 0], "x": 7, "y": 3},
+ {"matrix": [8, 1], "x": 8, "y": 3},
+ {"matrix": [8, 2], "x": 9, "y": 3},
+ {"matrix": [8, 3], "x": 10, "y": 3},
+ {"matrix": [8, 4], "x": 11, "y": 3},
+ {"matrix": [8, 5], "x": 12, "y": 3},
+ {"matrix": [8, 6], "x": 13, "y": 3},
+
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2, "y": 4},
+ {"matrix": [4, 3], "x": 3, "y": 4},
+ {"matrix": [4, 4], "x": 4, "y": 4},
+ {"matrix": [4, 5], "x": 5, "y": 4},
+ {"matrix": [4, 6], "x": 6, "y": 4},
+ {"matrix": [9, 0], "x": 7, "y": 4},
+ {"matrix": [9, 1], "x": 8, "y": 4},
+ {"matrix": [9, 2], "x": 9, "y": 4},
+ {"matrix": [9, 3], "x": 10, "y": 4},
+ {"matrix": [9, 4], "x": 11, "y": 4},
+ {"matrix": [9, 5], "x": 12, "y": 4},
+ {"matrix": [9, 6], "x": 13, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/3dortho14u/rev2/readme.md b/keyboards/handwired/3dortho14u/rev2/readme.md
new file mode 100644
index 0000000000..bb2e982130
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/readme.md
@@ -0,0 +1,39 @@
+# 3dortho14u
+
+![3dortho14u](https://i.imgur.com/us16LYTh.jpg)
+
+A symmetrical 14u wide ortholinear keyboard.
+
+In addition to the 3d printed parts and microcontroller, the following hardware is required:
+* 8 * 12 mm M3 bolt
+* Either:
+ * 8 * M3 muts and CA glue
+ OR
+ * 8 * 3x3 mm threaded insert
+* Optional:
+ * USB daughter board
+
+---
+
+* Keyboard Maintainer: [xia0](https://github.com/xia0)
+* Hardware Supported:
+ * Arduino Pro Micro (ATmega32u4)
+* Hardware Availability: [github](https://github.com/xia0/keeb_files/tree/main/3dortho14u)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 3dortho14u/rev2:default
+
+Flashing example for this keyboard:
+
+ make 3dortho14u/rev2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/3dortho14u/rev2/rev2.c b/keyboards/handwired/3dortho14u/rev2/rev2.c
new file mode 100644
index 0000000000..545fea9fad
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/rev2.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rev2.h"
diff --git a/keyboards/handwired/3dortho14u/rev2/rev2.h b/keyboards/handwired/3dortho14u/rev2/rev2.h
new file mode 100644
index 0000000000..d8f47c43f8
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/rev2.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Xiao (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
diff --git a/keyboards/handwired/3dortho14u/rev2/rules.mk b/keyboards/handwired/3dortho14u/rev2/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/handwired/3dortho14u/rev2/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/handwired/3dp660/rules.mk b/keyboards/handwired/3dp660/rules.mk
index 0866edd414..a8ac9f9320 100644
--- a/keyboards/handwired/3dp660/rules.mk
+++ b/keyboards/handwired/3dp660/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/412_64/keymaps/default/config.h b/keyboards/handwired/412_64/keymaps/default/config.h
deleted file mode 100644
index d533d806c9..0000000000
--- a/keyboards/handwired/412_64/keymaps/default/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/412_64/rules.mk b/keyboards/handwired/412_64/rules.mk
index 0b0fa6f8f3..52d23b3122 100644
--- a/keyboards/handwired/412_64/rules.mk
+++ b/keyboards/handwired/412_64/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/42/rules.mk b/keyboards/handwired/42/rules.mk
index 72d7ebf915..5742e84bf5 100644
--- a/keyboards/handwired/42/rules.mk
+++ b/keyboards/handwired/42/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/6key/rules.mk b/keyboards/handwired/6key/rules.mk
index 4642c12599..5be28d8a57 100644
--- a/keyboards/handwired/6key/rules.mk
+++ b/keyboards/handwired/6key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/6macro/keymaps/default/keymap.c b/keyboards/handwired/6macro/keymaps/default/keymap.c
index 365dbf7b05..1c6b91a7d3 100644
--- a/keyboards/handwired/6macro/keymaps/default/keymap.c
+++ b/keyboards/handwired/6macro/keymaps/default/keymap.c
@@ -25,8 +25,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------+-------+-------'
*/
[0] = LAYOUT(
- KC_F13, KC_F14, LT(1, KC_F15), \
- KC_F16, KC_F17, KC_F18 \
+ KC_F13, KC_F14, LT(1, KC_F15),
+ KC_F16, KC_F17, KC_F18
),
/* LAYER 1
@@ -37,8 +37,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------+-------+-------'
*/
[1] = LAYOUT(
- RGB_TOG, RGB_MOD, KC_TRNS, \
- RGB_HUI, RGB_VAI, MO(2) \
+ RGB_TOG, RGB_MOD, KC_TRNS,
+ RGB_HUI, RGB_VAI, MO(2)
),
/* LAYER 2
@@ -49,8 +49,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------+-------+-------'
*/
[2] = LAYOUT(
- RESET, RGB_RMOD, KC_NO, \
- RGB_HUD, RGB_VAD, KC_TRNS \
+ RESET, RGB_RMOD, KC_NO,
+ RGB_HUD, RGB_VAD, KC_TRNS
)
};
diff --git a/keyboards/handwired/6macro/rules.mk b/keyboards/handwired/6macro/rules.mk
index a553c51d48..73fc9f4951 100644
--- a/keyboards/handwired/6macro/rules.mk
+++ b/keyboards/handwired/6macro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
RGB_MATRIX_DRIVER = WS2812
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/handwired/aball/aball.c b/keyboards/handwired/aball/aball.c
new file mode 100644
index 0000000000..3f12243ac6
--- /dev/null
+++ b/keyboards/handwired/aball/aball.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Richard Sutherland
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "aball.h"
diff --git a/keyboards/handwired/aball/aball.h b/keyboards/handwired/aball/aball.h
new file mode 100644
index 0000000000..d6cb21bafc
--- /dev/null
+++ b/keyboards/handwired/aball/aball.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 Richard Sutherland
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT(k00) {{ k00 }}
diff --git a/keyboards/handwired/aball/config.h b/keyboards/handwired/aball/config.h
new file mode 100644
index 0000000000..33a6cd2a97
--- /dev/null
+++ b/keyboards/handwired/aball/config.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2020 Richard Sutherland
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xC2F0
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Richard Sutherland
+#define PRODUCT ABall
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 1
+
+#define DIRECT_PINS {{NO_PIN}}
+
+#define ADNS9800_CS_PIN F7
+#define POINTING_DEVICE_INVERT_X
diff --git a/keyboards/handwired/aball/info.json b/keyboards/handwired/aball/info.json
new file mode 100644
index 0000000000..c8afff6a2b
--- /dev/null
+++ b/keyboards/handwired/aball/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "aball",
+ "url": "https://github.com/brickbots/aball/",
+ "maintainer": "@brickbots",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/aball/keymaps/default/keymap.c b/keyboards/handwired/aball/keymaps/default/keymap.c
new file mode 100644
index 0000000000..122112c7c8
--- /dev/null
+++ b/keyboards/handwired/aball/keymaps/default/keymap.c
@@ -0,0 +1,19 @@
+/* Copyright 2020 Richard Sutherland
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Dummy
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
diff --git a/keyboards/handwired/aball/readme.md b/keyboards/handwired/aball/readme.md
new file mode 100644
index 0000000000..96a62d8386
--- /dev/null
+++ b/keyboards/handwired/aball/readme.md
@@ -0,0 +1,14 @@
+# ABall
+
+Your keyboard has plenty of buttons, why do you need more on your pointing device? ABall is a buttonless trackball designed to
+fit nicely next to a kyria, or other keyboard which serves as the mouse buttons. For my use I have left, middle and right mouse
+buttons on a layer along with keys for scroll up and down which I operate with my left hand while my right hand uses the ball for pointing.
+
+* Keyboard Maintainer: [Richard Sutherland](https://github.com/brickbots)
+* Special thanks to the Oddball for doing the heavy lifing with ADNS suport: [atulloh.github.io/oddball](https://atulloh.github.io/oddball)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/aball:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/aball/rules.mk b/keyboards/handwired/aball/rules.mk
new file mode 100644
index 0000000000..9063957737
--- /dev/null
+++ b/keyboards/handwired/aball/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Add trackball support
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = adns9800
diff --git a/keyboards/handwired/aek64/rules.mk b/keyboards/handwired/aek64/rules.mk
index 78665308ac..03ca07fc44 100644
--- a/keyboards/handwired/aek64/rules.mk
+++ b/keyboards/handwired/aek64/rules.mk
@@ -5,15 +5,13 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-# change to no to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
UNICODE_ENABLE = yes # Enable support for arrow keys icon on the second layer.
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
diff --git a/keyboards/handwired/aim65/rules.mk b/keyboards/handwired/aim65/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/handwired/aim65/rules.mk
+++ b/keyboards/handwired/aim65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/amigopunk/rules.mk b/keyboards/handwired/amigopunk/rules.mk
index 04e5a24644..be51253065 100644
--- a/keyboards/handwired/amigopunk/rules.mk
+++ b/keyboards/handwired/amigopunk/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/angel/rules.mk b/keyboards/handwired/angel/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/handwired/angel/rules.mk
+++ b/keyboards/handwired/angel/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/aplx2/rules.mk b/keyboards/handwired/aplx2/rules.mk
index 85d74856dc..ae1cce7c8d 100644
--- a/keyboards/handwired/aplx2/rules.mk
+++ b/keyboards/handwired/aplx2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/aranck/rules.mk b/keyboards/handwired/aranck/rules.mk
index cce68f22f4..515bc2f8e4 100644
--- a/keyboards/handwired/aranck/rules.mk
+++ b/keyboards/handwired/aranck/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/handwired/arrow_pad/keymaps/default/keymap.c b/keyboards/handwired/arrow_pad/keymaps/default/keymap.c
index dd729c59a1..caee60d6ae 100644
--- a/keyboards/handwired/arrow_pad/keymaps/default/keymap.c
+++ b/keyboards/handwired/arrow_pad/keymaps/default/keymap.c
@@ -27,28 +27,28 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[LAYER_BASE] = LAYOUT( \
- KC_ESC, KC_TAB, KC_BSLS, MO(2), \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PEQL, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, XXXXXXX, \
+[LAYER_BASE] = LAYOUT(
+ KC_ESC, KC_TAB, KC_BSLS, MO(2),
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PEQL,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, XXXXXXX,
KC_P0, KC_PCMM, KC_PDOT, KC_PENT ),
-[LAYER_EDIT] = LAYOUT( \
- KC_ESC, KC_TAB, KC_SPC, _______, \
- TG(1), SC_PSTE, SC_REDO, SC_UNDO, \
- KC_HOME, KC_UP, KC_PGUP, KC_LALT, \
- KC_LEFT, M_COPY, KC_RGHT, KC_LCTL, \
- KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \
+[LAYER_EDIT] = LAYOUT(
+ KC_ESC, KC_TAB, KC_SPC, _______,
+ TG(1), SC_PSTE, SC_REDO, SC_UNDO,
+ KC_HOME, KC_UP, KC_PGUP, KC_LALT,
+ KC_LEFT, M_COPY, KC_RGHT, KC_LCTL,
+ KC_END, KC_DOWN, KC_PGDN, XXXXXXX,
KC_BSPC, KC_PENT, KC_DEL, M_SHFCT ),
-[LAYER_FUNCTION] = LAYOUT( \
- BL_TOGG, BL_INC, BL_DEC, _______, \
- TG(1), _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, XXXXXXX, \
+[LAYER_FUNCTION] = LAYOUT(
+ BL_TOGG, BL_INC, BL_DEC, _______,
+ TG(1), _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, XXXXXXX,
RESET, _______, _______, _______ ),
};
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c b/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
index 1692976357..8bb833b21d 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
@@ -27,28 +27,28 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[LAYER_BASE] = LAYOUT_pad21( \
- KC_ESC, KC_TAB, KC_BSLS, MO(2), \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
+[LAYER_BASE] = LAYOUT_pad21(
+ KC_ESC, KC_TAB, KC_BSLS, MO(2),
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT ),
-[LAYER_EDIT] = LAYOUT_pad21( \
- KC_ESC, KC_TAB, KC_SPC, _______, \
- TG(1), SC_PSTE, SC_REDO, SC_UNDO, \
- KC_HOME, KC_UP, KC_PGUP, \
- KC_LEFT, M_COPY, KC_RGHT, M_CTALT, \
- KC_END, KC_DOWN, KC_PGDN, \
+[LAYER_EDIT] = LAYOUT_pad21(
+ KC_ESC, KC_TAB, KC_SPC, _______,
+ TG(1), SC_PSTE, SC_REDO, SC_UNDO,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, M_COPY, KC_RGHT, M_CTALT,
+ KC_END, KC_DOWN, KC_PGDN,
KC_BSPC, KC_DEL, M_SHFCT),
-[LAYER_FUNCTION] = LAYOUT_pad21( \
- BL_TOGG, BL_INC, BL_DEC, _______, \
- TG(1), _______, _______, _______, \
- _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, \
+[LAYER_FUNCTION] = LAYOUT_pad21(
+ BL_TOGG, BL_INC, BL_DEC, _______,
+ TG(1), _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
RESET, _______, _______ ),
};
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk
index 8cc765c7a5..6fae940a50 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_21/rules.mk
@@ -3,7 +3,7 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
@@ -11,7 +11,4 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c b/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
index dd729c59a1..caee60d6ae 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
@@ -27,28 +27,28 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[LAYER_BASE] = LAYOUT( \
- KC_ESC, KC_TAB, KC_BSLS, MO(2), \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PEQL, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, XXXXXXX, \
+[LAYER_BASE] = LAYOUT(
+ KC_ESC, KC_TAB, KC_BSLS, MO(2),
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PEQL,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, XXXXXXX,
KC_P0, KC_PCMM, KC_PDOT, KC_PENT ),
-[LAYER_EDIT] = LAYOUT( \
- KC_ESC, KC_TAB, KC_SPC, _______, \
- TG(1), SC_PSTE, SC_REDO, SC_UNDO, \
- KC_HOME, KC_UP, KC_PGUP, KC_LALT, \
- KC_LEFT, M_COPY, KC_RGHT, KC_LCTL, \
- KC_END, KC_DOWN, KC_PGDN, XXXXXXX, \
+[LAYER_EDIT] = LAYOUT(
+ KC_ESC, KC_TAB, KC_SPC, _______,
+ TG(1), SC_PSTE, SC_REDO, SC_UNDO,
+ KC_HOME, KC_UP, KC_PGUP, KC_LALT,
+ KC_LEFT, M_COPY, KC_RGHT, KC_LCTL,
+ KC_END, KC_DOWN, KC_PGDN, XXXXXXX,
KC_BSPC, KC_PENT, KC_DEL, M_SHFCT ),
-[LAYER_FUNCTION] = LAYOUT( \
- BL_TOGG, BL_INC, BL_DEC, _______, \
- TG(1), _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, XXXXXXX, \
+[LAYER_FUNCTION] = LAYOUT(
+ BL_TOGG, BL_INC, BL_DEC, _______,
+ TG(1), _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, XXXXXXX,
RESET, _______, _______, _______ ),
};
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk b/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk
index c849339dee..1cf01b79e4 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_24/rules.mk
@@ -3,7 +3,7 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
@@ -11,7 +11,4 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file
diff --git a/keyboards/handwired/arrow_pad/rules.mk b/keyboards/handwired/arrow_pad/rules.mk
index 09b448f271..a58b7669ff 100644
--- a/keyboards/handwired/arrow_pad/rules.mk
+++ b/keyboards/handwired/arrow_pad/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
index 0122455167..49a53cfe21 100644
--- a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
@@ -38,6 +38,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
),
+/* Colemak-DHm
+ * ,-----------------------------------------| |-----------------------------------------.
+ * | Esc | Q | W | F | P | B | | J | L | U | Y | ;: | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | A | R | S | T | G | | M | N | E | I | O | Enter|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shft | Z | X | C | D | V | | K | H | ,< | .> | /? | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+ * `-------------------------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT(
+ LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
+ MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) ,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
+ MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
+),
+
/* Function
* ,------------------------------------------ |-----------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
@@ -93,20 +111,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust (Lower + Raise)
- * ,------------------------------------------ |-----------------------------------------.
- * | ???? | Reset|Qwerty| | | REC1 | | REC2 | | | | | Del |
- * |------+------+------+------+------+------- |------+------+------+------+------+------|
- * | CAPS | | | | | PLAY1| | PLAY2| Mute | Vol+ | Play | | |
- * |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | PC/MC| | | | | STOP | | STOP | Prev | Vol- | Next | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | | | |
- * `-------------------------------------------------------------------------------------------------'
+ * ,------------------------------------------ |------------------------------------------.
+ * | ???? | Reset|Qwerty| | | REC1 | | REC2 | | | | | Del |
+ * |------+------+------+------+------+------- |------+------+------+------+------+-------|
+ * | CAPS | | | | | PLAY1| | PLAY2| Mute | Vol+ | Play | |Qwerty |
+ * |------+------+------+------+------+------| |------+------+------+------+------+-------|
+ * | PC/MC| | | | | STOP | | STOP | Prev | Vol- | Next | |Colemak|
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+-------|
+ * | | | | | | | | | | | | | | |
+ * `--------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
M_CUSTOM, RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
- KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
- TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY ,
+ TG(_MAC), _______, _______, _______, _______, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md b/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md
index 640bcc46f6..6ba052065d 100644
--- a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md
+++ b/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md
@@ -22,6 +22,16 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | | | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:| :---:| :---:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | | | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | | | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | | | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Ctrl | Alt | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +83,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | | | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1| | |PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1| | |STOP2 | Prev | Vol- | Next | | |
-| | | | | | | Ctrl | Alt | | | DYN | | | |
+| | | | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | | | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1| | |PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1| | |STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | Ctrl | Alt | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/keyboards/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
index 97b90a6db6..7b18dd5789 100644
--- a/keyboards/handwired/atreus50/keymaps/default/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c
@@ -82,11 +82,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | | | |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- _______, RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT(
+ _______, RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/atreus50/rules.mk b/keyboards/handwired/atreus50/rules.mk
index de0d28fc02..4b2ea2d581 100644
--- a/keyboards/handwired/atreus50/rules.mk
+++ b/keyboards/handwired/atreus50/rules.mk
@@ -5,18 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/axon/rules.mk b/keyboards/handwired/axon/rules.mk
index 2057d9c939..d1dde8af62 100644
--- a/keyboards/handwired/axon/rules.mk
+++ b/keyboards/handwired/axon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/baredev/rev1/config.h b/keyboards/handwired/baredev/rev1/config.h
new file mode 100644
index 0000000000..f3d36fd08b
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 Fernando "ManoShu" Rodrigues
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
diff --git a/keyboards/handwired/baredev/rev1/info.json b/keyboards/handwired/baredev/rev1/info.json
new file mode 100644
index 0000000000..601b5df128
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/info.json
@@ -0,0 +1,706 @@
+{
+ "manufacturer": "Fernando \"ManoShu\" Rodrigues",
+ "keyboard_name": "BareDev (rev1)",
+ "url": "https://github.com/ManoShu/BareDev",
+ "maintainer": "ManoShu",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "tapping": {
+ "term": 175
+ },
+ "matrix_pins": {
+ "unused": [
+ "F1",
+ "F4",
+ "F5",
+ "F6",
+ "F7"
+ ],
+ "cols": [
+ "B6",
+ "B7",
+ "C6",
+ "C7",
+ "D0",
+ "D1",
+ "D2",
+ "D3",
+ "D4",
+ "D5",
+ "D6",
+ "D7",
+ "E6",
+ "F0"
+ ],
+ "rows": [
+ "B0",
+ "B1",
+ "B2",
+ "B3",
+ "B4",
+ "B5"
+ ]
+ },
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x4126",
+ "device_ver": "0x0001",
+ "polling_interval": 1,
+ "shared_endpoint": {
+ "keyboard": true
+ }
+ },
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "features": {
+ "audio": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "midi": false,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": false,
+ "unicode": false,
+ "bluetooth": false,
+ "backlight": false,
+ "sleep_led": false
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_abnt2"
+ },
+ "layouts": {
+ "LAYOUT_abnt2": {
+ "layout": [
+ {
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 0,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 2,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 3,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 4
+ ],
+ "x": 4,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 5
+ ],
+ "x": 5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 6.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 7
+ ],
+ "x": 7.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 8
+ ],
+ "x": 8.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 9
+ ],
+ "x": 9.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 10
+ ],
+ "x": 11,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 11
+ ],
+ "x": 12,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 12
+ ],
+ "x": 13,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 13
+ ],
+ "x": 14,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 1,
+ 0
+ ],
+ "x": 0,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 1
+ ],
+ "x": 1,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 2,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 3,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 4
+ ],
+ "x": 4,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 5
+ ],
+ "x": 5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 6
+ ],
+ "x": 6,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 7
+ ],
+ "x": 7,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 8
+ ],
+ "x": 8,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 9
+ ],
+ "x": 9,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 10
+ ],
+ "x": 10,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 11
+ ],
+ "x": 11,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 12
+ ],
+ "x": 12,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 13
+ ],
+ "x": 13,
+ "y": 1.25,
+ "w": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 0,
+ "y": 2.25,
+ "w": 1.5
+ },
+ {
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 1.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 2.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 3.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 4.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 5.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 6
+ ],
+ "x": 6.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 7
+ ],
+ "x": 7.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 8
+ ],
+ "x": 8.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 9
+ ],
+ "x": 9.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 10
+ ],
+ "x": 10.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 11
+ ],
+ "x": 11.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 12
+ ],
+ "x": 12.5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 13
+ ],
+ "x": 13.75,
+ "y": 2.25,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 0,
+ "y": 3.25,
+ "w": 1.75
+ },
+ {
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 1.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 2.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 3.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 4.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 5
+ ],
+ "x": 5.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 6
+ ],
+ "x": 6.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 7
+ ],
+ "x": 7.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 8
+ ],
+ "x": 8.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 9
+ ],
+ "x": 9.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 10
+ ],
+ "x": 10.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 11
+ ],
+ "x": 11.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 3,
+ 12
+ ],
+ "x": 12.75,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 0,
+ "y": 4.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 1.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 2.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 3.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 4.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 5.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 6.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 7
+ ],
+ "x": 7.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 8
+ ],
+ "x": 8.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 9
+ ],
+ "x": 9.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 10
+ ],
+ "x": 10.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 11
+ ],
+ "x": 11.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 12
+ ],
+ "x": 12.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 4,
+ 13
+ ],
+ "x": 13.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 5,
+ 0
+ ],
+ "x": 0,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 1.25,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 2.5,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 3.75,
+ "y": 5.25,
+ "w": 6.25
+ },
+ {
+ "matrix": [
+ 5,
+ 9
+ ],
+ "x": 10,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 10
+ ],
+ "x": 11.25,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 5,
+ 11
+ ],
+ "x": 12.25,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 5,
+ 12
+ ],
+ "x": 13.25,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 5,
+ 13
+ ],
+ "x": 14.25,
+ "y": 5.25
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/default/keymap.c b/keyboards/handwired/baredev/rev1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6efed6ac1a
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2021 Fernando "ManoShu" Rodrigues
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include "keymap_br_abnt2.h"
+
+enum {
+ LAYER_BASE,
+ LAYER_FUNCTIONS
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ BR_QUOT, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7, BR_8, BR_9, BR_0, BR_MINS, BR_EQL, KC_BSPC,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ KC_TAB, BR_Q, BR_W, BR_E, BR_R, BR_T, BR_Y, BR_U, BR_I, BR_O, BR_P, BR_ACUT, BR_LBRC, KC_ENT,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ KC_CAPS, BR_A, BR_S, BR_D, BR_F, BR_G, BR_H, BR_J, BR_K, BR_L, BR_CCED, BR_TILD, BR_RBRC,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ KC_LSFT, BR_BSLS, BR_Z, BR_X, BR_C, BR_V, BR_B, BR_N, BR_M, BR_COMM, BR_DOT, BR_SCLN, BR_SLSH, KC_UP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ KC_LCTL, KC_LGUI, KC_LALT, LT(LAYER_FUNCTIONS,KC_SPC), KC_APP, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ ),
+ [LAYER_FUNCTIONS] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ _______, KC_MPLY, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ _______, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ _______, _______, KC_VOLU, KC_VOLD, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGDN, KC_END
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ )
+}; \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/default/readme.md b/keyboards/handwired/baredev/rev1/keymaps/default/readme.md
new file mode 100644
index 0000000000..6e8c07ad83
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+![BareDev Layout Image](https://i.imgur.com/uP8Jzvi.png)
+
+# Default BareDev layout
+
+Has all the functions of a ABNT TKL keyboard, sans right shift.
+
+Basic media functions also included. \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c b/keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c
new file mode 100644
index 0000000000..4bbf4c2cbc
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c
@@ -0,0 +1,99 @@
+/* Copyright 2021 Fernando "ManoShu" Rodrigues
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include "keymap_br_abnt2.h"
+#include "sendstring_br_abnt2.h"
+
+enum {
+ LAYER_BASE,
+ LAYER_FUNCTIONS
+};
+
+#define L_FUNCT MO(LAYER_FUNCTIONS)
+#define W_CHOLD LGUI_T(KC_CAPS)
+
+//Combination keycodes
+#define KC_PSBR C(KC_PAUSE) // Ctrl+Pause/Break
+#define KC_SNIP SGUI(BR_S) // Screen Snip (GUI + Shift + S)
+#define KC_WRUN G(BR_R) // Run (GUI + R)
+#define KC_WLCK G(BR_L) // Lock (GUI + L)
+#define KC_WDSK G(BR_D) // Desktop (GUI + D)
+#define KC_WEXP G(BR_E) // Explorer (GUI + E)
+#define KC_WPSE G(KC_PAUSE) // System Properties (GUI + Pause)
+#define KC_WMGP G(BR_EQL) // Magnify (+)
+#define KC_WMGM G(BR_MINS) // Magnify (-)
+
+enum custom_keycodes {
+ KC_WPRN = SAFE_RANGE, // Project (P)
+ KC_WSPC // Input Select (Space)
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (get_highest_layer(state) == LAYER_BASE) {
+ unregister_mods(MOD_MASK_GUI);
+ }
+ return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if(keycode == KC_WPRN || keycode == KC_WSPC) {
+ if (record->event.pressed) {
+
+ register_code(KC_LGUI);
+
+ if(keycode == KC_WPRN) {
+ tap_code(KC_P);
+ } else if (keycode == KC_WSPC) {
+ tap_code(KC_SPACE);
+ }
+ }
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ BR_QUOT, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7, BR_8, BR_9, BR_0, BR_MINS, BR_EQL, KC_BSPC,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ KC_TAB, BR_Q, BR_W, BR_E, BR_R, BR_T, BR_Y, BR_U, BR_I, BR_O, BR_P, BR_ACUT, BR_LBRC, KC_ENT,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ W_CHOLD, BR_A, BR_S, BR_D, BR_F, BR_G, BR_H, BR_J, BR_K, BR_L, BR_CCED, BR_TILD, BR_RBRC,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ KC_LSFT, BR_BSLS, BR_Z, BR_X, BR_C, BR_V, BR_B, BR_N, BR_M, BR_COMM, BR_DOT, BR_SCLN, BR_SLSH, KC_UP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ KC_LCTL, L_FUNCT, KC_LALT, KC_SPC, KC_APP, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ ),
+ [LAYER_FUNCTIONS] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSBR, KC_SNIP,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WMGM, KC_WMGP, _______,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ _______, KC_MPLY, KC_MUTE, KC_WEXP, KC_WRUN, _______, _______, _______, _______, _______, KC_WPRN, _______, _______, _______,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ _______, KC_MPRV, KC_MNXT, KC_WDSK, _______, _______, _______, _______, _______, KC_WLCK, _______, _______, _______,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ _______, _______, KC_VOLU, KC_VOLD, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ _______, _______, _______, KC_WSPC, _______, KC_INS, KC_HOME, KC_PGDN, KC_END
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ )
+}; \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/manoshu/readme.md b/keyboards/handwired/baredev/rev1/keymaps/manoshu/readme.md
new file mode 100644
index 0000000000..1852a0fbc2
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/manoshu/readme.md
@@ -0,0 +1,16 @@
+![BareDev Layout Image](https://i.imgur.com/FXye4Hn.png)
+
+# ManoShu's custom layout
+
+Has all the functions of a ABNT TKL keyboard, sans right shift.
+
+Basic media functions also included.
+
+Trying to emulate where notebooks/smaller OEM keyboard put the function key, for this reason the GUI key was moved and it can be used by holding the Caps Lock key.
+
+To not use the new GUI position very often, commonly used GUI + [X] commands are sent using `SEND_STRING()`, `(un)register_code()` and `tap_code()`.
+
+## Why you didn't used `LT(FUNCTIONS, KC_LGUI)` on the GUI/FN key?
+Because I don't want rely on the tapping term to determine I will send either KC_HOME or snap the active window to the left.
+
+If there is a better way to solve this, please let me know. \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/via/keymap.c b/keyboards/handwired/baredev/rev1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a7b127f089
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/via/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2021 Fernando "ManoShu" Rodrigues
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include "keymap_br_abnt2.h"
+
+enum {
+ LAYER_BASE,
+ LAYER_FUNCTIONS,
+ BLANK_LAYER1,
+ BLANK_LAYER2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ BR_QUOT, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7, BR_8, BR_9, BR_0, BR_MINS, BR_EQL, KC_BSPC,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ KC_TAB, BR_Q, BR_W, BR_E, BR_R, BR_T, BR_Y, BR_U, BR_I, BR_O, BR_P, BR_ACUT, BR_LBRC, KC_ENT,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ KC_CAPS, BR_A, BR_S, BR_D, BR_F, BR_G, BR_H, BR_J, BR_K, BR_L, BR_CCED, BR_TILD, BR_RBRC,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ KC_LSFT, BR_BSLS, BR_Z, BR_X, BR_C, BR_V, BR_B, BR_N, BR_M, BR_COMM, BR_DOT, BR_SCLN, BR_SLSH, KC_UP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ KC_LCTL, KC_LGUI, KC_LALT, LT(LAYER_FUNCTIONS, KC_SPC), KC_APP, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ ),
+ [LAYER_FUNCTIONS] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ _______, KC_MPLY, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ _______, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ _______, _______, KC_VOLU, KC_VOLD, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGDN, KC_END
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ ),
+ [BLANK_LAYER1] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ ),
+ [BLANK_LAYER2] = LAYOUT(
+ /* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ /* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ /* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
+ )
+}; \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/keymaps/via/rules.mk b/keyboards/handwired/baredev/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..084cd1bd08
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+LEADER_ENABLE = no
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/readme.md b/keyboards/handwired/baredev/rev1/readme.md
new file mode 100644
index 0000000000..3f852f2bc6
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/readme.md
@@ -0,0 +1,29 @@
+# BareDev (rev1)
+
+![PCB](https://i.imgur.com/byquO5u.png)
+![Prototype Build](https://i.imgur.com/fkizunN.png)
+
+An open-source, ABNT2-based 70% keyboard, focusing in a smaller footprint while retaining all the functions found on a TKL (Del and arrow keys doubling as the navigational cluster)
+
+* Keyboard Maintainer: [Fernando "ManoShu" Rodrigues](https://github.com/ManoShu)
+* Hardware Supported: BareDev rev1 PCB
+* Hardware Availability: Files available on [GitHub](https://github.com/ManoShu/BareDev)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/baredev/rev1:default
+
+Flashing example for this keyboard:
+
+ make handwired/baredev/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file
diff --git a/keyboards/handwired/baredev/rev1/rev1.c b/keyboards/handwired/baredev/rev1/rev1.c
new file mode 100644
index 0000000000..809138c9b2
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Fernando "ManoShu" Rodrigues
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev1.h"
diff --git a/keyboards/handwired/baredev/rev1/rev1.h b/keyboards/handwired/baredev/rev1/rev1.h
new file mode 100644
index 0000000000..62a4829060
--- /dev/null
+++ b/keyboards/handwired/baredev/rev1/rev1.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Fernando "ManoShu" Rodrigues
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h" \ No newline at end of file
diff --git a/keyboards/helix/rev1/.noci b/keyboards/handwired/baredev/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/helix/rev1/.noci
+++ b/keyboards/handwired/baredev/rev1/rules.mk
diff --git a/keyboards/handwired/battleship_gamepad/rules.mk b/keyboards/handwired/battleship_gamepad/rules.mk
index df6e244b7d..a7a44c3988 100644
--- a/keyboards/handwired/battleship_gamepad/rules.mk
+++ b/keyboards/handwired/battleship_gamepad/rules.mk
@@ -14,10 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/bdn9_ble/rules.mk b/keyboards/handwired/bdn9_ble/rules.mk
index 79dba772f3..e5abbcfb88 100644
--- a/keyboards/handwired/bdn9_ble/rules.mk
+++ b/keyboards/handwired/bdn9_ble/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/bento/rev1/rules.mk b/keyboards/handwired/bento/rev1/rules.mk
index 636812417c..83fe2fb087 100644
--- a/keyboards/handwired/bento/rev1/rules.mk
+++ b/keyboards/handwired/bento/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/bigmac/rules.mk b/keyboards/handwired/bigmac/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/handwired/bigmac/rules.mk
+++ b/keyboards/handwired/bigmac/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/bolek/rules.mk b/keyboards/handwired/bolek/rules.mk
index c1149216c2..515ca5621f 100644
--- a/keyboards/handwired/bolek/rules.mk
+++ b/keyboards/handwired/bolek/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/boss566y/redragon_vara/rules.mk b/keyboards/handwired/boss566y/redragon_vara/rules.mk
index 9f4b29f22e..15eff609b7 100644
--- a/keyboards/handwired/boss566y/redragon_vara/rules.mk
+++ b/keyboards/handwired/boss566y/redragon_vara/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/brain/rules.mk b/keyboards/handwired/brain/rules.mk
index a24edf27f8..d42aa82706 100644
--- a/keyboards/handwired/brain/rules.mk
+++ b/keyboards/handwired/brain/rules.mk
@@ -12,9 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE.it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/bstk100/bstk100.c b/keyboards/handwired/bstk100/bstk100.c
new file mode 100644
index 0000000000..004b97004b
--- /dev/null
+++ b/keyboards/handwired/bstk100/bstk100.c
@@ -0,0 +1,18 @@
+/* Copyright 2021 FREE WING,Y.Sakamoto
+ * http://www.neko.ne.jp/~freewing/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bstk100.h"
diff --git a/keyboards/handwired/bstk100/bstk100.h b/keyboards/handwired/bstk100/bstk100.h
new file mode 100644
index 0000000000..42a6da437f
--- /dev/null
+++ b/keyboards/handwired/bstk100/bstk100.h
@@ -0,0 +1,43 @@
+/* Copyright 2021 FREE WING,Y.Sakamoto
+ * http://www.neko.ne.jp/~freewing/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, \
+ k34, k03, k02, k13, \
+ k10, k11, k12, k01, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k43 \
+) { \
+ { k00, k01, k02, k03, KC_NO }, \
+ { k10, k11, k12, k13, KC_NO }, \
+ { k20, k21, k22, k23, KC_NO }, \
+ { k30, k31, k32, k33, k34 }, \
+ { k40, k41, KC_NO, k43, KC_NO } \
+}
diff --git a/keyboards/handwired/bstk100/config.h b/keyboards/handwired/bstk100/config.h
new file mode 100644
index 0000000000..6769f9b5c0
--- /dev/null
+++ b/keyboards/handwired/bstk100/config.h
@@ -0,0 +1,156 @@
+/*
+Copyright 2021 FREE WING,Y.Sakamoto
+http://www.neko.ne.jp/~freewing/
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0xB100
+#define DEVICE_VER 0x0001
+#define MANUFACTURER FREE WING
+#define PRODUCT bstk100
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 5
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
+#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+// The state of the indicator pins when the LED is "on" - 1 for high
+#define LED_PIN_ON_STATE 0
+
+#define LED_NUM_LOCK_PIN D4
+#define LED_CAPS_LOCK_PIN D5
+#define LED_SCROLL_LOCK_PIN B0
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/bstk100/info.json b/keyboards/handwired/bstk100/info.json
new file mode 100644
index 0000000000..aec01fccc9
--- /dev/null
+++ b/keyboards/handwired/bstk100/info.json
@@ -0,0 +1,36 @@
+{
+ "keyboard_name": "bstk100",
+ "url": "http://www.neko.ne.jp/~freewing/",
+ "maintainer": "FREE WING",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k00", "x": 0, "y": 0},
+
+ {"label": "k34", "x": 0, "y": 1},
+ {"label": "k03", "x": 1, "y": 1},
+ {"label": "k02", "x": 2, "y": 1},
+ {"label": "k13", "x": 3, "y": 1},
+
+ {"label": "k10", "x": 0, "y": 2},
+ {"label": "k11", "x": 1, "y": 2},
+ {"label": "k12", "x": 2, "y": 2},
+ {"label": "k01", "x": 3, "y": 2},
+
+ {"label": "k20", "x": 0, "y": 3},
+ {"label": "k21", "x": 1, "y": 3},
+ {"label": "k22", "x": 2, "y": 3},
+ {"label": "k23", "x": 3, "y": 3},
+
+ {"label": "k30", "x": 0, "y": 4},
+ {"label": "k31", "x": 1, "y": 4},
+ {"label": "k32", "x": 2, "y": 4},
+ {"label": "k33", "x": 3, "y": 4, "h": 2},
+
+ {"label": "k40", "x": 0, "y": 5},
+ {"label": "k41", "x": 1, "y": 5},
+ {"label": "k43", "x": 2, "y": 5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/bstk100/keymaps/default/keymap.c b/keyboards/handwired/bstk100/keymaps/default/keymap.c
new file mode 100644
index 0000000000..474921eeab
--- /dev/null
+++ b/keyboards/handwired/bstk100/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 FREE WING,Y.Sakamoto
+ * http://www.neko.ne.jp/~freewing/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMK00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_NLCK,
+ KC_TAB, KC_PSLS, KC_PAST, KC_BSPC,
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, QMK00, KC_PDOT
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMK00:
+ if (record->event.pressed) {
+ // when keycode QMK00 is pressed
+ SEND_STRING(SS_TAP(X_KP_0) SS_TAP(X_KP_0));
+ } else {
+ // when keycode QMK00 is released
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/handwired/bstk100/keymaps/default/readme.md b/keyboards/handwired/bstk100/keymaps/default/readme.md
new file mode 100644
index 0000000000..15f86c185e
--- /dev/null
+++ b/keyboards/handwired/bstk100/keymaps/default/readme.md
@@ -0,0 +1,26 @@
+# The default keymap for bstk100
+
+```
+ (LED)
+ +----+
+ +NumL+
+ +----+
+
++----+----+----+----+
+|Tab | / | * |Back|
+| | | | Spc|
++----+----+----+----+
+|7 |8 |9 |- |
+|Home|Up |PgUp| |
++----+----+----+----+
+|4 |5 |6 |+ |
+|Left| |Righ| |
++----+----+----+----+
+|1 |2 |3 | |
+| End|Down|PgDn|Ent |
++----+----+----| |
+|0 |00 |. | |
+| Ins| | Del| |
++----+----+----+----+
+```
+
diff --git a/keyboards/handwired/bstk100/keymaps/via/keymap.c b/keyboards/handwired/bstk100/keymaps/via/keymap.c
new file mode 100644
index 0000000000..474921eeab
--- /dev/null
+++ b/keyboards/handwired/bstk100/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 FREE WING,Y.Sakamoto
+ * http://www.neko.ne.jp/~freewing/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ QMK00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_NLCK,
+ KC_TAB, KC_PSLS, KC_PAST, KC_BSPC,
+ KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, QMK00, KC_PDOT
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QMK00:
+ if (record->event.pressed) {
+ // when keycode QMK00 is pressed
+ SEND_STRING(SS_TAP(X_KP_0) SS_TAP(X_KP_0));
+ } else {
+ // when keycode QMK00 is released
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/handwired/bstk100/keymaps/via/readme.md b/keyboards/handwired/bstk100/keymaps/via/readme.md
new file mode 100644
index 0000000000..15f86c185e
--- /dev/null
+++ b/keyboards/handwired/bstk100/keymaps/via/readme.md
@@ -0,0 +1,26 @@
+# The default keymap for bstk100
+
+```
+ (LED)
+ +----+
+ +NumL+
+ +----+
+
++----+----+----+----+
+|Tab | / | * |Back|
+| | | | Spc|
++----+----+----+----+
+|7 |8 |9 |- |
+|Home|Up |PgUp| |
++----+----+----+----+
+|4 |5 |6 |+ |
+|Left| |Righ| |
++----+----+----+----+
+|1 |2 |3 | |
+| End|Down|PgDn|Ent |
++----+----+----| |
+|0 |00 |. | |
+| Ins| | Del| |
++----+----+----+----+
+```
+
diff --git a/keyboards/handwired/bstk100/keymaps/via/rules.mk b/keyboards/handwired/bstk100/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/handwired/bstk100/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/handwired/bstk100/readme.md b/keyboards/handwired/bstk100/readme.md
new file mode 100644
index 0000000000..7247150c48
--- /dev/null
+++ b/keyboards/handwired/bstk100/readme.md
@@ -0,0 +1,35 @@
+# bstk100
+
+BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware .
+see [[FREE WING HOME PAGE]](http://www.neko.ne.jp/~freewing/) for more detail .
+
+![bstk100](https://i.imgur.com/9s5kxSB.jpeg)
+![bstk100](https://i.imgur.com/rsilkiy.jpeg)
+![bstk100](https://i.imgur.com/TuQlxat.jpeg)
+![bstk100](https://i.imgur.com/w0g6Qlz.jpeg)
+![bstk100](https://i.imgur.com/ORgbBQh.jpeg)
+![bstk100](https://i.imgur.com/1MDm3zt.png)
+
+* Keyboard Maintainer: [FREE WING GitHub](https://github.com/FREEWING-JP/qmk_firmware)
+* Hardware Supported: Pro Micro ATmega32U4 5V/16MHz
+* Hardware Availability: [BUFFALO USB 10-Key keyboard BSTK100BK](https://amzn.to/389GGtP), [Pro Micro ATmega32U4 5V/16MHz](https://amzn.to/3jePZPi)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/bstk100:default
+
+Enable VIA feature in QMK
+
+ make handwired/bstk100:via
+
+Flashing example for this keyboard:
+
+ make handwired/bstk100:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in one way:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
diff --git a/keyboards/handwired/bstk100/rules.mk b/keyboards/handwired/bstk100/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/handwired/bstk100/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/cans12er/rules.mk b/keyboards/handwired/cans12er/rules.mk
index 32a2c4e5df..476cf49f27 100644
--- a/keyboards/handwired/cans12er/rules.mk
+++ b/keyboards/handwired/cans12er/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/carpolly/carpolly.c b/keyboards/handwired/carpolly/carpolly.c
new file mode 100644
index 0000000000..119dfa962b
--- /dev/null
+++ b/keyboards/handwired/carpolly/carpolly.c
@@ -0,0 +1,20 @@
+/* Copyright 2021 Paul Enrico N. Viola
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "carpolly.h"
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/carpolly/carpolly.h b/keyboards/handwired/carpolly/carpolly.h
new file mode 100644
index 0000000000..ddcf98fcdb
--- /dev/null
+++ b/keyboards/handwired/carpolly/carpolly.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Paul Enrico N. Viola
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1C, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K36, K3A, K3B, K3C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, XXX }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, XXX, K1C }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
+ { K30, K31, K32, XXX, XXX, XXX, K36, XXX, XXX, XXX, K3A, K3B, K3C }, \
+}
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/carpolly/config.h b/keyboards/handwired/carpolly/config.h
new file mode 100644
index 0000000000..e0890cf7ac
--- /dev/null
+++ b/keyboards/handwired/carpolly/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Paul Enrico N. Viola
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6532
+#define PRODUCT_ID 0x0017
+#define DEVICE_VER 0x0001
+#define MANUFACTURER paul
+#define PRODUCT Carpolly
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 13
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, B6, B5, B4, D7, D6, D4, D5, C7 }
+
+#define DIODE_DIRECTION COL2ROW
+
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/carpolly/info.json b/keyboards/handwired/carpolly/info.json
new file mode 100644
index 0000000000..7a7395e914
--- /dev/null
+++ b/keyboards/handwired/carpolly/info.json
@@ -0,0 +1,55 @@
+{
+ "keyboard_name": "Carpolly",
+ "url": "https://github.com/PollyV1",
+ "maintainer": "Paul Enrico N. Viola",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00 (B0,F0)", "x": 0, "y": 0 },
+ { "label": "K01 (B0,F1)", "x": 1, "y": 0 },
+ { "label": "K02 (B0,F4)", "x": 2, "y": 0 },
+ { "label": "K03 (B0,F5)", "x": 3, "y": 0 },
+ { "label": "K04 (B0,F6)", "x": 4, "y": 0 },
+ { "label": "K05 (B0,B6)", "x": 5, "y": 0 },
+ { "label": "K06 (B0,B5)", "x": 6, "y": 0 },
+ { "label": "K07 (B0,B4)", "x": 7, "y": 0 },
+ { "label": "K08 (B0,D7)", "x": 8, "y": 0 },
+ { "label": "K09 (B0,D6)", "x": 9, "y": 0 },
+ { "label": "K0A (B0,D4)", "x": 10, "y": 0 },
+ { "label": "K0B (B0,D5)", "x": 11, "y": 0, "w": 1.75 },
+ { "label": "K10 (B1,F0)", "x": 0, "y": 1, "w": 1.25 },
+ { "label": "K11 (B1,F1)", "x": 1.25, "y": 1 },
+ { "label": "K12 (B1,F4)", "x": 2.25, "y": 1 },
+ { "label": "K13 (B1,F5)", "x": 3.25, "y": 1 },
+ { "label": "K14 (B1,F6)", "x": 4.25, "y": 1 },
+ { "label": "K15 (B1,B6)", "x": 5.25, "y": 1 },
+ { "label": "K16 (B1,B5)", "x": 6.25, "y": 1 },
+ { "label": "K17 (B1,B4)", "x": 7.25, "y": 1 },
+ { "label": "K18 (B1,D7)", "x": 8.25, "y": 1 },
+ { "label": "K19 (B1,D6)", "x": 9.25, "y": 1 },
+ { "label": "K1A (B1,D4)", "x": 10.25, "y": 1 },
+ { "label": "K1C (B1,C7)", "x": 11.25, "y": 1, "w": 1.5 },
+ { "label": "K20 (B2,F0)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K22 (B2,F4)", "x": 1.75, "y": 2 },
+ { "label": "K23 (B2,F5)", "x": 2.75, "y": 2 },
+ { "label": "K24 (B2,F6)", "x": 3.75, "y": 2 },
+ { "label": "K25 (B2,B6)", "x": 4.75, "y": 2 },
+ { "label": "K26 (B2,B5)", "x": 5.75, "y": 2 },
+ { "label": "K27 (B2,B4)", "x": 6.75, "y": 2 },
+ { "label": "K28 (B2,D7)", "x": 7.75, "y": 2 },
+ { "label": "K29 (B2,D6)", "x": 8.75, "y": 2 },
+ { "label": "K2A (B2,D4)", "x": 9.75, "y": 2 },
+ { "label": "K2B (B2,D5)", "x": 10.75, "y": 2 },
+ { "label": "K2C (B2,C7)", "x": 11.75, "y": 2 },
+ { "label": "K30 (B3,F0)", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "K31 (B3,F1)", "x": 1.25, "y": 3 },
+ { "label": "K32 (B3,F4)", "x": 2.25, "y": 3, "w": 1.25 },
+ { "label": "K36 (B3,B5)", "x": 3.5, "y": 3, "w": 6.25 },
+ { "label": "K3A (B3,D4)", "x": 9.75, "y": 3 },
+ { "label": "K3B (B3,D5)", "x": 10.75, "y": 3 },
+ { "label": "K3C (B3,C7)", "x": 11.75, "y": 3 }
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/handwired/carpolly/keymaps/default/keymap.c b/keyboards/handwired/carpolly/keymaps/default/keymap.c
new file mode 100644
index 0000000000..78eb95a77f
--- /dev/null
+++ b/keyboards/handwired/carpolly/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 Paul Enrico N. Vola
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define LT3_TAB LT(3, KC_TAB)
+#define LT2_LAL LT(2, KC_LALT)
+#define LT1_TAB LT(1, KC_LGUI)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT3_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_SLSH, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, LT2_LAL, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
+ KC_LSFT, KC_MPLY, KC_VOLD, KC_VOLU, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_HOME, KC_PGDN, KC_PGUP
+ ),
+
+ [2] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, _______,
+ _______, _______, _______, _______, _______, KC_DEL, KC_INS
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/handwired/carpolly/readme.md b/keyboards/handwired/carpolly/readme.md
new file mode 100644
index 0000000000..e79bd543e6
--- /dev/null
+++ b/keyboards/handwired/carpolly/readme.md
@@ -0,0 +1,30 @@
+# carpolly
+
+![carpool](https://i.imgur.com/w691sNnh.jpg)
+
+* Keyboard Maintainer: Paul Enrico N. Viola (https://github.com/PollyV1)
+* Hardware Supported: Teensy 2 controller
+* Hardware Availability: [PollyV1] https://github.com/PollyV1/Carpolly
+
+carpolly - a handwired keyboard on a teensy 2 controller
+
+## Make
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/carpolly:default
+
+## Flashing
+
+Flashing example for this keyboard:
+
+ make handwired/carpolly:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the RESET button on the controller.
+* **Keycode in layout**: Longpress ALT + ESC
diff --git a/keyboards/handwired/carpolly/rules.mk b/keyboards/handwired/carpolly/rules.mk
new file mode 100644
index 0000000000..a7f3367d86
--- /dev/null
+++ b/keyboards/handwired/carpolly/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
+
+# generated by KBFirmware JSON to QMK Parser
+# https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/chiron/rules.mk b/keyboards/handwired/chiron/rules.mk
index e1b53f1e92..5a329467ec 100644
--- a/keyboards/handwired/chiron/rules.mk
+++ b/keyboards/handwired/chiron/rules.mk
@@ -17,7 +17,7 @@ DEBUG_ENABLE = no
EXTRAKEY_ENABLE = no
LEADER_ENABLE = no
MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = no
+NKRO_ENABLE = no # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes
SLEEP_LED_ENABLE = yes
SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/ck4x4/keymaps/default/keymap.c b/keyboards/handwired/ck4x4/keymaps/default/keymap.c
index bc8b602a67..6ff0ef0636 100644
--- a/keyboards/handwired/ck4x4/keymaps/default/keymap.c
+++ b/keyboards/handwired/ck4x4/keymaps/default/keymap.c
@@ -18,9 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(KC_7, KC_8, KC_9, KC_MINUS, \
- KC_4, KC_5, KC_6, KC_PLUS, \
- KC_1, KC_2, KC_3, KC_ENTER, \
- RESET, KC_NO, KC_NO, KC_NO \
+ [0] = LAYOUT(KC_7, KC_8, KC_9, KC_MINUS,
+ KC_4, KC_5, KC_6, KC_PLUS,
+ KC_1, KC_2, KC_3, KC_ENTER,
+ RESET, KC_NO, KC_NO, KC_NO
), // test with KC_CAPS, KC_A, RESET
};
diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk
index 739473acec..b234297ed3 100644
--- a/keyboards/handwired/ck4x4/rules.mk
+++ b/keyboards/handwired/ck4x4/rules.mk
@@ -5,17 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
DEFAULT_FOLDER = handwired/ck4x4
diff --git a/keyboards/handwired/cmd60/keymaps/default/keymap.c b/keyboards/handwired/cmd60/keymaps/default/keymap.c
index 448d81dc16..aa6a74f084 100644
--- a/keyboards/handwired/cmd60/keymaps/default/keymap.c
+++ b/keyboards/handwired/cmd60/keymaps/default/keymap.c
@@ -2,45 +2,45 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* CMD60 - QWERTY */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- LT(3, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), MO(3), MO(4), MO(5), TG(1) \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ LT(3, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), MO(3), MO(4), MO(5), TG(1)
),
[1] = LAYOUT( /* CMD60 - GameMode */
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, \
- _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
+ _______, XXXXXXX, _______, KC_SPC, _______, _______, _______, _______
),
[2] = LAYOUT( /* CMD60 - Arrows */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- _______, KC_BSPC, KC_UP, KC_DEL, _______, _______, _______, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, \
- _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, KC_BSPC, KC_UP, KC_DEL, _______, _______, _______, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT( /* CMD60 - Functions */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_MUTE, KC_BSPC, KC_PGUP, KC_DEL, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, KC_PAUS, KC_SLCK, KC_PSCR, \
- _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_INS, _______, \
- _______, _______, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_MUTE, KC_BSPC, KC_PGUP, KC_DEL, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, KC_PAUS, KC_SLCK, KC_PSCR,
+ _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_INS, _______,
+ _______, _______, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
[4] = LAYOUT( /* CMD60 - Mouse */
- KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN3, KC_WH_D, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_BTN3, KC_WH_D, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
[5] = LAYOUT( /* CMD60 - Media */
- KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, KC_WREF, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, KC_WREF,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/handwired/cmd60/rules.mk b/keyboards/handwired/cmd60/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/handwired/cmd60/rules.mk
+++ b/keyboards/handwired/cmd60/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/co60/keymaps/all_keys/config.h b/keyboards/handwired/co60/keymaps/all_keys/config.h
deleted file mode 100644
index a68c5c7465..0000000000
--- a/keyboards/handwired/co60/keymaps/all_keys/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2019 John M Daly <jmdaly@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
diff --git a/keyboards/handwired/co60/keymaps/default/config.h b/keyboards/handwired/co60/keymaps/default/config.h
deleted file mode 100644
index 124091cc5a..0000000000
--- a/keyboards/handwired/co60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 John M Daly
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/co60/rev1/rules.mk b/keyboards/handwired/co60/rev1/rules.mk
index ab65c6873c..6474d8fb95 100644
--- a/keyboards/handwired/co60/rev1/rules.mk
+++ b/keyboards/handwired/co60/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
LEADER_ENABLE = yes # Turn on leader support
diff --git a/keyboards/handwired/co60/rev6/rules.mk b/keyboards/handwired/co60/rev6/rules.mk
index ff752f1bc6..117fdd5e9d 100644
--- a/keyboards/handwired/co60/rev6/rules.mk
+++ b/keyboards/handwired/co60/rev6/rules.mk
@@ -6,7 +6,7 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = yes
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
@@ -14,7 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
LEADER_ENABLE = yes
diff --git a/keyboards/handwired/co60/rev7/rules.mk b/keyboards/handwired/co60/rev7/rules.mk
index f58c4189a9..eabe78800a 100644
--- a/keyboards/handwired/co60/rev7/rules.mk
+++ b/keyboards/handwired/co60/rev7/rules.mk
@@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu
WS2812_DRIVER = spi
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = yes
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
LEADER_ENABLE = yes
diff --git a/keyboards/handwired/colorlice/rules.mk b/keyboards/handwired/colorlice/rules.mk
index 3dfdacb8a8..886ccccac9 100644
--- a/keyboards/handwired/colorlice/rules.mk
+++ b/keyboards/handwired/colorlice/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes # Use link time optimization
diff --git a/keyboards/handwired/concertina/64key/rules.mk b/keyboards/handwired/concertina/64key/rules.mk
index b5a104abfb..1152adcc95 100644
--- a/keyboards/handwired/concertina/64key/rules.mk
+++ b/keyboards/handwired/concertina/64key/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/consolekeyboard/18key/rules.mk b/keyboards/handwired/consolekeyboard/18key/rules.mk
index 448051e2af..77d7e04c72 100644
--- a/keyboards/handwired/consolekeyboard/18key/rules.mk
+++ b/keyboards/handwired/consolekeyboard/18key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/consolekeyboard/20key/rules.mk b/keyboards/handwired/consolekeyboard/20key/rules.mk
index 448051e2af..77d7e04c72 100644
--- a/keyboards/handwired/consolekeyboard/20key/rules.mk
+++ b/keyboards/handwired/consolekeyboard/20key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/consolekeyboard/27key/rules.mk b/keyboards/handwired/consolekeyboard/27key/rules.mk
index 448051e2af..77d7e04c72 100644
--- a/keyboards/handwired/consolekeyboard/27key/rules.mk
+++ b/keyboards/handwired/consolekeyboard/27key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/consolekeyboard/30key/rules.mk b/keyboards/handwired/consolekeyboard/30key/rules.mk
index 448051e2af..77d7e04c72 100644
--- a/keyboards/handwired/consolekeyboard/30key/rules.mk
+++ b/keyboards/handwired/consolekeyboard/30key/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/croxsplit44/config.h b/keyboards/handwired/croxsplit44/config.h
new file mode 100644
index 0000000000..009da2785e
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/config.h
@@ -0,0 +1,53 @@
+/*
+Copyright 2021 Samux6146
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0xB62C
+#define PRODUCT_ID 0x6146
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Samux6146
+#define PRODUCT splitcustom44
+
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+#define MATRIX_ROW_PINS { D4, D5, D6, D7 }
+#define MATRIX_COL_PINS { B6, B5, B4, D2, C0, C1, F5, F4, F3, F2, F1, F0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN C4
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 42
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_SLEEP
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#endif \ No newline at end of file
diff --git a/keyboards/handwired/croxsplit44/croxsplit44.c b/keyboards/handwired/croxsplit44/croxsplit44.c
new file mode 100644
index 0000000000..4dbc7d4cb5
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/croxsplit44.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Samux6146
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "croxsplit44.h"
diff --git a/keyboards/handwired/croxsplit44/croxsplit44.h b/keyboards/handwired/croxsplit44/croxsplit44.h
new file mode 100644
index 0000000000..c94124f9ee
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/croxsplit44.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 Samux6146
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K302, K303, K304, K305, K306, K307, K308, K309 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
+ { KC_NO, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
diff --git a/keyboards/handwired/croxsplit44/info.json b/keyboards/handwired/croxsplit44/info.json
new file mode 100644
index 0000000000..e10a390bbd
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/info.json
@@ -0,0 +1,55 @@
+{
+ "keyboard_name": "croxsplit44",
+ "url": "",
+ "maintainer": "Samux6146",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00 (D4,B6)", "x":0.5, "y":1.375},
+ {"label":"K01 (D4,B5)", "x":1.5, "y":1.375},
+ {"label":"K02 (D4,B4)", "x":2.5, "y":1.125},
+ {"label":"K03 (D4,D2)", "x":3.5, "y":1},
+ {"label":"K04 (D4,C0)", "x":4.5, "y":1.125},
+ {"label":"K05 (D4,C1)", "x":5.5, "y":1.25},
+ {"label":"K06 (D4,F5)", "x":13, "y":1.25},
+ {"label":"K07 (D4,F4)", "x":14, "y":1.125},
+ {"label":"K08 (D4,F3)", "x":15, "y":1},
+ {"label":"K09 (D4,F2)", "x":16, "y":1.125},
+ {"label":"K0A (D4,F1)", "x":17, "y":1.375},
+ {"label":"K0B (D4,F0)", "x":18, "y":1.375},
+ {"label":"K10 (D5,B6)", "x":0.5, "y":2.375},
+ {"label":"K11 (D5,B5)", "x":1.5, "y":2.375},
+ {"label":"K12 (D5,B4)", "x":2.5, "y":2.125},
+ {"label":"K13 (D5,D2)", "x":3.5, "y":2},
+ {"label":"K14 (D5,C0)", "x":4.5, "y":2.125},
+ {"label":"K15 (D5,C1)", "x":5.5, "y":2.25},
+ {"label":"K16 (D5,F5)", "x":13, "y":2.25},
+ {"label":"K17 (D5,F4)", "x":14, "y":2.125},
+ {"label":"K18 (D5,F3)", "x":15, "y":2},
+ {"label":"K19 (D5,F2)", "x":16, "y":2.125},
+ {"label":"K1A (D5,F1)", "x":17, "y":2.375},
+ {"label":"K1B (D5,F0)", "x":18, "y":2.375},
+ {"label":"K20 (D6,B6)", "x":0.5, "y":3.375},
+ {"label":"K21 (D6,B5)", "x":1.5, "y":3.375},
+ {"label":"K22 (D6,B4)", "x":2.5, "y":3.125},
+ {"label":"K23 (D6,D2)", "x":3.5, "y":3},
+ {"label":"K24 (D6,C0)", "x":4.5, "y":3.125},
+ {"label":"K25 (D6,C1)", "x":5.5, "y":3.25},
+ {"label":"K26 (D6,F5)", "x":13, "y":3.25},
+ {"label":"K27 (D6,F4)", "x":14, "y":3.125},
+ {"label":"K28 (D6,F3)", "x":15, "y":3},
+ {"label":"K29 (D6,F2)", "x":16, "y":3.125},
+ {"label":"K2A (D6,F1)", "x":17, "y":3.375},
+ {"label":"K2B (D6,F0)", "x":18, "y":3.375},
+ {"label":"K32 (D7,B4)", "x":2.5, "y":4.125},
+ {"label":"K33 (D7,D2)", "x":3.5, "y":4},
+ {"label":"K34 (D7,C0)", "x":4.5, "y":4.5},
+ {"label":"K35 (D7,C1)", "x":5.5, "y":4.75},
+ {"label":"K36 (D7,F5)", "x":12.75, "y":4.75},
+ {"label":"K37 (D7,F4)", "x":13.8, "y":4.375},
+ {"label":"K38 (D7,F3)", "x":15, "y":4},
+ {"label":"K39 (D7,F2)", "x":16, "y":4.125}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/croxsplit44/keymaps/default/keymap.c b/keyboards/handwired/croxsplit44/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7b3805ad63
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2021 Samux6146
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
+ KC_LCTL, KC_LALT, LT(1, KC_NO), KC_SPC, KC_SPC, LT(1, KC_NO), KC_TRNS, KC_TRNS),
+
+[1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, RGB_MOD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_UP, KC_RGHT, KC_ENT,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS),
+}; \ No newline at end of file
diff --git a/keyboards/handwired/croxsplit44/keymaps/via/keymap.c b/keyboards/handwired/croxsplit44/keymaps/via/keymap.c
new file mode 100644
index 0000000000..63cd585ab3
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021 Samux6146
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI,
+ KC_LCTL, KC_LALT, LT(1, KC_NO), KC_SPC, KC_SPC, LT(1, KC_NO), KC_TRNS, KC_TRNS),
+
+[1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, RGB_MOD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_UP, KC_RGHT, KC_ENT,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/handwired/croxsplit44/keymaps/via/rules.mk b/keyboards/handwired/croxsplit44/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/croxsplit44/readme.md b/keyboards/handwired/croxsplit44/readme.md
new file mode 100644
index 0000000000..b9eeb305b2
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/readme.md
@@ -0,0 +1,23 @@
+# croxsplit44
+
+![davanti](https://user-images.githubusercontent.com/41386727/131268038-801cb316-7bb1-486d-8432-be5412ddc31b.jpg)
+
+# A 3d printed 44 key handwired split keyboard
+Thanks to ak666666 for the base case layout : https://www.thingiverse.com/thing:4146704
+*
+* Keyboard Maintainer: https://github.com/Samux6146
+* Hardware Supported: handwired, teensy ++ 2.0
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/croxsplit44:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/croxsplit44/rules.mk b/keyboards/handwired/croxsplit44/rules.mk
new file mode 100644
index 0000000000..0b2170c456
--- /dev/null
+++ b/keyboards/handwired/croxsplit44/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/handwired/curiosity/rules.mk b/keyboards/handwired/curiosity/rules.mk
index ede7873722..b7593aec9c 100644
--- a/keyboards/handwired/curiosity/rules.mk
+++ b/keyboards/handwired/curiosity/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/d48/keymaps/default/keymap.c b/keyboards/handwired/d48/keymaps/default/keymap.c
index 4c3925c7ed..b4cd88b0b0 100644
--- a/keyboards/handwired/d48/keymaps/default/keymap.c
+++ b/keyboards/handwired/d48/keymaps/default/keymap.c
@@ -47,12 +47,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
┃LCTRL┃ │ │ ALT │ GUI │SPACE┃SPACE│ 𝛽/= │ ' │ │ ┃ \ ┃
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
*/
- [_MAIN] = LAYOUT( \
- KC_MUTE, _______, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ALPHA,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTRL,\
- KC_LCTRL,_______, _______, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_BETA, KC_QUOT, _______, _______, KC_BSLS \
+ [_MAIN] = LAYOUT(
+ KC_MUTE, _______,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ALPHA,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTRL,
+ KC_LCTRL,_______, _______, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_BETA, KC_QUOT, _______, _______, KC_BSLS
),
/* Alpha layer (𝛼)
@@ -67,12 +67,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
*/
- [_ALPHA] = LAYOUT( \
- _______, _______, \
- _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_NLCK, KC_MINS, KC_PGUP, KC_UP, KC_PGDN, KC_TILD, KC_DEL, \
- _______, _______, KC_VOLD, KC_VOLU, _______, KC_CAPS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_GRV, KC_BSLS, \
- _______, _______, _______, _______, _______, KC_SLCK, KC_END, KC_EQL, KC_LBRC, KC_RBRC, KC_LPRN ,KC_RPRN, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ALPHA] = LAYOUT(
+ _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_NLCK, KC_MINS, KC_PGUP, KC_UP, KC_PGDN, KC_TILD, KC_DEL,
+ _______, _______, KC_VOLD, KC_VOLU, _______, KC_CAPS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_GRV, KC_BSLS,
+ _______, _______, _______, _______, _______, KC_SLCK, KC_END, KC_EQL, KC_LBRC, KC_RBRC, KC_LPRN ,KC_RPRN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Beta layer (𝛽)
@@ -87,12 +87,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
*/
- [_BETA] = LAYOUT( \
- _______, _______, \
+ [_BETA] = LAYOUT(
+ _______, _______,
RGB_TOG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- _______, RESET, DEBUG, _______, _______, KC_SET_TIME,KC_SLEP,_______,KC_LCBR,KC_RCBR, KC_PSCR, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, RESET, DEBUG, _______, _______, KC_SET_TIME,KC_SLEP,_______,KC_LCBR,KC_RCBR, KC_PSCR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/d48/rules.mk b/keyboards/handwired/d48/rules.mk
index af6f369eff..c9fc60c130 100644
--- a/keyboards/handwired/d48/rules.mk
+++ b/keyboards/handwired/d48/rules.mk
@@ -13,8 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes
USE_I2C = no
diff --git a/keyboards/handwired/dactyl/rules.mk b/keyboards/handwired/dactyl/rules.mk
index 7d10d01cba..fdc8b2e5ef 100644
--- a/keyboards/handwired/dactyl/rules.mk
+++ b/keyboards/handwired/dactyl/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
POINTING_DEVICE_ENABLE = no
@@ -14,10 +14,9 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the Dactyl
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
UNICODE_ENABLE = yes # Unicode
SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard
-SLEEP_LED_ENABLE = no
RGBLIGHT_ENABLE = no
# project specific files
diff --git a/keyboards/handwired/dactyl_left/keymaps/default/config.h b/keyboards/handwired/dactyl_left/keymaps/default/config.h
deleted file mode 100644
index 729cab1684..0000000000
--- a/keyboards/handwired/dactyl_left/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 RedForty
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/dactyl_left/rules.mk b/keyboards/handwired/dactyl_left/rules.mk
index 3388265b2f..ad5f5465e8 100644
--- a/keyboards/handwired/dactyl_left/rules.mk
+++ b/keyboards/handwired/dactyl_left/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/4x5/rules.mk b/keyboards/handwired/dactyl_manuform/4x5/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/4x5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md
new file mode 100644
index 0000000000..b7f7cbf938
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md
@@ -0,0 +1,8 @@
+#### compile with
+
+`make handwired/dactyl_manuform/4x6:scheikled`
+
+
+#### flash with
+
+`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheikled`
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h
new file mode 100644
index 0000000000..a73cac9ed6
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h
@@ -0,0 +1,60 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+
+#pragma once
+
+#define USE_I2C
+
+#define SPLIT_HAND_PIN F6
+
+// WS2812 RGB LED strip input and number of LEDs
+#undef RGB_DI_PIN
+#undef RGBLED_NUM
+#define RGB_DI_PIN F4
+#define RGBLED_NUM 52
+#define RGBLED_SPLIT {26, 26}
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+
+// Amoeba royale PCBs (https://github.com/mtl/keyboard-pcbs/tree/master/amoeba-royale) use row to column layout (current can flow from row pin to column pin).
+#undef DIODE_DIRECTION
+#define DIODE_DIRECTION ROW2COL
+
+#define DEBOUNCE 5
+
+#define AUTO_SHIFT_TIMEOUT 100
+#define NO_AUTO_SHIFT_SPECIAL
+#define NO_AUTO_SHIFT_NUMERIC
+
+// require two taps for a TT layer switch (default 5)
+#define TAPPING_TOGGLE 2
+
+// Mouse control
+// constant mode (velocity)
+#define MK_3_SPEED
+// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
+
+// Cursor offset per movement (unmodified)
+#define MK_C_OFFSET_UNMOD 16
+// Time between cursor movements (unmodified)
+#define MK_C_INTERVAL_UNMOD 10
+/* #define MK_C_INTERVAL_UNMOD 16 */
+
+// Cursor offset per movement (KC_ACL0)
+#define MK_C_OFFSET_0 1
+// Time between cursor movements (KC_ACL0)
+#define MK_C_INTERVAL_0 32
+
+// Cursor offset per movement (KC_ACL1)
+#define MK_C_OFFSET_1 4
+// Time between cursor movements (KC_ACL1)
+#define MK_C_INTERVAL_1 16
+
+// Cursor offset per movement (KC_ACL2)
+#define MK_C_OFFSET_2 20
+/* #define MK_C_OFFSET_2 32 */
+// Time between cursor movements (KC_ACL2)
+#define MK_C_INTERVAL_2 16
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c
new file mode 100644
index 0000000000..7f3fc2585f
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */
+
+#include QMK_KEYBOARD_H
+#include "koy_keys_on_quertz_de_latin1.h"
+
+enum custom_layers {
+ _1,
+ _3,
+ _4,
+ _7,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_1] = LAYOUT(
+ KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
+ MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
+ KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
+ KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) ,
+ KC_LALT , KC_SPC , MO(_3) , MO(_4) ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+ ),
+
+ [_3] = LAYOUT(
+
+ KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT ,
+ KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT ,
+ KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_LALT , KC_SPC , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+ [_4] = LAYOUT(
+
+ KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS ,
+ KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS ,
+ KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT ,
+ KC_TRNS , KC_TRNS , KC_0 , KC_TRNS ,
+ KC_LALT , KC_0 , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+ [_7] = LAYOUT(
+
+ KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , RGB_HUI , RESET ,
+ KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , RGB_SAI , RGB_TOG ,
+ KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , RGB_VAI , RGB_MODE_FORWARD ,
+ KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS ,
+ KC_LALT , KC_F10 , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+};
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk
new file mode 100644
index 0000000000..9991dcad71
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk
@@ -0,0 +1,10 @@
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+BOOTLOADER = atmel-dfu
+AUTO_SHIFT_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+NKRO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md
new file mode 100644
index 0000000000..18c4d8e78d
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md
@@ -0,0 +1,8 @@
+#### compile with
+
+`make handwired/dactyl_manuform/4x6:scheiklp`
+
+
+#### flash with
+
+`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheiklp`
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h
new file mode 100644
index 0000000000..bfce275567
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h
@@ -0,0 +1,47 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+
+#define USE_I2C
+#define SPLIT_HAND_PIN F6
+
+#undef RGB_DI_PIN
+#undef RGBLED_NUM
+
+#define DEBOUNCE 5
+
+#define AUTO_SHIFT_TIMEOUT 100
+#define NO_AUTO_SHIFT_SPECIAL
+#define NO_AUTO_SHIFT_NUMERIC
+
+// require two taps for a TT layer switch (default 5)
+#define TAPPING_TOGGLE 2
+
+// Mouse control
+// constant mode (velocity)
+#define MK_3_SPEED
+// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
+
+// Cursor offset per movement (unmodified)
+#define MK_C_OFFSET_UNMOD 16
+// Time between cursor movements (unmodified)
+#define MK_C_INTERVAL_UNMOD 10
+/* #define MK_C_INTERVAL_UNMOD 16 */
+
+// Cursor offset per movement (KC_ACL0)
+#define MK_C_OFFSET_0 1
+// Time between cursor movements (KC_ACL0)
+#define MK_C_INTERVAL_0 32
+
+// Cursor offset per movement (KC_ACL1)
+#define MK_C_OFFSET_1 4
+// Time between cursor movements (KC_ACL1)
+#define MK_C_INTERVAL_1 16
+
+// Cursor offset per movement (KC_ACL2)
+#define MK_C_OFFSET_2 20
+/* #define MK_C_OFFSET_2 32 */
+// Time between cursor movements (KC_ACL2)
+#define MK_C_INTERVAL_2 16
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c
new file mode 100644
index 0000000000..86a34c4f04
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */
+
+#include QMK_KEYBOARD_H
+#include "koy_keys_on_quertz_de_latin1.h"
+
+enum custom_layers {
+ _1,
+ _3,
+ _4,
+ _7,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_1] = LAYOUT(
+ KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
+ MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
+ KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
+ KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) ,
+ KC_LALT , KC_SPC , MO(_3) , MO(_4) ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+ ),
+
+ [_3] = LAYOUT(
+
+ KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT ,
+ KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT ,
+ KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_LALT , KC_SPC , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+ [_4] = LAYOUT(
+
+ KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS ,
+ KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS ,
+ KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT ,
+ KC_TRNS , KC_TRNS , KC_0 , KC_TRNS ,
+ KC_LALT , KC_0 , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+ [_7] = LAYOUT(
+
+ KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS ,
+ KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS ,
+ KC_LALT , KC_F10 , KC_TRNS , KC_TRNS ,
+ N_COPY , N_CUT , KC_ESC , KC_ENTER ,
+ N_PASTE , N_UNDO , KC_BSPC , KC_DEL
+
+ ),
+
+};
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk
new file mode 100644
index 0000000000..db873a7522
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk
@@ -0,0 +1,9 @@
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+BOOTLOADER = atmel-dfu
+AUTO_SHIFT_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+NKRO_ENABLE = yes
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/handwired/dactyl_manuform/4x6/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/handwired/dactyl_manuform/4x6/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/4x6/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.c b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.c
new file mode 100644
index 0000000000..a770f5ac40
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.c
@@ -0,0 +1 @@
+#include "4x6_5.h"
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h
new file mode 100644
index 0000000000..f34d8be4df
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "dactyl_manuform.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L32, L33, R32, R33, \
+ L34, L45, L43, R42, R40, R31, \
+ L44, L42, R43, R41 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, L32, L33, L34, XXX }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { XXX, R31, R32, R33, XXX, XXX }, \
+ { R40, R41, R42, R43, XXX, XXX } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/config.h b/keyboards/handwired/dactyl_manuform/4x6_5/config.h
new file mode 100644
index 0000000000..2e79517b25
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/config.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x3436
+#define DEVICE_VER 0x0001
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// row-driven
+#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/info.json b/keyboards/handwired/dactyl_manuform/4x6_5/info.json
new file mode 100644
index 0000000000..3534cc01a6
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/info.json
@@ -0,0 +1,72 @@
+{
+ "keyboard_name": "Dactyl Manuform 4x6 5 thumb keys",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+ {"x": 16, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+ {"x": 16, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 2},
+
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+ {"x": 6, "y": 4},
+
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+
+ {"x": 5, "y": 5},
+ {"x": 6, "y": 5},
+
+ {"x": 10, "y": 5},
+ {"x": 11, "y": 5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/config.h
new file mode 100644
index 0000000000..38dfa5cb39
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+
+#define EE_HANDS
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3036986f2a
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/default/keymap.c
@@ -0,0 +1,63 @@
+// Copyright 2021 Andrzej Kotulski (@akotulski)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum layer_names {
+ _BASE,
+ _RAISE,
+ _LOWER
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * +-----------------------------------------+ +-----------------------------------------+
+ * | ESC | q | w | e | r | t | | y | u | i | o | p | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | a | s | d | f | g | | h | j | k | l | ; | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | SHFT | z | x | c | v | b | | n | m | , | . | / | |
+ * +------+------+------+------+-------------+ +-------------+------+------+------+------+
+ * | [ | ] | | | |
+ * +-------------+-------------+ +-------------+-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ * +-------------+ +-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
+ KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL,
+ KC_SPC, RAISE, KC_HOME, KC_END, LOWER, KC_ENT,
+ KC_BSPC, KC_LALT, KC_LGUI, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, RESET, KC_PLUS,
+ _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS,
+ _______, KC_PSCR, _______, KC_P0,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT(
+ _______, RESET, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_NLCK, KC_INS, KC_SLCK, KC_MUTE,
+ _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, _______, KC_EQL, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..9532d1f67c
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,24 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+// generated -*- buffer-read-only: t -*-
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+#pragma once
+
+#define XXX KC_NO
+
+#define LAYOUT_miryoku(\
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
+N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\
+)\
+LAYOUT( \
+XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
+ XXX, XXX, XXX, XXX, \
+ K32, K33, K34, K35, K36, K37, \
+ XXX, XXX, XXX, XXX \
+)
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..7c5717a0fe
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,5 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+// generated -*- buffer-read-only: t -*-
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/rules.mk b/keyboards/handwired/dactyl_manuform/4x6_5/rules.mk
new file mode 100644
index 0000000000..0415379827
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md
new file mode 100644
index 0000000000..81a8004f7b
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md
@@ -0,0 +1,8 @@
+#### compile with
+
+`make handwired/dactyl_manuform/5x6:scheiklp`
+
+
+#### flash with
+
+`qmk flash -kb handwired/dactyl_manuform/5x6 -km scheiklp`
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h
new file mode 100644
index 0000000000..613d8ae47f
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h
@@ -0,0 +1,47 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+
+#pragma once
+
+
+#define USE_I2C
+
+/* #define MASTER_LEFT */
+ /* #define MASTER_RIGHT */
+#define EE_HANDS
+// Rows are doubled-up
+
+#define AUTO_SHIFT_TIMEOUT 125
+#define NO_AUTO_SHIFT_SPECIAL
+#define NO_AUTO_SHIFT_NUMERIC
+
+// require two taps for a TT layer switch (default 5)
+#define TAPPING_TOGGLE 2
+
+// Mouse control
+// constant mode (velocity)
+#define MK_3_SPEED
+// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
+
+// Cursor offset per movement (unmodified)
+#define MK_C_OFFSET_UNMOD 16
+// Time between cursor movements (unmodified)
+#define MK_C_INTERVAL_UNMOD 10
+/* #define MK_C_INTERVAL_UNMOD 16 */
+
+// Cursor offset per movement (KC_ACL0)
+#define MK_C_OFFSET_0 1
+// Time between cursor movements (KC_ACL0)
+#define MK_C_INTERVAL_0 32
+
+// Cursor offset per movement (KC_ACL1)
+#define MK_C_OFFSET_1 4
+// Time between cursor movements (KC_ACL1)
+#define MK_C_INTERVAL_1 16
+
+// Cursor offset per movement (KC_ACL2)
+#define MK_C_OFFSET_2 20
+/* #define MK_C_OFFSET_2 32 */
+// Time between cursor movements (KC_ACL2)
+#define MK_C_INTERVAL_2 16
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c
new file mode 100644
index 0000000000..001687b57d
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c
@@ -0,0 +1,70 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* A K.O,Y layout for the Dactyl Manuform 5x6 Keyboard */
+
+#include QMK_KEYBOARD_H
+#include "koy_keys_on_quertz_de_latin1.h"
+
+
+enum custom_layers {
+ _1,
+ _3,
+ _4,
+ _7,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_1] = LAYOUT_5x6(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC ,
+ KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
+ MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
+ KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
+ KC_LCTL , KC_LGUI , KC_CAPS , TT(_7),
+ KC_LALT, KC_SPC, MO(_3), MO(_4),
+ N_COPY, N_CUT, DM_RSTP, KC_ENTER,
+ N_PASTE, N_UNDO, DM_REC1, DM_PLY1
+ ),
+
+ [_3] = LAYOUT_5x6(
+
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
+ KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, N_ACUT,
+ KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
+ KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LALT,KC_SPC, KC_TRNS,KC_TRNS,
+ N_COPY, N_CUT, DM_RSTP, KC_ENTER,
+ N_PASTE, N_UNDO, DM_REC1, DM_PLY1
+
+ ),
+
+ [_4] = LAYOUT_5x6(
+
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
+ KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS,
+ KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
+ KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT,
+ KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LALT,KC_0, KC_TRNS,KC_TRNS,
+ N_COPY, N_CUT, DM_RSTP, KC_ENTER,
+ N_PASTE, N_UNDO, DM_REC1, DM_PLY1
+
+ ),
+
+ [_7] = LAYOUT_5x6(
+
+ KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS,KC_PSCR, KC_TRNS, KC_TRNS,
+ KC_LALT,KC_0, KC_TRNS,KC_TRNS,
+ N_COPY, N_CUT, DM_RSTP, KC_ENTER,
+ N_PASTE, N_UNDO, DM_REC1, DM_PLY1
+
+ ),
+
+};
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk
new file mode 100644
index 0000000000..a0b983c7ab
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk
@@ -0,0 +1,10 @@
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+AUTO_SHIFT_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+NKRO_ENABLE = yes
+BOOTLOADER = atmel-dfu
+DYNAMIC_MACRO_ENABLE = yes
+
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h
new file mode 100644
index 0000000000..4eca68c542
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h
@@ -0,0 +1,11 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define USE_SERIAL
+
+#define RGBLED_NUM 12
+#define RGBLED_SPLIT {6,6}
+#define RGBLIGHT_LIMIT_VAL 127
+
+#define EE_HANDS
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c
new file mode 100644
index 0000000000..211cd91e12
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c
@@ -0,0 +1,170 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4 cc=5,15,25,35,45,55,65:
+
+#include "uqs.h"
+
+/*
+ * My custom layout macro that allows for easy diff(1) operations between
+ * various keyboards. It probably doesn't make sense to you.
+ */
+#define LAYOUT_uqs( \
+ L00, L01, L02, L03, L04, L05, \
+ L10, L11, L12, L13, L14, L15, \
+ L20, L21, L22, L23, L24, L25, \
+ L30, L31, L32, L33, L34, L35, \
+ L42, L43, \
+ L44, L45, L54, \
+ L55, L52, L53, \
+ R00, R01, R02, R03, R04, R05, \
+ R10, R11, R12, R13, R14, R15, \
+ R20, R21, R22, R23, R24, R25, \
+ R30, R31, R32, R33, R34, R35, \
+ R42, R43, \
+ R51, R40, R41, \
+ R50, R52, R53 \
+) \
+LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L44, L45, R40, R41, \
+ L54, L55, R50, R51, \
+ L52, L53, R52, R53 \
+)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [L_QWER] = LAYOUT_uqs(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_LBRC, KC_RBRC,
+ /*thumb*/ LT_EXTD_ESC, KC_SPC, LT_MOUSE_ALT_SHIFT_INS,
+ /*aux*/ KC_LEAD, OSM_GUI, KC_LALT,
+ KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
+ KC_MINS, KC_EQL,
+ /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
+ /*aux*/ KC_RALT, KC_APP, KC_LEAD
+ ),
+
+ [L_WASD] = LAYOUT_uqs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R,
+ KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F,
+ KC_B, KC_GRV, KC_Z, KC_X, KC_C, KC_V,
+ KC_LBRC, KC_RBRC,
+ /*thumb*/ KC_LCTL, KC_SPC, KC_R,
+ /*aux*/ A(KC_M), KC_LGUI, KC_LALT,
+ KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
+ KC_MINS, KC_EQL,
+ /*thumb*/ DF(L_COLM), KC_ENT, KC_BSPC,
+ /*aux*/ KC_F5, KC_RALT, KC_APP
+ ),
+
+ [L_COLM] = LAYOUT_uqs(
+ KC_NO, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_NO,
+ KC_BTN2, KC_Q, KC_W, KC_F, KC_P, KC_B,
+ KC_BTN1, KC_G_A, KC_A_R, KC_S_S, KC_C_T, KC_G,
+ KC_BTN3, KC_Z, KC_X, KC_C, KC_D, KC_V,
+ MS_WHUP, MS_WHDN,
+ /*thumb*/ LT_EXTD_ESC, SFT_T(KC_SPC), LT(L_MOUSE, KC_TAB),
+ /*aux*/ KC_LEAD, OSM_GUI, KC_LALT,
+ KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO,
+ KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_NO,
+ KC_M, KC_C_N, KC_S_E, KC_A_I, KC_G_O, KC_NO,
+ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
+ KC_NO, KC_NO,
+ /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
+ /*aux*/ KC_LEAD, KC_RALT, KC_APP
+ ),
+
+ // Updated with inspiration from https://forum.colemak.com/topic/2014-extend-extra-extreme/
+ // I like the AltGr trick from https://stevep99.github.io/seniply/ and should probably incorporate some stuff from it.
+ [L_EXTD] = LAYOUT_uqs(
+ _______, _______, _______, _______, _______, _______,
+ _______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, KC_LEAD,
+ _______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT,
+ _______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD,
+ _______, _______,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ can't be used */
+ _______, _______, _______, _______, _______, _______,
+ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
+ WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO, // KC_PSTE works in XTerm to emulate middle-click
+ _______, _______,
+ /*thumb*/ _______, _______, KC_BSPC,
+ /*aux*/ _______, _______, _______
+ /* ^^^^ use these */
+ ),
+
+ // TODO: maybe swap # with ;, that way I can roll :w or :wq which I need
+ // often ... probably better to add a combo?
+ [L_NUM] = LAYOUT_uqs(
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
+ _______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC,
+ _______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC,
+ KC_GRV, KC_TILDE,
+ /*thumb*/ KC_ESC, KC_SPC, KC_0,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ use these */
+ KC_NUMLOCK,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______,
+ KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______,
+ KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied
+ KC_0, KC_KP_DOT,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_FUNC] = LAYOUT_uqs(
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ _______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, DF(L_WASD),
+ _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(L_QWER),
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, DF(L_COLM),
+ KC_NO, KC_NO,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ use these */
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
+ KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
+ KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO,
+ KC_NO, KC_NO,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_MOUSE] = LAYOUT_uqs(
+ _______, _______, _______, _______, _______, _______,
+ _______, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU,
+ _______, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD,
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
+ KC_NO, KC_NO,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ can't be used */
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_MS_UP, MS_WHUP, _______, _______,
+ MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______,
+ _______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______,
+ KC_NO, KC_NO,
+ /*thumb*/ KC_NO, KC_BTN1, KC_BTN2,
+ /*aux*/ _______, _______, _______
+ /* use these ^^^^ */
+ ),
+};
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk
new file mode 100644
index 0000000000..2cd3745fa1
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk
@@ -0,0 +1 @@
+#VIA_ENABLE = yes # doesn't fit with 7 layers :/
diff --git a/keyboards/handwired/dactyl_manuform/5x6/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk
index 3262f7fad2..c5b46aa48e 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h
index 0a38c8aefb..9ae7b44a69 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/config.h
@@ -28,7 +28,7 @@
#define USE_SERIAL
#define SOFT_SERIAL_PIN D2
#define EE_HANDS
-#define SPLIT_USB_DETECT
+// #define SPLIT_USB_DETECT
// wiring of each half
// ../../../../docs/proton_c_conversion.md
@@ -43,17 +43,15 @@
#define BOOTMAGIC_LITE_ROW_RIGHT 0
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
+// Configure the global tapping term (default: 200ms)
#define TAPPING_TERM 200
// Prevent normal rollover on alphas from accidentally triggering mods.
-// #define IGNORE_MOD_TAP_INTERRUPT
+#define IGNORE_MOD_TAP_INTERRUPT
+//#define IGNORE_MOD_TAP_INTERRUPT
+#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
-// #define TAPPING_FORCE_HOLD
-
-// Apply the modifier on keys that are tapped during a short hold of a modtap
-// #define PERMISSIVE_HOLD
-
-#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+#define TAPPING_FORCE_HOLD
#define FORCE_NKRO
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c
index 0d8fd05425..3503bfd368 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c
@@ -15,28 +15,76 @@
#include QMK_KEYBOARD_H
-#define CM_SPAL LGUI_T(KC_SPC)
-#define CM_SPAR RGUI_T(KC_SPC)
+#define CM_R LCTL_T(KC_R)
+#define CM_S LALT_T(KC_S)
+#define CM_T LGUI_T(KC_T)
-#define SH_ENL LSFT_T(KC_ENT)
-#define SH_ENR RSFT_T(KC_ENT)
+#define CM_N RGUI_T(KC_N)
+#define CM_E RALT_T(KC_E)
+#define CM_I RCTL_T(KC_I)
-#define SYM MO(_SYMBOL)
-#define ADJ MO(_ADJUST)
+#define QU_S LCTL_T(KC_S)
+#define QU_D LALT_T(KC_D)
+#define QU_F LGUI_T(KC_F)
+
+#define QU_J RGUI_T(KC_J)
+#define QU_K RALT_T(KC_K)
+#define QU_L RCTL_T(KC_L)
+
+#define SPC_L LSFT_T(KC_SPC)
+#define SPC_R RSFT_T(KC_SPC)
+#define ENT_L LSFT_T(KC_ENT)
+#define ENT_R RSFT_T(KC_ENT)
+
+#define UNDO LGUI(KC_Z)
+#define REDO LGUI(KC_Y)
+#define CUT LGUI(KC_X)
+#define COPY LGUI(KC_C)
+#define PASTE LGUI(KC_V)
+#define ALL LGUI(KC_A)
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
#define QWERT DF(_QWERTY)
-#define COLEM DF(_COLEMAK)
+#define COLEM DF(_COLEMAK_DH)
enum layer_names {
+ _COLEMAK_DH,
_QWERTY,
- _COLEMAK,
- _SYMBOL,
+ _RAISE,
+ _LOWER,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
+ [_COLEMAK_DH] = LAYOUT_5x6_5(
+ /* COLEMAK_DH
+ * .-----------------------------------------. .-----------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Del | A |R /CTL|S /ALT|T /CMD| G | | M |N /CMD|E /ALT|I /CTL| O | ' |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Shft | Z | X | C | D | V | | K | H | , | . | / | Shft |
+ * '-----------------------------------------/ \-----------------------------------------'
+ * | | | / RAISE /---------------. .---------------\ LOWER \ | | |
+ * | | | / / Space / Enter / \ Enter \ Space \ \ | | |
+ * '-------------' '-------/ Shift / Shift / \ Shift \ Shift \-------' '-------------'
+ * /---------------/ \---------------\
+ * / = / Home / \ End \ - \
+ * / + / / \ \ _ \
+ * '---------------' '---------------'
+ */
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
+ KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSLS,
+ KC_DEL , KC_A , CM_R , CM_S , CM_T , KC_G , KC_M , CM_N , CM_E , CM_I , KC_O , KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_D , KC_V , KC_K , KC_H , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ XXXXXXX, XXXXXXX, RAISE , SPC_L , ENT_L , ENT_R , SPC_R , LOWER , XXXXXXX, XXXXXXX,
+ KC_EQL, KC_HOME , KC_END , KC_MINS
+ ),
[_QWERTY] = LAYOUT_5x6_5(
/* QWERTY
* .-----------------------------------------. .-----------------------------------------.
@@ -44,87 +92,87 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
+ * | Del | A |S /CTL|D /ALT|F /CMD| G | | H |J /CMD|K /ALT|L /CTL| ; | ' |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Shft | Z | X | C | V | B | | N | M | , | . | / | Shft |
* '-----------------------------------------/ \-----------------------------------------'
- * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ |
- * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | |
- * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------'
+ * | | | / RAISE /---------------. .---------------\ LOWER \ | | |
+ * | | | / / Space / Enter / \ Enter \ Space \ \ | | |
+ * '-------------' '-------/ Shift / / \ \ Shift \-------' '-------------'
* /---------------/ \---------------\
- * / Alt / Ctrl / \ Ctrl \ Alt \
- * / / / \ \ \
+ * / = / Home / \ End \ - \
+ * / + / / \ \ _ \
* '---------------' '---------------'
*/
- KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS,
- KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_DEL , KC_A , QU_S , QU_D , QU_F , KC_G , KC_H , QU_J , QU_K , QU_L , KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
- ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ ,
- KC_LALT, KC_LCTL, KC_RCTL, KC_RALT
+ XXXXXXX, XXXXXXX, RAISE , SPC_L , ENT_L , ENT_R , SPC_R , LOWER , XXXXXXX, XXXXXXX,
+ KC_EQL, KC_HOME , KC_END , KC_MINS
),
- [_COLEMAK] = LAYOUT_5x6_5(
- /* COLEMAK
+ [_RAISE] = LAYOUT_5x6_5(
+ /* RAISE
* .-----------------------------------------. .-----------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bsp |
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ |
+ * | | Redo | | | | | | % | $ | # | ` | | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
+ * | | All | Cut | Copy | Paste| | | ^ | / | * | ~ | ? | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Shft | Z | X | C | V | B | | K | M | , | . | / | Shft |
+ * | | Undo | | | | | | | & | | | | | |
* '-----------------------------------------/ \-----------------------------------------'
- * | ADJ | - | / SYM /---------------. .---------------\ SYM \ | + | ADJ |
- * | | | / / Cmd / Shift / \ Shift \ Cmd \ \ | | |
- * '-------------' '-------/ Space / Enter / \ Enter \ Space \-------' '-------------'
+ * | RST | | / /---------------. .---------------\ \ | | |
+ * | | | / / / / \ \ \ \ | | |
+ * '-------------' '-------/ / / \ \ \-------' '-------------'
* /---------------/ \---------------\
- * / Alt / Ctrl / \ Ctrl \ Alt \
- * / / / \ \ \
+ * / / Page / \ Page \ \
+ * / / Up / \ Down \ \
* '---------------' '---------------'
*/
- KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
- KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSLS,
- KC_LCTL, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT,
- KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
- ADJ , KC_MINS, SYM , CM_SPAL, SH_ENL , SH_ENR , CM_SPAR, SYM , KC_EQL , ADJ ,
- KC_LALT, KC_LCTL, KC_RCTL, KC_RALT
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
+ XXXXXXX, REDO , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PERC, KC_DLR , KC_HASH, KC_GRV , XXXXXXX, KC_F12 ,
+ XXXXXXX, ALL , CUT , COPY , PASTE , XXXXXXX, KC_CIRC, KC_SLSH, KC_ASTR, KC_TILD, KC_QUES, XXXXXXX,
+ _______, UNDO , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_AMPR, KC_PIPE, XXXXXXX, XXXXXXX, _______,
+ RESET , XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX,
+ _______, KC_PGUP, KC_PGDN, _______
),
- [_SYMBOL] = LAYOUT_5x6_5(
- /* SYMBOL
+ [_LOWER] = LAYOUT_5x6_5(
+ /* LOWER
* .-----------------------------------------. .-----------------------------------------.
- * | ` | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | ! | @ | [ | ] | + | | | | up | | | F12 |
+ * | | | | [ | ] | | | | | up | | | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | & | | | ( | ) | - | | | left | down | right| ? | |
+ * | Ins | ! | @ | ( | ) | | | | left | down | rght | ? | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | * | / | { | } | = | | | | | | | |
+ * | | | | { | } | | | | | | | | |
* '-----------------------------------------/ \-----------------------------------------'
- * | | | / /---------------. .---------------\ \ | | |
+ * | | | / /---------------. .---------------\ \ | | RST |
* | | | / / / / \ \ \ \ | | |
* '-------------' '-------/ / / \ \ \-------' '-------------'
* /---------------/ \---------------\
- * / / / \ \ \
- * / / / \ \ \
+ * / / Page / \ Page \ \
+ * / / Up / \ Down \ \
* '---------------' '---------------'
*/
- KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
- XXXXXXX, KC_EXLM, KC_AT , KC_LBRC, KC_RBRC, KC_PPLS, XXXXXXX, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_F12 ,
- _______, KC_AMPR, KC_PIPE, KC_LPRN, KC_RPRN, KC_MINS, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX,
- _______, KC_ASTR, KC_SLSH, KC_LCBR, KC_RCBR, KC_PEQL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
- XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX,
- _______, _______, _______, _______
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, KC_F12 ,
+ KC_INS , KC_EXLM, KC_AT , KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUES, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, RESET ,
+ _______, KC_PGUP, KC_PGDN, _______
),
[_ADJUST] = LAYOUT_5x6_5(
/* ADJUST
* .-----------------------------------------. .-----------------------------------------.
- * | RST | | | | | QWERT| |COLEM | | | | | RST |
+ * | | | | | | QWERT| |COLEM | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | + | | B + | | | | | |
+ * | | | | | | V+ | | B + | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | - | | B - | << | play | >> | | |
+ * | | | | | | V- | | B - | << | play | >> | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | | | | | | = | | | | | | | |
+ * | | | | | | Mute | | | | | | | |
* '-----------------------------------------/ \-----------------------------------------'
* | | | / /---------------. .---------------\ \ | | |
* | | | / / / / \ \ \ \ | | |
@@ -134,20 +182,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* / / / \ \ \
* '---------------' '---------------'
*/
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT , COLEM , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET ,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERT , COLEM , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_BRID, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
};
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case CM_SPAR:
+ case SPC_L:
+ return false;
+ case SPC_R:
return true;
- default:
+ case ENT_L:
+ return false;
+ case ENT_R:
return false;
+ default:
+ return true;
}
}
+
+// Flexible macOS-friendly Grave Escape
+// https://docs.qmk.fm/#/feature_key_overrides?id=flexible-macos-friendly-grave-escape
+
+const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRAVE));
+const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRAVE);
+
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &tilde_esc_override,
+ &grave_esc_override,
+ NULL
+};
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk
index 0b99981410..88d1fb309d 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/rules.mk
@@ -1,6 +1,2 @@
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-EXTRAKEY_ENABLE = yes
-COMMAND_ENABLE = yes
MOUSEKEY_ENABLE = no
-LTO_ENABLE = no
-NKRO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk
index a4ef754fcb..1a7e6a8f94 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/5x7/rules.mk b/keyboards/handwired/dactyl_manuform/5x7/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/handwired/dactyl_manuform/5x7/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x7/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/dactyl_manuform/6x6/6x6.h b/keyboards/handwired/dactyl_manuform/6x6/6x6.h
index 821abe0308..7bff55701a 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/6x6.h
+++ b/keyboards/handwired/dactyl_manuform/6x6/6x6.h
@@ -31,3 +31,32 @@
{ R50, R51, R52, R53, XXX, XXX }, \
{ R60, R61, R62, R63, XXX, XXX } \
}
+
+
+#define LAYOUT_6x6_5_thumb( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \
+ L52, L53, R52, R53, \
+ L54, R51, \
+ L64, L65, R60, R61, \
+ L62, L63, R62, R63 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { XXX, XXX, L52, L53, L54, XXX }, \
+ { XXX, XXX, L62, L63, L64, L65 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 }, \
+ { XXX, R51, R52, R53, XXX, XXX }, \
+ { R60, R61, R62, R63, XXX, XXX } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/chconf.h b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/chconf.h
new file mode 100644
index 0000000000..f0c98d3b97
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/chconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next <chconf.h>
+
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h
new file mode 100644
index 0000000000..93e1ed8449
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#undef SOFT_SERIAL_PIN
+
+#define MATRIX_ROW_PINS { B12, B13, B14, B15, A8 , A9, A10}
+#define MATRIX_COL_PINS { B1, B0, A7, A6, A5, A4}
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 7
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
+
+// in col2row col is input, and row is output
+// #define SPLIT_HAND_MATRIX_GRID A10, A4
+// 68kohm
+#define SPLIT_HAND_PIN B10
+
+/* connection */
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+#define SOFT_SERIAL_PIN B6 // USART TX pin
+#define SERIAL_USART_RX_PIN B7 // USART RX pin
+#define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN // USART TX pin
+
+#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
+ // 0: 460800 baud
+ // 1: 230400 baud (default)
+ // 2: 115200 baud
+ // 3: 57600 baud
+ // 4: 38400 baud
+ // 5: 19200 baud
+#define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1
+#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/halconf.h b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/halconf.h
new file mode 100644
index 0000000000..9068139df8
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/halconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#define PAL_USE_CALLBACKS TRUE
+#define PAL_USE_WAIT TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/mcuconf.h b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/mcuconf.h
new file mode 100644
index 0000000000..b8bb363d91
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
new file mode 100644
index 0000000000..af3cc49296
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
@@ -0,0 +1,30 @@
+# Copyright 2021 Bartosz Nowak (@dumam)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = tinyuf2
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+
+# Build Options
+# change yes to no to disable
+#
+SPLIT_KEYBOARD = yes
+# split settings
+# https://beta.docs.qmk.fm/developing-qmk/c-development/hardware_drivers/serial_driver
+SERIAL_DRIVER = usart
diff --git a/keyboards/handwired/dactyl_manuform/6x6/config.h b/keyboards/handwired/dactyl_manuform/6x6/config.h
index 9323e33029..15682fcadf 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x6/config.h
@@ -20,21 +20,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3636
-#define DEVICE_VER 0x0001
-#define PRODUCT Dactyl-Manuform (6x6)
+#define PRODUCT_ID 0x3636
+#define DEVICE_VER 0x0001
+#define PRODUCT "Dactyl-Manuform (6x6)"
+
+/* USB Device descriptor parameter */
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
#define MATRIX_COLS 6
-
-// wiring of each half
-#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
-#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
-
-#define DIODE_DIRECTION COL2ROW
-
-// WS2812 RGB LED strip input and number of LEDs
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x6/info.json b/keyboards/handwired/dactyl_manuform/6x6/info.json
index 596126879e..1f4e7dc3a4 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/info.json
+++ b/keyboards/handwired/dactyl_manuform/6x6/info.json
@@ -99,6 +99,101 @@
{"x": 9, "y": 8},
{"x": 10, "y": 8}
]
+ },
+
+ "LAYOUT_6x6_5_thumb": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+ {"x": 16, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+ {"x": 16, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+ {"x": 16, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4},
+ {"x": 16, "y": 4},
+
+ {"x": 2, "y": 5},
+ {"x": 3, "y": 5},
+
+ {"x": 13, "y": 5},
+ {"x": 14, "y": 5},
+
+ {"x": 4, "y": 6},
+ {"x": 12, "y": 6},
+
+ {"x": 6, "y": 7},
+ {"x": 7, "y": 7},
+
+ {"x": 9, "y": 7},
+ {"x": 10, "y": 7},
+
+ {"x": 6, "y": 8},
+ {"x": 7, "y": 8},
+
+ {"x": 9, "y": 8},
+ {"x": 10, "y": 8}
+ ]
}
}
}
diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c
index 41e96b53d7..8c85746986 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default/keymap.c
@@ -1,8 +1,13 @@
+// Copyright 2021 david@impstyle.com (@zwnk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
#define RAISE MO(_RAISE)
#define LOWER MO(_LOWER)
@@ -15,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH,
KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
- RAISE,KC_SPC, KC_ENT, LOWER,
+ RAISE ,KC_SPC, KC_ENT, LOWER,
KC_TAB,KC_HOME, KC_END, KC_DEL,
KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
),
diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/default_5_thumb/keymap.c b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default_5_thumb/keymap.c
new file mode 100644
index 0000000000..b68ec078e0
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/default_5_thumb/keymap.c
@@ -0,0 +1,51 @@
+// Copyright 2021 Bartosz Nowak (@dumam)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE LT(_RAISE, KC_SPC)
+#define LOWER LT(_LOWER, KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x6_5_thumb(
+ KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC,
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_MINS,
+ KC_LSFT,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
+ KC_LCTL,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH,
+ KC_LBRC,KC_RBRC, KC_PLUS,KC_EQL ,
+ RAISE , LOWER ,
+ KC_TAB ,KC_HOME, KC_END ,KC_DEL,
+ KC_BSPC,KC_GRV , KC_LGUI ,KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x6_5_thumb(
+ KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,KC_P7 ,KC_P8 ,KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN,KC_P4 ,KC_P5 ,KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______,KC_P1 ,KC_P2 ,KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______,KC_P0 ,
+ _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x6_5_thumb(
+ KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______, KC_EQL ,_______,
+ _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c b/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c
new file mode 100644
index 0000000000..2fb783e0b8
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c
@@ -0,0 +1,59 @@
+// Copyright 2021 Bartosz Nowak (@dumam)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY, // daily use and coding
+ _MOVE, // mouse, arrows, browsing useful keys
+ _CONF, // machine settings, keyboard settings, backlight
+};
+#define _KC_SPC LT(_CONF, KC_SPC)
+#define _KC_ENT LT(_MOVE, KC_ENT)
+
+#define KC_SPEC KC_SFTENT //KC_SFTENT - Right Shift when held, Enter when tapped
+#define KC_INS_ KC_INS
+#define KC_TAB_ KC_TAB
+#define RESET__ RESET
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_6x6_5_thumb(
+
+ KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
+ KC_BSLS,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_EQL ,
+ KC_SLSH,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_LBRC,KC_RBRC,
+ KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SCLN,KC_QUOT,
+ KC_LGUI,KC_ESC , KC_HOME,KC_END ,
+ _KC_SPC, _KC_ENT,
+ KC_TAB_,KC_BSPC, KC_DEL ,KC_RSFT,
+ KC_LCTL,KC_LALT, KC_RALT,KC_RCTL
+ ),
+
+ [_CONF] = LAYOUT_6x6_5_thumb(
+
+ RESET__,XXXXXXX,XXXXXXX,XXXXXXX,KC_SLEP,KC_WAKE, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RESET__,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_PGUP,XXXXXXX, XXXXXXX,KC_PGUP,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,KC_CAPS,KC_MENU,XXXXXXX,KC_PGDN,KC_LGUI, KC_LGUI,KC_PGDN,XXXXXXX,KC_INS_,KC_PSCR,XXXXXXX,
+ _______,_______, _______,_______,
+ _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ ),
+
+ [_MOVE] = LAYOUT_6x6_5_thumb(
+
+ RESET__,XXXXXXX,XXXXXXX,KC_MPRV,KC_MPLY,KC_MPLY, KC_MUTE,KC_VOLD,KC_VOLU,XXXXXXX,XXXXXXX,RESET__,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,KC_UP ,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX, XXXXXXX,KC_LEFT,KC_DOWN,KC_RGHT,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,KC_BTN1,KC_BTN3,KC_BTN2,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______,_______, _______,_______,
+ _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ ),
+};
diff --git a/keyboards/handwired/dactyl_manuform/6x6/promicro/config.h b/keyboards/handwired/dactyl_manuform/6x6/promicro/config.h
new file mode 100644
index 0000000000..953d94a1a3
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/promicro/config.h
@@ -0,0 +1,29 @@
+/* Copyright 2019
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x6/promicro/rules.mk b/keyboards/handwired/dactyl_manuform/6x6/promicro/rules.mk
new file mode 100644
index 0000000000..d47d8e75f4
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/promicro/rules.mk
@@ -0,0 +1,8 @@
+# Copyright 2021 Bartosz Nowak (@dumam)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
diff --git a/keyboards/handwired/dactyl_manuform/6x6/readme.md b/keyboards/handwired/dactyl_manuform/6x6/readme.md
new file mode 100644
index 0000000000..9b079be466
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6/readme.md
@@ -0,0 +1,63 @@
+# Dactyl Manuform (6x6) optional 5thumb cluster
+
+## Dactyl Manufrom 6x6
+
+![Dactyl Manufrom 6x6](https://i.imgur.com/j8dsBgs.jpeg)
+
+## Dactyl Manufrom 6x6 with 5 key thumb cluster
+
+![Dactyl Manufrom 6x6 with thumb](https://i.imgur.com/C7FRiwd.jpeg)
+
+## Description
+
+* Keyboard Maintainer: [dumam for 5thumb](https://github.com/DuMaM) and others
+* Hardware Supported: STM32F4BlackPill, Promicro and clones
+
+Basic guide how to build 6x6 board is in root keyboard dir. This will help you to to create your own board with 6key based cluster with promicro. [For more click here](../readme.md).
+
+If you want to use 5thumb cluster or stm32, you also should read base guide, but please came back here after you finish 😉.
+
+For my build I used stm32f411 black pill. It's pretty cheap board and I highly recommend you to buy one from official distributors, to support board creators. [To buy it, please go into designer site](https://github.com/WeActTC/MiniSTM32F4x1).
+
+I recommend using stm32 boards for this project, because QMK recently added support for [tinyuf2 bootloader](https://github.com/adafruit/tinyuf2). This bootloader is great for cases where you are going to use QMK Configurator and don't want to use any command line interface. This way when you need change keyboard layout, you only need an UF2 file. Setting up board in boot mode will allow you to drag and drop it on to created STM32F flash drive.
+![BlackPill Schematic](blackpill_f411/STM32F4x1_PinoutDiagram_RichardBalint.png "Schematic of stm32f4 blackpill")
+
+For case I used 3D models form here. Big thanks to creators.
+
+- [dactyl-manuform-mini-keyboard](https://github.com/l4u/dactyl-manuform-mini-keyboard)
+- [dactyl-manuform](https://github.com/carbonfet/dactyl-manuform)
+- [Good build guide](https://medium.com/swlh/complete-idiot-guide-for-building-a-dactyl-manuform-keyboard-53454845b065)
+
+## STM32 Usage
+
+![BlackPill](https://raw.githubusercontent.com/WeActTC/MiniSTM32F4x1/master/images/STM32F4x1_PinoutDiagram_RichardBalint.png)
+
+My fixes allows for using STM32 with all keymaps located in this dir. Please note that you need to pull down and up B10 pin. I used here 68kohm resistor. Don't use bigger one then 100kohm and lower then 10kohm. Pin you should use for this it B10. [More can be found here](https://beta.docs.qmk.fm/using-qmk/hardware-features/feature_split_keyboard#setting-handedness).
+
+### Features
+
+- any board could be master one, and they can be used separately from each other
+- it's using full usart (4 cables), mostly due to some stability and half detection problems
+- easy keymaps update -> drag and drop file
+- pin used for rows (B12, B13, B14, B15, A8 , A9, A10) and for cols (B1, B0, A7, A6, A5, A4)
+
+## Build
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+After setting up your build environment you can try to build it with those commands.
+
+Make Promicro based img:
+
+ qmk compile -kb keyboards/handwired/dactyl_manuform/6x6 -km default
+
+Make BlackPill one:
+
+ qmk compile -kb keyboards/handwired/dactyl_manuform/6x6/blackpill_f411 -km default
+
+## Bootloader for BlackPill
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at F1 for left side, and F7 for right side.
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET`, in dumam keymap it's assigned to F1 and F12 keys on mod layers.
diff --git a/keyboards/handwired/dactyl_manuform/6x6/rules.mk b/keyboards/handwired/dactyl_manuform/6x6/rules.mk
index 3036ebe1db..84645084d3 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/6x6/rules.mk
@@ -1,9 +1,3 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = caterina
-
# Build Options
# change yes to no to disable
#
@@ -12,11 +6,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = handwired/dactyl_manuform/6x6/promicro
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.c b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.c
new file mode 100644
index 0000000000..ad213e2b75
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.c
@@ -0,0 +1,5 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "6x6_4.h"
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h
new file mode 100644
index 0000000000..7c767cae7e
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h
@@ -0,0 +1,37 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "dactyl_manuform.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x6_4( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \
+ L50, L51, L52, L53, R52, R53, R54, R55, \
+ L54, L55, R50, R51, \
+ L64, L65, R60, R61, \
+ L62, L63, R62, R63 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { L50, L51, L52, L53, L54, L55 }, \
+ { XXX, XXX, L62, L63, L64, L65 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, R54, R55 }, \
+ { R60, R61, R62, R63, XXX, XXX } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/config.h b/keyboards/handwired/dactyl_manuform/6x6_4/config.h
new file mode 100644
index 0000000000..8f965f6957
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/config.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define PRODUCT_ID 0x3636
+#define DEVICE_VER 0x0001
+#define PRODUCT Dactyl-Manuform (6x6+4)
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/info.json b/keyboards/handwired/dactyl_manuform/6x6_4/info.json
new file mode 100644
index 0000000000..470e775c0e
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/info.json
@@ -0,0 +1,108 @@
+{
+ "keyboard_name": "Dactyl Manuform 6x6 4 extra keys",
+ "url": "",
+ "maintainer": "dmik",
+ "layouts": {
+ "LAYOUT_6x6_4": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+ {"x": 16, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+ {"x": 16, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+ {"x": 16, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4},
+ {"x": 16, "y": 4},
+
+ {"x": 0, "y": 5},
+ {"x": 1, "y": 5},
+ {"x": 2, "y": 5},
+ {"x": 3, "y": 5},
+
+ {"x": 13, "y": 5},
+ {"x": 14, "y": 5},
+ {"x": 15, "y": 5},
+ {"x": 16, "y": 5},
+
+ {"x": 4, "y": 6},
+ {"x": 5, "y": 6},
+
+ {"x": 11, "y": 6},
+ {"x": 12, "y": 6},
+
+ {"x": 6, "y": 7},
+ {"x": 7, "y": 7},
+
+ {"x": 9, "y": 7},
+ {"x": 10, "y": 7},
+
+ {"x": 6, "y": 8},
+ {"x": 7, "y": 8},
+
+ {"x": 9, "y": 8},
+ {"x": 10, "y": 8}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/6x6_4/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9b4de373ec
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x6_4(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
+ KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLASH,
+ _______,_______, KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,_______,_______,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x6_4(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x6_4(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/rules.mk b/keyboards/handwired/dactyl_manuform/6x6_4/rules.mk
new file mode 100644
index 0000000000..0415379827
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.c b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.c
new file mode 100644
index 0000000000..a564360b48
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.c
@@ -0,0 +1,5 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "6x6_kinesis.h"
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h
new file mode 100644
index 0000000000..00f931281b
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h
@@ -0,0 +1,37 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "dactyl_manuform.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x6_kinesis( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \
+ L50, L51, L52, L53, R52, R53, R54, R55, \
+ L54, L55, R50, R51, \
+ L64, L65, R60, R61, \
+ L62, L63, R62, R63 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { L50, L51, L52, L53, L54, L55 }, \
+ { XXX, XXX, L62, L63, L64, L65 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, R54, R55 }, \
+ { R60, R61, R62, R63, XXX, XXX } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h b/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h
new file mode 100644
index 0000000000..8f965f6957
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define PRODUCT_ID 0x3636
+#define DEVICE_VER 0x0001
+#define PRODUCT Dactyl-Manuform (6x6+4)
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json b/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json
new file mode 100644
index 0000000000..e106a04c69
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json
@@ -0,0 +1,108 @@
+{
+ "keyboard_name": "Dactyl Manuform 6x6 Kinesis Advantage edition",
+ "url": "",
+ "maintainer": "dmik",
+ "layouts": {
+ "LAYOUT_6x6_kinesis": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+ {"x": 16, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+ {"x": 16, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+ {"x": 16, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4},
+ {"x": 16, "y": 4},
+
+ {"x": 1, "y": 5},
+ {"x": 2, "y": 5},
+ {"x": 3, "y": 5},
+ {"x": 4, "y": 5},
+
+ {"x": 12, "y": 5},
+ {"x": 13, "y": 5},
+ {"x": 14, "y": 5},
+ {"x": 15, "y": 5},
+
+ {"x": 5, "y": 7, "h": 2},
+ {"x": 6, "y": 7, "h": 2},
+
+ {"x": 10, "y": 7, "h": 2},
+ {"x": 11, "y": 7, "h": 2},
+
+ {"x": 6, "y": 6},
+ {"x": 7, "y": 6},
+
+ {"x": 9, "y": 6},
+ {"x": 10, "y": 6},
+
+ {"x": 7, "y": 8},
+ {"x": 7, "y": 7},
+
+ {"x": 9, "y": 7},
+ {"x": 9, "y": 8}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/6x6_kinesis/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2ef9794d6d
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2021 Dmitriy Kuminov (@dmik)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x6_kinesis(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_CAPS,
+ KC_EQL , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSLS,
+ KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_GRV , LOWER , KC_LEFT, KC_RGHT, KC_UP , KC_DOWN, KC_LBRC, KC_RBRC,
+ KC_BSPC, KC_DEL , KC_ENT , KC_SPC ,
+ KC_LGUI, KC_LALT, KC_RCTL, KC_RGUI,
+ KC_END , KC_HOME, KC_PGUP, KC_PGDN
+ ),
+
+ [_LOWER] = LAYOUT_6x6_kinesis(
+ _______, KC_F11 , KC_F12 , _______, _______, _______, KC_BRID, KC_BRIU, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_INS , _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x6_kinesis(
+ _______, KC_F11 , KC_F12 , _______, _______, _______, KC_BRID, KC_BRIU, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_INS , _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/readme.md b/keyboards/handwired/dactyl_manuform/6x6_kinesis/readme.md
new file mode 100644
index 0000000000..1e44cc9601
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/readme.md
@@ -0,0 +1,85 @@
+# Kinesis Advantage Keymap
+
+## About this keymap
+
+This keymap is designed after Kinesis Advantage's QWERTY layout with the following key differences:
+ - There are only 10 F-keys in the main layer, F1 and F2 are moved to additional LOWER layer.
+ - The INS key acts like a LOWER layer activation key and Del in LOWER layer ats like INS.
+ - LCtl is placed where CAPS should be and CAPS is moved to a free key after F10.
+ - Brigtness and volume control keys are added to LOWER layer.
+
+ The keymap file also contains RAISE layer but it is currently equivalent to LOWER layer and does
+ not have an activation key mapped. It is intended for possible extensions.
+
+## Mapping details
+
+ Main QUERTY layer:
+ ,-------------------------------------------. ,-------------------------------------------.
+ | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | CAPS |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | LCtl | A | S | D | F | G | | H | J | K | L | ; | ' |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | LShift | Z | X | C | V | B | | N | M | , | . | / | RShift |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | ` | LOWER| Left | Rght | | Up | Dn | [ | ] |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | LGui | LAlt | | RCtl | RGui |
+ ,------|------|------| |------+------+------.
+ | | | Home | | PgUp | | |
+ | BkSp | Del |------| |------|Enter |Space |
+ | | | End | | PgDn | | |
+ `--------------------' `--------------------'
+
+ LOWER layer:
+ ,-------------------------------------------. ,-------------------------------------------.
+ | | F11 | F12 | | | | |BriDn |BriUp |VMute |VolDn |VolUp | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | | | | |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | INS |------| |------| | |
+ | | | | | | | |
+ `--------------------' `--------------------'
+
+## Soldering details
+
+The below picture shows correspondence between the keys and the row/column wires of the left and
+right halves:
+
+ LOWER layer:
+ ,-------------------------------------------. ,-------------------------------------------.
+ | L00 | L01 | L02 | L03 | L04 | L05 | | R00 | R01 | R02 | R03 | R04 | R05 |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | L10 | L11 | L12 | L13 | L14 | L15 | | R10 | R11 | R12 | R13 | R14 | R15 |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | L20 | L21 | L22 | L23 | L24 | L25 | | R20 | R21 | R22 | R23 | R24 | R25 |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | L30 | L31 | L32 | L33 | L34 | L35 | | R30 | R31 | R32 | R33 | R34 | R35 |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | L40 | L41 | L42 | L43 | L44 | L45 | | R40 | R41 | R42 | R43 | R44 | R45 |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | L50 | L51 | L52 | L53 | | R52 | R53 | R54 | R55 |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | L64 | L65 | | R60 | R61 |
+ ,------|------|------| |------+------+------.
+ | | | L63 | | R62 | | |
+ | L54 | L55 |------| |------| R50 | R51 |
+ | | | L62 | | R63 | | |
+ `--------------------' `--------------------'
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/rules.mk b/keyboards/handwired/dactyl_manuform/6x6_kinesis/rules.mk
new file mode 100644
index 0000000000..0415379827
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_manuform/6x7/6x7.c b/keyboards/handwired/dactyl_manuform/6x7/6x7.c
new file mode 100644
index 0000000000..eea518da09
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/6x7.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "6x7.h"
diff --git a/keyboards/handwired/dactyl_manuform/6x7/6x7.h b/keyboards/handwired/dactyl_manuform/6x7/6x7.h
new file mode 100644
index 0000000000..8d69ddd097
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/6x7.h
@@ -0,0 +1,35 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "dactyl_manuform.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L52, L53, R52, R53, \
+ L54, L55, R50, R51, \
+ L64, L65, R60, R61, \
+ L62, L63, R62, R63 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { XXX, XXX, XXX, L52, L53, L54, L55 }, \
+ { XXX, XXX, XXX, L62, L63, L64, L65 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x7/config.h b/keyboards/handwired/dactyl_manuform/6x7/config.h
new file mode 100644
index 0000000000..f66f4b036f
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/config.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define PRODUCT_ID 0x3636
+#define DEVICE_VER 0x0001
+#define PRODUCT Dactyl-Manuform (6x7)
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5, B7 }
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/dactyl_manuform/6x7/info.json b/keyboards/handwired/dactyl_manuform/6x7/info.json
new file mode 100644
index 0000000000..7b08dd8881
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/info.json
@@ -0,0 +1,114 @@
+{
+ "keyboard_name": "Dactyl Manuform 6x7",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+ {"x": 16, "y": 0},
+ {"x": 17, "y": 0},
+ {"x": 18, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+ {"x": 6, "y": 1},
+
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+ {"x": 16, "y": 1},
+ {"x": 17, "y": 1},
+ {"x": 18, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 2},
+ {"x": 17, "y": 2},
+ {"x": 18, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+ {"x": 6, "y": 3},
+
+ {"x": 12, "y": 3},
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+ {"x": 16, "y": 3},
+ {"x": 17, "y": 3},
+ {"x": 18, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+ {"x": 6, "y": 4},
+
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4},
+ {"x": 16, "y": 4},
+ {"x": 17, "y": 4},
+ {"x": 18, "y": 4},
+
+ {"x": 3, "y": 5},
+ {"x": 4, "y": 5},
+
+ {"x": 14, "y": 5},
+ {"x": 15, "y": 5},
+
+ {"x": 5, "y": 6},
+ {"x": 6, "y": 6},
+
+ {"x": 12, "y": 6},
+ {"x": 13, "y": 6},
+
+ {"x": 7, "y": 7},
+ {"x": 8, "y": 7},
+
+ {"x": 10, "y": 7},
+ {"x": 11, "y": 7},
+
+ {"x": 7, "y": 8},
+ {"x": 8, "y": 8},
+
+ {"x": 10, "y": 8},
+ {"x": 11, "y": 8}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/6x7/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/6x7/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2b699eb683
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12 , _______,
+ _______, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ _______, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_LSFT , _______,
+ _______, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT,KC_SLSH, KC_LCTL , _______,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE ,KC_SPC , KC_ENT, LOWER ,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC,KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 , _______,
+ _______, KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NLCK,KC_INS ,KC_SLCK,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/dactyl_manuform/6x7/rules.mk b/keyboards/handwired/dactyl_manuform/6x7/rules.mk
new file mode 100644
index 0000000000..0415379827
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/6x7/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
index 11c9997771..d304814d7d 100644
--- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
+++ b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
@@ -4,6 +4,8 @@
# include "4x5.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_4x6)
# include "4x6.h"
+#elif defined(KEYBOARD_handwired_dactyl_manuform_4x6_5)
+# include "4x6_5.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6)
# include "5x6.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6_5)
@@ -14,6 +16,12 @@
# include "5x7.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_6x6)
# include "6x6.h"
+#elif defined(KEYBOARD_handwired_dactyl_manuform_6x6_4)
+# include "6x6_4.h"
+#elif defined(KEYBOARD_handwired_dactyl_manuform_6x6_kinesis)
+# include "6x6_kinesis.h"
+#elif defined(KEYBOARD_handwired_dactyl_manuform_6x7)
+# include "6x7.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_dmote_62key)
# include "62key.h"
#endif
diff --git a/keyboards/handwired/dactyl_manuform/readme.md b/keyboards/handwired/dactyl_manuform/readme.md
index 3221da0e9d..4882f4ab4b 100644
--- a/keyboards/handwired/dactyl_manuform/readme.md
+++ b/keyboards/handwired/dactyl_manuform/readme.md
@@ -1,4 +1,4 @@
-Dactyl Manuform (4x5, 5x6, 5x7, 6x6)
+Dactyl Manuform (4x5, 5x6, 5x7, 6x6, 6x7)
======
the [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. all information needed for making one is in the first link.
![Imgur](https://i.imgur.com/7y0Vbyd.jpg)
@@ -53,6 +53,11 @@ Keymap of Loligagger from geekhack.
#### Default
Simple QWERTY layout with 3 Layers.
+### [Keymaps 6x7](/keyboards/handwired/dactyl_manuform/6x7/keymaps/)
+
+#### Default
+Simple QWERTY layout with 3 Layers.
+
## Required Hardware
Apart from diodes and key switches for the keyboard matrix in each half, you
diff --git a/keyboards/handwired/dactyl_promicro/rules.mk b/keyboards/handwired/dactyl_promicro/rules.mk
index b6353cf37f..f5e44b43f3 100644
--- a/keyboards/handwired/dactyl_promicro/rules.mk
+++ b/keyboards/handwired/dactyl_promicro/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_rah/rules.mk b/keyboards/handwired/dactyl_rah/rules.mk
index 3036ebe1db..0415379827 100644
--- a/keyboards/handwired/dactyl_rah/rules.mk
+++ b/keyboards/handwired/dactyl_rah/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/daishi/rules.mk b/keyboards/handwired/daishi/rules.mk
index 7e5f287909..bc5f2b1d0f 100644
--- a/keyboards/handwired/daishi/rules.mk
+++ b/keyboards/handwired/daishi/rules.mk
@@ -4,19 +4,17 @@ MCU = at90usb1286
# Bootloader selection
BOOTLOADER = atmel-dfu
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# Build Options
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
ENCODER_ENABLE = yes # Add rotary encoder support
DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/datahand/rules.mk b/keyboards/handwired/datahand/rules.mk
index e42ec3021e..06bc1c5040 100644
--- a/keyboards/handwired/datahand/rules.mk
+++ b/keyboards/handwired/datahand/rules.mk
@@ -5,18 +5,17 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = yes # We definitely have a nonstandard matrix
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
# Project specific files
SRC = matrix.c
diff --git a/keyboards/handwired/dc/mc/001/rules.mk b/keyboards/handwired/dc/mc/001/rules.mk
index 3ec538b93a..ce162edf45 100644
--- a/keyboards/handwired/dc/mc/001/rules.mk
+++ b/keyboards/handwired/dc/mc/001/rules.mk
@@ -13,10 +13,7 @@ ENCODER_ENABLE = yes # Using a rotary encoder for volume control
MOUSEKEY_ENABLE = no # Mouse keys
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ddg_56/rules.mk b/keyboards/handwired/ddg_56/rules.mk
index ac0b911826..38329b85da 100644
--- a/keyboards/handwired/ddg_56/rules.mk
+++ b/keyboards/handwired/ddg_56/rules.mk
@@ -6,14 +6,13 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/handwired/dygma/raise/ansi/ansi.c b/keyboards/handwired/dygma/raise/ansi/ansi.c
new file mode 100644
index 0000000000..652b6551d2
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/ansi/ansi.c
@@ -0,0 +1,81 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+// "led_map" is taken from kaleidoscope
+// LHK = Left Hand Keys
+// LPH = "Leds per hand", which isn't _actually_ the number of leds, but instead
+// is just used for indexing
+#define LHK 33
+#define LPH 72
+
+const uint8_t led_map[DRIVER_LED_TOTAL] = {
+ // left side - 32 keys includes LP: key 19 is missing for ANSI layout
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 0xff, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 68, 69,
+
+ // right side - 36 keys includes LP
+ 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 15 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 7 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
+ 20 + LPH, 21 + LPH, 22 + LPH, 23 + LPH, 24 + LPH, 25 + LPH, 26 + LPH, 27 + LPH, 28 + LPH, 29 + LPH, 30 + LPH, 31 + LPH, 32 + LPH, 33 + LPH, 68 + LPH, 69 + LPH,
+
+ // left under glow - 30
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+
+ // right underglow - 32
+ 34 + LPH, 35 + LPH, 36 + LPH, 37 + LPH, 38 + LPH, 39 + LPH, 40 + LPH, 41 + LPH, 42 + LPH, 43 + LPH, 44 + LPH, 45 + LPH, 46 + LPH, 47 + LPH, 48 + LPH, 49 + LPH, 50 + LPH, 51 + LPH,
+ 52 + LPH, 53 + LPH, 54 + LPH, 55 + LPH, 56 + LPH, 57 + LPH, 58 + LPH, 59 + LPH, 60 + LPH, 61 + LPH, 62 + LPH, 63 + LPH, 64 + LPH, 65 + LPH, 0xff
+};
+
+// taken from "key_led_map" and reformatted
+// ISO & ANSI (ANSI has no LED at 20, but this key can never be pressed so we can have just one map).
+led_config_t g_led_config = { {
+ // left hand
+ { 0 , 1 , 2 , 3 , 4 , 5 , 6 , NO_LED } ,
+ { 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , NO_LED } ,
+ { 13 , 14 , 15 , 16 , 17 , 18 , NO_LED , NO_LED } ,
+ { 19 , 20 , 21 , 22 , 23 , 24 , 25 , NO_LED } ,
+ { 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
+
+ // right hand
+ { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
+ { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
+ { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
+ { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
+ { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
+ }, {
+ // generated from the svg image of the keyboard, see create-led-config.js
+ {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
+ {115, 10}, {84, 16}, {92, 16}, {98, 16}, {104, 16}, {110, 16}, {116, 16}, {85, 22},
+ {0, 0},
+ {94, 22}, {100, 22}, {106, 22}, {112, 22}, {118, 22}, {83, 28}, {90, 28}, {98, 28}, {106, 28}, {116, 28}, {111, 34},
+ {118, 34}, {168, 3}, {159, 3}, {153, 3}, {147, 3}, {141, 3}, {135, 3}, {129, 3}, {168, 16}, {162, 10}, {156, 10},
+ {150, 10}, {144, 10}, {139, 10}, {133, 10}, {127, 10}, {170, 10}, {159, 16}, {153, 16}, {147, 16}, {141, 16}, {135, 16},
+ {129, 16}, {166, 22}, {154, 22}, {148, 22}, {142, 22}, {136, 22}, {130, 22}, {170, 28}, {163, 28}, {156, 28}, {149, 28},
+ {140, 28}, {131, 28}, {136, 34}, {128, 34}, {78, 13}, {78, 6}, {80, 0}, {87, 0}, {95, 0}, {103, 0}, {111, 0}, {119, 0},
+ {122, 3}, {121, 9}, {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61},
+ {103, 64}, {96, 64}, {88, 64}, {81, 63}, {76, 60}, {75, 52}, {75, 46}, {74, 38}, {74, 32}, {75, 27}, {77, 21}, {175, 10},
+ {175, 4}, {172, 0}, {164, 0}, {157, 0}, {149, 0}, {142, 0}, {134, 0}, {127, 0}, {123, 3}, {122, 8}, {122, 15}, {124, 21},
+ {124, 27}, {124, 33}, {126, 38}, {131, 42}, {134, 48}, {135, 55}, {137, 61}, {143, 63}, {150, 63}, {158, 63}, {166, 63},
+ {173, 63}, {177, 59}, {178, 49}, {179, 40}, {179, 31}, {177, 25}, {175, 20}, {175, 15}, {123, 54}
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 0,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4
+ }
+};
diff --git a/keyboards/handwired/dygma/raise/ansi/info.json b/keyboards/handwired/dygma/raise/ansi/info.json
new file mode 100644
index 0000000000..f7f9a07c1c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/ansi/info.json
@@ -0,0 +1,1115 @@
+{
+ "keyboard_name": "Dygma Raise",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
+ "maintainer": "ibash",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "[",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "]",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "enter",
+ "h": 2,
+ "w": 1.25,
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "#",
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 1.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "\\",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "{",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "}",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "\\",
+ "w": 1.5,
+ "x": 15.25,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "enter",
+ "w": 2.25,
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 2.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "[",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "]",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "enter",
+ "h": 2,
+ "w": 1.25,
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "#",
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 1.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "\\",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/laptreus/keymaps/vosechu/readme.md b/keyboards/handwired/dygma/raise/ansi/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/laptreus/keymaps/vosechu/readme.md
+++ b/keyboards/handwired/dygma/raise/ansi/rules.mk
diff --git a/keyboards/handwired/dygma/raise/config.h b/keyboards/handwired/dygma/raise/config.h
new file mode 100644
index 0000000000..674fd592cf
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x1209
+#define PRODUCT_ID 0x2201
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Dygma
+#define PRODUCT Raise
+
+/* key matrix size */
+// rows are doubled for split
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+/* The scanners already debounce for us */
+#define DEBOUNCE 0
+
+#define DRIVER_LED_TOTAL 132
diff --git a/keyboards/handwired/dygma/raise/halconf.h b/keyboards/handwired/dygma/raise/halconf.h
new file mode 100644
index 0000000000..ebe78c3bec
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/dygma/raise/iso/info.json b/keyboards/handwired/dygma/raise/iso/info.json
new file mode 100644
index 0000000000..f7f9a07c1c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/iso/info.json
@@ -0,0 +1,1115 @@
+{
+ "keyboard_name": "Dygma Raise",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
+ "maintainer": "ibash",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "[",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "]",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "enter",
+ "h": 2,
+ "w": 1.25,
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "#",
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 1.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "\\",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "{",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "}",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "\\",
+ "w": 1.5,
+ "x": 15.25,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "enter",
+ "w": 2.25,
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 2.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {
+ "label": "esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 8.75,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 9.75,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "backspace",
+ "w": 2,
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "tab",
+ "w": 1.5,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 8.25,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 9.25,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "[",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "]",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "enter",
+ "h": 2,
+ "w": 1.25,
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "caps",
+ "w": 1.75,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": ";",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "'",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "#",
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "shift",
+ "w": 1.25,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "\\",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 3
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "shift",
+ "w": 2.75,
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 1.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 2.5,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "\u2014",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 4
+ },
+ {
+ "label": "...",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 4
+ },
+ {
+ "label": "alt",
+ "w": 1.25,
+ "x": 11.75,
+ "y": 4
+ },
+ {
+ "label": "fn",
+ "w": 1.25,
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "os",
+ "w": 1.25,
+ "x": 14.25,
+ "y": 4
+ },
+ {
+ "label": "ctrl",
+ "w": 1.25,
+ "x": 15.5,
+ "y": 4
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 3.75,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 5.25,
+ "y": 5
+ },
+ {
+ "label": ".",
+ "w": 1.5,
+ "x": 8.75,
+ "y": 5
+ },
+ {
+ "label": "..",
+ "w": 1.5,
+ "x": 10.25,
+ "y": 5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dygma/raise/iso/iso.c b/keyboards/handwired/dygma/raise/iso/iso.c
new file mode 100644
index 0000000000..ec2607d06c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/iso/iso.c
@@ -0,0 +1,79 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+// "led_map" is taken from kaleidoscope
+// LHK = Left Hand Keys
+// LPH = "Leds per hand", which isn't _actually_ the number of leds, but instead
+// is just used for indexing
+#define LHK 33
+#define LPH 72
+
+const uint8_t led_map[DRIVER_LED_TOTAL] = {
+ // left side - 33 keys
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 68, 69,
+
+ // right side - 36 keys
+ 0 + LPH, 1 + LPH, 2 + LPH, 3 + LPH, 4 + LPH, 5 + LPH, 6 + LPH, 15 + LPH, 8 + LPH, 9 + LPH, 10 + LPH, 11 + LPH, 12 + LPH, 13 + LPH, 14 + LPH, 7 + LPH, 16 + LPH, 17 + LPH, 18 + LPH, 19 + LPH,
+ 20 + LPH, 21 + LPH, 22 + LPH, 23 + LPH, 24 + LPH, 25 + LPH, 26 + LPH, 27 + LPH, 28 + LPH, 29 + LPH, 30 + LPH, 31 + LPH, 32 + LPH, 33 + LPH, 68 + LPH, 69 + LPH,
+
+ // left under glow - 30 keys
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+
+ // right underglow - 32 keys
+ 34 + LPH, 35 + LPH, 36 + LPH, 37 + LPH, 38 + LPH, 39 + LPH, 40 + LPH, 41 + LPH, 42 + LPH, 43 + LPH, 44 + LPH, 45 + LPH, 46 + LPH, 47 + LPH, 48 + LPH, 49 + LPH, 50 + LPH, 51 + LPH,
+ 52 + LPH, 53 + LPH, 54 + LPH, 55 + LPH, 56 + LPH, 57 + LPH, 58 + LPH, 59 + LPH, 60 + LPH, 61 + LPH, 62 + LPH, 63 + LPH, 64 + LPH, 65 + LPH, 0xff
+};
+
+// taken from "key_led_map" and reformatted
+// ISO & ANSI (ANSI has no LED at 20, but this key can never be pressed so we can have just one map).
+led_config_t g_led_config = { {
+ // left hand
+ { 0 , 1 , 2 , 3 , 4 , 5 , 6 , NO_LED } ,
+ { 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , NO_LED } ,
+ { 13 , 14 , 15 , 16 , 17 , 18 , NO_LED , NO_LED } ,
+ { 19 , 20 , 21 , 22 , 23 , 24 , 25 , NO_LED } ,
+ { 26 , 27 , 28 , 29 , 30 , NO_LED , 31 , 32 } ,
+
+ // right hand
+ { NO_LED , 6 + LHK , 5 + LHK , 4 + LHK , 3 + LHK , 2 + LHK , 1 + LHK , 0 + LHK } ,
+ { 14 + LHK , 13 + LHK , 12 + LHK , 11 + LHK , 10 + LHK , 9 + LHK , 8 + LHK , 7 + LHK } ,
+ { NO_LED , 21 + LHK , 20 + LHK , 19 + LHK , 18 + LHK , 17 + LHK , 16 + LHK , 15 + LHK } ,
+ { NO_LED , NO_LED , 27 + LHK , 26 + LHK , 25 + LHK , 24 + LHK , 23 + LHK , 22 + LHK } ,
+ { 35 + LHK , 34 + LHK , 33 + LHK , 32 + LHK , 31 + LHK , 30 + LHK , 29 + LHK , 28 + LHK }
+ }, {
+ // generated from the svg image of the keyboard, see create-led-config.js
+ {82, 3}, {88, 3}, {94, 3}, {100, 3}, {106, 3}, {112, 3}, {118, 3}, {84, 10}, {91, 10}, {97, 10}, {103, 10}, {109, 10},
+ {115, 10}, {84, 16}, {92, 16}, {98, 16}, {104, 16}, {110, 16}, {116, 16}, {82, 22}, {88, 22}, {94, 22}, {100, 22},
+ {106, 22}, {112, 22}, {118, 22}, {83, 28}, {90, 28}, {98, 28}, {106, 28}, {116, 28}, {111, 34}, {118, 34}, {168, 3},
+ {159, 3}, {153, 3}, {147, 3}, {141, 3}, {135, 3}, {129, 3}, {170, 13}, {162, 10}, {156, 10}, {150, 10}, {144, 10},
+ {139, 10}, {133, 10}, {127, 10}, {164, 16}, {158, 16}, {152, 16}, {146, 16}, {140, 16}, {134, 16}, {128, 16}, {166, 22},
+ {154, 22}, {148, 22}, {142, 22}, {136, 22}, {130, 22}, {170, 28}, {163, 28}, {156, 28}, {149, 28}, {140, 28}, {131, 28},
+ {136, 34}, {128, 34}, {78, 13}, {78, 6}, {80, 0}, {87, 0}, {95, 0}, {103, 0}, {111, 0}, {119, 0}, {122, 3}, {121, 9},
+ {120, 15}, {122, 21}, {123, 27}, {123, 33}, {120, 38}, {116, 42}, {114, 48}, {112, 55}, {109, 61}, {103, 64}, {96, 64},
+ {88, 64}, {81, 63}, {76, 60}, {75, 52}, {75, 46}, {74, 38}, {74, 32}, {75, 27}, {77, 21}, {175, 10}, {175, 4}, {172, 0},
+ {164, 0}, {157, 0}, {149, 0}, {142, 0}, {134, 0}, {127, 0}, {123, 3}, {122, 8}, {122, 15}, {124, 21}, {124, 27}, {124, 33},
+ {126, 38}, {131, 42}, {134, 48}, {135, 55}, {137, 61}, {143, 63}, {150, 63}, {158, 63}, {166, 63}, {173, 63}, {177, 59},
+ {178, 49}, {179, 40}, {179, 31}, {177, 25}, {175, 20}, {175, 15}, {123, 54}
+
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4
+ }
+};
diff --git a/keyboards/m65/rev1/readme.md b/keyboards/handwired/dygma/raise/iso/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/m65/rev1/readme.md
+++ b/keyboards/handwired/dygma/raise/iso/rules.mk
diff --git a/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c b/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c
new file mode 100644
index 0000000000..427b9ddb14
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/ansi/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2021 Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum {
+ QWERTY,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[QWERTY] = LAYOUT_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
+ KC_BSPC, KC_ENT, KC_NO, KC_DEL
+)
+};
+
+/* template for new layouts:
+LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+)
+*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md b/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md
new file mode 100644
index 0000000000..ceafd78f41
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/ansi/readme.md
@@ -0,0 +1 @@
+# The ansi keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/keymaps/default/keymap.c b/keyboards/handwired/dygma/raise/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c766fb7203
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2021 Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum {
+ QWERTY,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[QWERTY] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
+ KC_BSPC, KC_ENT, KC_NO, KC_DEL
+)
+};
+
+/* template for new layouts:
+LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+)
+*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/default/readme.md b/keyboards/handwired/dygma/raise/keymaps/default/readme.md
new file mode 100644
index 0000000000..1103cb349b
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c b/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..2fd0b49b0b
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/iso/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 2021 Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum {
+ QWERTY,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[QWERTY] = LAYOUT_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, RGB_MOD, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL,
+ KC_BSPC, KC_ENT, KC_NO, KC_DEL
+)
+};
+
+/* template for new layouts:
+LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+)
+*/
diff --git a/keyboards/handwired/dygma/raise/keymaps/iso/readme.md b/keyboards/handwired/dygma/raise/keymaps/iso/readme.md
new file mode 100644
index 0000000000..5f8924ae2c
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/keymaps/iso/readme.md
@@ -0,0 +1 @@
+# The iso keymap for Dygma's Raise
diff --git a/keyboards/handwired/dygma/raise/leds.c b/keyboards/handwired/dygma/raise/leds.c
new file mode 100644
index 0000000000..3f6037cbfa
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/leds.c
@@ -0,0 +1,101 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+#include "i2c_master.h"
+#include "led_tables.h"
+#include "rgb_matrix.h"
+#include <string.h>
+#include "raise.h"
+#include "wire-protocol-constants.h"
+#include "print.h"
+#include "leds.h"
+
+struct __attribute__((packed)) cRGB {
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+};
+
+#define LEDS_PER_HAND 72
+#define LED_BANKS 9
+#define LEDS_PER_BANK 8
+#define LED_BYTES_PER_BANK (sizeof(cRGB) * LEDS_PER_BANK)
+
+// shifting << 1 is because drivers/chibios/i2c_master.h expects the address
+// shifted.
+// 0x58 and 0x59 are the addresses defined in dygma/raise/Hand.h
+#define I2C_ADDR_LEFT (0x58 << 1)
+#define I2C_ADDR_RIGHT (0x59 << 1)
+#define I2C_ADDR(hand) ((hand) ? I2C_ADDR_RIGHT : I2C_ADDR_LEFT)
+#define LEFT 0
+#define RIGHT 1
+
+static cRGB led_state[2 * LEDS_PER_HAND];
+
+void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b) {
+ uint8_t buf[] = {TWI_CMD_LED_SET_ALL_TO, b, g, r};
+ i2c_transmit(I2C_ADDR(LEFT), buf, sizeof(buf), I2C_TIMEOUT);
+ wait_us(10);
+ i2c_transmit(I2C_ADDR(RIGHT), buf, sizeof(buf), I2C_TIMEOUT);
+ wait_us(10);
+}
+
+void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b) {
+ int sled = led_map[led];
+ uint8_t buf[] = {TWI_CMD_LED_SET_ONE_TO, sled & 0x1f, b, g, r};
+ int hand = (sled >= LEDS_PER_HAND) ? RIGHT : LEFT;
+ i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), I2C_TIMEOUT);
+ wait_us(10);
+}
+
+static void set_color(int index, uint8_t r, uint8_t g, uint8_t b) {
+ int sled = led_map[index];
+
+ led_state[sled].r = r;
+ led_state[sled].g = g;
+ led_state[sled].b = b;
+}
+
+static void set_color_all(uint8_t r, uint8_t g, uint8_t b) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) set_color(i, r, g, b);
+}
+
+static void init(void) {}
+
+static void flush(void) {
+ uint8_t command[1 + LED_BYTES_PER_BANK];
+
+ // SUBTLE(ibash) alternate hands when transmitting led data, otherwise the
+ // mcu in the hand seems to have trouble keeping up with the i2c
+ // transmission
+ for (int bank = 0; bank < LED_BANKS; bank++) {
+ for (int hand = 0; hand < 2; hand++) {
+ int addr = I2C_ADDR(hand);
+ int i = (hand * LEDS_PER_HAND) + (bank * LEDS_PER_BANK);
+ uint8_t *bank_data = (uint8_t *)&led_state[i];
+
+ command[0] = TWI_CMD_LED_BASE + bank;
+ memcpy(&command[1], bank_data, LED_BYTES_PER_BANK);
+ i2c_transmit(addr, command, sizeof(command), I2C_TIMEOUT);
+
+ // delay to prevent issues with the i2c bus
+ wait_us(10);
+ }
+ }
+}
+
+const rgb_matrix_driver_t rgb_matrix_driver = {.init = init, .flush = flush, .set_color = set_color, .set_color_all = set_color_all};
diff --git a/keyboards/handwired/dygma/raise/leds.h b/keyboards/handwired/dygma/raise/leds.h
new file mode 100644
index 0000000000..8d70ed70b2
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/leds.h
@@ -0,0 +1,25 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "rgb_matrix.h"
+
+extern const uint8_t led_map[DRIVER_LED_TOTAL];
+
+void set_all_leds_to(uint8_t r, uint8_t g, uint8_t b);
+void set_led_to(int led, uint8_t r, uint8_t g, uint8_t b);
diff --git a/keyboards/handwired/dygma/raise/matrix.c b/keyboards/handwired/dygma/raise/matrix.c
new file mode 100644
index 0000000000..bbcf697a59
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/matrix.c
@@ -0,0 +1,104 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "quantum.h"
+#include "i2c_master.h"
+#include <string.h>
+#include "wire-protocol-constants.h"
+
+// shifting << 1 is because drivers/chibios/i2c_master.h expects the address
+// shifted.
+// 0x58 and 0x59 are the addresses defined in dygma/raise/Hand.h
+#define I2C_ADDR_LEFT (0x58 << 1)
+#define I2C_ADDR_RIGHT (0x59 << 1)
+#define I2C_ADDR(hand) ((hand) ? I2C_ADDR_RIGHT : I2C_ADDR_LEFT)
+#define LEFT 0
+#define RIGHT 1
+
+/* If no key events have occurred, the scanners will time out on reads.
+ * So we don't want to be too permissive here. */
+// TODO(ibash) not convinced this is needed...
+#define MY_I2C_TIMEOUT 10
+#define ROWS_PER_HAND (MATRIX_ROWS / 2)
+
+typedef enum { CHANGED, OFFLINE, UNCHANGED } read_hand_t;
+
+static read_hand_t last_state[2] = {OFFLINE, OFFLINE};
+
+static read_hand_t i2c_read_hand(int hand, matrix_row_t current_matrix[]) {
+ // dygma raise firmware says online is true iff we get the number of
+ // expected bytes (e.g. 6 bytes or ROWS_PER_HAND + 1).
+ // In the case where no keys are pressed the keyscanner will send the same 0
+ // byte over and over. -- so this case is set.
+ //
+ // On the stm32 side if we don't get as many bytes as expecetd the
+ // i2c_receive times out -- so online can be defined as getting
+ // "I2C_STATUS_SUCCESS".
+
+ uint8_t buf[ROWS_PER_HAND + 1];
+ i2c_status_t ret = i2c_receive(I2C_ADDR(hand), buf, sizeof(buf), MY_I2C_TIMEOUT);
+ if (ret != I2C_STATUS_SUCCESS) {
+ return OFFLINE;
+ }
+
+ if (buf[0] != TWI_REPLY_KEYDATA) {
+ return UNCHANGED;
+ }
+
+ int start_row = hand ? ROWS_PER_HAND : 0;
+ matrix_row_t *out = &current_matrix[start_row];
+ memcpy(out, &buf[1], ROWS_PER_HAND);
+
+ return CHANGED;
+}
+
+static int i2c_set_keyscan_interval(int hand, int delay) {
+ uint8_t buf[] = {TWI_CMD_KEYSCAN_INTERVAL, delay};
+ i2c_status_t ret = i2c_transmit(I2C_ADDR(hand), buf, sizeof(buf), MY_I2C_TIMEOUT);
+ return ret;
+}
+
+void matrix_init_custom(void) {
+ i2c_init();
+
+ // ref: https://github.com/Dygmalab/Kaleidoscope/blob/7bac53de106c42ffda889e6854abc06cf43a3c6f/src/kaleidoscope/device/dygma/Raise.cpp#L83
+ // ref: https://github.com/Dygmalab/Kaleidoscope/blob/7bac53de106c42ffda889e6854abc06cf43a3c6f/src/kaleidoscope/device/dygma/raise/Hand.cpp#L73
+ i2c_set_keyscan_interval(LEFT, 50);
+ i2c_set_keyscan_interval(RIGHT, 50);
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ // HACK(ibash) without the delay between the two calls to i2c_read_hand, the
+ // second call to i2c_read_hand breaks. I observed that the i2s start isn't
+ // sent, or maybe it is, but the address matcher in the attiny can't recognize
+ // it. In any case, a short delay fixes it.
+ read_hand_t left_state = i2c_read_hand(LEFT, current_matrix);
+ wait_us(10);
+ read_hand_t right_state = i2c_read_hand(RIGHT, current_matrix);
+
+
+ if ((last_state[LEFT] == OFFLINE && left_state != OFFLINE) || (last_state[RIGHT] == OFFLINE && right_state != OFFLINE)) {
+ // reinitialize both sides
+ i2c_set_keyscan_interval(LEFT, 50);
+ i2c_set_keyscan_interval(RIGHT, 50);
+ }
+
+ last_state[LEFT] = left_state;
+ last_state[RIGHT] = right_state;
+
+ bool matrix_has_changed = left_state == CHANGED || right_state == CHANGED;
+
+ return matrix_has_changed;
+}
diff --git a/keyboards/handwired/dygma/raise/mcuconf.h b/keyboards/handwired/dygma/raise/mcuconf.h
new file mode 100644
index 0000000000..fba1cace28
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_I2C_BUSY_TIMEOUT
+#define STM32_I2C_BUSY_TIMEOUT 5
diff --git a/keyboards/handwired/dygma/raise/raise.c b/keyboards/handwired/dygma/raise/raise.c
new file mode 100644
index 0000000000..d9023093b5
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/raise.c
@@ -0,0 +1,22 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "raise.h"
+
+void keyboard_post_init_kb(void) {
+ set_all_leds_to(0, 0, 0);
+ keyboard_post_init_user();
+}
diff --git a/keyboards/handwired/dygma/raise/raise.h b/keyboards/handwired/dygma/raise/raise.h
new file mode 100644
index 0000000000..6310fc3d08
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/raise.h
@@ -0,0 +1,83 @@
+/* Copyright 2018-2021 James Laird-Wah, Islam Sharabash
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#include "leds.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
+ L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
+ L46, L47, R47, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, L36, XXX }, \
+ { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, XXX }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_ansi( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
+ L31 , L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
+ L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
+ L46, L47, R47, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { XXX, L31, L32, L33, L34, L35, L36, XXX }, \
+ { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, XXX }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_iso( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R17, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, R26, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, L35, L36, R35, R34, R33, R32, R31, R30, \
+ L40, L41, L42, L43, L44, R45, R44, R43, R42, R41, R40, \
+ L46, L47, R47, R46 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, L36, XXX }, \
+ { L40, L41, L42, L43, L44, XXX, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, XXX }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
diff --git a/keyboards/handwired/dygma/raise/readme.md b/keyboards/handwired/dygma/raise/readme.md
new file mode 100644
index 0000000000..219ea5f3c9
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/readme.md
@@ -0,0 +1,55 @@
+# Raise
+
+![](https://cdn.shopify.com/s/files/1/0374/9448/9228/files/Dygma-Raise-Hero2.png)
+
+* Keyboard Maintainer: [ibash](https://github.com/ibash)
+* Hardware Supported: [F411 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1) with the [Dygma Raise](http://www.dygma.com)
+* Hardware Availability: See below
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/dygma/raise/ansi:default
+
+Flashing example for this keyboard:
+
+ make handwired/dygma/raise/ansi:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Hardware
+
+QMK does not currently support the [Dygma Neuron](https://dygma.com/products/neuron-black) because QMK does not support SAMD21 which the Neuron has.
+Instead this code uses a [STM32 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1) to create a Neuron replacement.
+
+## Required Hardware
+
+1. [STM32 Blackpill from WeAct Studio](https://github.com/WeActTC/MiniSTM32F4x1) (via [aliexpress](https://www.aliexpress.com/item/1005001456186625.html) or [adafruit](https://www.adafruit.com/product/4877)).
+
+2. 2x USB-C breakouts (via [keeb](https://keeb.io/collections/diy-parts/products/usb-c-breakout-board) or [adafruit](https://www.adafruit.com/product/4090)).
+
+3. 2x 2.7KΩ resistors (via [digikey](https://www.digikey.com/en/products/detail/yageo/CFR-25JB-52-2K7/684)).
+
+4. Breadboard or PCB proto board, wires, solder, etc.
+
+## Wiring
+
+Briefly each raise hand uses I2C to communicate with the Neuron:
+
+1. USB D+ is the I2C clock line.
+2. USB D- is the I2C data line.
+3. The resistors are pullup resistors for the I2C lines.
+4. Each hand draws power from the USB port.
+
+![](https://i.imgur.com/ai9rcHal.png)
+
+<p float="left">
+ <img src="https://i.imgur.com/GvXfnpf.jpg" width="200">
+ <img src="https://i.imgur.com/kFKFjrU.jpg" width="200">
+</p>
+
+We are also prototyping a [custom pcb](https://www.reddit.com/r/DygmaLab/comments/ojgm95/pcb_for_running_qmk_on_the_raise/?utm_source=share&utm_medium=web2x&context=3).
+
+<p>
+ <img src="https://i.imgur.com/xfzIxkW.png" width="200">
+</p>
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk
new file mode 100644
index 0000000000..0fd9955715
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/rules.mk
@@ -0,0 +1,32 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = custom
+CUSTOM_MATRIX = lite
+
+# TODO(ibash) we don't actually need to enable raw, but there's some side effect
+# in the usb driver this triggers that allows mousekeys to work. The same side
+# effect happens if console or midi is enabled -- so something to do with
+# alternate usb endpoints.
+RAW_ENABLE = yes
+
+QUANTUM_LIB_SRC += i2c_master.c
+SRC += leds.c matrix.c
+
+DEFAULT_FOLDER = handwired/dygma/raise/ansi
diff --git a/keyboards/handwired/dygma/raise/wire-protocol-constants.h b/keyboards/handwired/dygma/raise/wire-protocol-constants.h
new file mode 100644
index 0000000000..67c4ca0b23
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/wire-protocol-constants.h
@@ -0,0 +1,51 @@
+/* KeyboardioScanner
+ * Copyright (C) 2015-2018 Keyboard.io, Inc
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#pragma once
+
+#define TWI_CMD_NONE 0x00
+#define TWI_CMD_VERSION 0x01
+#define TWI_CMD_KEYSCAN_INTERVAL 0x02
+#define TWI_CMD_LED_SET_ALL_TO 0x03
+#define TWI_CMD_LED_SET_ONE_TO 0x04
+#define TWI_CMD_COLS_USE_PULLUPS 0x05
+#define TWI_CMD_LED_SPI_FREQUENCY 0x06
+
+#define LED_SPI_FREQUENCY_4MHZ 0x07
+#define LED_SPI_FREQUENCY_2MHZ 0x06
+#define LED_SPI_FREQUENCY_1MHZ 0x05
+#define LED_SPI_FREQUENCY_512KHZ 0x04
+#define LED_SPI_FREQUENCY_256KHZ 0x03
+#define LED_SPI_FREQUENCY_128KHZ 0x02
+#define LED_SPI_FREQUENCY_64KHZ 0x01
+#define LED_SPI_OFF 0x00
+
+
+// 512KHZ seems to be the sweet spot in early testing
+// so make it the default
+#define LED_SPI_FREQUENCY_DEFAULT LED_SPI_FREQUENCY_512KHZ
+
+
+#define TWI_CMD_LED_BASE 0x80
+
+#define TWI_REPLY_NONE 0x00
+#define TWI_REPLY_KEYDATA 0x01
diff --git a/keyboards/handwired/eagleii/rules.mk b/keyboards/handwired/eagleii/rules.mk
index 6b7ab7ed77..4350774cd1 100644
--- a/keyboards/handwired/eagleii/rules.mk
+++ b/keyboards/handwired/eagleii/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
-SLEEP_LED_ENABLE = no
-NKRO_ENABLE = no
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/elrgo_s/rules.mk b/keyboards/handwired/elrgo_s/rules.mk
index 3262f7fad2..c5b46aa48e 100644
--- a/keyboards/handwired/elrgo_s/rules.mk
+++ b/keyboards/handwired/elrgo_s/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ergocheap/rules.mk b/keyboards/handwired/ergocheap/rules.mk
index f57b313def..6a7bda4aef 100644
--- a/keyboards/handwired/ergocheap/rules.mk
+++ b/keyboards/handwired/ergocheap/rules.mk
@@ -15,10 +15,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
diff --git a/keyboards/handwired/evk/v1_3/rules.mk b/keyboards/handwired/evk/v1_3/rules.mk
index 3388265b2f..ad5f5465e8 100644
--- a/keyboards/handwired/evk/v1_3/rules.mk
+++ b/keyboards/handwired/evk/v1_3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/fc200rt_qmk/rules.mk b/keyboards/handwired/fc200rt_qmk/rules.mk
index c7a6e6d6a8..0a8f3c2740 100644
--- a/keyboards/handwired/fc200rt_qmk/rules.mk
+++ b/keyboards/handwired/fc200rt_qmk/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/fivethirteen/keymaps/default/keymap.c b/keyboards/handwired/fivethirteen/keymaps/default/keymap.c
index d92f32e35c..b68e81e81c 100644
--- a/keyboards/handwired/fivethirteen/keymaps/default/keymap.c
+++ b/keyboards/handwired/fivethirteen/keymaps/default/keymap.c
@@ -8,31 +8,31 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_BSLS, \
- MO(MOS), KC_LCTL, KC_LALT, KC_LGUI, MO(HDN), KC_SPC , SFT_BSP, MO(OSY), MO(HDN), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_BSLS,
+ MO(MOS), KC_LCTL, KC_LALT, KC_LGUI, MO(HDN), KC_SPC , SFT_BSP, MO(OSY), MO(HDN), KC_LEFT, KC_DOWN, KC_RGHT
),
[HDN] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, \
- _______, KC_TILD, KC_GRV, KC_BSLS, KC_PIPE, KC_MINS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TILD, KC_GRV, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, KC_UNDS , KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______,
+ _______, KC_TILD, KC_GRV, KC_BSLS, KC_PIPE, KC_MINS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TILD, KC_GRV, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_ENT, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, KC_UNDS , KC_DEL, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[OSY] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[MOS] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_WH_D, KC_WH_U, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_WH_D, KC_WH_U, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/fivethirteen/rules.mk b/keyboards/handwired/fivethirteen/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/handwired/fivethirteen/rules.mk
+++ b/keyboards/handwired/fivethirteen/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/floorboard/rules.mk b/keyboards/handwired/floorboard/rules.mk
index 8892d2239f..f8ef7da37a 100644
--- a/keyboards/handwired/floorboard/rules.mk
+++ b/keyboards/handwired/floorboard/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/frankie_macropad/rules.mk b/keyboards/handwired/frankie_macropad/rules.mk
index 41c6491fb8..46e261ffcb 100644
--- a/keyboards/handwired/frankie_macropad/rules.mk
+++ b/keyboards/handwired/frankie_macropad/rules.mk
@@ -12,12 +12,12 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+MAGIC_ENABLE = no
+GRAVE_ESC_ENABLE = no
diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
index 1ead4e50e1..c926576f97 100644
--- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c
+++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
@@ -64,16 +64,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
*/
[_BASE] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_ESC, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_DIAE, BP_DCIR, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC, \
- KC_TAB, BP_B, BP_EACU, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT, \
- BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_QUOT, \
- M_SF, BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRC, M_SFS, BP_CBSP, L2INS, L2LOC, BP_CDEL, M_SFS, BP_M, BP_G, KC_UP, BP_H, BP_Q, M_SF, \
- KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M_L1E, KC_LALT, KC_CAPS, M_L1E, KC_SPACE, KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL, \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_ESC, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, BP_DIAE, BP_DCIR, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC,
+ KC_TAB, BP_B, BP_EACU, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT,
+ BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_QUOT,
+ M_SF, BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRC, M_SFS, BP_CBSP, L2INS, L2LOC, BP_CDEL, M_SFS, BP_M, BP_G, KC_UP, BP_H, BP_Q, M_SF,
+ KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M_L1E, KC_LALT, KC_CAPS, M_L1E, KC_SPACE, KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL,
//left pedals
- M_LP, M_RP, KC_TRNS, \
+ M_LP, M_RP, KC_TRNS,
//right pedals
- M_LP, M_RP, KC_TRNS \
+ M_LP, M_RP, KC_TRNS
),
/* Larer 1 for symbols.
@@ -96,16 +96,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
*/
[_SYMBOLS] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, BP_CURR, BP_PARA, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_CARN, BP_LEQL, BP_GEQL, BP_PLMN, BP_DIV, BP_MUL, KC_TRNS, \
- KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_NEQL, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PERM, KC_TRNS, \
- KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QUES, BP_CCED, BP_LABK, BP_RABK, BP_AMPR, BP_UNDS, KC_TRNS, \
- KC_TRNS, M_UN, M_CUT, M_CP, M_PS, M_SE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, \
- KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, BP_CURR, BP_PARA, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_CARN, BP_LEQL, BP_GEQL, BP_PLMN, BP_DIV, BP_MUL, KC_TRNS,
+ KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_NEQL, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PERM, KC_TRNS,
+ KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QUES, BP_CCED, BP_LABK, BP_RABK, BP_AMPR, BP_UNDS, KC_TRNS,
+ KC_TRNS, M_UN, M_CUT, M_CP, M_PS, M_SE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS,
+ KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS,
//left pedals
- KC_TRNS, KC_BTN1, KC_TRNS, \
+ KC_TRNS, KC_BTN1, KC_TRNS,
//right pedals
- KC_TRNS, KC_BTN1, KC_TRNS \
+ KC_TRNS, KC_BTN1, KC_TRNS
),
/* MEDIA, mouse and numpad.
@@ -128,16 +128,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
*/
[_MEDIA] = LAYOUT(
- RESET, KC_SLCK, KC_PAUS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CALC, KC_NLCK, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_PMNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_BTN4, KC_BTN5, KC_BTN4, KC_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS, \
- KC_TRNS, M_UN, M_CUT, M_CP, M_PS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_PDOT, BP_DOT, BP_COMM, KC_TRNS, \
+ RESET, KC_SLCK, KC_PAUS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CALC, KC_NLCK,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_PMNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_BTN4, KC_BTN5, KC_BTN4, KC_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS,
+ KC_TRNS, M_UN, M_CUT, M_CP, M_PS, KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_PDOT, BP_DOT, BP_COMM, KC_TRNS,
//left pedals
- KC_BTN3, M_RP, KC_TRNS, \
+ KC_BTN3, M_RP, KC_TRNS,
//right pedals
- KC_BTN3, M_RP, KC_TRNS \
+ KC_BTN3, M_RP, KC_TRNS
),
/* TRNS - skeleton for laters
@@ -160,16 +160,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_TRNS] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
//left pedals
- KC_BTN3, M_RP, KC_TRNS, \
+ KC_BTN3, M_RP, KC_TRNS,
//right pedals
- KC_BTN3, M_RP, KC_TRNS \
+ KC_BTN3, M_RP, KC_TRNS
),
};
diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk
index 1a4cab63dc..88a48968f1 100644
--- a/keyboards/handwired/frenchdev/rules.mk
+++ b/keyboards/handwired/frenchdev/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,8 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file (taken and adapted from the ErgoDox EZ to handle custom number of columns)
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/freoduo/rules.mk b/keyboards/handwired/freoduo/rules.mk
index 882e6b62ce..a214cbef1f 100644
--- a/keyboards/handwired/freoduo/rules.mk
+++ b/keyboards/handwired/freoduo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/fruity60/keymaps/default/config.h b/keyboards/handwired/fruity60/keymaps/default/config.h
deleted file mode 100644
index 7d7844ac61..0000000000
--- a/keyboards/handwired/fruity60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Yan-Fa Li
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/fruity60/rules.mk b/keyboards/handwired/fruity60/rules.mk
index 19da0629e5..74628e3e6f 100644
--- a/keyboards/handwired/fruity60/rules.mk
+++ b/keyboards/handwired/fruity60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/gamenum/keymaps/default/keymap.c b/keyboards/handwired/gamenum/keymaps/default/keymap.c
index 237b0fb927..8b768850c8 100644
--- a/keyboards/handwired/gamenum/keymaps/default/keymap.c
+++ b/keyboards/handwired/gamenum/keymaps/default/keymap.c
@@ -7,25 +7,25 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = LAYOUT(
- TO(HDN), KC_SLSH, KC_ASTR, KC_MINS, \
- KC_7, KC_8, KC_9, KC_PLUS, \
- KC_4, KC_5, KC_6, \
- KC_1, KC_2, KC_3, \
- KC_0, KC_DOT, KC_ENT \
+ TO(HDN), KC_SLSH, KC_ASTR, KC_MINS,
+ KC_7, KC_8, KC_9, KC_PLUS,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3,
+ KC_0, KC_DOT, KC_ENT
),
[HDN] = LAYOUT(
- TO(OSY), KC_1, KC_2, KC_3, \
- KC_Q, KC_W, KC_E, KC_R, \
- KC_A, KC_S, KC_D, \
- KC_Z, KC_X, KC_C, \
- KC_LSFT, KC_LALT, KC_SPC \
+ TO(OSY), KC_1, KC_2, KC_3,
+ KC_Q, KC_W, KC_E, KC_R,
+ KC_A, KC_S, KC_D,
+ KC_Z, KC_X, KC_C,
+ KC_LSFT, KC_LALT, KC_SPC
),
[OSY] = LAYOUT(
- KC_A, KC_Q, KC_1, TO(DEF), \
- KC_S, KC_W, KC_2, KC_LALT, \
- KC_D, KC_E, KC_3, \
- KC_F, KC_R, KC_4, \
- KC_SPC, KC_T, KC_TAB \
+ KC_A, KC_Q, KC_1, TO(DEF),
+ KC_S, KC_W, KC_2, KC_LALT,
+ KC_D, KC_E, KC_3,
+ KC_F, KC_R, KC_4,
+ KC_SPC, KC_T, KC_TAB
)
};
diff --git a/keyboards/handwired/gamenum/rules.mk b/keyboards/handwired/gamenum/rules.mk
index 0f5e7479f6..63aadefc79 100644
--- a/keyboards/handwired/gamenum/rules.mk
+++ b/keyboards/handwired/gamenum/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/hacked_motospeed/keymaps/default/config.h b/keyboards/handwired/hacked_motospeed/keymaps/default/config.h
deleted file mode 100644
index 72de214ba7..0000000000
--- a/keyboards/handwired/hacked_motospeed/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Vladislav Opara <Deckweiss75@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here \ No newline at end of file
diff --git a/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c b/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c
index be3d5fdbd2..05f1dc51dc 100644
--- a/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c
+++ b/keyboards/handwired/hacked_motospeed/keymaps/default/keymap.c
@@ -23,10 +23,10 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_LPRN, KC_RPRN, \
- KC_PEQL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUES, \
- XXXXXXX, XXXXXXX, KC_BSPC, KC_ENT, KC_SPC, KC_LSFT, KC_LCTRL, KC_LALT, KC_ALGR, KC_LWIN, XXXXXXX \
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_LPRN, KC_RPRN,
+ KC_PEQL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_QUES,
+ XXXXXXX, XXXXXXX, KC_BSPC, KC_ENT, KC_SPC, KC_LSFT, KC_LCTRL, KC_LALT, KC_ALGR, KC_LWIN, XXXXXXX
),
};
diff --git a/keyboards/handwired/hacked_motospeed/rules.mk b/keyboards/handwired/hacked_motospeed/rules.mk
index 6a8ad8fe82..2dbbeb1188 100644
--- a/keyboards/handwired/hacked_motospeed/rules.mk
+++ b/keyboards/handwired/hacked_motospeed/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/heisenberg/rules.mk b/keyboards/handwired/heisenberg/rules.mk
index aa55581bfc..5a725c5973 100644
--- a/keyboards/handwired/heisenberg/rules.mk
+++ b/keyboards/handwired/heisenberg/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/handwired/hexon38/rules.mk b/keyboards/handwired/hexon38/rules.mk
index 3a565a9774..b092156024 100644
--- a/keyboards/handwired/hexon38/rules.mk
+++ b/keyboards/handwired/hexon38/rules.mk
@@ -4,16 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = halfkay
-# Enabled build options:
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-
-# Disabled build options:
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/hillside/0_1/0_1.c b/keyboards/handwired/hillside/0_1/0_1.c
new file mode 100644
index 0000000000..ee096f18a7
--- /dev/null
+++ b/keyboards/handwired/hillside/0_1/0_1.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "0_1.h"
diff --git a/keyboards/handwired/hillside/0_1/0_1.h b/keyboards/handwired/hillside/0_1/0_1.h
new file mode 100644
index 0000000000..0aeefdf630
--- /dev/null
+++ b/keyboards/handwired/hillside/0_1/0_1.h
@@ -0,0 +1,34 @@
+// Copyright 2021 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts those identifiers into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+// clang-format off
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, LT4, RT4, R20, R21, R22, R23, R24, R25, \
+ L30, LT0, LT1, LT2, LT3, RT3, RT2, RT1, RT0, R30 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, LT0, LT1, LT2, LT3, LT4 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R30, RT0, RT1, RT2, RT3, RT4 } \
+ }
+// clang-format on
diff --git a/keyboards/handwired/hillside/0_1/config.h b/keyboards/handwired/hillside/0_1/config.h
new file mode 100644
index 0000000000..c83b23d0e8
--- /dev/null
+++ b/keyboards/handwired/hillside/0_1/config.h
@@ -0,0 +1,35 @@
+// Copyright 2021 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+/* Encoder */
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F4 }
+#define ENCODERS_PAD_A_RIGHT { F4 }
+#define ENCODERS_PAD_B_RIGHT { F5 }
+
+#define RGBLIGHT_SLEEP
+
+/* Haptic hardware */
+// The Pimoroni is the likely hardware, for which these settings work
+#define FB_ERM_LRA 1
+#define FB_BRAKEFACTOR 3 /* 1x:0, 2x:1, 3x:2, 4x:3, 6:4, 8:5, 16:6, Disable:7 */
+#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
+/* Please refer to your datasheet for optimal setting for your specific motor.*/
+#define RATED_VOLTAGE 2
+#define V_PEAK 2.8
+#define V_RMS 2.0
+#define F_LRA 205 /* resonance freq */
+
+/* Haptic waveforms */
+// Two mild waveforms
+#define DRV_GREETING alert_750ms
+#define DRV_MODE_DEFAULT sharp_tick3_60
diff --git a/keyboards/handwired/hillside/0_1/info.json b/keyboards/handwired/hillside/0_1/info.json
new file mode 100644
index 0000000000..4505bf3e35
--- /dev/null
+++ b/keyboards/handwired/hillside/0_1/info.json
@@ -0,0 +1,13 @@
+{
+ "matrix_pins": {
+ "rows": ["D7", "E6", "B4", "B5"],
+ "cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x67C0",
+ "device_ver": "0x0001"
+ }
+}
diff --git a/keyboards/handwired/hillside/0_1/rules.mk b/keyboards/handwired/hillside/0_1/rules.mk
new file mode 100644
index 0000000000..2501147ea8
--- /dev/null
+++ b/keyboards/handwired/hillside/0_1/rules.mk
@@ -0,0 +1,8 @@
+SPLIT_KEYBOARD = yes # Use shared split_common code
+LTO_ENABLE = yes # Use link time optimization for smaller firmware
+
+# If you add a haptic board,
+# enable it and set its driver here or in your keymap folder
+# The Pimoroni board's driver is DRV2605L
+# HAPTIC_ENABLE = yes # Enable haptic driver
+# HAPTIC_DRIVER = DRV2605L
diff --git a/keyboards/handwired/hillside/info.json b/keyboards/handwired/hillside/info.json
new file mode 100644
index 0000000000..7a29df1c64
--- /dev/null
+++ b/keyboards/handwired/hillside/info.json
@@ -0,0 +1,97 @@
+{
+ "manufacturer": "mmccoyd",
+ "maintainer": "mmccoyd",
+
+ "keyboard_name": "Hillside",
+ "url": "http://github.com/mmccoyd/hillside/",
+
+ "tags": ["split", "column stagger", "choc v1", "choc spaced" ],
+
+ "processor": "atmega32u4",
+
+ "features": {
+ "encoder": true,
+ "extrakey": true,
+ "rgblight": true
+ },
+ "split": {
+ "soft_serial_pin": "D2",
+ "main": "left"
+ },
+
+ "rgblight": {
+ "led_count": 5,
+ "pin": "D3",
+ "split": true,
+ "hue_steps": 8,
+ "saturation_steps": 8,
+ "brightness_steps": 8
+ },
+
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+
+ {"label": "Tab", "x": 0, "y": 0.93},
+ {"label": "Q", "x": 1, "y": 0.93},
+ {"label": "W", "x": 2, "y": 0.31},
+ {"label": "E", "x": 3, "y": 0},
+ {"label": "R", "x": 4, "y": 0.28},
+ {"label": "T", "x": 5, "y": 0.42},
+
+ {"label": "Y", "x": 9.5, "y": 0.42},
+ {"label": "U", "x": 10.5, "y": 0.28},
+ {"label": "I", "x": 11.5, "y": 0},
+ {"label": "O", "x": 12.5, "y": 0.31},
+ {"label": "P", "x": 13.5, "y": 0.93},
+ {"label": "Backspace", "x": 14.5, "y": 0.93},
+
+
+ {"label": "Ctrl", "x": 0, "y": 1.93},
+ {"label": "A", "x": 1, "y": 1.93},
+ {"label": "S", "x": 2, "y": 1.31},
+ {"label": "D", "x": 3, "y": 1},
+ {"label": "F", "x": 4, "y": 1.28},
+ {"label": "G", "x": 5, "y": 1.42},
+
+ {"label": "H", "x": 9.5, "y": 1.42},
+ {"label": "J", "x": 10.5, "y": 1.28},
+ {"label": "K", "x": 11.5, "y": 1},
+ {"label": "L", "x": 12.5, "y": 1.31},
+ {"label": ";", "x": 13.5, "y": 1.93},
+ {"label": "'", "x": 14.5, "y": 1.93},
+
+
+ {"label": "Shift", "x": 0, "y": 2.93},
+ {"label": "Z", "x": 1, "y": 2.93},
+ {"label": "X", "x": 2, "y": 2.31},
+ {"label": "C", "x": 3, "y": 2},
+ {"label": "V", "x": 4, "y": 2.28},
+ {"label": "B", "x": 5, "y": 2.42},
+ {"label": "`", "x": 6, "y": 2.78},
+
+ {"label": "Esc", "x": 8.5, "y": 2.78},
+ {"label": "N", "x": 9.5, "y": 2.42},
+ {"label": "M", "x": 10.5, "y": 2.28},
+ {"label": ",", "x": 11.5, "y": 2},
+ {"label": ".", "x": 12.5, "y": 2.31},
+ {"label": "/", "x": 13.5, "y": 2.93},
+ {"label": "Shift", "x": 14.5, "y": 2.93},
+
+
+ {"label": "Enter", "x": 2, "y": 3.31},
+ {"label": "Gui", "x": 3.5, "y": 3.28},
+ {"label": "Alt", "x": 4.5, "y": 3.42},
+ {"label": "Num", "x": 5.5, "y": 3.78},
+ {"label": "Nav", "x": 6.5, "y": 4.14},
+
+
+ {"label": "Sym", "x": 8, "y": 4.14},
+ {"label": "Space", "x": 9, "y": 3.78},
+ {"label": "Alt", "x": 10, "y": 3.42},
+ {"label": "Gui", "x": 11, "y": 3.28},
+ {"label": "App", "x": 12.5, "y": 3.31}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/hillside/keymaps/default/keymap.json b/keyboards/handwired/hillside/keymaps/default/keymap.json
new file mode 100644
index 0000000000..f5871b073f
--- /dev/null
+++ b/keyboards/handwired/hillside/keymaps/default/keymap.json
@@ -0,0 +1,102 @@
+{
+ "version": 1,
+ "notes": "",
+ "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
+ "keyboard": "handwired/hillside/0_1",
+ "author": "@mmccoyd",
+ "keymap": "default",
+ "layout": "LAYOUT",
+ "layers": [
+ ["KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T",
+ "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G",
+ "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_QUOT",
+
+ "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_GRV",
+ "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_TAB" , "KC_QUOT" , "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y",
+ "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
+ "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_SLSH",
+
+ "KC_LSFT", "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_GRV",
+ "KC_ESC" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_TAB" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B",
+ "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G",
+ "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_QUOT",
+
+ "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_GRV",
+ "KC_ESC" , "KC_K" , "KC_H" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_CAPS", "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU",
+ "KC_PGUP", "KC_HOME" , "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL",
+
+ "KC_LCTL", "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_VOLD",
+ "KC_PGDN", "KC_LEFT" , "KC_UP" , "KC_RGHT" , "KC_NO" , "KC_RCTL",
+
+ "KC_LSFT", "LCTL(KC_Z)", "LCTL(KC_X)" , "LCTL(KC_C)", "LCTL(KC_V)" , "LCTL(KC_Y)", "KC_MUTE",
+ "KC_ESC" , "KC_NO" , "LCTL(KC_LEFT)", "KC_DOWN" , "LCTL(KC_RGHT)", "KC_RALT" , "KC_RSFT",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
+ "MO(6)" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_F12" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC",
+ "KC_CIRC", "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_BSPC",
+
+ "KC_LCTL", "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5",
+ "KC_PIPE", "KC_LSFT" , "KC_LCTL" , "KC_LALT" , "KC_LGUI" , "KC_RCTL",
+
+ "KC_LSFT", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11",
+ "KC_ESC" , "KC_BSLS" , "KC_LBRC" , "KC_RBRC" , "KC_LCBR" , "KC_RCBR" , "KC_RSFT",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(6)",
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_NO" , "KC_MINS" , "KC_PLUS" , "KC_EQL" , "KC_SLSH" , "KC_ASTR",
+ "KC_COMM", "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS",
+
+ "KC_TRNS", "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_NO",
+ "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS" , "KC_RCTL",
+
+ "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "KC_NO" , "KC_DOT" , "KC_4" , "KC_5" , "KC_6" , "KC_NO" , "KC_TRNS",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO",
+ "KC_NO" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "AG_NORM",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "RGB_MOD", "RGB_VAI" , "RGB_HUI" , "RGB_SAI" , "KC_NO" , "KC_NO",
+
+ "RESET" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "RGB_TOG", "RGB_RMOD" , "RGB_VAD" , "RGB_HUD" , "RGB_SAD" , "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS",
+ "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO"
+
+ ]
+ ]
+}
diff --git a/keyboards/handwired/hillside/keymaps/default/readme.md b/keyboards/handwired/hillside/keymaps/default/readme.md
new file mode 100644
index 0000000000..a982c0c380
--- /dev/null
+++ b/keyboards/handwired/hillside/keymaps/default/readme.md
@@ -0,0 +1,216 @@
+# Default Keymap
+
+This default keymap follows many of the norms seen in non-programmable keyboards
+ to ease initial use of the Hillside keyboard.
+It is a starting point for you to tweak over time to better suit _your_ preferences.
+You can easily customize it with the
+ [QMK configurator](https://config.qmk.fm/#/hillside/0_1/LAYOUT)
+ or with the [via firmware](https://caniusevia.com).
+
+Some of its key features are:
+- A mostly standard base layer with letters, some symbols, shift, modifier and delete keys
+ in the expected places for non-programmable keyboards.
+- QWERTY, Colemak-DH and Dvorak options for the letter and symbol layout.
+- Comfortable modifier and function or symbol combinations on the non-base layers
+ using modifiers on the home row of the navigation/edit, symbol/function and number-pad layers.
+- Word navigation and cut/copy/paste keys on the navigation layer.
+- A slightly optimized number pad with the more frequently used numbers on the home row.
+
+We've deliberately omitted some features:
+- Combos: because the online configuration tools do not handle them
+ and because they would add to the initial learning curve,
+ as helpful to a keymap as a light sprinkling of combos can be.
+- Multi-function mod-tap keys, auto shift capitalization and auto-exit modes such as CAPWORD or NUMWORD:
+ as they may be too large a step for someone new to programmable keyboards.
+
+## Base Layer
+
+```
+| TAB | Q | W | E | R | T |---------------------------| Y | U | I | O | P | BKSPC |
+| CTRL | A | S | D | F | G |---------------------------| H | J | K | L | ; | ' |
+| SHIFT | Z | X | C | V | B | ~ |---------------| ESC | N | M | , | . | / | SHIFT |
+--------------|ENTER|-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| APP |--------------
+```
+
+The base layer can be either of QWERTY, Colemak-DH or Dvorak,
+ with identical non-alpha and non-symbol keys.
+QWERTY is the default.
+
+A standard keyboard layout is used for:
+
+- Tab, backspace and shift keys in the outer columns.
+- Alt/option and GUI/command keys on both thumbs, with the location swappable for windows or mac.
+- A space key on the right thumb.
+
+The differences from a standard layout are:
+
+- There are three additional "shift" keys
+ to access the navigation/editing, symbol/function, and number layers.
+- Enter is on the left thumb or ring finger.
+ This location allowed preserving the more common right-hand keys.
+ Feel free to swap it with the quote key or have it share the right shift key
+ as a mod-tap key.
+- Control is in the caps lock spot.
+- Esc and `~ are above the thumbs.
+- The rarer AltGr key is in a layer.
+
+<details>
+<summary>Details of Dvorak and Colemak-DH</summary>
+In the Dvorak layout, the outer home row key is the "/?" symbols
+ so that the same 12 symbols are taken care of on the base layer.
+
+```
+Dvorak
+| TAB | ' | , | . | P | Y |---------------------------| F | G | C | R | L | BKSPC |
+| CTRL | A | O | E | U | I |---------------------------| D | H | T | N | S | / |
+| SHIFT | ; | Q | J | K | X | ~ |---------------| ESC | B | M | W | V | Z | SHIFT |
+--------------|ENTER|-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| APP |--------------
+
+Colemak-DH
+| TAB | Q | W | F | P | B |---------------------------| J | L | U | Y | ; | BKSPC |
+| CTRL | A | R | S | T | G |---------------------------| M | N | E | I | O | ' |
+| SHIFT | Z | X | C | D | V | ~ |---------------| ESC | K | H | , | . | / | SHIFT |
+--------------|ENTER|-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| APP |--------------
+```
+</details>
+
+## Navigation, Editing and Media Layer
+
+```
+| CAPS | INS | | | |VOL+ |---------------------------|PG_UP|HOME | | END| | DEL |
+| CTRL | GUI | ALT |CTRL |SHIFT|VOL- |---------------------------|PG_DN|LEFT | UP |RIGHT| | CTRL |
+| SHIFT |UNDO | CUT |COPY |PASTE|REDO |MUTE |---------------| ESC | |WORDL|DOWN |WORDR|RALT | SHIFT |
+--------------|ENTER|-----| GUI | ALT | Num | *** |---| Adj |BSPC | ALT | GUI |-----| APP |--------------
+```
+Holding down the Nav key accesses a navigation and editing layer:
+
+- Navigation arrows are on and below the right home row in a cross pattern.
+ This feels more natural for a column stagger keyboard than an inverted T.
+ The keys below that move left or right by a word.
+ Home, end, and page up/down are beside them.
+- Modifiers in the left home row make it easier to use the arrows
+ to select text with the shift key or move between desktops or tabs.
+- Editing keys appear on the lower left.
+ The edit keys, modifiers and arrows make it easy to move text around without leaving the layer.
+- Delete is in the upper right, and a backspace key is on the thumb.
+- The base layer modifiers and escape are in the same spots as on the base layer,
+ and a right-hand control key is added.
+- Media volume and play keys are on the left, accessible with one hand.
+- AltGr and caps lock fill out the layer.
+- A few keys do nothing and are available for more user-specific needs.
+
+## Symbol and Function Layer
+
+```
+| F12 | ! | @ | # | $ | % |---------------------------| ^ | & | * | ( | ) | BSPC |
+| CTRL | F1 | F2 | F3 | F4 | F5 |---------------------------| | |SHIFT|CTRL | ALT | GUI | CTRL |
+| SHIFT | F6 | F7 | F8 | F9 | F10 | F11 |---------------| ESC | \ | [ | ] | { | } | SHIFT |
+--------------|ENTER|-----| GUI | ALT | Num | Adj |---| *** |SPACE| ALT | GUI |-----| APP |--------------
+```
+Holding down the Sym key accesses a layer of symbol and function keys:
+
+- The symbols usually found on the number keys are in the top row.
+ If desired, you can use these positions for other things,
+ as the symbols are also accessible from the number pad layer with the shift key.
+- The remaining symbols appear on the right.
+- The function keys are on the left, beginning with two rows of five.
+- A row of modifiers in the home row allows the comfortable creation of any modifier and function key combination.
+- The base layer modifier and escape keys are still available, as is a right-hand control key.
+
+## Number Pad and Algebraic Layer
+```
+| | - | + | = | / | * |---------------------------| . | 7 | 8 | 9 | | BSPC |
+| CTRL | GUI | ALT |CTRL |SHIFT| |---------------------------| 0 | 1 | 2 | 3 | _ | CTRL |
+| SHIFT | | | | | | |---------------| ESC | , | 4 | 5 | 6 | | SHIFT |
+--------------|ENTER|-----| GUI | ALT | *** | |---| |BSPC | ALT | GUI |-----| APP |--------------
+```
+Holding down the Num key accesses a number pad and arithmetic symbols:
+
+- The number pad has the lowest numbers swapped into the home row as these are the most commonly used.
+- A row of modifiers in the home row allows the comfortable creation of any modifier and number combination.
+- Symbols commonly used with numbers fill out the layer
+ and can be combined with the home row mods or the existing base layer modifiers on the right hand.
+- Several keys remain unused and await more user-specific needs.
+
+
+## Adjust Layer
+```
+| |QWERT|DVORK|COLMK|AG_SWAP|AG_NORM|-----------------------| | | | | | |
+| | | | | | |---------------------------|MOD+ |BRI+ |HUE+ |SAT+ | | |
+| RESET | | | | | | |--------------|RGBTOG|MOD- |BRI- |HUE- |SAT- | | |
+--------------| |-----| | | | *** |---| *** | | | |-----| |--------------
+```
+Simultaneously holding down the Nav and Sym keys enables keys to adjust various keyboard settings:
+
+- The base layer can be set to QWERTY, Colemak-DH or Dvorak,
+ but the keyboard reverts to QWERTY each time it is plugged in.
+- Alt/option and GUI/command can be swapped for mac users or restored to the windows norm.
+ This setting persists over power loss.
+- The backlight LEDs can be enabled, disabled, and controlled.
+ These settings also persist over power loss.
+
+
+## Make it Yours
+
+If you are coming from a traditional keyboard,
+ with a row-staggered layout and a large set of physical keys,
+ learning to use a column staggered (ergo) and layer-based keyboard,
+ which uses layers instead of finger reaches to access numbers, symbols and functions,
+ will be an adjustment for your muscle memory and your mental keyboard map.
+This default layout tries to simplify that adjustment by keeping things in the expected spots when possible.
+
+Yet this layout is only a decent compromise and is not optimal for each user.
+
+The online configurator makes it easy to tweak this layout to your needs.
+You can add additional layers or completely switch around what these do.
+
+Some changes you might consider making:
+- Put some of your most-used key combinations on the unused keys on the navigation layer.
+- If you are on a mac, switch the editing and word navigation keys from ctrl-x to cmd-x.
+- Change the shift keys to one-shot shift keys,
+ where pressing and releasing them shifts the next key pressed.
+ That is much easier on your hands than holding them down.
+ Yet, they can still be held as usual if desired.
+- Instead of holding down the thumb key to keep the symbol layer active,
+ you could use a one-shot layer key.
+ One-shot modifiers are likely less stress on your hands and may even be faster.
+ You would still be able to hold it down instead.
+- Instead of holding down the key for the number pad layer,
+ you could make it a layer toggle, like caps lock is a capitalization toggle key.
+
+Here are some other keymaps for inspiration and ideas:
+- The [Ferris default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/default) uses more advanced features as it has far fewer keys to work with.
+- The [Miryoku](https://github.com/manna-harbour/miryoku/tree/master/docs/reference) keymap ensures that all modifiers are comfortably available with each character key.
+- The [Kyria default](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/default) has different keymap choices and a couple more keys.
+
+A good metaphor is to think of your keymap as a bonsai tree that you tweak slightly over time
+ in response to ideas of how it might serve you better.
+
+
+## Why no keymap.c
+
+Via and the online configurator provide straightforward visual ways to work with a simple layout,
+ and both use a .json keymap format.
+So this default ```keymap.json``` was created with the online configurator
+ and formatted for easier reading and editing.
+
+If you wish, you can edit the ```keymap.json``` directly in a text editor, optionally use the below ```json2hill.py``` to restore the spacing, and then compile and flash it.
+
+Or, you can use the graphical configurator to edit the keymap. To do that:
+
+- Open the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/LAYOUT)
+- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/keymaps/default/keymap.json```
+- Make the changes you wish to the layout
+- Save the keymap using the green down arrow button.
+- Copy those changes back into your QMK repository and reformat for easy reading using the format script:
+```
+./keyboards/handwired/hillside/keymaps/json2hill.py --input <Your download directory>/default.json > ./keyboards/handwired/hillside/keymaps/default/keymap.json
+```
+ You may need to make that script executable with ```chmod +x```. After your keymap is safely copied and formated, you may want to remove the keymap from your download directory so later downloads will automatically receive the same file name.
+
+After either method of editing, compile and flash the keymap as usual.
+
+You can combine a .json based keymap with more advanced features specified in .c files
+ with a bit more complexity.
+For example, see
+[pierrec83's Kyria map](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/kyria/keymaps/pierrec83).
diff --git a/keyboards/handwired/hillside/keymaps/json2hill.py b/keyboards/handwired/hillside/keymaps/json2hill.py
new file mode 100755
index 0000000000..a9971c0d78
--- /dev/null
+++ b/keyboards/handwired/hillside/keymaps/json2hill.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+
+# Copyright 2020-2021 Pierre Viseu Chevalier, Michael McCoyd (@pierrechevalier83, @mmccoyd)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+"""Pretty print keymap json in more readable row/side organized format."""
+
+import argparse
+import json
+import sys
+from typing import NamedTuple
+
+"""Print keymap json in row and side format, though as still re-readable json.
+
+For example, for one layer:
+
+ ["KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T",
+ "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G",
+ "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN", "KC_QUOT",
+
+ "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_GRV",
+ "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI", "KC_LALT", "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_APP"
+ ],
+"""
+
+indent_level=4 # number of spaces of initial indent per output line
+
+# The structure of the keymap
+# [[Endpoint of sides with identical widths, side width, mapping to column],...]
+KEYS_TO_COL = [[24, 6, lambda n: n % 6],
+ [38, 7, lambda n: (n - 24) % 7],
+ [48, 5, lambda n: (n - 38) % 5]]
+LAST_KEY = KEYS_TO_COL[-1][0] - 1
+
+def parse_cli():
+ parser = argparse.ArgumentParser(description='Hillside keymap formatter')
+ parser.add_argument("--input", type=argparse.FileType('r'),
+ default=sys.stdin, help="Input keymap "
+ "(json file produced by qmk configurator)")
+ return parser.parse_args()
+
+class Column(NamedTuple):
+ """Column number within keymap side, if it ends side, and ends row.
+
+ Position within a keyboard row runs from 0 to n and again 0 to n"""
+ num: int
+ ends_side: bool
+ ends_row: bool
+
+def get_col(key_index):
+ """Return Column for key_index."""
+ for keys, num_cols, col_fn in KEYS_TO_COL:
+ if key_index < keys:
+ col_num = col_fn(key_index)
+ return Column(col_num,
+ ends_side=col_num == num_cols - 1,
+ ends_row=(keys - 1 - key_index) % (2 * num_cols) == 0)
+
+def format_layers(layers):
+ formatted = indent_level * " " + "\"layers\": [\n"
+
+ # Find max key length per column
+ max_key_length = {}
+ for layer in layers:
+ for (index, keycode) in enumerate(layer):
+ col = get_col(index)
+ max_length = max_key_length.get(col.num)
+ if (not max_length) or len(keycode) > max_length:
+ max_key_length.update({col.num: len(keycode)})
+ # Format each layer
+ for (layer_index, layer) in enumerate(layers):
+ # Opening [
+ formatted += 2 * indent_level * " "
+ formatted += "["
+
+ # Split keys into pairs of left and right rows by key row length
+ for (index, keycode) in enumerate(layer):
+ col = get_col(index)
+
+ # Indent for rows past first
+ if col.num == 0 and index != 0:
+ formatted += (1 + 2 * indent_level) * " "
+
+ # Print key
+ formatted += json.dumps(keycode)
+
+ # End layer, or end side, or space to next key
+ if index == LAST_KEY:
+ formatted += "\n"
+ elif col.ends_side:
+ formatted += ",\n"
+ else:
+ n_spaces = max_key_length[get_col(index).num] - len(keycode)
+ formatted += n_spaces * " "
+ formatted += ", "
+
+ # Split groups of row sides
+ if col.ends_row:
+ formatted += "\n"
+
+ # Closing ] with , or without
+ formatted += 2 * indent_level * " "
+ if layer_index < len(layers) - 1:
+ formatted += "],\n"
+ else:
+ formatted += "]\n"
+
+ formatted += indent_level * " "
+ formatted += "]"
+
+ return formatted
+
+def format_keymap(keymap_json):
+ formatted = "{"
+ for (index, k) in enumerate(keymap_json):
+ if k == "layers":
+ formatted += format_layers(keymap_json[k])
+ else:
+ formatted += f"{indent_level * ' '}{json.dumps(k)}: {json.dumps(keymap_json[k])}"
+ if index < len(keymap_json) - 1:
+ formatted += ","
+ formatted += "\n"
+ formatted += "}"
+ return formatted
+
+def main():
+ args=parse_cli()
+ keymap_json = json.loads(args.input.read())
+ print(format_keymap(keymap_json))
+
+main()
diff --git a/keyboards/handwired/hillside/keymaps/via/keymap.json b/keyboards/handwired/hillside/keymaps/via/keymap.json
new file mode 100644
index 0000000000..8b4810c309
--- /dev/null
+++ b/keyboards/handwired/hillside/keymaps/via/keymap.json
@@ -0,0 +1,101 @@
+{
+ "version": 1,
+ "notes": "",
+ "keyboard": "handwired/hillside/0_1",
+ "author": "@mmccoyd",
+ "keymap": "via",
+ "layout": "LAYOUT",
+ "layers": [
+ ["KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T",
+ "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G",
+ "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_QUOT",
+
+ "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_GRV",
+ "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_TAB" , "KC_QUOT" , "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y",
+ "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
+ "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_SLSH",
+
+ "KC_LSFT", "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_GRV",
+ "KC_ESC" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_TAB" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B",
+ "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC",
+
+ "KC_LCTL", "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G",
+ "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_QUOT",
+
+ "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_GRV",
+ "KC_ESC" , "KC_K" , "KC_H" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_ENT" , "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_APP"
+
+ ],
+ ["KC_CAPS", "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU",
+ "KC_PGUP", "KC_HOME" , "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL",
+
+ "KC_LCTL", "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_VOLD",
+ "KC_PGDN", "KC_LEFT" , "KC_UP" , "KC_RGHT" , "KC_NO" , "KC_RCTL",
+
+ "KC_LSFT", "LCTL(KC_Z)", "LCTL(KC_X)" , "LCTL(KC_C)", "LCTL(KC_V)" , "LCTL(KC_Y)", "KC_MUTE",
+ "KC_ESC" , "KC_NO" , "LCTL(KC_LEFT)", "KC_DOWN" , "LCTL(KC_RGHT)", "KC_RALT" , "KC_RSFT",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
+ "MO(6)" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_F12" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC",
+ "KC_CIRC", "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_BSPC",
+
+ "KC_LCTL", "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5",
+ "KC_PIPE", "KC_LSFT" , "KC_LCTL" , "KC_LALT" , "KC_LGUI" , "KC_RCTL",
+
+ "KC_LSFT", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11",
+ "KC_ESC" , "KC_BSLS" , "KC_LBRC" , "KC_RBRC" , "KC_LCBR" , "KC_RCBR" , "KC_RSFT",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(6)",
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_NO" , "KC_MINS" , "KC_PLUS" , "KC_EQL" , "KC_SLSH" , "KC_ASTR",
+ "KC_COMM", "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS",
+
+ "KC_TRNS", "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_NO",
+ "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS" , "KC_RCTL",
+
+ "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "KC_NO" , "KC_DOT" , "KC_4" , "KC_5" , "KC_6" , "KC_NO" , "KC_TRNS",
+
+ "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO",
+ "KC_NO" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "AG_NORM",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "RGB_MOD", "RGB_VAI" , "RGB_HUI" , "RGB_SAI" , "KC_NO" , "KC_NO",
+
+ "RESET" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "RGB_TOG", "RGB_RMOD" , "RGB_VAD" , "RGB_HUD" , "RGB_SAD" , "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS",
+ "KC_TRNS", "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO"
+
+ ]
+ ]
+}
diff --git a/keyboards/handwired/hillside/readme.md b/keyboards/handwired/hillside/readme.md
new file mode 100644
index 0000000000..f1ff0f8506
--- /dev/null
+++ b/keyboards/handwired/hillside/readme.md
@@ -0,0 +1,29 @@
+# Hillside
+
+![hillside](https://imgur.com/XW0rX13.png)
+
+[Hillside](https://github.com/mmccoyd/hillside)
+ is a split ergonomic keyboard
+ with 3x6+4+2 choc-spaced keys with aggressive column stagger,
+ a longer thumb arc and a breakoff outer-pinky column.
+
+* Keyboard Maintainer: [Michael McCoyd](https://github.com/mmccoyd)
+* Hardware Supported: ProMicro/Elite-C and compatible
+* Hardware Availability: https://github.com/mmccoyd/hillside
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/hillside/0_1:default
+
+Flashing example for this keyboard:
+
+ make handwired/hillside/0_1:default:flash
+
+## Bootloader
+
+Enter the bootloader by either:
+
+* **Physical reset button**: Briefly press the button on the front of the PCB.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/hnah108/rules.mk b/keyboards/handwired/hnah108/rules.mk
index a89ccfc24b..1b9d6c699d 100644
--- a/keyboards/handwired/hnah108/rules.mk
+++ b/keyboards/handwired/hnah108/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/hnah40/keymaps/default/config.h b/keyboards/handwired/hnah40/keymaps/default/config.h
deleted file mode 100644
index 74412a948e..0000000000
--- a/keyboards/handwired/hnah40/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2019 HnahKB
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/hnah40/rules.mk b/keyboards/handwired/hnah40/rules.mk
index 69b5017cac..cd1aba4f8e 100644
--- a/keyboards/handwired/hnah40/rules.mk
+++ b/keyboards/handwired/hnah40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/hnah40rgb/rules.mk b/keyboards/handwired/hnah40rgb/rules.mk
index f909608db9..2991d29477 100644
--- a/keyboards/handwired/hnah40rgb/rules.mk
+++ b/keyboards/handwired/hnah40rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ibm122m/rules.mk b/keyboards/handwired/ibm122m/rules.mk
index 188c6964cf..317e8a5ae8 100644
--- a/keyboards/handwired/ibm122m/rules.mk
+++ b/keyboards/handwired/ibm122m/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/handwired/ibm_wheelwriter/rules.mk b/keyboards/handwired/ibm_wheelwriter/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/handwired/ibm_wheelwriter/rules.mk
+++ b/keyboards/handwired/ibm_wheelwriter/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/jn68m/keymaps/default/config.h b/keyboards/handwired/jn68m/keymaps/default/config.h
deleted file mode 100644
index 4496c59100..0000000000
--- a/keyboards/handwired/jn68m/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/jn68m/rules.mk b/keyboards/handwired/jn68m/rules.mk
index 4f07d21872..5bbac480b2 100644
--- a/keyboards/handwired/jn68m/rules.mk
+++ b/keyboards/handwired/jn68m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/jopr/rules.mk b/keyboards/handwired/jopr/rules.mk
index a176f4ed58..6157d25454 100644
--- a/keyboards/handwired/jopr/rules.mk
+++ b/keyboards/handwired/jopr/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
UNICODE_ENABLE = yes
diff --git a/keyboards/handwired/jot50/keymaps/default/keymap.c b/keyboards/handwired/jot50/keymaps/default/keymap.c
index 2693fbff3c..62f0db5b7e 100644
--- a/keyboards/handwired/jot50/keymaps/default/keymap.c
+++ b/keyboards/handwired/jot50/keymaps/default/keymap.c
@@ -9,35 +9,16 @@
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 3
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
-/* Funct
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | caps | F11 | F12 | | | | | - | = | [ | ] | \ |
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | | vol- | mute | vol+ | | | | _ | + | { | } | | |
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | | prev | play | next | | | | | | | | |
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | | | | | | | | | home | pgdn | pgup | end |
- * +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- */
-#define _FUNCT LAYOUT_ortho_5x12 (\
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,\
- KC_CAPS, KC_F11, KC_F12, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,\
- _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,\
- _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END\
-)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
@@ -50,20 +31,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
* | lshift | Z | X | C | V | B | N | M | , | . | / | enter |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
- * | lctrl | lgui | lalt | ralt | lower | space | space | raise | left | down | up | right |
+ * | lctrl | lgui | lalt | ralt | lower | space | space | raise | left | down | up | right |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
*/
[_QWERTY] = LAYOUT_ortho_5x12 (
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_RALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-[_LOWER] = _FUNCT,
+[_LOWER] = LAYOUT_ortho_5x12 (
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ KC_CAPS, KC_F11, KC_F12, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
-[_RAISE] = _FUNCT,
+[_RAISE] = LAYOUT_ortho_5x12 (
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ KC_CAPS, KC_F11, KC_F12, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
[_ADJUST] = LAYOUT_ortho_5x12 (
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/handwired/jot50/rules.mk b/keyboards/handwired/jot50/rules.mk
index 176396dd7e..eb0954f776 100644
--- a/keyboards/handwired/jot50/rules.mk
+++ b/keyboards/handwired/jot50/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_5x12
diff --git a/keyboards/handwired/jotanck/rules.mk b/keyboards/handwired/jotanck/rules.mk
index c2646d991c..73167aeed7 100644
--- a/keyboards/handwired/jotanck/rules.mk
+++ b/keyboards/handwired/jotanck/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_4x12
diff --git a/keyboards/handwired/jotpad16/rules.mk b/keyboards/handwired/jotpad16/rules.mk
index 90206294f8..b746275c89 100644
--- a/keyboards/handwired/jotpad16/rules.mk
+++ b/keyboards/handwired/jotpad16/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_4x4
diff --git a/keyboards/handwired/jtallbean/split_65/rules.mk b/keyboards/handwired/jtallbean/split_65/rules.mk
index 6832f7dc23..898951758f 100644
--- a/keyboards/handwired/jtallbean/split_65/rules.mk
+++ b/keyboards/handwired/jtallbean/split_65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/juliet/rules.mk b/keyboards/handwired/juliet/rules.mk
index 1ab42df828..35dd707645 100644
--- a/keyboards/handwired/juliet/rules.mk
+++ b/keyboards/handwired/juliet/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/k8split/rules.mk b/keyboards/handwired/k8split/rules.mk
index ab32e6f717..172f6cbeca 100644
--- a/keyboards/handwired/k8split/rules.mk
+++ b/keyboards/handwired/k8split/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/k_numpad17/rules.mk b/keyboards/handwired/k_numpad17/rules.mk
index 90645230e0..4cb57769e9 100644
--- a/keyboards/handwired/k_numpad17/rules.mk
+++ b/keyboards/handwired/k_numpad17/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/handwired/kbod/keymaps/default/config.h b/keyboards/handwired/kbod/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/handwired/kbod/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 3119784e26..333f8a769f 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -29,32 +29,32 @@ if (record->event.pressed) { \
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT( /* Base */
- SFT_ESC, KC_1, KC_2, KC_3, ALT_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- TT(1), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
+ SFT_ESC, KC_1, KC_2, KC_3, ALT_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ TT(1), KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
LAYOUT( /* Cursor layer */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- TT(3), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
- TT(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_END, KC_UP, \
- _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ TT(3), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ TT(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_END, KC_UP,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT
),
LAYOUT( /* Keypad layer */
- TO(0), KC_1, KC_2, KC_3, ALT_F4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC, \
- _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_BTN1, KC_MS_U, KC_BTN2, \
- _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN3 \
+ TO(0), KC_1, KC_2, KC_3, ALT_F4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_BTN1, KC_MS_U, KC_BTN2,
+ _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN3
),
LAYOUT( /* Multimedia layer */
- TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, \
- _______, _______, KC_WAKE, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_MNXT, _______, \
- _______, _______, KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_PWR, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_WH_U, KC_BTN2, \
- _______, _______, _______, KC_MPLY, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3 \
+ TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+ _______, _______, KC_WAKE, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_MNXT, _______,
+ _______, _______, KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_PWR, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_WH_U, KC_BTN2,
+ _______, _______, _______, KC_MPLY, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3
),
};
diff --git a/keyboards/handwired/kbod/keymaps/default/rules.mk b/keyboards/handwired/kbod/keymaps/default/rules.mk
index bb1904fca1..0db36fdd09 100644
--- a/keyboards/handwired/kbod/keymaps/default/rules.mk
+++ b/keyboards/handwired/kbod/keymaps/default/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/kbod/rules.mk b/keyboards/handwired/kbod/rules.mk
index 63a9b256d0..8d562b0bd1 100644
--- a/keyboards/handwired/kbod/rules.mk
+++ b/keyboards/handwired/kbod/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ks63/rules.mk b/keyboards/handwired/ks63/rules.mk
index b23419abef..c54f041bc3 100644
--- a/keyboards/handwired/ks63/rules.mk
+++ b/keyboards/handwired/ks63/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk
index 5743bb1590..574caf2395 100644
--- a/keyboards/handwired/lagrange/rules.mk
+++ b/keyboards/handwired/lagrange/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/leftynumpad/rules.mk b/keyboards/handwired/leftynumpad/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/handwired/leftynumpad/rules.mk
+++ b/keyboards/handwired/leftynumpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/lovelive9/rules.mk b/keyboards/handwired/lovelive9/rules.mk
index 33250a81bb..d835456fe5 100644
--- a/keyboards/handwired/lovelive9/rules.mk
+++ b/keyboards/handwired/lovelive9/rules.mk
@@ -5,19 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/macroboard/chconf.h b/keyboards/handwired/macroboard/chconf.h
new file mode 100644
index 0000000000..de4ab83ec3
--- /dev/null
+++ b/keyboards/handwired/macroboard/chconf.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/onekey/blackpill_f401/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
+
+#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
+
+#define CH_CFG_FACTORY_SEMAPHORES TRUE
+
+#define CH_CFG_FACTORY_MAILBOXES TRUE
+
+#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
+
+#define CH_CFG_FACTORY_PIPES TRUE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/handwired/macroboard/config.h b/keyboards/handwired/macroboard/config.h
new file mode 100644
index 0000000000..92b633d75c
--- /dev/null
+++ b/keyboards/handwired/macroboard/config.h
@@ -0,0 +1,141 @@
+/*
+Copyright 2021 Michał Szczepaniak
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6465
+#define DEVICE_VER 0x0001
+#define MANUFACTURER QMK
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { A15, B3, B4, B5, B7 }
+#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A10 }
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+// #define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN B9
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 24
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/macroboard/info.json b/keyboards/handwired/macroboard/info.json
new file mode 100644
index 0000000000..2aa44eb803
--- /dev/null
+++ b/keyboards/handwired/macroboard/info.json
@@ -0,0 +1,41 @@
+{
+ "keyboard_name": "macroboard",
+ "url": "",
+ "maintainer": "Michał Szczepaniak",
+ "layouts": {
+ "LAYOUT_ortho_5x6": {
+ "layout": [
+ {"label": "k00", "x": 0, "y": 0},
+ {"label": "k01", "x": 1, "y": 0},
+ {"label": "k02", "x": 2, "y": 0},
+ {"label": "k03", "x": 3, "y": 0},
+ {"label": "k04", "x": 4, "y": 0},
+ {"label": "k05", "x": 5, "y": 0},
+ {"label": "k10", "x": 0, "y": 1},
+ {"label": "k11", "x": 1, "y": 1},
+ {"label": "k12", "x": 2, "y": 1},
+ {"label": "k13", "x": 3, "y": 1},
+ {"label": "k14", "x": 4, "y": 1},
+ {"label": "k15", "x": 5, "y": 1},
+ {"label": "k20", "x": 0, "y": 2},
+ {"label": "k21", "x": 1, "y": 2},
+ {"label": "k22", "x": 2, "y": 2},
+ {"label": "k23", "x": 3, "y": 2},
+ {"label": "k24", "x": 4, "y": 2},
+ {"label": "k25", "x": 5, "y": 2},
+ {"label": "k30", "x": 0, "y": 3},
+ {"label": "k31", "x": 1, "y": 3},
+ {"label": "k32", "x": 2, "y": 3},
+ {"label": "k33", "x": 3, "y": 3},
+ {"label": "k34", "x": 4, "y": 3},
+ {"label": "k35", "x": 5, "y": 3},
+ {"label": "k40", "x": 0, "y": 4},
+ {"label": "k41", "x": 1, "y": 4},
+ {"label": "k42", "x": 2, "y": 4},
+ {"label": "k43", "x": 3, "y": 4},
+ {"label": "k44", "x": 4, "y": 4},
+ {"label": "k45", "x": 5, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/macroboard/keymaps/default/keymap.c b/keyboards/handwired/macroboard/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ec587ee25d
--- /dev/null
+++ b/keyboards/handwired/macroboard/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2021 Michał Szczepaniak
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_5x6(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_LCTL, KC_LGUI, RGB_TOG, KC_LALT, RESET, KC_SPC
+ )
+};
+
diff --git a/keyboards/handwired/macroboard/keymaps/default/readme.md b/keyboards/handwired/macroboard/keymaps/default/readme.md
new file mode 100644
index 0000000000..39fa5888ed
--- /dev/null
+++ b/keyboards/handwired/macroboard/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for macroboard
diff --git a/keyboards/handwired/macroboard/macroboard.c b/keyboards/handwired/macroboard/macroboard.c
new file mode 100644
index 0000000000..f9d41ff162
--- /dev/null
+++ b/keyboards/handwired/macroboard/macroboard.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Michał Szczepaniak
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "macroboard.h"
diff --git a/keyboards/handwired/macroboard/macroboard.h b/keyboards/handwired/macroboard/macroboard.h
new file mode 100644
index 0000000000..9909e63afc
--- /dev/null
+++ b/keyboards/handwired/macroboard/macroboard.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Michał Szczepaniak
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_5x6( \
+ k00, k01, k02, k03, k04, k05, \
+ k10, k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, \
+ k30, k31, k32, k33, k34, k35, \
+ k40, k41, k42, k43, k44, k45 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k33, k34, k35 }, \
+ { k40, k41, k42, k43, k44, k45 } \
+}
diff --git a/keyboards/handwired/macroboard/readme.md b/keyboards/handwired/macroboard/readme.md
new file mode 100644
index 0000000000..ee2351f99f
--- /dev/null
+++ b/keyboards/handwired/macroboard/readme.md
@@ -0,0 +1,27 @@
+# macroboard
+
+![macroboard](https://i.imgur.com/AY5Y1Ez.png)
+
+3D printable half preonic (5x6 OLKB) with purpose of being macroboard or if you want to have different switches for gaming while having normal full keyboard for typing.
+
+* Keyboard Maintainer: [Michał Szczepaniak](https://github.com/Michal-Szczepaniak)
+* Hardware Supported: Blackpill
+* Hardware Availability: [OpenSCAD files](https://github.com/Michal-Szczepaniak/macroboard-openscad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/macroboard:default
+
+Flashing example for this keyboard:
+
+ make handwired/macroboard:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available, by default 5th column, 5th row
diff --git a/keyboards/handwired/macroboard/rules.mk b/keyboards/handwired/macroboard/rules.mk
new file mode 100644
index 0000000000..2c38ac2807
--- /dev/null
+++ b/keyboards/handwired/macroboard/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+KEYBOARD_SHARED_EP = yes
diff --git a/keyboards/handwired/magicforce61/keymaps/default/keymap.c b/keyboards/handwired/magicforce61/keymaps/default/keymap.c
index 5f4440a171..7f1c073203 100644
--- a/keyboards/handwired/magicforce61/keymaps/default/keymap.c
+++ b/keyboards/handwired/magicforce61/keymaps/default/keymap.c
@@ -11,43 +11,43 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
/*,--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. */
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
/*|esc-----`-1------`-2------`-3------`-4------`-5------`-6------`-7------`-8------`-9------`-0------`mnus----`plus----`--bksp--| */
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
/*|tab-----`-q------`-w------`-e------`-r------`-t------`-y------`-u------`-i------`-o------`-p------`-{------`-}------`--|-----| */
- NAV_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ NAV_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
/*|caps----`-a------`-s------`-d------`-f------`-g------`-h------`-j------`-k------`-l------`-;------`-'------`-----------enter-| */
- KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
/*|shift---`-z------`-x------`-c------`-v------`-b------`-n------`-m------`-,------`-.------`-/------`--------------------shift-| */
- KC_LCTL, KC_RGUI, KC_LALT, KC_SPC, KC_X1, KC_RALT, KC_RCTL, KC_X1 \
+ KC_LCTL, KC_RGUI, KC_LALT, KC_SPC, KC_X1, KC_RALT, KC_RCTL, KC_X1
/*`ctrl----`-gui----`-alt----`------------------space---------------------------------------`-fn-----`-alt----`ctrl----' ANY */
),
[_FN1] = LAYOUT(
/*,--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
/*|esc-----`-1------`-2------`-3------`-4------`-5------`-6------`-7------`-8------`-9------`-0------`mnus----`plus----`--bksp--| */
- _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, _______, _______, _______, _______, \
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, _______, _______, _______, _______,
/*|tab-----`-q------`-w------`-e------`-r------`-t------`-y------`-u------`-i------`-o------`-p------`-{------`-}------`--|-----| */
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______, _______, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______, _______,
/*|caps----`-a------`-s------`-d------`-f------`-g------`-h------`-j------`-k------`-l------`-;------`-'------`-----------enter-| */
- _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______,
/*|shift---`-z------`-x------`-c------`-v------`-b------`-n------`-m------`-,------`-.------`-/------`--------------------shift-| */
- _______, _______, _______, _______, _______, _______, _______, KC_MPLY \
+ _______, _______, _______, _______, _______, _______, _______, KC_MPLY
/*`ctrl----`-gui----`-alt----`------------------space---------------------------------------`-fn-----`-alt----`ctrl----' ANY */
),
[_FN2] = LAYOUT(
/*,--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------. */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
/*|esc-----`-1------`-2------`-3------`-4------`-5------`-6------`-7------`-8------`-9------`-0------`mnus----`plus----`--bksp--| */
- _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______,
/*|tab-----`-q------`-w------`-e------`-r------`-t------`-y------`-u------`-i------`-o------`-p------`-{------`-}------`--|-----| */
- _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
/*|caps----`-a------`-s------`-d------`-f------`-g------`-h------`-j------`-k------`-l------`-;------`-'------`-----------enter-| */
- _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, \
+ _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______,
/*|shift---`-z------`-x------`-c------`-v------`-b------`-n------`-m------`-,------`-.------`-/------`--------------------shift-| */
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______
/*`ctrl----`-gui----`-alt----`------------------space---------------------------------------`-fn-----`-alt----`ctrl----' ANY */
)
};
diff --git a/keyboards/handwired/magicforce61/rules.mk b/keyboards/handwired/magicforce61/rules.mk
index d3dcd6478c..b521ebe7dd 100644
--- a/keyboards/handwired/magicforce61/rules.mk
+++ b/keyboards/handwired/magicforce61/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/magicforce68/keymaps/default/keymap.c b/keyboards/handwired/magicforce68/keymaps/default/keymap.c
index e44cfefdb1..a52c2ec4a4 100644
--- a/keyboards/handwired/magicforce68/keymaps/default/keymap.c
+++ b/keyboards/handwired/magicforce68/keymaps/default/keymap.c
@@ -9,26 +9,26 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN, \
- KC_X0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_X1, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_X0, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_X1, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_VOLU, KC_HOME, \
- _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_END, \
- _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_MUTE, \
- _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_VOLU, KC_HOME,
+ _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_END,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
),
[_FN2] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_VOLU, KC_HOME, \
- _______, _______, _______, KC_UP, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, KC_VOLD, KC_END, \
- _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, KC_MUTE, \
- _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_VOLU, KC_HOME,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, KC_VOLD, KC_END,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
diff --git a/keyboards/handwired/magicforce68/rules.mk b/keyboards/handwired/magicforce68/rules.mk
index 0f5e7479f6..63aadefc79 100644
--- a/keyboards/handwired/magicforce68/rules.mk
+++ b/keyboards/handwired/magicforce68/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk
index 517abca1d4..8fa2de12ba 100644
--- a/keyboards/handwired/marauder/rules.mk
+++ b/keyboards/handwired/marauder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c b/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c
index 7d83718419..fa0c8e97af 100644
--- a/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c
+++ b/keyboards/handwired/mechboards_micropad/keymaps/default/keymap.c
@@ -27,7 +27,7 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- MECHBOARDURL, QMKURL, MKUK, LEDCHANGE \
+ MECHBOARDURL, QMKURL, MKUK, LEDCHANGE
),
};
diff --git a/keyboards/handwired/mechboards_micropad/rules.mk b/keyboards/handwired/mechboards_micropad/rules.mk
index 5799903139..339bf624d0 100644
--- a/keyboards/handwired/mechboards_micropad/rules.mk
+++ b/keyboards/handwired/mechboards_micropad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/meck_tkl/blackpill_f401/chconf.h b/keyboards/handwired/meck_tkl/blackpill_f401/chconf.h
new file mode 100644
index 0000000000..ad51f8cbe6
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/blackpill_f401/chconf.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/meck_tkl/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE
+
+#define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE
+
+#define CH_CFG_FACTORY_SEMAPHORES TRUE
+
+#define CH_CFG_FACTORY_MAILBOXES TRUE
+
+#define CH_CFG_FACTORY_OBJ_FIFOS TRUE
+
+#define CH_CFG_FACTORY_PIPES TRUE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/handwired/meck_tkl/blackpill_f401/config.h b/keyboards/handwired/meck_tkl/blackpill_f401/config.h
new file mode 100644
index 0000000000..cca2eac3a9
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/blackpill_f401/config.h
@@ -0,0 +1,14 @@
+// Copyright 2021 Gabriel Kim (@gabrielkim13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define MATRIX_ROW_PINS \
+ { B15, A8, A9, B14, A15, B3 }
+#define MATRIX_COL_PINS \
+ { B4, B5, B6, B7, B8, B9, A1, A2, A3, A4, A5, A6, A7, B0, B1, A0, B10 }
+#define UNUSED_PINS \
+ { A10, A11, A12, B2, B12, C14, C15 }
+
+#define LED_CAPS_LOCK_PIN C13
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/handwired/meck_tkl/blackpill_f401/rules.mk b/keyboards/handwired/meck_tkl/blackpill_f401/rules.mk
new file mode 100644
index 0000000000..e01b22e8fd
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/blackpill_f401/rules.mk
@@ -0,0 +1,10 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+KEYBOARD_SHARED_EP = yes
diff --git a/keyboards/handwired/meck_tkl/config.h b/keyboards/handwired/meck_tkl/config.h
new file mode 100644
index 0000000000..5c22e781e4
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/config.h
@@ -0,0 +1,47 @@
+// Copyright 2021 Gabriel Kim (@gabrielkim13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x474B
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER gabrielkim13
+#define PRODUCT Meck TKL
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/meck_tkl/info.json b/keyboards/handwired/meck_tkl/info.json
new file mode 100644
index 0000000000..5976b67584
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "meck_tkl",
+ "url": "github.com/gabrielkim13",
+ "maintainer": "gabrielkim13",
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 2, "y": 0 },
+ { "label": "F2", "x": 3, "y": 0 },
+ { "label": "F3", "x": 4, "y": 0 },
+ { "label": "F4", "x": 5, "y": 0 },
+ { "label": "F5", "x": 6.5, "y": 0 },
+ { "label": "F6", "x": 7.5, "y": 0 },
+ { "label": "F7", "x": 8.5, "y": 0 },
+ { "label": "F8", "x": 9.5, "y": 0 },
+ { "label": "F9", "x": 11, "y": 0 },
+ { "label": "F10", "x": 12, "y": 0 },
+ { "label": "F11", "x": 13, "y": 0 },
+ { "label": "F12", "x": 14, "y": 0 },
+ { "label": "Print Screen", "x": 15.25, "y": 0 },
+ { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+ { "label": "Pause", "x": 17.25, "y": 0 },
+
+ { "label": "`", "x": 0, "y": 1.5 },
+ { "label": "1", "x": 1, "y": 1.5 },
+ { "label": "2", "x": 2, "y": 1.5 },
+ { "label": "3", "x": 3, "y": 1.5 },
+ { "label": "4", "x": 4, "y": 1.5 },
+ { "label": "5", "x": 5, "y": 1.5 },
+ { "label": "6", "x": 6, "y": 1.5 },
+ { "label": "7", "x": 7, "y": 1.5 },
+ { "label": "8", "x": 8, "y": 1.5 },
+ { "label": "9", "x": 9, "y": 1.5 },
+ { "label": "0", "x": 10, "y": 1.5 },
+ { "label": "-", "x": 11, "y": 1.5 },
+ { "label": "=", "x": 12, "y": 1.5 },
+ { "label": "Back Space", "x": 13, "y": 1.5, "w": 2 },
+ { "label": "Insert", "x": 15.25, "y": 1.5 },
+ { "label": "Home", "x": 16.25, "y": 1.5 },
+ { "label": "Page Up", "x": 17.25, "y": 1.5 },
+
+ { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.5 },
+ { "label": "W", "x": 2.5, "y": 2.5 },
+ { "label": "E", "x": 3.5, "y": 2.5 },
+ { "label": "R", "x": 4.5, "y": 2.5 },
+ { "label": "T", "x": 5.5, "y": 2.5 },
+ { "label": "Y", "x": 6.5, "y": 2.5 },
+ { "label": "U", "x": 7.5, "y": 2.5 },
+ { "label": "I", "x": 8.5, "y": 2.5 },
+ { "label": "O", "x": 9.5, "y": 2.5 },
+ { "label": "P", "x": 10.5, "y": 2.5 },
+ { "label": "[", "x": 11.5, "y": 2.5 },
+ { "label": "]", "x": 12.5, "y": 2.5 },
+ { "label": "\\", "x": 13.5, "y": 2.5, "w": 1.5 },
+ { "label": "Delete", "x": 15.25, "y": 2.5 },
+ { "label": "End", "x": 16.25, "y": 2.5 },
+ { "label": "Page Down", "x": 17.25, "y": 2.5 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.5 },
+ { "label": "S", "x": 2.75, "y": 3.5 },
+ { "label": "D", "x": 3.75, "y": 3.5 },
+ { "label": "F", "x": 4.75, "y": 3.5 },
+ { "label": "G", "x": 5.75, "y": 3.5 },
+ { "label": "H", "x": 6.75, "y": 3.5 },
+ { "label": "J", "x": 7.75, "y": 3.5 },
+ { "label": "K", "x": 8.75, "y": 3.5 },
+ { "label": "L", "x": 9.75, "y": 3.5 },
+ { "label": ";", "x": 10.75, "y": 3.5 },
+ { "label": "'", "x": 11.75, "y": 3.5 },
+ { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
+
+ { "label": "Left Shift", "x": 0, "y": 4.5, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 4.5 },
+ { "label": "X", "x": 3.25, "y": 4.5 },
+ { "label": "C", "x": 4.25, "y": 4.5 },
+ { "label": "V", "x": 5.25, "y": 4.5 },
+ { "label": "B", "x": 6.25, "y": 4.5 },
+ { "label": "N", "x": 7.25, "y": 4.5 },
+ { "label": "M", "x": 8.25, "y": 4.5 },
+ { "label": ",", "x": 9.25, "y": 4.5 },
+ { "label": ".", "x": 10.25, "y": 4.5 },
+ { "label": "/", "x": 11.25, "y": 4.5 },
+ { "label": "Right Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
+ { "label": "Up", "x": 16.25, "y": 4.5 },
+
+ { "label": "Left Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
+ { "label": "Left OS", "x": 1.25, "y": 5.5, "w": 1.25 },
+ { "label": "Left Alt", "x": 2.5, "y": 5.5, "w": 1.25 },
+ { "label": "Space", "x": 3.75, "y": 5.5, "w": 6.25 },
+ { "label": "Right Alt", "x": 10, "y": 5.5, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 },
+ { "label": "Right Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
+ { "label": "Left", "x": 15.25, "y": 5.5 },
+ { "label": "Down", "x": 16.25, "y": 5.5 },
+ { "label": "Right", "x": 17.25, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/meck_tkl/keymaps/default/keymap.c b/keyboards/handwired/meck_tkl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1df1318db5
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2021 Gabriel Kim (@gabrielkim13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_tkl_ansi(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/meck_tkl/keymaps/default/readme.md b/keyboards/handwired/meck_tkl/keymaps/default/readme.md
new file mode 100644
index 0000000000..9e2994008a
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for meck_tkl
diff --git a/keyboards/handwired/meck_tkl/meck_tkl.c b/keyboards/handwired/meck_tkl/meck_tkl.c
new file mode 100644
index 0000000000..2668b440ec
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/meck_tkl.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Gabriel Kim (@gabrielkim13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "meck_tkl.h"
diff --git a/keyboards/handwired/meck_tkl/meck_tkl.h b/keyboards/handwired/meck_tkl/meck_tkl.h
new file mode 100644
index 0000000000..a7417dbafe
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/meck_tkl.h
@@ -0,0 +1,38 @@
+// Copyright 2021 Gabriel Kim (@gabrielkim13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ *
+ *
+ * | Esc | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | | SLk | Pau | NLk |
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Back | | Ins | Hom | PUp |
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | | Del | End | PDn |
+ * | Caps | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | | ^ |
+ * | Ctrl | Win | alt | Space | alt | fn | Menu | Ctrl | | < | v | > |
+ */
+#define LAYOUT_tkl_ansi( \
+ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F , \
+ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , k1E , k1F , k1G , \
+ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k2C , k2D , k2E , k2F , k2G , \
+ k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , \
+ k40 , k41 , k42 , k43 , k44 , k45 , k46 , k47 , k48 , k49 , k4A , k4B , k4C , \
+ k50 , k51 , k52 , k53 , k54 , k55 , k56 , k57 , k58 , k59 , k5A \
+) { \
+ { k00, KC_NO, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3C, KC_NO, KC_NO, KC_NO }, \
+ { k40, KC_NO, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, KC_NO, k4B, KC_NO, k4C, KC_NO }, \
+ { k50, k51, k52, KC_NO, KC_NO, KC_NO, k53, KC_NO, KC_NO, KC_NO, k54, k55, k56, k57, k58, k59, k5A } \
+}
diff --git a/keyboards/handwired/meck_tkl/readme.md b/keyboards/handwired/meck_tkl/readme.md
new file mode 100644
index 0000000000..ec09047dde
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/readme.md
@@ -0,0 +1,37 @@
+# meck_tkl
+
+![meck_tkl](https://i.imgur.com/eIpQTjQ.jpeg)
+
+A standard tenkeyless keyboard, using STM32 Blackpill.
+
+* Keyboard Maintainer: [Gabriel Kim](https://github.com/gabrielkim13)
+* Hardware Supported: Blackpill F401
+* Hardware Availability: [Thingiverse: Mechanical Keyboard - MECH - TKL](https://www.thingiverse.com/thing:4225961)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/meck_tkl:default
+
+Flashing example for this keyboard:
+
+ make handwired/meck_tkl:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+## Wiring instructions
+
+- On Blackpill boards, **avoid** using the following pins, since they will cause either USB enumeration or the DFU bootloader to not work correctly:
+ - **USB-related pins:** `PA10`, `PA11`, `PA12`
+ - **BOOT1 pin:** `PB2`
+
+Sample wiring:
+
+![wiring](https://i.imgur.com/jIDmsNy.jpg)
diff --git a/keyboards/handwired/meck_tkl/rules.mk b/keyboards/handwired/meck_tkl/rules.mk
new file mode 100644
index 0000000000..6213285117
--- /dev/null
+++ b/keyboards/handwired/meck_tkl/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+AUDIO_SUPPORTED = no
+BACKLIGHT_SUPPORTED = no
+
+DEFAULT_FOLDER = handwired/meck_tkl/blackpill_f401
diff --git a/keyboards/handwired/minorca/keymaps/default/keymap.c b/keyboards/handwired/minorca/keymaps/default/keymap.c
index f8f9061fec..d9368e0f01 100644
--- a/keyboards/handwired/minorca/keymaps/default/keymap.c
+++ b/keyboards/handwired/minorca/keymaps/default/keymap.c
@@ -8,21 +8,21 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, \
- KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, MO(2), MO(1), \
- XXXXXXX, XXXXXXX, KC_LALT, KC_SPC, KC_SPC, KC_DOT, KC_SLSH, XXXXXXX \
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, MO(2), MO(1),
+ XXXXXXX, XXXXXXX, KC_LALT, KC_SPC, KC_SPC, KC_DOT, KC_SLSH, XXXXXXX
),
[1] = LAYOUT( /* First */
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_LGUI, \
- KC_LCTL, KC_Z, KC_X, KC_C, KC_PGDN, KC_END, KC_L, KC_SCLN, KC_UP, _______, _______, \
- XXXXXXX, XXXXXXX, KC_LALT, _______, _______, KC_DOWN, KC_RGHT, XXXXXXX \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_MPRV, KC_MPLY, KC_MNXT, KC_PGUP, KC_HOME, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_LGUI,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_PGDN, KC_END, KC_L, KC_SCLN, KC_UP, _______, _______,
+ XXXXXXX, XXXXXXX, KC_LALT, _______, _______, KC_DOWN, KC_RGHT, XXXXXXX
),
[2] = LAYOUT( /* Second */
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_ENT, \
- KC_CAPS, KC_LSFT, KC_RSFT, KC_PAUS, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_UP, _______, _______, \
- XXXXXXX, XXXXXXX, KC_LALT, _______, _______, KC_DOWN, KC_RGHT, XXXXXXX \
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_TAB, KC_MUTE, KC_VOLD, KC_VOLU, KC_TILD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_ENT,
+ KC_CAPS, KC_LSFT, KC_RSFT, KC_PAUS, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_UP, _______, _______,
+ XXXXXXX, XXXXXXX, KC_LALT, _______, _______, KC_DOWN, KC_RGHT, XXXXXXX
),
};
diff --git a/keyboards/handwired/minorca/keymaps/readme.md b/keyboards/handwired/minorca/keymaps/readme.md
deleted file mode 100644
index 058923ba25..0000000000
--- a/keyboards/handwired/minorca/keymaps/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of Minorca keymaps
-
-* **default** default Minorca layout
-* **rgb** layout with WS2812b control
diff --git a/keyboards/handwired/minorca/rules.mk b/keyboards/handwired/minorca/rules.mk
index d1fe5d8a28..ec925a763e 100644
--- a/keyboards/handwired/minorca/rules.mk
+++ b/keyboards/handwired/minorca/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/misterdeck/config.h b/keyboards/handwired/misterdeck/config.h
new file mode 100644
index 0000000000..3aaef79d0a
--- /dev/null
+++ b/keyboards/handwired/misterdeck/config.h
@@ -0,0 +1,45 @@
+/*
+Copyright 2021 Chris Broekema (broekema@gmail.com)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBEEF
+#define PRODUCT_ID 0x6969
+#define DEVICE_VER 0x0001
+#define MANUFACTURER QMK
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 4
+
+#define MATRIX_ROW_PINS { D1, D0, D4 }
+#define MATRIX_COL_PINS { D7, E6, B4, B5 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+//#define JOYSTICK_AXES_COUNT 4
+//#define JOYSTICK_BUTTON_COUNT 8
diff --git a/keyboards/handwired/misterdeck/info.json b/keyboards/handwired/misterdeck/info.json
new file mode 100644
index 0000000000..84c3863107
--- /dev/null
+++ b/keyboards/handwired/misterdeck/info.json
@@ -0,0 +1,5 @@
+{
+ "keyboard_name": "MisteRdeck",
+ "url": "https://www.thingiverse.com/thing:4627779",
+ "maintainer": "broekema",
+}
diff --git a/keyboards/handwired/misterdeck/keymaps/default/config.h b/keyboards/handwired/misterdeck/keymaps/default/config.h
new file mode 100644
index 0000000000..c21c29910b
--- /dev/null
+++ b/keyboards/handwired/misterdeck/keymaps/default/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2021 Chris Broekema (broekema@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define JOYSTICK_AXES_COUNT 4
+#define JOYSTICK_BUTTON_COUNT 4
diff --git a/keyboards/handwired/misterdeck/keymaps/default/keymap.c b/keyboards/handwired/misterdeck/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a6b6ee467e
--- /dev/null
+++ b/keyboards/handwired/misterdeck/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 Chris Broekema (broekema@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "joystick.h"
+
+enum layers {
+ NORMAL_LAYER = 0
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [NORMAL_LAYER] = LAYOUT( C(S(KC_F1)), C(S(KC_F2)), C(S(KC_F3)), C(S(KC_F4)),
+ C(S(KC_F5)), C(S(KC_F6)), C(S(KC_F7)), C(S(KC_F8)),
+ JS_BUTTON0, JS_BUTTON1, JS_BUTTON2, JS_BUTTON3 ),
+};
+
+
+
+joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = {
+ [0] = JOYSTICK_AXIS_IN(F4, 0, 512, 1023),
+ [1] = JOYSTICK_AXIS_IN(F5, 0, 512, 1023),
+ [2] = JOYSTICK_AXIS_IN(F6, 0, 512, 1023),
+ [3] = JOYSTICK_AXIS_IN(F7, 0, 512, 1023)
+};
diff --git a/keyboards/handwired/misterdeck/keymaps/nobuttons/config.h b/keyboards/handwired/misterdeck/keymaps/nobuttons/config.h
new file mode 100644
index 0000000000..bd150139c1
--- /dev/null
+++ b/keyboards/handwired/misterdeck/keymaps/nobuttons/config.h
@@ -0,0 +1,22 @@
+/*
+Copyright 2021 Chris Broekema (broekema@gmail.com)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#pragma once
+
+#define JOYSTICK_AXES_COUNT 4
+#define JOYSTICK_BUTTON_COUNT 0
diff --git a/keyboards/handwired/misterdeck/keymaps/nobuttons/keymap.c b/keyboards/handwired/misterdeck/keymaps/nobuttons/keymap.c
new file mode 100644
index 0000000000..fbeb636cf2
--- /dev/null
+++ b/keyboards/handwired/misterdeck/keymaps/nobuttons/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 Chris Broekema (broekema@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "joystick.h"
+
+enum layers {
+ NORMAL_LAYER = 0
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [NORMAL_LAYER] = LAYOUT( C(S(KC_F1)), C(S(KC_F2)), C(S(KC_F3)), C(S(KC_F4)),
+ C(S(KC_F5)), C(S(KC_F6)), C(S(KC_F7)), C(S(KC_F8)),
+ C(S(KC_F9)), C(S(KC_F10)), C(S(KC_F11)), C(S(KC_F12))),
+};
+
+
+
+joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = {
+ [0] = JOYSTICK_AXIS_IN(F4, 0, 512, 1023),
+ [1] = JOYSTICK_AXIS_IN(F5, 0, 512, 1023),
+ [2] = JOYSTICK_AXIS_IN(F6, 0, 512, 1023),
+ [3] = JOYSTICK_AXIS_IN(F7, 0, 512, 1023)
+};
diff --git a/keyboards/handwired/misterdeck/misterdeck.c b/keyboards/handwired/misterdeck/misterdeck.c
new file mode 100644
index 0000000000..a096e9ce95
--- /dev/null
+++ b/keyboards/handwired/misterdeck/misterdeck.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Chris Broekema (broekema@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "misterdeck.h"
diff --git a/keyboards/handwired/misterdeck/misterdeck.h b/keyboards/handwired/misterdeck/misterdeck.h
new file mode 100644
index 0000000000..a86ca2c2c9
--- /dev/null
+++ b/keyboards/handwired/misterdeck/misterdeck.h
@@ -0,0 +1,29 @@
+/* Copyright 2021 Chris Broekema (broekema@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 }, \
+ { k20, k21, k22, k23 } \
+}
diff --git a/keyboards/handwired/misterdeck/readme.md b/keyboards/handwired/misterdeck/readme.md
new file mode 100644
index 0000000000..b9d472319a
--- /dev/null
+++ b/keyboards/handwired/misterdeck/readme.md
@@ -0,0 +1,21 @@
+# MisterDeck
+
+![MisteRdeck](https://i.imgur.com/FTPWqkXh.jpeg)
+
+A 3D-printed streamdeck like keyboard featuring 12 keys and 4 sliders
+
+* Keyboard Maintainer: [Chris Broekema](https://github.com/broekema)
+* Hardware Supported: MisteRdeck by MisteR_ofcl
+* Hardware Availability: [Thingiverse](https://www.thingiverse.com/thing:4627779)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/misterdeck:default
+
+Flashing example for this keyboard:
+
+ make handwired/misterdeck:default:flash
+
+Connect a momentary switch to RST and GND, hit twice in succession to reset the board into bootloader mode.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/handwired/misterdeck/rules.mk b/keyboards/handwired/misterdeck/rules.mk
new file mode 100644
index 0000000000..c19a30931a
--- /dev/null
+++ b/keyboards/handwired/misterdeck/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# use joystick feature for sliders
+JOYSTICK_ENABLE = yes
diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/config.h b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c
index 860f6d3111..eebea17a7b 100644
--- a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c
+++ b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/keymap.c
@@ -17,12 +17,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ---------------------------------------------------------------------------------
*/
- [0] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, KC_VOLU, KC_MUTE, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, RSFT(KC_1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, KC_VOLU, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, RSFT(KC_1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk
index c3e9c62a19..3224016bbe 100644
--- a/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk
+++ b/keyboards/handwired/ms_sculpt_mobile/keymaps/default/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/ms_sculpt_mobile/rules.mk b/keyboards/handwired/ms_sculpt_mobile/rules.mk
index 36961d9434..72015d93d8 100644
--- a/keyboards/handwired/ms_sculpt_mobile/rules.mk
+++ b/keyboards/handwired/ms_sculpt_mobile/rules.mk
@@ -1,3 +1,4 @@
+# MCU name
ifdef ASTAR
MCU = atmega32u4
CFLAGS = -D ASTAR
@@ -12,15 +13,15 @@ else
BOOTLOADER = atmel-dfu
endif
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/myskeeb/rules.mk b/keyboards/handwired/myskeeb/rules.mk
index d8ce97a7b8..d694be736f 100644
--- a/keyboards/handwired/myskeeb/rules.mk
+++ b/keyboards/handwired/myskeeb/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/nicekey/rules.mk b/keyboards/handwired/nicekey/rules.mk
index 6302e743d4..e311fac590 100644
--- a/keyboards/handwired/nicekey/rules.mk
+++ b/keyboards/handwired/nicekey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/not_so_minidox/rules.mk b/keyboards/handwired/not_so_minidox/rules.mk
index f322b2c914..3eab0fba7e 100644
--- a/keyboards/handwired/not_so_minidox/rules.mk
+++ b/keyboards/handwired/not_so_minidox/rules.mk
@@ -5,21 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
USE_I2C = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
SRC += matrix.c \
diff --git a/keyboards/handwired/novem/rules.mk b/keyboards/handwired/novem/rules.mk
index 2c92dd919a..ba0ee2cb43 100644
--- a/keyboards/handwired/novem/rules.mk
+++ b/keyboards/handwired/novem/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/nozbe_macro/config.h b/keyboards/handwired/nozbe_macro/config.h
new file mode 100644
index 0000000000..996ed08ab6
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/config.h
@@ -0,0 +1,57 @@
+/* Copyright 2021 Marcin Leon Omelan (@rozPierog)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Leon Omelan
+#define PRODUCT Nozbe Reunion Pad
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 4
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B0 }
+#define MATRIX_COL_PINS \
+ { D1, D0, D4, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B5
+#ifdef BACKLIGHT_PIN
+# define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
diff --git a/keyboards/handwired/nozbe_macro/info.json b/keyboards/handwired/nozbe_macro/info.json
new file mode 100644
index 0000000000..056ccf9fc1
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "nozbe_macro",
+ "url": "",
+ "maintainer": "Leon Omelan",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c b/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7012e50d40
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2021 Marcin Leon Omelan (@rozPierog)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ LT(_FN, KC_N), LALT(KC_UP), LALT(KC_DOWN), LALT(KC_D)
+ ),
+ [_FN] = LAYOUT(
+ KC_TRNS, KC_1, KC_2, BL_STEP
+ ),
+};
diff --git a/keyboards/handwired/nozbe_macro/keymaps/default/readme.md b/keyboards/handwired/nozbe_macro/keymaps/default/readme.md
new file mode 100644
index 0000000000..99051c3a25
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for nozbe_macro
diff --git a/keyboards/handwired/nozbe_macro/nozbe_macro.c b/keyboards/handwired/nozbe_macro/nozbe_macro.c
new file mode 100644
index 0000000000..b6d38fec83
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/nozbe_macro.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Marcin Leon Omelan (@rozPierog)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "nozbe_macro.h"
diff --git a/keyboards/handwired/nozbe_macro/nozbe_macro.h b/keyboards/handwired/nozbe_macro/nozbe_macro.h
new file mode 100644
index 0000000000..2c2c95091b
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/nozbe_macro.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Marcin Leon Omelan (@rozPierog)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03 \
+) { \
+ { k00, k01, k02, k03 } \
+}
diff --git a/keyboards/handwired/nozbe_macro/readme.md b/keyboards/handwired/nozbe_macro/readme.md
new file mode 100644
index 0000000000..1e51dabff3
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/readme.md
@@ -0,0 +1,26 @@
+# Nozbe Macropad handwired
+
+![Nozbe Macropad](https://i.imgur.com/fUMtWmah.png)
+
+4 key macropad with optional rotary encoder.
+
+* Keyboard Maintainer: [rozPierog](https://github.com/rozPierog)
+* Hardware Supported: Custom handwired 4 key (or 3 key + rotary encoder) pad
+* Hardware Availability: *n/a*
+* Github Repository: [NozbePad](https://github.com/rozPierog/NozbePad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/nozbe_macro:default
+
+Flashing example for this keyboard:
+
+ make handwired/nozbe_macro:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 1 way:
+
+* **Short pins**: short RST and GND pins at the back
diff --git a/keyboards/handwired/nozbe_macro/rules.mk b/keyboards/handwired/nozbe_macro/rules.mk
new file mode 100644
index 0000000000..1c4073c9ce
--- /dev/null
+++ b/keyboards/handwired/nozbe_macro/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/numpad20/keymaps/default/keymap.c b/keyboards/handwired/numpad20/keymaps/default/keymap.c
index 414b104afd..8bbd601897 100644
--- a/keyboards/handwired/numpad20/keymaps/default/keymap.c
+++ b/keyboards/handwired/numpad20/keymaps/default/keymap.c
@@ -2,10 +2,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, \
- KC_P7, KC_P8, KC_P9, KC_PLUS, \
- KC_P4, KC_P5, KC_P6, KC_MINS, \
- KC_P1, KC_P2, KC_P3, KC_ENT, \
- KC_P0, KC_DOT, KC_RGHT, KC_TAB \
+ KC_LEFT, KC_RGHT, KC_UP, KC_DOWN,
+ KC_P7, KC_P8, KC_P9, KC_PLUS,
+ KC_P4, KC_P5, KC_P6, KC_MINS,
+ KC_P1, KC_P2, KC_P3, KC_ENT,
+ KC_P0, KC_DOT, KC_RGHT, KC_TAB
)
};
diff --git a/keyboards/handwired/numpad20/rules.mk b/keyboards/handwired/numpad20/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/handwired/numpad20/rules.mk
+++ b/keyboards/handwired/numpad20/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/obro/config.h b/keyboards/handwired/obro/config.h
new file mode 100644
index 0000000000..1217214dd7
--- /dev/null
+++ b/keyboards/handwired/obro/config.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2022 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5052
+#define PRODUCT_ID 0x0042
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Prime Keyboards
+#define PRODUCT obro
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, F7, D4, B7, B3, D5, D3, D2, D1, D0 }
+#define MATRIX_ROW_PINS { E6, F0, F6, D7, D6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F1
+#define RGBLED_NUM 64
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LIMIT_VAL 200
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/handwired/obro/info.json b/keyboards/handwired/obro/info.json
new file mode 100644
index 0000000000..e289ae585e
--- /dev/null
+++ b/keyboards/handwired/obro/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Obro",
+ "url": "https://www.primekb.com",
+ "maintainer": "holtenc",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":8.5, "y":0}, {"label":"*", "x":9.5, "y":0}, {"label":"(", "x":10.5, "y":0}, {"label":")", "x":11.5, "y":0}, {"label":"_", "x":12.5, "y":0}, {"label":"+", "x":13.5, "y":0}, {"label":"Backspace", "x":14.5, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":8, "y":1}, {"label":"U", "x":9, "y":1}, {"label":"I", "x":10, "y":1}, {"label":"O", "x":11, "y":1}, {"label":"P", "x":12, "y":1}, {"label":"{", "x":13, "y":1}, {"label":"}", "x":14, "y":1}, {"label":"|", "x":15, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":8.25, "y":2}, {"label":"J", "x":9.25, "y":2}, {"label":"K", "x":10.25, "y":2}, {"label":"L", "x":11.25, "y":2}, {"label":":", "x":12.25, "y":2}, {"label":"\"", "x":13.25, "y":2}, {"label":"Enter", "x":14.25, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"N", "x":8.75, "y":3}, {"label":"M", "x":9.75, "y":3}, {"label":"<", "x":10.75, "y":3}, {"label":">", "x":11.75, "y":3}, {"label":"?", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.75}, {"label":"Fn", "x":15.5, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2.25}, {"x":7.75, "y":4, "w":2.75}, {"label":"Alt", "x":10.5, "y":4, "w":1.25}, {"label":"Win", "x":12.75, "y":4, "w":1.25}, {"label":"Menu", "x":14, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}]
+ }
+ }
+}
diff --git a/keyboards/handwired/obro/keymaps/default/keymap.c b/keyboards/handwired/obro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cf963b553d
--- /dev/null
+++ b/keyboards/handwired/obro/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______,
+ _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/obro/keymaps/via/keymap.c b/keyboards/handwired/obro/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cf963b553d
--- /dev/null
+++ b/keyboards/handwired/obro/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______,
+ _______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/obro/keymaps/via/rules.mk b/keyboards/handwired/obro/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/handwired/obro/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/obro/obro.c b/keyboards/handwired/obro/obro.c
new file mode 100644
index 0000000000..e02765e6ad
--- /dev/null
+++ b/keyboards/handwired/obro/obro.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2020 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "obro.h"
diff --git a/keyboards/handwired/obro/obro.h b/keyboards/handwired/obro/obro.h
new file mode 100644
index 0000000000..8cff4ff96d
--- /dev/null
+++ b/keyboards/handwired/obro/obro.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2022 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define K_NO KC_NO
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K404, K407, K409, K411, K412, K413 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K_NO, K213 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313}, \
+ { K400, K401, K402, K_NO, K404, K_NO, K_NO, K407, K_NO, K409, K_NO, K411, K412, K413 } \
+}
diff --git a/keyboards/handwired/obro/readme.md b/keyboards/handwired/obro/readme.md
new file mode 100644
index 0000000000..7be928050d
--- /dev/null
+++ b/keyboards/handwired/obro/readme.md
@@ -0,0 +1,22 @@
+# Obro
+
+* Keyboard Maintainer: [Holten Campbell](https://github.com/holtenc)
+* Hardware Supported: ATMEGA32u4
+* Hardware Availability: Not applicable
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/obro:default
+
+Flashing example for this keyboard:
+
+ make handwired/obro:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+# Bootloader
+
+Enter the bootloader in 3 ways:
+* Bootmagic reset: HOld down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* Physical reset button: Briefly press the button on the back of the PCB
+* Keycode in layout: Press the key mapped to RESET if it is available
diff --git a/keyboards/handwired/obro/rules.mk b/keyboards/handwired/obro/rules.mk
new file mode 100644
index 0000000000..ee0e024ddb
--- /dev/null
+++ b/keyboards/handwired/obro/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c
index c87852da53..56938cf62f 100644
--- a/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c
+++ b/keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c
@@ -68,14 +68,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 0 | . | |
* `---------------'
*/
- [BASE] = LAYOUT( \
- KC_NLCK, KC_MPLY, \
- KC_CALC, TO(ONE), KC_MPRV, KC_MNXT, \
- KC_EQL, KC_PSLS, KC_PAST, KC_MINS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
- KC_P0, KC_PDOT, KC_PENT \
+ [BASE] = LAYOUT(
+ KC_NLCK, KC_MPLY,
+ KC_CALC, TO(ONE), KC_MPRV, KC_MNXT,
+ KC_EQL, KC_PSLS, KC_PAST, KC_MINS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
),
/* Keymap ONE: Util Layer
@@ -97,14 +97,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | NO | NO| |
* `---------------'
*/
- [ONE] = LAYOUT( \
- RESET, KC_CAD, \
- TO(BASE), TO(TWO), MAKE1, MAKE2, \
- DIR, MAIL1, MAIL2, OBUWUN, \
- SELWP, KC_AF4, SELWN, \
- KC_CPY, KC_UP, KC_PST, KC_PSCR, \
- KC_LEFT, KC_DOWN, KC_RGHT, \
- KC_P0, KC_PDOT, KC_PENT \
+ [ONE] = LAYOUT(
+ RESET, KC_CAD,
+ TO(BASE), TO(TWO), MAKE1, MAKE2,
+ DIR, MAIL1, MAIL2, OBUWUN,
+ SELWP, KC_AF4, SELWN,
+ KC_CPY, KC_UP, KC_PST, KC_PSCR,
+ KC_LEFT, KC_DOWN, KC_RGHT,
+ KC_P0, KC_PDOT, KC_PENT
),
/* Keymap TWO: Emoji Layer
@@ -126,14 +126,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | NO | NO| |
* `---------------'
*/
- [TWO] = LAYOUT( \
- KC_NO, KC_NO, \
- TO(ONE), TO(BASE), KC_LBRC, KC_RBRC, \
- KC_F13, KC_F14, KC_F15, KC_F16, \
- EM7, EM8, EM9, \
- EM4, EM5, EM6, KC_NO, \
- EM1, EM2, EM3, \
- KC_NO, KC_NO, KC_NO \
+ [TWO] = LAYOUT(
+ KC_NO, KC_NO,
+ TO(ONE), TO(BASE), KC_LBRC, KC_RBRC,
+ KC_F13, KC_F14, KC_F15, KC_F16,
+ EM7, EM8, EM9,
+ EM4, EM5, EM6, KC_NO,
+ EM1, EM2, EM3,
+ KC_NO, KC_NO, KC_NO
),
};
diff --git a/keyboards/handwired/obuwunkunubi/spaget/rules.mk b/keyboards/handwired/obuwunkunubi/spaget/rules.mk
index 372c6c7ea6..9a469b22ec 100644
--- a/keyboards/handwired/obuwunkunubi/spaget/rules.mk
+++ b/keyboards/handwired/obuwunkunubi/spaget/rules.mk
@@ -5,19 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
UNICODE_ENABLE = yes # Unicode
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
AUDIO_ENABLE = no # Audio output
OLED_ENABLE = yes
diff --git a/keyboards/handwired/oem_ansi_fullsize/rules.mk b/keyboards/handwired/oem_ansi_fullsize/rules.mk
index 98abc35b8d..a0cf1ea43a 100644
--- a/keyboards/handwired/oem_ansi_fullsize/rules.mk
+++ b/keyboards/handwired/oem_ansi_fullsize/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/oem_iso_fullsize/rules.mk b/keyboards/handwired/oem_iso_fullsize/rules.mk
index 31a0939279..29f6363162 100644
--- a/keyboards/handwired/oem_iso_fullsize/rules.mk
+++ b/keyboards/handwired/oem_iso_fullsize/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/onekey/keymaps/oled/keymap.c b/keyboards/handwired/onekey/keymaps/oled/keymap.c
index e020d5e4b6..244dc4facb 100644
--- a/keyboards/handwired/onekey/keymaps/oled/keymap.c
+++ b/keyboards/handwired/onekey/keymaps/oled/keymap.c
@@ -390,7 +390,7 @@ bool oled_task_user(void) {
// This mode is also forced when the screen update speed test is performed.
if (!need_update) {
if (test_mode != TEST_SLOW_UPDATE) {
- return;
+ return false;
}
}
need_update = false;
diff --git a/keyboards/handwired/onekey/rules.mk b/keyboards/handwired/onekey/rules.mk
index 546aadf0b5..98a145f714 100644
--- a/keyboards/handwired/onekey/rules.mk
+++ b/keyboards/handwired/onekey/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ortho5x13/rules.mk b/keyboards/handwired/ortho5x13/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/handwired/ortho5x13/rules.mk
+++ b/keyboards/handwired/ortho5x13/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ortho5x14/rules.mk b/keyboards/handwired/ortho5x14/rules.mk
index 351c837e3b..aae71d4602 100644
--- a/keyboards/handwired/ortho5x14/rules.mk
+++ b/keyboards/handwired/ortho5x14/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/ortho_brass/config.h b/keyboards/handwired/ortho_brass/config.h
new file mode 100644
index 0000000000..816a8fe597
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/config.h
@@ -0,0 +1,44 @@
+/* Copyright 2021 Christoph Jabs (BifbofII)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER BifbofII
+#define PRODUCT Ortho Brass
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* Handwired pin-out */
+#define MATRIX_ROW_PINS \
+ { D3, D2, D1, D0 }
+#define MATRIX_COL_PINS \
+ { F4, F7, F5, F1, C7, F0, B1, B0, F6, B6, B2, B3 }
+#define UNUSED_PINS \
+ { B0, B1, B2, F0, F1, F4, D4, D5, E6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/handwired/ortho_brass/info.json b/keyboards/handwired/ortho_brass/info.json
new file mode 100644
index 0000000000..9178f8d89b
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/info.json
@@ -0,0 +1,116 @@
+{
+ "keyboard_name": "Ortho Brass",
+ "url": "",
+ "maintainer": "BifbofII",
+ "layouts": {
+ "LAYOUT_ortho_4x12": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+
+ {"label":"k10", "x":0, "y":1},
+ {"label":"k11", "x":1, "y":1},
+ {"label":"k12", "x":2, "y":1},
+ {"label":"k13", "x":3, "y":1},
+ {"label":"k14", "x":4, "y":1},
+ {"label":"k15", "x":5, "y":1},
+ {"label":"k16", "x":6, "y":1},
+ {"label":"k17", "x":7, "y":1},
+ {"label":"k18", "x":8, "y":1},
+ {"label":"k19", "x":9, "y":1},
+ {"label":"k1a", "x":10, "y":1},
+ {"label":"k1b", "x":11, "y":1},
+
+ {"label":"k20", "x":0, "y":2},
+ {"label":"k21", "x":1, "y":2},
+ {"label":"k22", "x":2, "y":2},
+ {"label":"k23", "x":3, "y":2},
+ {"label":"k24", "x":4, "y":2},
+ {"label":"k25", "x":5, "y":2},
+ {"label":"k26", "x":6, "y":2},
+ {"label":"k27", "x":7, "y":2},
+ {"label":"k28", "x":8, "y":2},
+ {"label":"k29", "x":9, "y":2},
+ {"label":"k2a", "x":10, "y":2},
+ {"label":"k2b", "x":11, "y":2},
+
+ {"label":"k30", "x":0, "y":3},
+ {"label":"k31", "x":1, "y":3},
+ {"label":"k32", "x":2, "y":3},
+ {"label":"k33", "x":3, "y":3},
+ {"label":"k34", "x":4, "y":3},
+ {"label":"k35", "x":5, "y":3},
+ {"label":"k36", "x":6, "y":3},
+ {"label":"k37", "x":7, "y":3},
+ {"label":"k38", "x":8, "y":3},
+ {"label":"k39", "x":9, "y":3},
+ {"label":"k3a", "x":10, "y":3},
+ {"label":"k3b", "x":11, "y":3}
+ ]
+ },
+ "LAYOUT_ortho_4x12_1x2uC": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+
+ {"label":"k10", "x":0, "y":1},
+ {"label":"k11", "x":1, "y":1},
+ {"label":"k12", "x":2, "y":1},
+ {"label":"k13", "x":3, "y":1},
+ {"label":"k14", "x":4, "y":1},
+ {"label":"k15", "x":5, "y":1},
+ {"label":"k16", "x":6, "y":1},
+ {"label":"k17", "x":7, "y":1},
+ {"label":"k18", "x":8, "y":1},
+ {"label":"k19", "x":9, "y":1},
+ {"label":"k1a", "x":10, "y":1},
+ {"label":"k1b", "x":11, "y":1},
+
+ {"label":"k20", "x":0, "y":2},
+ {"label":"k21", "x":1, "y":2},
+ {"label":"k22", "x":2, "y":2},
+ {"label":"k23", "x":3, "y":2},
+ {"label":"k24", "x":4, "y":2},
+ {"label":"k25", "x":5, "y":2},
+ {"label":"k26", "x":6, "y":2},
+ {"label":"k27", "x":7, "y":2},
+ {"label":"k28", "x":8, "y":2},
+ {"label":"k29", "x":9, "y":2},
+ {"label":"k2a", "x":10, "y":2},
+ {"label":"k2b", "x":11, "y":2},
+
+ {"label":"k30", "x":0, "y":3},
+ {"label":"k31", "x":1, "y":3},
+ {"label":"k32", "x":2, "y":3},
+ {"label":"k33", "x":3, "y":3},
+ {"label":"k34", "x":4, "y":3},
+ {"label":"k35", "x":5, "y":3, "w":2},
+ {"label":"k37", "x":7, "y":3},
+ {"label":"k38", "x":8, "y":3},
+ {"label":"k39", "x":9, "y":3},
+ {"label":"k3a", "x":10, "y":3},
+ {"label":"k3b", "x":11, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/ortho_brass/keymaps/default/keymap.c b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c
new file mode 100644
index 0000000000..48af2a2d00
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c
@@ -0,0 +1,240 @@
+/* Copyright 2021 Christoph Jabs (BifbofII)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum ortho_brass_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST
+};
+
+enum ortho_brass_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12_1x2uC(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ XXXXXXX, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_ortho_4x12_1x2uC(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ XXXXXXX, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_ortho_4x12_1x2uC(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ XXXXXXX, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12_1x2uC(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12_1x2uC(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PLOVER] = LAYOUT_ortho_4x12_1x2uC(
+ KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12_1x2uC(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0: {
+ if (active) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ break;
+ }
+ }
+ return true;
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/handwired/ortho_brass/keymaps/default/readme.md b/keyboards/handwired/ortho_brass/keymaps/default/readme.md
new file mode 100644
index 0000000000..ca6c4a71d4
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# The Default Ortho 4x12 Planck-like Layout
+
+![Planck Default Layout](https://i.imgur.com/axdWbdH.jpeg)
+
+Very slightly modified to remove features that the handwired version does not have.
diff --git a/keyboards/handwired/ortho_brass/ortho_brass.c b/keyboards/handwired/ortho_brass/ortho_brass.c
new file mode 100644
index 0000000000..d124bbfca2
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/ortho_brass.c
@@ -0,0 +1,26 @@
+/* Copyright 2021 Christoph Jabs (BifbofII)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ortho_brass.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__((weak)) const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+};
+#endif
diff --git a/keyboards/handwired/ortho_brass/ortho_brass.h b/keyboards/handwired/ortho_brass/ortho_brass.h
new file mode 100644
index 0000000000..0bcff0db51
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/ortho_brass.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Christoph Jabs (BifbofII)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_4x12_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT LAYOUT_ortho_4x12
diff --git a/keyboards/handwired/ortho_brass/readme.md b/keyboards/handwired/ortho_brass/readme.md
new file mode 100644
index 0000000000..0b531dac10
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/readme.md
@@ -0,0 +1,6 @@
+# Ortho Brass Handwired Keyboard
+
+A handwired keyboard with brass backplate and planck-like ortho 4x12 layout.
+A compact 40% (12x4) ortholinear keyboard.
+
+![BifbofII Ortho 4x12 Layout](https://i.imgur.com/hHSexjE.jpeg)
diff --git a/keyboards/handwired/ortho_brass/rules.mk b/keyboards/handwired/ortho_brass/rules.mk
new file mode 100644
index 0000000000..19154c58f9
--- /dev/null
+++ b/keyboards/handwired/ortho_brass/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader
+BOOTLOADER = qmk-dfu
+
+# Build Options
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable RGB underlight.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+LAYOUTS = ortho_4x12
+
+RGBLIGHT_SUPPORTED = no
diff --git a/keyboards/handwired/owlet60/keymaps/default/config.h b/keyboards/handwired/owlet60/keymaps/default/config.h
deleted file mode 100644
index f662fe7c93..0000000000
--- a/keyboards/handwired/owlet60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 worthlessowl
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/owlet60/keymaps/default/keymap.c b/keyboards/handwired/owlet60/keymaps/default/keymap.c
index 7dfc7bcaf3..e8e81bc530 100644
--- a/keyboards/handwired/owlet60/keymaps/default/keymap.c
+++ b/keyboards/handwired/owlet60/keymaps/default/keymap.c
@@ -23,19 +23,19 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_owlet60_full_bsp(
- KC_1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP, \
- KC_2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDOWN, \
- KC_3, KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_HOME, \
- KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
- KC_LCTRL, KC_LALT, KC_SPC, MO(1),KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT \
+ KC_1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDOWN,
+ KC_3, KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTRL, KC_LALT, KC_SPC, MO(1),KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_owlet60_full_bsp(
- KC_NO, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, RGB_TOG, \
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD, \
- KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, RGB_VAI, \
- KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_VAD, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_NO, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, RGB_TOG,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MOD,
+ KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC_NO, KC_NO, RGB_VAI,
+ KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_N, KC_NO, KC_NO,KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/handwired/owlet60/rules.mk b/keyboards/handwired/owlet60/rules.mk
index 8767e9dac1..193e837a5e 100644
--- a/keyboards/handwired/owlet60/rules.mk
+++ b/keyboards/handwired/owlet60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/p65rgb/rules.mk b/keyboards/handwired/p65rgb/rules.mk
index 1249610b16..be2f090b13 100644
--- a/keyboards/handwired/p65rgb/rules.mk
+++ b/keyboards/handwired/p65rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/handwired/pilcrow/keymaps/default/config.h b/keyboards/handwired/pilcrow/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/handwired/pilcrow/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/pilcrow/keymaps/default/keymap.c b/keyboards/handwired/pilcrow/keymaps/default/keymap.c
index 33a5c2ac1f..eee0d04705 100644
--- a/keyboards/handwired/pilcrow/keymaps/default/keymap.c
+++ b/keyboards/handwired/pilcrow/keymaps/default/keymap.c
@@ -3,11 +3,11 @@
#define SFT_SPC MT(MOD_LSFT, KC_SPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( \
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
- KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, SFT_SPC, MO(2), MO(3), KC_DEL, KC_ESC \
+ [0] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, SFT_SPC, MO(2), MO(3), KC_DEL, KC_ESC
),
/* Colemak
@@ -21,17 +21,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
- [1] = LAYOUT( \
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_PIPE, S(KC_QUOT), \
- _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_GRV \
+ [1] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_PIPE, S(KC_QUOT),
+ _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_GRV
),
- [2] = LAYOUT( \
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \
- OSM(MOD_LSFT), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_BSLS, KC_QUOT, \
- _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU \
+ [2] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ OSM(MOD_LSFT), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_BSLS, KC_QUOT,
+ _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU
),
/* Adjust (Lower + Raise)
@@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
- [3] = LAYOUT( \
- RESET, KC_UP, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_U, KC_WH_U, \
- KC_LEFT, KC_DOWN, KC_RGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L, KC_MS_D, KC_MS_R, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, \
- _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______ \
+ [3] = LAYOUT(
+ RESET, KC_UP, _______, _______, _______, _______, _______, KC_WH_D, KC_MS_U, KC_WH_U,
+ KC_LEFT, KC_DOWN, KC_RGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L, KC_MS_D, KC_MS_R,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______,
+ _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/pilcrow/keymaps/default/rules.mk b/keyboards/handwired/pilcrow/keymaps/default/rules.mk
index c3e9c62a19..3224016bbe 100644
--- a/keyboards/handwired/pilcrow/keymaps/default/rules.mk
+++ b/keyboards/handwired/pilcrow/keymaps/default/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/pilcrow/rules.mk b/keyboards/handwired/pilcrow/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/handwired/pilcrow/rules.mk
+++ b/keyboards/handwired/pilcrow/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/pill60/rules.mk b/keyboards/handwired/pill60/rules.mk
index 867525ca74..57681a7cda 100644
--- a/keyboards/handwired/pill60/rules.mk
+++ b/keyboards/handwired/pill60/rules.mk
@@ -6,14 +6,12 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = software
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
diff --git a/keyboards/handwired/postageboard/mini/rules.mk b/keyboards/handwired/postageboard/mini/rules.mk
index af32703eb2..354f194ca2 100644
--- a/keyboards/handwired/postageboard/mini/rules.mk
+++ b/keyboards/handwired/postageboard/mini/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/postageboard/r1/rules.mk b/keyboards/handwired/postageboard/r1/rules.mk
index af32703eb2..354f194ca2 100644
--- a/keyboards/handwired/postageboard/r1/rules.mk
+++ b/keyboards/handwired/postageboard/r1/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/prime_exl/keymaps/default/config.h b/keyboards/handwired/prime_exl/keymaps/default/config.h
deleted file mode 100644
index 83bd38a81d..0000000000
--- a/keyboards/handwired/prime_exl/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Holten Campbell
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/prime_exl/rules.mk b/keyboards/handwired/prime_exl/rules.mk
index 11754021f4..e9ceebba3b 100644
--- a/keyboards/handwired/prime_exl/rules.mk
+++ b/keyboards/handwired/prime_exl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/prime_exl_plus/rules.mk b/keyboards/handwired/prime_exl_plus/rules.mk
index 99105c483c..61ec6a921a 100644
--- a/keyboards/handwired/prime_exl_plus/rules.mk
+++ b/keyboards/handwired/prime_exl_plus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/prkl30/feather/rules.mk b/keyboards/handwired/prkl30/feather/rules.mk
index e99f16c279..f83173fa0b 100644
--- a/keyboards/handwired/prkl30/feather/rules.mk
+++ b/keyboards/handwired/prkl30/feather/rules.mk
@@ -16,8 +16,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/handwired/prkl30/promicro/rules.mk b/keyboards/handwired/prkl30/promicro/rules.mk
index 71322c494b..82dfbafa4e 100644
--- a/keyboards/handwired/prkl30/promicro/rules.mk
+++ b/keyboards/handwired/prkl30/promicro/rules.mk
@@ -13,8 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/handwired/promethium/keymaps/default/rules.mk b/keyboards/handwired/promethium/keymaps/default/rules.mk
index 45b3332456..0183f5fa91 100644
--- a/keyboards/handwired/promethium/keymaps/default/rules.mk
+++ b/keyboards/handwired/promethium/keymaps/default/rules.mk
@@ -1,21 +1,12 @@
-
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODEMAP_ENABLE = yes
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/keymaps/readme.md b/keyboards/handwired/promethium/keymaps/readme.md
deleted file mode 100644
index 527691389e..0000000000
--- a/keyboards/handwired/promethium/keymaps/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of Promethium keymaps
-
-
diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h
index c4c90176b5..e40d67e9fd 100644
--- a/keyboards/handwired/promethium/promethium.h
+++ b/keyboards/handwired/promethium/promethium.h
@@ -1,6 +1,6 @@
#pragma once
-#include <stdint.h>
+#include "quantum.h"
void battery_poll(uint8_t level);
void led_set_kb(uint8_t usb_led);
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index 106f30759a..f41e88b0c4 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -8,15 +8,14 @@ F_CPU = 8000000
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
@@ -26,9 +25,6 @@ CUSTOM_MATRIX = yes
BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = AdafruitBLE
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SRC += ws2812.c
SRC += rgbsps.c
SRC += analog.c
diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk
index 7c8e3c3386..629b30e385 100644
--- a/keyboards/handwired/pterodactyl/rules.mk
+++ b/keyboards/handwired/pterodactyl/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/pteron/keymaps/default/keymap.c b/keyboards/handwired/pteron/keymaps/default/keymap.c
index 976fbb6e16..0511fb9263 100644
--- a/keyboards/handwired/pteron/keymaps/default/keymap.c
+++ b/keyboards/handwired/pteron/keymaps/default/keymap.c
@@ -26,12 +26,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Lower | SPC | Alt | GUI | | Alt | GUI | SPC |Raise |
* +---------------------------+ +---------------------------+
*/
-[_QWERTY] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RALT, KC_RGUI, KC_SPC, RAISE \
+[_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RALT, KC_RGUI, KC_SPC, RAISE
),
/* Lower
@@ -47,12 +47,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | Next | Vol- | Vol+ | Play |
* +---------------------------+ +---------------------------+
*/
-[_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -68,12 +68,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | Next | Vol- | Vol+ | Play |
* +---------------------------+ +---------------------------+
*/
-[_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -89,12 +89,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | |
* +---------------------------+ +---------------------------+
*/
-[_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/pteron/rules.mk b/keyboards/handwired/pteron/rules.mk
index 0fcfa90cc7..9f51ea20cf 100644
--- a/keyboards/handwired/pteron/rules.mk
+++ b/keyboards/handwired/pteron/rules.mk
@@ -5,14 +5,13 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/pteron38/rules.mk b/keyboards/handwired/pteron38/rules.mk
index ab32e6f717..172f6cbeca 100644
--- a/keyboards/handwired/pteron38/rules.mk
+++ b/keyboards/handwired/pteron38/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/pteron44/rules.mk b/keyboards/handwired/pteron44/rules.mk
index ab32e6f717..172f6cbeca 100644
--- a/keyboards/handwired/pteron44/rules.mk
+++ b/keyboards/handwired/pteron44/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/qc60/keymaps/default/keymap.c b/keyboards/handwired/qc60/keymaps/default/keymap.c
index a0f6250ffe..55341be4da 100644
--- a/keyboards/handwired/qc60/keymaps/default/keymap.c
+++ b/keyboards/handwired/qc60/keymaps/default/keymap.c
@@ -25,10 +25,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_ansi_default(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RGB_TOG, KC_RGHT, KC_SPC, KC_RALT, KC_UP, KC_DOWN, KC_RCTL
),
diff --git a/keyboards/handwired/qc60/rules.mk b/keyboards/handwired/qc60/rules.mk
index 9c560cefea..524a0678cd 100644
--- a/keyboards/handwired/qc60/rules.mk
+++ b/keyboards/handwired/qc60/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = handwired/qc60/proto
diff --git a/keyboards/handwired/reddot/keymaps/default/keymap.c b/keyboards/handwired/reddot/keymaps/default/keymap.c
index 9ac394f7f7..0f3334834a 100644
--- a/keyboards/handwired/reddot/keymaps/default/keymap.c
+++ b/keyboards/handwired/reddot/keymaps/default/keymap.c
@@ -4,19 +4,19 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TG(1), KC_PSLS, KC_PAST, KC_PMNS, \
- KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP, \
- KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DEL, KC_END, KC_PGDN, KC_PPLS, \
- KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_P1, KC_UP, KC_P3, \
- FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_INS, KC_HOME, KC_PGUP,
+ KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_DEL, KC_END, KC_PGDN, KC_PPLS,
+ KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_P1, KC_UP, KC_P3,
+ FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT
),
[1] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9, \
- KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_PPLS, \
- KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3, \
- FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TAB, KC_CAPS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_LALT, FR_AMPR, FR_EACU, FR_DQUO, FR_QUOT, FR_LPRN, KC_BSPC, KC_DEL, FR_MINS, FR_EGRV, FR_UNDS, FR_CCED, FR_AGRV, FR_RPRN, FR_EQL, KC_7, KC_8, KC_9,
+ KC_LGUI, FR_A, FR_Z, KC_E, KC_R, KC_T, KC_LSFT, KC_ENT, KC_ENT, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC, FR_DLR, KC_4, KC_5, KC_6, KC_PPLS,
+ KC_LCTL, FR_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FR_M, FR_UGRV, FR_ASTR, KC_1, KC_2, KC_3,
+ FR_LABK, FR_W, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_SPC, KC_N, FR_COMM, FR_SCLN, FR_COLN, FR_EXLM, KC_ALGR, KC_LEFT, KC_DOWN, KC_RGHT, KC_PENT
),
};
diff --git a/keyboards/handwired/reddot/rules.mk b/keyboards/handwired/reddot/rules.mk
index 63a9b256d0..8d562b0bd1 100755
--- a/keyboards/handwired/reddot/rules.mk
+++ b/keyboards/handwired/reddot/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/retro_refit/keymaps/default/keymap.c b/keyboards/handwired/retro_refit/keymaps/default/keymap.c
index 2f9f28478e..e2bea57df4 100644
--- a/keyboards/handwired/retro_refit/keymaps/default/keymap.c
+++ b/keyboards/handwired/retro_refit/keymaps/default/keymap.c
@@ -1,12 +1,12 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NLCK, KC_SLCK, KC_PSCR, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, \
- KC_BSLS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_INS, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NLCK, KC_SLCK, KC_PSCR, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_BSLS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_INS, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/handwired/retro_refit/rules.mk b/keyboards/handwired/retro_refit/rules.mk
index 06be0c52ef..4d1b278f53 100644
--- a/keyboards/handwired/retro_refit/rules.mk
+++ b/keyboards/handwired/retro_refit/rules.mk
@@ -5,14 +5,12 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk
index 4ba8fd3888..a2fe4f3a19 100644
--- a/keyboards/handwired/riblee_f401/rules.mk
+++ b/keyboards/handwired/riblee_f401/rules.mk
@@ -13,10 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
KEYBOARD_SHARED_EP = yes
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = software
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/handwired/riblee_f411/config.h b/keyboards/handwired/riblee_f411/config.h
index 67399aafb1..f335871dec 100644
--- a/keyboards/handwired/riblee_f411/config.h
+++ b/keyboards/handwired/riblee_f411/config.h
@@ -29,13 +29,10 @@
#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
#define MATRIX_COL_PINS { B10, B1, B0, B15, A8, B3, B4, B5, B14, A0, B8, B9 }
-#define UNUSED_PINS
+#define UNUSED_PINS { A1, A7, B2, B11, B12, B13 }
#define DIODE_DIRECTION COL2ROW
-#define BACKLIGHT_PIN A1
-#define BACKLIGHT_LEVELS 5
-
#define MOUSEKEY_INTERVAL 32
#define TAPPING_TERM 175
diff --git a/keyboards/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk
index 02c668388d..7d0652ad24 100644
--- a/keyboards/handwired/riblee_f411/rules.mk
+++ b/keyboards/handwired/riblee_f411/rules.mk
@@ -7,18 +7,14 @@ BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-KEYBOARD_SHARED_EP = yes
+KEYBOARD_SHARED_EP = yes # Free up some extra endpoints - needed if console+mouse+extra
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-BACKLIGHT_DRIVER = software
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c
index 7c61964330..a675c9019c 100644
--- a/keyboards/handwired/rs60/keymaps/default/keymap.c
+++ b/keyboards/handwired/rs60/keymaps/default/keymap.c
@@ -48,12 +48,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -69,12 +69,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -90,12 +90,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
- _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -111,12 +111,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -132,12 +132,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -153,12 +153,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/rs60/rules.mk b/keyboards/handwired/rs60/rules.mk
index f10fa03c32..d14abe406b 100644
--- a/keyboards/handwired/rs60/rules.mk
+++ b/keyboards/handwired/rs60/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/handwired/selene/rules.mk b/keyboards/handwired/selene/rules.mk
index 1c3d398681..3fa2ca01ee 100644
--- a/keyboards/handwired/selene/rules.mk
+++ b/keyboards/handwired/selene/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = bitbang
diff --git a/keyboards/handwired/sick68/rules.mk b/keyboards/handwired/sick68/rules.mk
index e027fabcd4..d4cb4d6890 100644
--- a/keyboards/handwired/sick68/rules.mk
+++ b/keyboards/handwired/sick68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/sick_pad/rules.mk b/keyboards/handwired/sick_pad/rules.mk
index 68cbe90aee..1942356a8c 100644
--- a/keyboards/handwired/sick_pad/rules.mk
+++ b/keyboards/handwired/sick_pad/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/slash/keymaps/default/config.h b/keyboards/handwired/slash/keymaps/default/config.h
deleted file mode 100644
index 05a8d25b91..0000000000
--- a/keyboards/handwired/slash/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 4sdftemp
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/slash/rules.mk b/keyboards/handwired/slash/rules.mk
index 8688504f63..275a2eb7eb 100644
--- a/keyboards/handwired/slash/rules.mk
+++ b/keyboards/handwired/slash/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/snatchpad/config.h b/keyboards/handwired/snatchpad/config.h
new file mode 100644
index 0000000000..c0d337d5df
--- /dev/null
+++ b/keyboards/handwired/snatchpad/config.h
@@ -0,0 +1,145 @@
+// Copyright 2022 xia0 (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6662
+#define PRODUCT_ID 0x7370
+#define DEVICE_VER 0x0001
+#define MANUFACTURER xia0
+#define PRODUCT snatchpad
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 3
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboards
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F4, F5, F6 }
+#define MATRIX_COL_PINS { B1, B3, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Rotary encoder options */
+#define ENCODER_RESOLUTIONS { 4, 4 }
+#define ENCODERS_PAD_A { D3, D0 }
+#define ENCODERS_PAD_B { D2, D1 }
+
+
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/snatchpad/info.json b/keyboards/handwired/snatchpad/info.json
new file mode 100644
index 0000000000..c1d193cfe5
--- /dev/null
+++ b/keyboards/handwired/snatchpad/info.json
@@ -0,0 +1,21 @@
+{
+ "keyboard_name": "snatchpad",
+ "url": "",
+ "maintainer": "xia0",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+
+ {"x": 0, "y": 1},
+ {"x": 2, "y": 1}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/snatchpad/keymaps/default/keymap.c b/keyboards/handwired/snatchpad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a473d4778b
--- /dev/null
+++ b/keyboards/handwired/snatchpad/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2022 xia0 (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC , KC_SPC , MO(2) ,
+ KC_MPRV, KC_MNXT, KC_ENT ,
+ KC_MUTE, KC_MPLY
+ ),
+ [1] = LAYOUT(
+ KC_LOCK, KC_UP , _______,
+ KC_LEFT, KC_DOWN, KC_RGHT,
+ KC_BTN1, KC_BTN2
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ TO(0) , TO(1)
+ )
+};
+
diff --git a/keyboards/handwired/snatchpad/keymaps/default/readme.md b/keyboards/handwired/snatchpad/keymaps/default/readme.md
new file mode 100644
index 0000000000..11c0c781c4
--- /dev/null
+++ b/keyboards/handwired/snatchpad/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for snatchpad
diff --git a/keyboards/handwired/snatchpad/readme.md b/keyboards/handwired/snatchpad/readme.md
new file mode 100644
index 0000000000..98021cc6bd
--- /dev/null
+++ b/keyboards/handwired/snatchpad/readme.md
@@ -0,0 +1,34 @@
+# snatchpad
+
+![snatchpad etch-a-sketch macropad](https://i.imgur.com/aRIM8Nah.jpg)
+
+A 6-key macropad with 2 rotary encoders intended for use as a pointing device.
+
+In addition to the 3d printed parts and microcontroller, the following hardware is required:
+* 4 * 3x3 mm threaded inserts
+* 4 * 4mm M3 bolt
+* USB daughter board
+
+---
+
+* Keyboard Maintainer: [xia0](https://github.com/xia0)
+* Hardware Supported: e.g. Arduino Pro Micro
+* Hardware Availability: [github](https://github.com/xia0/keeb_files/tree/main/snatchpad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/snatchpad:default
+
+Flashing example for this keyboard:
+
+ make handwired/snatchpad:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/snatchpad/rules.mk b/keyboards/handwired/snatchpad/rules.mk
new file mode 100644
index 0000000000..7c73773c0d
--- /dev/null
+++ b/keyboards/handwired/snatchpad/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+KEY_LOCK_ENABLE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/handwired/snatchpad/snatchpad.c b/keyboards/handwired/snatchpad/snatchpad.c
new file mode 100644
index 0000000000..621ba11123
--- /dev/null
+++ b/keyboards/handwired/snatchpad/snatchpad.c
@@ -0,0 +1,66 @@
+// Copyright 2022 xia0 (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "snatchpad.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+
+ uint8_t layer = get_highest_layer(layer_state);
+
+ if (index == 0) { /* First encoder */
+ switch (layer) {
+ case 0:
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ break;
+ case 2:
+ if (clockwise) {
+ tap_code16(LCTL(KC_MINUS));
+ } else {
+ tap_code16(LCTL(KC_EQUAL));
+ }
+ break;
+ default:
+ if (clockwise) {
+ tap_code(KC_MS_L);
+ } else {
+ tap_code(KC_MS_R);
+ }
+ break;
+ }
+
+ } else if (index == 1) { /* Second encoder */
+ switch (layer) {
+ case 0:
+ if (clockwise) {
+ tap_code(KC_MFFD);
+ } else {
+ tap_code(KC_MRWD);
+ }
+ break;
+ case 2:
+ if (clockwise) {
+ tap_code16(LCTL(KC_Y));
+ } else {
+ tap_code16(LCTL(KC_Z));
+ }
+ break;
+ default:
+ if (clockwise) {
+ tap_code(KC_MS_D);
+ } else {
+ tap_code(KC_MS_U);
+ }
+ break;
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/handwired/snatchpad/snatchpad.h b/keyboards/handwired/snatchpad/snatchpad.h
new file mode 100644
index 0000000000..07d6bd2093
--- /dev/null
+++ b/keyboards/handwired/snatchpad/snatchpad.h
@@ -0,0 +1,24 @@
+// Copyright 2022 xia0 (@xia0)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k22 \
+) { \
+ { k00 , k01 , k02 }, \
+ { k10 , k11 , k12 }, \
+ { k20 , KC_NO , k22 } \
+}
diff --git a/keyboards/handwired/sono1/chconf.h b/keyboards/handwired/sono1/chconf.h
deleted file mode 100644
index f2330f083c..0000000000
--- a/keyboards/handwired/sono1/chconf.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright 2020 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/handwired/sono1/chconf.h -r platforms/chibios/common/configs/chconf.h`
- */
-
-#pragma once
-
-#define CH_CFG_ST_TIMEDELTA 0
-
-#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
-
-#include_next <chconf.h>
-
diff --git a/keyboards/handwired/sono1/config.h b/keyboards/handwired/sono1/config.h
index 9ccc496e17..3b06342a1a 100644
--- a/keyboards/handwired/sono1/config.h
+++ b/keyboards/handwired/sono1/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 DmNosachev
+Copyright 2021 DmNosachev
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,80 +30,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 15
#define MATRIX_COLS 8
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-#define MATRIX_ROW_PINS { A5, B3, A9, A10, B13, B14, B15, A8, B7, B8, B9, C13, A15, A0, A1 }
-#define MATRIX_COL_PINS { A4, A3, B11, B10, B1, B0, A7, A6 }
-#define UNUSED_PINS { A5 }
-
-#define LED_KANA_PIN A2
-#define LED_CAPS_LOCK_PIN B5
-#define LED_CTRL_XFER_PIN B6
-#define LED_NUM_LOCK_PIN B4
-#define LED_KB_LOCK_PIN B12
-#define LED_PIN_ON_STATE 0
-
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
- * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
- */
-//#define GRAVE_ESC_CTRL_OVERRIDE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
@@ -111,3 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Bootmagic Lite key configuration */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
+
+/* mechanical locking support. NumLock key on the numpad uses Alps SKCL Lock switch */
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE \ No newline at end of file
diff --git a/keyboards/handwired/sono1/halconf.h b/keyboards/handwired/sono1/halconf.h
deleted file mode 100644
index 71ad504111..0000000000
--- a/keyboards/handwired/sono1/halconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2020 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/handwired/sono1/halconf.h -r platforms/chibios/common/configs/halconf.h`
- */
-
-#pragma once
-
-#define HAL_USE_PWM TRUE
-
-#include_next <halconf.h>
-
diff --git a/keyboards/handwired/sono1/keymaps/via/config.h b/keyboards/handwired/sono1/keymaps/via/config.h
new file mode 100644
index 0000000000..5b953c8db2
--- /dev/null
+++ b/keyboards/handwired/sono1/keymaps/via/config.h
@@ -0,0 +1,4 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/handwired/sono1/keymaps/via/keymap.c b/keyboards/handwired/sono1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d4a7f7c60e
--- /dev/null
+++ b/keyboards/handwired/sono1/keymaps/via/keymap.c
@@ -0,0 +1,66 @@
+/* Copyright 2021 DmNosachev
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+,---------------------------------------------------------------------------------------------------------, ,-----,
+| F11 | | F12 | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |PgUp |PgDn | | NO |
+|-------------------------------------------------------------------------------------------| |-----------| |-----|-----------------,
+| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | —- | += | ~` |BkSpc | |Home | End | | * | / | - | + |
+|-------------------------------------------------------------------------------------------| |-----------| |-----------------------|
+| Tab | Q | W | E | R | T | Y | U | I | O | P | {[ | }] | Enter | | Ins | Del | | 7 | 8 | 9 | += |
+|--------------------------------------------------------------------------------| | `-----------' |-----------------------|
+| Ctrl | A | S | D | F | G | H | J | K | L | :; | "' | |\ | | | Up | | 4 | 5 | 6 | . |
+|--------------------------------------------------------------------------------`----------' |-----------| |-----------------------|
+| Shift | Z | X | C | V | B | N | M | <, | >. | ?/ | NO | Shift | |Left |Right| | 1 | 2 | 3 | <, |
+|-------------------------------------------------------------------------------------------| |-----------| |-----------------------|
+|Caps | Alt | App | GUI | Space | Space | Enter | Ctrl | | Alt | | Down | | 0 | 0 | Enter |
+`-------------------------------------------------------------------------------------------' `-----------' '-----------------------'
+ | Del | BackSp|
+ `--------------'
+*/
+ [0] = LAYOUT(
+ KC_F11, KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PGUP, KC_PGDN, _______,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_HOME, KC_END, KC_PAST, KC_PSLS, KC_PMNS, KC_PPLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_INS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_EQL,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_UP, KC_P4, KC_P5, KC_P6, KC_PDOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, KC_RSFT, KC_LEFT, KC_RIGHT, KC_P1, KC_P2, KC_P3, KC_COMM,
+ KC_CAPS, KC_LALT, KC_APP, KC_LGUI, KC_SPACE, KC_SPACE, KC_ENT, KC_RCTL, KC_RALT, KC_DOWN, KC_P0, KC_P0, KC_PENT,
+ KC_DEL, KC_BSPC
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______
+ )
+};
diff --git a/keyboards/handwired/sono1/keymaps/via/rules.mk b/keyboards/handwired/sono1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/handwired/sono1/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/sono1/mcuconf.h b/keyboards/handwired/sono1/mcuconf.h
deleted file mode 100644
index cf252da153..0000000000
--- a/keyboards/handwired/sono1/mcuconf.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2020 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/handwired/sono1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
- */
-
-#pragma once
-
-#include_next <mcuconf.h>
-
-#undef STM32_PWM_USE_TIM2
-#define STM32_PWM_USE_TIM2 TRUE
-
-#undef STM32_SPI_USE_SPI2
-#define STM32_SPI_USE_SPI2 FALSE
-
diff --git a/keyboards/handwired/sono1/readme.md b/keyboards/handwired/sono1/readme.md
index e21d06e2d9..76541e118b 100644
--- a/keyboards/handwired/sono1/readme.md
+++ b/keyboards/handwired/sono1/readme.md
@@ -5,11 +5,11 @@
ASkeyboard Sono1 keyboard conversion project: direct connection of Black Pill to the matrix.
* Keyboard Maintainer: [DmNosachev](https://github.com/DmNosachev)
-* Hardware Supported: [ASkeyboard Sono1](http://www5f.biglobe.ne.jp/~silencium/keyboard/html/alps.html), Black Pill STM32F103C8T6 MCU board. Alternatively you can use any MCU which is supported by QMK and has 28 IO pins or more (15x8 matrix and 5 LEDs): Teensy 2.0++, Blue Pill, etc.
+* Hardware Supported: [ASkeyboard Sono1](http://www5f.biglobe.ne.jp/~silencium/keyboard/html/alps.html), Teensy 2.0++ or Black Pill STM32F103C8T6 MCU board. Alternatively you can use any MCU which is supported by QMK and has 28 IO pins or more (15x8 matrix and 5 LEDs): Blue Pill, Black Pill STM32F4xx, etc.
Make example for this keyboard (after setting up your build environment):
- make handwired/sono1:default
+ qmk compile -kb handwired/sono1:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
@@ -22,11 +22,34 @@ ASkeyboard Sono1 has 15x8 matrix. Sono2 numpad connects directly to the main mat
Rows (R0-RE) and columns (R0-C7):
![Sono1 rows and columns](https://i.imgur.com/5Owazg6h.jpeg)
+Desolder all ICs, capacitors and resistors except R10–R14.
+
## LEDs
Keyboard has 5 LEDs with common anode. Their cathodes are connected to R10–R14 resistors (you may want to replace them to adjust LED brightness for 3.3V voltage). Add 5 wire jumpers to connect them to the corresponding traces.
![Sono1 LEDs](https://i.imgur.com/opxc2A3h.jpeg)
+## Teensy 2.0++
+Suggested mount position for the Teensy 2.0++ (view from the bottom side of the PCB):
+```
+ R8 R9 RA RB RC RD RE L0 R8 C7 C6 C5 C4 C3 C2 C1 C0
+ * | | | | | | | * | | | | | | | |
+ ,------------------------------------------------------------,
+,---|GN B7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 C0 C1 C2 C3 C4 C5 C6 C7 |
+| |D7 |
+|USB| |
+| |GN |
+'---|V B6 B5 B4 B3 B2 B1 B0 E7 E6 G A F0 F1 F2 F3 F4 F5 F6 F7 |
+ `------------------------------------------------------------'
+ * | | | | | | | | | | | |
+ GN L2 L1 L3 L4 R7 R6 R5 R4 R3 R2 R1 R0
+```
+Asterisk sign designates pins of the Teensy that don't align properly with PCB and need to be rewired.
+
+1. Compile and flash the firmware: `qmk compile -kb handwired/sono1/t2pp:default:flash`. Press the reset button on Teensy to launch the bootloader.
+2. You will need to solder several pin headers to Teensy: two 7 pin headers (C0–C7, D5–B7), 8 pin (F0–F7) and 4 pin (B1—B4).
+3. Solder the Teensy to keyboard's PCB. You will need to manually reroute only 3 pins.
+
## Black Pill
Suggested mount position for the Black Pill (view from the bottom side of the PCB):
@@ -47,11 +70,12 @@ Asterisk sign designates pins of the Black Pill that don't align properly with P
![Black Pill](https://i.imgur.com/KQjTWVbh.jpeg)
-1. Desolder all ICs, capacitors and resistors except R10–R14.
1. Solder 4-pin SWD header to Black Pill.
2. Burn [STM32duino bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/generic_boot20_pb12.bin) to Black Pill.
-3. Compile and flash the firmware: `make handwired/sono1:default:flash`
+3. Compile and flash the firmware: `qmk compile -kb handwired/sono1/stm32f103:default:flash`
4. Connect rows, columns and LED pads to the corresponding pins of the Black Pill.
## Keymap
'CUR LOCK' key on Sono2 numpad has locking switch by default (Alps SKCL lock). QMK [supports mechanical locking switches](https://docs.qmk.fm/#/faq_keymap?id=mechanical-lock-switch-support) for CapsLock, NumLock and ScrollLock keycodes.
+
+There is 'debug' keymap which doesn't output any scancodes, but displays row and column numbers of pressed buttons to console (hid_listen or QMK Toolbox).
diff --git a/keyboards/handwired/sono1/rules.mk b/keyboards/handwired/sono1/rules.mk
index 5a0df50158..e2e79966be 100644
--- a/keyboards/handwired/sono1/rules.mk
+++ b/keyboards/handwired/sono1/rules.mk
@@ -1,11 +1,4 @@
-# MCU name
-MCU = STM32F103
-
-# Bootloader selection
-BOOTLOADER = stm32duino
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+DEFAULT_FOLDER = handwired/sono1/t2pp
# Build Options
# change yes to no to disable
@@ -15,10 +8,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/sono1/stm32f103/chconf.h b/keyboards/handwired/sono1/stm32f103/chconf.h
new file mode 100644
index 0000000000..63236f2c2c
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/chconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/handwired/sono1/stm32f103/config.h b/keyboards/handwired/sono1/stm32f103/config.h
new file mode 100644
index 0000000000..8da1256900
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/config.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2021 DmNosachev
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#undef DEVICE_VER
+
+#define DEVICE_VER 0x0001
+
+#define MATRIX_ROW_PINS { A5, B3, A9, A10, B13, B14, B15, A8, B7, B8, B9, C13, A15, A0, A1 }
+#define MATRIX_COL_PINS { A4, A3, B11, B10, B1, B0, A7, A6 }
+
+
+#define LED_KANA_PIN A2
+#define LED_CAPS_LOCK_PIN B5
+#define LED_CTRL_XFER_PIN B6
+#define LED_NUM_LOCK_PIN B4
+#define LED_KB_LOCK_PIN B12
+#define LED_PIN_ON_STATE 0
+
diff --git a/keyboards/handwired/sono1/stm32f103/halconf.h b/keyboards/handwired/sono1/stm32f103/halconf.h
new file mode 100644
index 0000000000..923b4e52d2
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/sono1/stm32f103/mcuconf.h b/keyboards/handwired/sono1/stm32f103/mcuconf.h
new file mode 100644
index 0000000000..5e94a97e21
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/handwired/onekey/bluepill/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 FALSE
diff --git a/keyboards/handwired/sono1/stm32f103/rules.mk b/keyboards/handwired/sono1/stm32f103/rules.mk
new file mode 100644
index 0000000000..019b1130d9
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/rules.mk
@@ -0,0 +1,8 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/sono1/t2pp/config.h b/keyboards/handwired/sono1/t2pp/config.h
new file mode 100644
index 0000000000..8a20aeeb1d
--- /dev/null
+++ b/keyboards/handwired/sono1/t2pp/config.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2021 DmNosachev
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#undef DEVICE_VER
+
+#define DEVICE_VER 0x0002
+
+#define MATRIX_ROW_PINS { F7, F6, F5, F4, F3, F2, F1, F0, D7, B7, D0, D1, D2, D3, D4 }
+#define MATRIX_COL_PINS { C6, C5, C4, C3, C2, C1, C0, E1 }
+
+
+#define LED_KANA_PIN D5
+#define LED_CAPS_LOCK_PIN B3
+#define LED_CTRL_XFER_PIN B4
+#define LED_NUM_LOCK_PIN B2
+#define LED_KB_LOCK_PIN B1
+#define LED_PIN_ON_STATE 0
+
diff --git a/keyboards/handwired/sono1/t2pp/rules.mk b/keyboards/handwired/sono1/t2pp/rules.mk
new file mode 100644
index 0000000000..149471682d
--- /dev/null
+++ b/keyboards/handwired/sono1/t2pp/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = halfkay
diff --git a/keyboards/handwired/space_oddity/keymaps/default/keymap.c b/keyboards/handwired/space_oddity/keymaps/default/keymap.c
index 8a6f245875..d3e280d2b5 100644
--- a/keyboards/handwired/space_oddity/keymaps/default/keymap.c
+++ b/keyboards/handwired/space_oddity/keymaps/default/keymap.c
@@ -66,13 +66,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |_____|_____|_____|_____|___________|___________|_____|_____|_____|_____|
*/
- [0] = LAYOUT( \
- PAIR_PR, PAIR_BR, PAIR_CB, XXXXXXX, XXXXXXX, DM_PLY1, DM_PLY2, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \
- CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- TD(SFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT), \
- MO(2), MO(1), KC_LGUI, KC_RALT, KC_LCTL, KC_SPC, ALT_T(KC_LEFT), ALL_T(KC_RGHT), LT(1, KC_UP), LT(2, KC_DOWN) \
+ [0] = LAYOUT(
+ PAIR_PR, PAIR_BR, PAIR_CB, XXXXXXX, XXXXXXX, DM_PLY1, DM_PLY2,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ TD(SFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT),
+ MO(2), MO(1), KC_LGUI, KC_RALT, KC_LCTL, KC_SPC, ALT_T(KC_LEFT), ALL_T(KC_RGHT), LT(1, KC_UP), LT(2, KC_DOWN)
),
/* Function layer.
@@ -100,13 +100,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
*/
- [1] = LAYOUT( \
- LAMBDA, _______, _______, _______, _______, DM_REC1, DM_REC2, \
- DM_RSTP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_ASTR, KC_DEL, \
- _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_EQL, \
- KC_BSLS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LCBR, KC_P1, KC_P2, KC_P3, KC_MINS, KC_PIPE, \
- _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_RCBR, KC_P0, KC_COMM, KC_DOT, KC_SLSH, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [1] = LAYOUT(
+ LAMBDA, _______, _______, _______, _______, DM_REC1, DM_REC2,
+ DM_RSTP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_ASTR, KC_DEL,
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_EQL,
+ KC_BSLS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LCBR, KC_P1, KC_P2, KC_P3, KC_MINS, KC_PIPE,
+ _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_RCBR, KC_P0, KC_COMM, KC_DOT, KC_SLSH, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Mouse layer.
@@ -133,13 +133,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
*/
- [2] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(2) \
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(2)
)
};
diff --git a/keyboards/handwired/space_oddity/rules.mk b/keyboards/handwired/space_oddity/rules.mk
index 5af57fec5c..0b1ff1cd0a 100644
--- a/keyboards/handwired/space_oddity/rules.mk
+++ b/keyboards/handwired/space_oddity/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/handwired/split65/promicro/rules.mk b/keyboards/handwired/split65/promicro/rules.mk
index bb95fcf67c..e47fa13115 100644
--- a/keyboards/handwired/split65/promicro/rules.mk
+++ b/keyboards/handwired/split65/promicro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/split65/stm32/rules.mk b/keyboards/handwired/split65/stm32/rules.mk
index cb54c352fa..0c46074584 100644
--- a/keyboards/handwired/split65/stm32/rules.mk
+++ b/keyboards/handwired/split65/stm32/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/handwired/split89/rules.mk b/keyboards/handwired/split89/rules.mk
index 0ce4c12edd..8f9772df22 100644
--- a/keyboards/handwired/split89/rules.mk
+++ b/keyboards/handwired/split89/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk
index 0f12d4cd85..b33e198bbd 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -1,20 +1,16 @@
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
DEFAULT_FOLDER = handwired/splittest/promicro
diff --git a/keyboards/handwired/steamvan/keymaps/default/config.h b/keyboards/handwired/steamvan/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/handwired/steamvan/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/steamvan/rev1/rules.mk b/keyboards/handwired/steamvan/rev1/rules.mk
index 8557e3b045..3d45b63d21 100644
--- a/keyboards/handwired/steamvan/rev1/rules.mk
+++ b/keyboards/handwired/steamvan/rev1/rules.mk
@@ -9,7 +9,7 @@ BOOTLOADER = stm32-dfu
WS2812_DRIVER = spi
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = yes
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
@@ -17,7 +17,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
LEADER_ENABLE = yes
diff --git a/keyboards/handwired/sticc14/keymaps/default/config.h b/keyboards/handwired/sticc14/keymaps/default/config.h
deleted file mode 100644
index 0d34db1407..0000000000
--- a/keyboards/handwired/sticc14/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 ErkHal
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/sticc14/rules.mk b/keyboards/handwired/sticc14/rules.mk
index 0099557cbe..eae129b29b 100644
--- a/keyboards/handwired/sticc14/rules.mk
+++ b/keyboards/handwired/sticc14/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/stream_cheap/2x3/rules.mk b/keyboards/handwired/stream_cheap/2x3/rules.mk
index 5d1187508f..6ed1b0e6f0 100644
--- a/keyboards/handwired/stream_cheap/2x3/rules.mk
+++ b/keyboards/handwired/stream_cheap/2x3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/stream_cheap/2x4/rules.mk b/keyboards/handwired/stream_cheap/2x4/rules.mk
index 08aa4ed7b0..6dac16c3e4 100644
--- a/keyboards/handwired/stream_cheap/2x4/rules.mk
+++ b/keyboards/handwired/stream_cheap/2x4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/stream_cheap/2x5/rules.mk b/keyboards/handwired/stream_cheap/2x5/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/handwired/stream_cheap/2x5/rules.mk
+++ b/keyboards/handwired/stream_cheap/2x5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/astro65/rules.mk b/keyboards/handwired/swiftrax/astro65/rules.mk
index 9158203a31..6cdc668811 100644
--- a/keyboards/handwired/swiftrax/astro65/rules.mk
+++ b/keyboards/handwired/swiftrax/astro65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/bebol/rules.mk b/keyboards/handwired/swiftrax/bebol/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/handwired/swiftrax/bebol/rules.mk
+++ b/keyboards/handwired/swiftrax/bebol/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/beegboy/rules.mk b/keyboards/handwired/swiftrax/beegboy/rules.mk
index 6b2dc178e8..d143924b88 100644
--- a/keyboards/handwired/swiftrax/beegboy/rules.mk
+++ b/keyboards/handwired/swiftrax/beegboy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/bumblebee/bumblebee.c b/keyboards/handwired/swiftrax/bumblebee/bumblebee.c
new file mode 100644
index 0000000000..613a1fa1b3
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/bumblebee.c
@@ -0,0 +1,56 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "bumblebee.h"
+
+// Encoder
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise))
+ return false;
+ if (clockwise)
+ tap_code16(KC_VOLU);
+ else
+ tap_code16(KC_VOLD);
+ return true;
+}
+
+// Initialize all RGB indicators to 'off'
+__attribute__((weak))
+void keyboard_post_init_user(void) {
+ rgblight_setrgb_at(0, 0, 0, 0); // [..., 0] = top LED
+ rgblight_setrgb_at(0, 0, 0, 1); // [..., 1] = middle LED
+ rgblight_setrgb_at(0, 0, 0, 2); // [..., 2] = bottom LED
+}
+
+// RGB Layer Indicators
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ if (get_highest_layer(state) == 0) {
+ rgblight_setrgb_at(255, 0, 0, 0); //red
+ } else {
+ rgblight_setrgb_at(0, 0, 0, 0);
+ }
+ if (get_highest_layer(state) == 1){
+ rgblight_setrgb_at(0, 0, 255, 1); //green
+ } else{
+ rgblight_setrgb_at(0, 0, 0, 1);
+ }
+ if (get_highest_layer(state) == 2){
+ rgblight_setrgb_at(0, 255, 0, 2); //blue
+ } else{
+ rgblight_setrgb_at(0, 0, 0, 2);
+ }
+ return layer_state_set_user(state);
+} \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/bumblebee/bumblebee.h b/keyboards/handwired/swiftrax/bumblebee/bumblebee.h
new file mode 100644
index 0000000000..2d1fdf7a46
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/bumblebee.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#define KC_NO XXX
+
+#include "quantum.h"
+
+ #define LAYOUT_all( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K27, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, \
+ K60, K70, K62, K72, K63, K74, K65, K66, K76, K67 \
+ ) \
+ { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, K56, XXX }, \
+ { K60, XXX, K62, K63, XXX, K65, K66, K67 }, \
+ { K70, XXX, K72, XXX, K74, XXX, K76, XXX } \
+ }
+
diff --git a/keyboards/handwired/swiftrax/bumblebee/config.h b/keyboards/handwired/swiftrax/bumblebee/config.h
new file mode 100644
index 0000000000..89b51a762f
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/config.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE881
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Swiftrax
+#define PRODUCT BumbleBee
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { C7, D3, D5, D4, D6, D7, B4, B5 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Encoder */
+#define ENCODERS_PAD_A { C6 }
+#define ENCODERS_PAD_B { B6 }
+
+/* RGB Indicators */
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 3
+
+/* Solenid Pin */
+#define SOLENOID_PIN D2
+
+/* Piezo Buzzer */
+#define AUDIO_PIN B7 \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/bumblebee/info.json b/keyboards/handwired/swiftrax/bumblebee/info.json
new file mode 100644
index 0000000000..3d9a8730a6
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "BumbleBee",
+ "url": "https://www.github.com/swiftrax",
+ "maintainer": "swiftrax",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0, "w":1.5}, {"label":"0,1", "x":2.5, "y":0}, {"label":"1,1", "x":3.5, "y":0}, {"label":"0,2", "x":4.5, "y":0}, {"label":"1,2", "x":5.5, "y":0}, {"label":"0,3", "x":6.5, "y":0}, {"label":"1,3", "x":7.5, "y":0}, {"label":"0,4", "x":8.5, "y":0}, {"label":"1,4", "x":9.5, "y":0}, {"label":"0,5", "x":10.5, "y":0}, {"label":"1,5", "x":11.5, "y":0}, {"label":"0,6", "x":12.5, "y":0}, {"label":"1,6", "x":13.5, "y":0}, {"label":"0,7", "x":14.5, "y":0, "w":1.5}, {"label":"1,7", "x":16, "y":0}, {"label":"2,0", "x":0, "y":1}, {"label":"3,0", "x":1, "y":1, "w":1.75}, {"label":"2,1", "x":2.75, "y":1}, {"label":"3,1", "x":3.75, "y":1}, {"label":"2,2", "x":4.75, "y":1}, {"label":"3,2", "x":5.75, "y":1}, {"label":"2,3", "x":6.75, "y":1}, {"label":"3,3", "x":7.75, "y":1}, {"label":"2,4", "x":8.75, "y":1}, {"label":"3,4", "x":9.75, "y":1}, {"label":"2,5", "x":10.75, "y":1}, {"label":"3,5", "x":11.75, "y":1}, {"label":"2,6", "x":12.75, "y":1}, {"label":"3,6", "x":13.75, "y":1, "w":2.25}, {"label":"2,7", "x":16, "y":1}, {"label":"4,0", "x":0, "y":2}, {"label":"5,0", "x":1, "y":2, "w":2.25}, {"label":"4,1", "x":3.25, "y":2}, {"label":"5,1", "x":4.25, "y":2}, {"label":"4,2", "x":5.25, "y":2}, {"label":"5,2", "x":6.25, "y":2}, {"label":"4,3", "x":7.25, "y":2}, {"label":"5,3", "x":8.25, "y":2}, {"label":"4,4", "x":9.25, "y":2}, {"label":"5,4", "x":10.25, "y":2}, {"label":"4,5", "x":11.25, "y":2}, {"label":"5,5", "x":12.25, "y":2}, {"label":"4,6", "x":13.25, "y":2, "w":1.75}, {"label":"5,6", "x":15, "y":2}, {"label":"4,7", "x":16, "y":2}, {"label":"6,0", "x":0, "y":3}, {"label":"7,0", "x":1, "y":3, "w":1.5}, {"label":"6,2", "x":3.88, "y":3, "w":1.5}, {"label":"7,2", "x":5.38, "y":3, "w":2.75}, {"label":"6,3", "x":8.13, "y":3}, {"label":"7,4", "x":9.13, "y":3, "w":2}, {"label":"6,5", "x":11.13, "y":3, "w":1.5}, {"label":"6,6", "x":14, "y":3}, {"label":"7,6", "x":15, "y":3}, {"label":"6,7", "x":16, "y":3}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/bumblebee/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/bumblebee/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7e7247c80f
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+#define SOLENOID_DEFAULT_BUZZ 1
+#define FB_ERM_LRA 0
+#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
+#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
+
+/* Please refer to your datasheet for the optimal setting for your specific motor. */
+#define RATED_VOLTAGE 3
+#define V_PEAK 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
+ KC_F13 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME,
+ KC_F14 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_F15 , KC_LCTL, KC_LALT, KC_SPC , KC_MUTE, MO(1) , MO(2) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/handwired/swiftrax/bumblebee/keymaps/default/rules.mk b/keyboards/handwired/swiftrax/bumblebee/keymaps/default/rules.mk
new file mode 100644
index 0000000000..9c6098640a
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+AUDIO_ENABLE = yes
+HAPTIC_ENABLE += SOLENOID \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/bumblebee/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/bumblebee/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a48f998100
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+#define SOLENOID_DEFAULT_BUZZ 1
+#define FB_ERM_LRA 0
+#define FB_BRAKEFACTOR 3 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
+#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
+
+/* Please refer to your datasheet for the optimal setting for your specific motor. */
+#define RATED_VOLTAGE 3
+#define V_PEAK 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL ,
+ KC_F13 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME,
+ KC_F14 , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_F15 , KC_LCTL, KC_LALT, KC_SPC , KC_MUTE, MO(1) , MO(2) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/handwired/swiftrax/bumblebee/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/bumblebee/keymaps/via/rules.mk
new file mode 100644
index 0000000000..e0ef178896
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+#HAPTIC_ENABLE += SOLENOID
+AUDIO_ENABLE = yes
+#either solenoid or audio not both can be enabled \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/bumblebee/readme.md b/keyboards/handwired/swiftrax/bumblebee/readme.md
new file mode 100644
index 0000000000..32091cb83b
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/readme.md
@@ -0,0 +1,21 @@
+# BumbleBee
+
+A 50% keyboard with a bunch of fun features
+
+* Keyboard Maintainer: Swiftrax
+* Hardware Supported: BumbleBee
+* Hardware Availability: https://github.com/swiftrax
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/swiftrax/bumblebee:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/swiftrax/bumblebee/rules.mk b/keyboards/handwired/swiftrax/bumblebee/rules.mk
new file mode 100644
index 0000000000..e0590e039a
--- /dev/null
+++ b/keyboards/handwired/swiftrax/bumblebee/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Rotary Encoder
diff --git a/keyboards/handwired/swiftrax/cowfish/rules.mk b/keyboards/handwired/swiftrax/cowfish/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/handwired/swiftrax/cowfish/rules.mk
+++ b/keyboards/handwired/swiftrax/cowfish/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/digicarp65/config.h b/keyboards/handwired/swiftrax/digicarp65/config.h
new file mode 100644
index 0000000000..1f11e310d1
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/config.h
@@ -0,0 +1,47 @@
+/*
+Copyright 2022 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE7F1
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Swiftrax
+#define PRODUCT DigiCarp65
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { B2, B1, F4, F1, F0 }
+#define MATRIX_COL_PINS { F5, C6, F6, F7, C7, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define ENCODERS_PAD_A { B3 }
+#define ENCODERS_PAD_B { B7 }
diff --git a/keyboards/handwired/swiftrax/digicarp65/digicarp65.c b/keyboards/handwired/swiftrax/digicarp65/digicarp65.c
new file mode 100644
index 0000000000..99823a756c
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/digicarp65.c
@@ -0,0 +1,31 @@
+/*
+Copyright 2022 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "digicarp65.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/handwired/swiftrax/digicarp65/digicarp65.h b/keyboards/handwired/swiftrax/digicarp65/digicarp65.h
new file mode 100644
index 0000000000..ba4a76ea10
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/digicarp65.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2022 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_65_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E, k4F } \
+}
+
+#define LAYOUT_65_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k1E, k2D, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E, k4F } \
+}
+
+#define LAYOUT_65_ansi_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E, k4F } \
+}
+
+#define LAYOUT_65_iso_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k1E, k2D, k2F, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3F, \
+ k40, k41, k42, k46, k4A, k4B, k4C, k4D, k4E, k4F \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, k2F }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, k3F }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, k4C, k4D, k4E, k4F } \
+}
diff --git a/keyboards/handwired/swiftrax/digicarp65/info.json b/keyboards/handwired/swiftrax/digicarp65/info.json
new file mode 100644
index 0000000000..48a4d31368
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/info.json
@@ -0,0 +1,315 @@
+{
+ "keyboard_name": "digicarp65",
+ "url": "https://github.com/swiftrax",
+ "maintainer": "swiftrax",
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w":2},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_iso": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w":2},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2},
+ {"x": 13.75, "y": 1, "w":1.25, "h":2},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_ansi_split_bs": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ },
+ "LAYOUT_65_iso_split_bs": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2},
+ {"x": 13.75, "y": 1, "w":1.25, "h":2},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/swiftrax/digicarp65/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/digicarp65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5de5c63144
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/keymaps/default/keymap.c
@@ -0,0 +1,42 @@
+/*
+Copyright 2022 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+ [2] = LAYOUT_65_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/handwired/swiftrax/digicarp65/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/digicarp65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d3bffe8c4c
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/*
+Copyright 2022 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+ [2] = LAYOUT_65_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_65_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
diff --git a/keyboards/handwired/swiftrax/digicarp65/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/digicarp65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/digicarp65/readme.md b/keyboards/handwired/swiftrax/digicarp65/readme.md
new file mode 100644
index 0000000000..619ec519f0
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/readme.md
@@ -0,0 +1,21 @@
+# DigiCarp65
+
+A 65% keyboard
+
+* Keyboard Maintainer: Swiftrax
+* Hardware Supported: DigiCarp65
+* Hardware Availability: https://github.com/swiftrax
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/swiftrax/digicarp65:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key)and plug in the keyboard
+* **Physical reset button**: Briefly short the pad on the back of the PCB labeled RESET
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/handwired/swiftrax/digicarp65/rules.mk b/keyboards/handwired/swiftrax/digicarp65/rules.mk
new file mode 100644
index 0000000000..7a15812bc8
--- /dev/null
+++ b/keyboards/handwired/swiftrax/digicarp65/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Rotary Encoder
+
+LAYOUTS = 65_ansi 65_ansi_split_bs 65_iso 65_iso_split_bs
diff --git a/keyboards/handwired/swiftrax/equator/rules.mk b/keyboards/handwired/swiftrax/equator/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/handwired/swiftrax/equator/rules.mk
+++ b/keyboards/handwired/swiftrax/equator/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/glacier/config.h b/keyboards/handwired/swiftrax/glacier/config.h
new file mode 100644
index 0000000000..b8496d76a1
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/config.h
@@ -0,0 +1,51 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE890
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Digital Carpentry
+#define PRODUCT Glacier
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 10
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5, B6, E5, E4, D4, D5, D7, D6 }
+#define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, D0, D1, D2 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/*EEPROM for via*/
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+/* RGB */
+#define RGB_DI_PIN B0
+#define RGBLED_NUM 12 \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/glacier/glacier.c b/keyboards/handwired/swiftrax/glacier/glacier.c
new file mode 100644
index 0000000000..a30c69ba87
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/glacier.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "glacier.h"
+
diff --git a/keyboards/handwired/swiftrax/glacier/glacier.h b/keyboards/handwired/swiftrax/glacier/glacier.h
new file mode 100644
index 0000000000..1a731ea072
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/glacier.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#define ___ KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, K18, K09, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K78, K27, K37, K28, K38, K29, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K47, K57, K48, K58, K49, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K67, K77, K68, \
+ K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K96, K87, K97, K88, \
+ KA0, KB0, KA1, KB3, KA4, KB4, KA5, KB5, KA6, KB6, KA7 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, ___ }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58, ___ }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67, K68, ___ }, \
+ { K70, K71, K72, K73, K74, K75, ___, K77, K78, ___ }, \
+ { K80, K81, K82, K83, K84, K85, K86, K87, K88, ___ }, \
+ { K90, K91, K92, K93, K94, K95, K96, K97, ___, ___ }, \
+ { KA0, KA1, ___, ___, KA4, KA5, KA6, KA7, ___, ___ }, \
+ { KB0, ___, ___, KB3, KB4, KB5, KB6, ___, ___, ___ } \
+}
diff --git a/keyboards/handwired/swiftrax/glacier/info.json b/keyboards/handwired/swiftrax/glacier/info.json
new file mode 100644
index 0000000000..f185e9f898
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Glacier",
+ "url": "https://www.github.com/swiftrax",
+ "maintainer": "swiftrax",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1.25, "y":0}, {"label":"0,1", "x":2.25, "y":0}, {"label":"1,1", "x":3.25, "y":0}, {"label":"0,2", "x":4.25, "y":0}, {"label":"1,2", "x":5.5, "y":0}, {"label":"0,3", "x":6.5, "y":0}, {"label":"1,3", "x":7.5, "y":0}, {"label":"0,4", "x":8.5, "y":0}, {"label":"1,4", "x":9.75, "y":0}, {"label":"0,5", "x":10.75, "y":0}, {"label":"1,5", "x":11.75, "y":0}, {"label":"0,6", "x":12.75, "y":0}, {"label":"1,6", "x":14, "y":0}, {"label":"0,7", "x":15.25, "y":0}, {"label":"1,7", "x":16.5, "y":0}, {"label":"0,8", "x":17.5, "y":0}, {"label":"1,8", "x":18.5, "y":0}, {"label":"0,9", "x":19.5, "y":0}, {"label":"2,0", "x":0, "y":1.25}, {"label":"3,0", "x":1, "y":1.25}, {"label":"2,1", "x":2, "y":1.25}, {"label":"3,1", "x":3, "y":1.25}, {"label":"2,2", "x":4, "y":1.25}, {"label":"3,2", "x":5, "y":1.25}, {"label":"2,3", "x":6, "y":1.25}, {"label":"3,3", "x":7, "y":1.25}, {"label":"2,4", "x":8, "y":1.25}, {"label":"3,4", "x":9, "y":1.25}, {"label":"2,5", "x":10, "y":1.25}, {"label":"3,5", "x":11, "y":1.25}, {"label":"2,6", "x":12, "y":1.25}, {"label":"3,6", "x":13, "y":1.25}, {"label":"7,8", "x":14, "y":1.25}, {"label":"2,7", "x":15.25, "y":1.25}, {"label":"3,7", "x":16.5, "y":1.25}, {"label":"2,8", "x":17.5, "y":1.25}, {"label":"3,8", "x":18.5, "y":1.25}, {"label":"2,9", "x":19.5, "y":1.25}, {"label":"4,0", "x":0, "y":2.25, "w":1.5}, {"label":"5,0", "x":1.5, "y":2.25}, {"label":"4,1", "x":2.5, "y":2.25}, {"label":"5,1", "x":3.5, "y":2.25}, {"label":"4,2", "x":4.5, "y":2.25}, {"label":"5,2", "x":5.5, "y":2.25}, {"label":"4,3", "x":6.5, "y":2.25}, {"label":"5,3", "x":7.5, "y":2.25}, {"label":"4,4", "x":8.5, "y":2.25}, {"label":"5,4", "x":9.5, "y":2.25}, {"label":"4,5", "x":10.5, "y":2.25}, {"label":"5,5", "x":11.5, "y":2.25}, {"label":"4,6", "x":12.5, "y":2.25}, {"label":"5,6", "x":13.5, "y":2.25, "w":1.5}, {"label":"4,7", "x":15.25, "y":2.25}, {"label":"5,7", "x":16.5, "y":2.25}, {"label":"4,8", "x":17.5, "y":2.25}, {"label":"5,8", "x":18.5, "y":2.25}, {"label":"4,9", "x":19.5, "y":2.25, "h":2}, {"label":"6,0", "x":0, "y":3.25, "w":1.75}, {"label":"7,0", "x":1.75, "y":3.25}, {"label":"6,1", "x":2.75, "y":3.25}, {"label":"7,1", "x":3.75, "y":3.25}, {"label":"6,2", "x":4.75, "y":3.25}, {"label":"7,2", "x":5.75, "y":3.25}, {"label":"6,3", "x":6.75, "y":3.25}, {"label":"7,3", "x":7.75, "y":3.25}, {"label":"6,4", "x":8.75, "y":3.25}, {"label":"7,4", "x":9.75, "y":3.25}, {"label":"6,5", "x":10.75, "y":3.25}, {"label":"7,5", "x":11.75, "y":3.25}, {"label":"6,6", "x":12.75, "y":3.25, "w":2.25}, {"label":"6,7", "x":16.5, "y":3.25}, {"label":"7,7", "x":17.5, "y":3.25}, {"label":"6,8", "x":18.5, "y":3.25}, {"label":"8,0", "x":0, "y":4.25, "w":2.25}, {"label":"9,0", "x":2.25, "y":4.25}, {"label":"8,1", "x":3.25, "y":4.25}, {"label":"9,1", "x":4.25, "y":4.25}, {"label":"8,2", "x":5.25, "y":4.25}, {"label":"9,2", "x":6.25, "y":4.25}, {"label":"8,3", "x":7.25, "y":4.25}, {"label":"9,3", "x":8.25, "y":4.25}, {"label":"8,4", "x":9.25, "y":4.25}, {"label":"9,4", "x":10.25, "y":4.25}, {"label":"8,5", "x":11.25, "y":4.25}, {"label":"9,5", "x":12.25, "y":4.25, "w":1.75}, {"label":"9,6", "x":16.5, "y":4.25}, {"label":"8,7", "x":17.5, "y":4.25}, {"label":"9,7", "x":18.5, "y":4.25}, {"label":"8,8", "x":19.5, "y":4.25, "h":2}, {"label":"8,6", "x":14.25, "y":4.5}, {"label":"10,0", "x":0, "y":5.25, "w":1.25}, {"label":"11,0", "x":1.25, "y":5.25, "w":1.25}, {"label":"10,1", "x":2.5, "y":5.25, "w":1.25}, {"label":"11,3", "x":3.75, "y":5.25, "w":6.25}, {"label":"10,4", "x":10, "y":5.25, "w":1.5}, {"label":"11,4", "x":11.5, "y":5.25, "w":1.5}, {"label":"11,6", "x":16.5, "y":5.25, "w":2}, {"label":"10,7", "x":18.5, "y":5.25}, {"label":"10,5", "x":13.25, "y":5.5}, {"label":"11,5", "x":14.25, "y":5.5}, {"label":"10,6", "x":15.25, "y":5.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/glacier/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/glacier/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2c4c5b3ddf
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUS, KC_HOME, KC_END , KC_DEL ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS , KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7 , KC_P8 , KC_P9 , KC_PPLS,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_P4 , KC_P5 , KC_P6 ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 , KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT
+ )
+};
diff --git a/keyboards/handwired/swiftrax/glacier/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/glacier/keymaps/via/keymap.c
new file mode 100644
index 0000000000..50ea5443d0
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUS, KC_HOME, KC_END , KC_DEL ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS , KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_P7 , KC_P8 , KC_P9 , KC_PPLS,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_P4 , KC_P5 , KC_P6 ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_P1 , KC_P2 , KC_P3 , KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0 , KC_PDOT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/handwired/swiftrax/glacier/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/glacier/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/glacier/readme.md b/keyboards/handwired/swiftrax/glacier/readme.md
new file mode 100644
index 0000000000..36588e000e
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/readme.md
@@ -0,0 +1,18 @@
+# Glacier
+
+1800 Style Keyboard based on the Austin
+
+* Keyboard Maintainer: Swiftrax
+* Hardware Supported: Glacier
+* Hardware Availability: Glacier PCB
+
+## Bootloader Enter the bootloader in 3 ways:
+ * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+ * **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+ * **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for flashing this keyboard (after setting up your build environment):
+
+ make handwired/swiftrax/glacier:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/swiftrax/glacier/rules.mk b/keyboards/handwired/swiftrax/glacier/rules.mk
new file mode 100644
index 0000000000..b2d6d9e43c
--- /dev/null
+++ b/keyboards/handwired/swiftrax/glacier/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/joypad/rules.mk b/keyboards/handwired/swiftrax/joypad/rules.mk
index 6b3745a8b7..451ec62f44 100644
--- a/keyboards/handwired/swiftrax/joypad/rules.mk
+++ b/keyboards/handwired/swiftrax/joypad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/koalafications/rules.mk b/keyboards/handwired/swiftrax/koalafications/rules.mk
index a1f5aee483..4c7427c0d7 100644
--- a/keyboards/handwired/swiftrax/koalafications/rules.mk
+++ b/keyboards/handwired/swiftrax/koalafications/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/nodu/rules.mk b/keyboards/handwired/swiftrax/nodu/rules.mk
index df27d80139..df4ed84fcd 100644
--- a/keyboards/handwired/swiftrax/nodu/rules.mk
+++ b/keyboards/handwired/swiftrax/nodu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/pandamic/rules.mk b/keyboards/handwired/swiftrax/pandamic/rules.mk
index 4c48ed51f4..e1c8e595cf 100644
--- a/keyboards/handwired/swiftrax/pandamic/rules.mk
+++ b/keyboards/handwired/swiftrax/pandamic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/the_galleon/rules.mk b/keyboards/handwired/swiftrax/the_galleon/rules.mk
index 378c644afc..662963630b 100644
--- a/keyboards/handwired/swiftrax/the_galleon/rules.mk
+++ b/keyboards/handwired/swiftrax/the_galleon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/unsplit/rules.mk b/keyboards/handwired/swiftrax/unsplit/rules.mk
index 7ea82008aa..14c4d5ddea 100644
--- a/keyboards/handwired/swiftrax/unsplit/rules.mk
+++ b/keyboards/handwired/swiftrax/unsplit/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/swiftrax/walter/rules.mk b/keyboards/handwired/swiftrax/walter/rules.mk
index 34d93c52cb..0d1740dcad 100644
--- a/keyboards/handwired/swiftrax/walter/rules.mk
+++ b/keyboards/handwired/swiftrax/walter/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/symmetric70_proto/promicro/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/rules.mk
index 22b7376b94..fbe412faef 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk
index 8b19f79b3b..81d40223ea 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/symmetry60/keymaps/default/config.h b/keyboards/handwired/symmetry60/keymaps/default/config.h
deleted file mode 100644
index 7b52e1dd03..0000000000
--- a/keyboards/handwired/symmetry60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 marhalloweenvt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/symmetry60/rules.mk b/keyboards/handwired/symmetry60/rules.mk
index 8304e18ae7..efbbc778ce 100644
--- a/keyboards/handwired/symmetry60/rules.mk
+++ b/keyboards/handwired/symmetry60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/t111/rules.mk b/keyboards/handwired/t111/rules.mk
index 5a0df50158..3e70fa7f95 100644
--- a/keyboards/handwired/t111/rules.mk
+++ b/keyboards/handwired/t111/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/tennie/keymaps/simple-numbpad/config.h b/keyboards/handwired/tennie/keymaps/simple-numbpad/config.h
deleted file mode 100644
index a3c309bb29..0000000000
--- a/keyboards/handwired/tennie/keymaps/simple-numbpad/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Jack Hildebrandt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/tennie/keymaps/soundboard/config.h b/keyboards/handwired/tennie/keymaps/soundboard/config.h
deleted file mode 100644
index 5a1cba7b40..0000000000
--- a/keyboards/handwired/tennie/keymaps/soundboard/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Jacob Hillebrand
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/handwired/tennie/rules.mk b/keyboards/handwired/tennie/rules.mk
index 254ec54a32..b619ca4952 100644
--- a/keyboards/handwired/tennie/rules.mk
+++ b/keyboards/handwired/tennie/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
index 352ab99db4..b30aa81f2d 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
+++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
@@ -61,10 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT(
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
- KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL \
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL
),
/* QWERTY -
@@ -79,10 +79,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
- KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL
),
/* Dvorak
@@ -97,10 +97,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT(
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC, \
- KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL \
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSPC,
+ KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL
),
/* Lower
@@ -117,10 +117,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_LOWER] = LAYOUT(
- KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_PAST, XXXXXXX, _______, \
- _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_MINS, KC_4, KC_5, KC_6, KC_PPLS, XXXXXXX, _______, \
- _______, _______, _______, _______, _______, KC_EQL, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______, \
- _______, _______, _______, _______, _______, KC_0, KC_DOT, MO(5), RAISE, _______ \
+ KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_PAST, XXXXXXX, _______,
+ _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_MINS, KC_4, KC_5, KC_6, KC_PPLS, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, KC_EQL, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, KC_0, KC_DOT, MO(5), RAISE, _______
),
/* Raise
@@ -136,10 +136,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RAISE] = LAYOUT(
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, \
- _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
- _______, R_POINT, R_PIPE, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, \
- _______, _______, XXXXXXX, _______, SPC_LW, ENT_RS, MO(5), MO(6), _______, _______ \
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, R_POINT, R_PIPE, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______,
+ _______, _______, XXXXXXX, _______, SPC_LW, ENT_RS, MO(5), MO(6), _______, _______
),
/*Function
@@ -155,10 +155,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FUNCTION] = LAYOUT(
- _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, \
- KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_SLCK, \
- _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_PAUS \
+ _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS,
+ KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_SLCK,
+ _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_PAUS
),
/* MOUSE
@@ -174,10 +174,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_MOUSE] = LAYOUT(
- KC_ESC, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, \
- KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSPC, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL0, XXXXXXX, MO(6), XXXXXXX, KC_RCTL \
+ KC_ESC, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX,
+ KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSPC,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL2, KC_ACL0, XXXXXXX, MO(6), XXXXXXX, KC_RCTL
),
/* Adjust (Lower + Raise)
@@ -193,10 +193,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, RESET, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, RESET, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
index 79bfc30ab5..8fcd018bd5 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
+++ b/keyboards/handwired/terminus_mini/keymaps/default/rules.mk
@@ -1,15 +1,10 @@
-# QMK Build Options
-# change to "no" to disable the options, or define them in the rules.mk in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = no # Enable Tap Dance
diff --git a/keyboards/handwired/terminus_mini/rules.mk b/keyboards/handwired/terminus_mini/rules.mk
index 87dcc07500..8121b44ca7 100644
--- a/keyboards/handwired/terminus_mini/rules.mk
+++ b/keyboards/handwired/terminus_mini/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/trackpoint/keymaps/default/keymap.c b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
index 60da300924..1792cb4271 100644
--- a/keyboards/handwired/trackpoint/keymaps/default/keymap.c
+++ b/keyboards/handwired/trackpoint/keymaps/default/keymap.c
@@ -2,6 +2,6 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_BTN1, KC_BTN3, KC_BTN2 \
+ KC_BTN1, KC_BTN3, KC_BTN2
)
};
diff --git a/keyboards/handwired/trackpoint/rules.mk b/keyboards/handwired/trackpoint/rules.mk
index 46e1d60f92..f471f00dfc 100644
--- a/keyboards/handwired/trackpoint/rules.mk
+++ b/keyboards/handwired/trackpoint/rules.mk
@@ -4,14 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = halfkay
-
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
index 913a9f0aa2..bba9db137b 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/config.h
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
@@ -89,3 +89,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* PMW3360 Settings */
#define PMW3360_CS_PIN B0
+
+#define POINTING_DEVICE_RIGHT
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c
index 78a7db67a9..290ea22c5f 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c
@@ -115,103 +115,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
};
// clang-format on
-
-#ifdef POINTING_DEVICE_ENABLE
-static uint16_t mouse_timer = 0;
-static uint16_t mouse_debounce_timer = 0;
-static uint8_t mouse_keycode_tracker = 0;
-bool tap_toggling = false;
-
-void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) {
- if ((x || y) && timer_elapsed(mouse_timer) > 125) {
- mouse_timer = timer_read();
- if (!layer_state_is(_MOUSE) && !(layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO)) && timer_elapsed(mouse_debounce_timer) > 125) {
- layer_on(_MOUSE);
- }
- }
-
-# ifdef TAPPING_TERM_PER_KEY
- if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL)
-# else
- if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM
-# endif
- || (layer_state_is(_GAMEPAD) || layer_state_is(_DIABLO))) {
- mouse_report->x = x;
- mouse_report->y = y;
- }
-# ifdef OLED_ENABLE
- if (x || y) oled_timer = timer_read32();
-# endif
-}
-
-void matrix_scan_keymap(void) {
- if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
- layer_off(_MOUSE);
- }
- if (tap_toggling) {
- if (!layer_state_is(_MOUSE)) {
- layer_on(_MOUSE);
- }
- }
-}
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
- switch (keycode) {
- case TT(_MOUSE):
- {
- if (record->event.pressed) {
- mouse_keycode_tracker++;
- } else {
-# if TAPPING_TOGGLE != 0
- if (record->tap.count == TAPPING_TOGGLE) {
- tap_toggling ^= 1;
-# if TAPPING_TOGGLE == 1
- if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1;
-# else
- if (!tap_toggling) mouse_keycode_tracker -= record->tap.count;
-# endif
- } else {
- mouse_keycode_tracker--;
- }
-# endif
- }
- mouse_timer = timer_read();
- break;
- }
- case MO(_MOUSE):
- case DPI_CONFIG:
- case KC_MS_UP ... KC_MS_WH_RIGHT:
- record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
- mouse_timer = timer_read();
- break;
- default:
- if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
- layer_off(_MOUSE);
- }
- mouse_keycode_tracker = 0;
- mouse_debounce_timer = timer_read();
- break;
- }
- return true;
-}
-
-layer_state_t layer_state_set_keymap(layer_state_t state) {
- if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) {
- state |= (1UL << _MOUSE);
- }
- return state;
-}
-#endif
-
-void matrix_init_keymap(void) {
-#ifdef AUDIO_ENABLE
- extern audio_config_t audio_config;
-
- if (!is_keyboard_master()) {
- audio_stop_all();
- audio_config.enable = false;
- }
-#endif
-}
-
-void keyboard_post_init_keymap(void) { matrix_init_keymap(); }
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
index c80cf8929d..e83e9a7bba 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/config.h
index 6f702bd59e..59cd098fdb 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/config.h
@@ -50,4 +50,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-#define OLED_DISPLAY_128X64
+#define POINTING_DEVICE_TASK_THROTTLE
+#define POINTING_DEVICE_RIGHT
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h
index 9daec0cd8f..d8d36e824c 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLED_SPLIT \
{ 10, 10 }
#define RGBLIGHT_LIMIT_VAL 80
-#define OLED_BRIGHTNESS 50
#define AUDIO_PIN C6
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
index 986ccae69b..6ae51ca6f0 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
@@ -43,12 +43,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy).
#define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
#define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+#define WS2812_PWM_TARGET_PERIOD 800000
+
#define RGBLED_NUM 52
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT \
{ 26, 26 }
-#define RGBLIGHT_LIMIT_VAL 150
#define DEBUG_LED_PIN C13
@@ -68,6 +69,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
/* i2c config for oleds */
#define I2C_DRIVER I2CD1
#define I2C1_SCL_PIN B8
@@ -75,9 +80,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
// #define I2C1_CLOCK_SPEED 400000
-/* For Legacy Compatibility: */
-#define I2C1_SCL 8
-#define I2C1_SDA 9
/* encoder config */
#define ENCODERS_PAD_A \
@@ -110,3 +112,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PMW3360_CS_PIN B0
#define PMW3360_SPI_MODE 3
#define PMW3360_SPI_DIVISOR 64
+#define PMW3360_FIRMWARE_UPLOAD_FAST
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
index 700b0685f2..5cd269e311 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
@@ -16,7 +16,7 @@
#include "f411.h"
-void matrix_init_sub_kb(void) { setPinInputHigh(A0); }
+void keyboard_pre_init_sub(void) { setPinInputHigh(A0); }
void matrix_scan_sub_kb(void) {
if (!readPin(A0)) {
@@ -24,6 +24,33 @@ void matrix_scan_sub_kb(void) {
}
}
+void bootmagic_lite(void) {
+ // We need multiple scans because debouncing can't be turned off.
+ matrix_scan();
+#if defined(DEBOUNCE) && DEBOUNCE > 0
+ wait_ms(DEBOUNCE * 2);
+#else
+ wait_ms(30);
+#endif
+ matrix_scan();
+
+ uint8_t row = BOOTMAGIC_LITE_ROW;
+ uint8_t col = BOOTMAGIC_LITE_COLUMN;
+
+#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
+ if (!is_keyboard_left()) {
+ row = BOOTMAGIC_LITE_ROW_RIGHT;
+ col = BOOTMAGIC_LITE_COLUMN_RIGHT;
+ }
+#endif
+
+ if (matrix_get_row(row) & (1 << col) || !readPin(A0)) {
+ eeconfig_disable();
+ bootloader_jump();
+ }
+}
+
+
#ifdef USB_VBUS_PIN
bool usb_vbus_state(void) {
setPinInputLow(USB_VBUS_PIN);
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/post_config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/post_config.h
new file mode 100644
index 0000000000..0e33129e1a
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/post_config.h
@@ -0,0 +1,20 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef RGBLIGHT_LIMIT_VAL
+# if defined(OLED_ENABLE)
+# define RGBLIGHT_LIMIT_VAL 100
+# else
+# define RGBLIGHT_LIMIT_VAL 150
+# endif
+#endif
+
+#ifndef OLED_BRIGHTNESS
+# ifdef RGBLIGHT_ENABLE
+# define OLED_BRIGHTNESS 80
+# else
+# define OLED_BRIGHTNESS 150
+# endif
+#endif
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
index b387435122..f732295ba3 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
@@ -1,7 +1,7 @@
# Drashna's Blackpill Tractyl Manuform (5x6) with a right side trackball
* System Timer on TIM5
-* ~~VBUS mod, using PB10~~ (*doesn't seem to work for me*)
+* VBUS mod, using PB10 -- does work, but not on my tractyl... bad soldering probably
* Split Hand Pin, using PC14
* Full Duplex Serial/USART using PA2 and PA3 on USART2
* PWM Audio using PB1 and TIM3 and GPT on TIM4
@@ -12,7 +12,8 @@
* SSD1306 OLED display (128x64) using PB8-PB9 on I2C1
* Pull-up resistor (22k) on PA10 to fix reset issue.
* Pull-up resistor (5.1k) on PA1 for WS2812 LED support, and wire it's VCC to the 5V pin.
-* Pins PA9, PA11, A12 are not useable because they're used for USB connection, and can't be shared.
+* Pins PA9 is meant for VBUS sense, and has an internal pulldown resistor. A 5.1k pullup resistor can work (but should be avoided)
+* Pins PA11 and A12 are not useable because they're used for USB connection, and can't be shared.
* Pin PB2 is used by BOOT1, and is unusable
## Keyboard Info
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
index d6f972b468..0a4fbee0e5 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
@@ -6,7 +6,7 @@ BOOTLOADER = stm32-dfu
KEYBOARD_SHARED_EP = yes
CONSOLE_ENABLE = yes
-MOUSE_SHARED_EP = no
+MOUSE_SHARED_EP = yes
EEPROM_DRIVER = spi
WS2812_DRIVER = pwm
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h
index 577b709bb5..c3a30d2bc8 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h
@@ -16,6 +16,9 @@
#pragma once
-#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 }
-
#define DEBOUNCE 45
+#define ENCODER_DEFAULT_POS 0x3
+
+#ifdef OLED_DRIVER_SH1107
+# undef OLED_DISPLAY_128X64
+#endif
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
index 3de8bcf108..fa1e8897ee 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
@@ -16,11 +16,6 @@
#include "drashna.h"
-enum tractyl_keycodes {
- KC_ACCEL = NEW_SAFE_RANGE,
-};
-
-bool enable_acceleration = false;
// clang-format off
#define LAYOUT_5x6_right_wrapper(...) LAYOUT_5x6_right(__VA_ARGS__)
#define LAYOUT_5x6_right_base( \
@@ -65,9 +60,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_MOUSE] = LAYOUT_5x6_right(
- _______, _______, _______, _______, _______, _______, DPI_CONFIG, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, _______,
+ _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, DPI_CONFIG,
_______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
_______, _______, _______, _______,
_______, _______, KC_BTN3,
@@ -75,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______
),
[_GAMEPAD] = LAYOUT_5x6_right(
- KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, DPI_CONFIG, _______, _______, _______, _______, _______,
+ KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______,
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______,
@@ -125,14 +120,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______
),
[_ADJUST] = LAYOUT_5x6_right_wrapper(
- KC_MAKE, ___________________BLANK___________________, _________________ADJUST_R1_________________, KC_RST,
+ KC_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, KC_RST,
VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST,
KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS,
UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
- HPT_DWLI, HPT_DWLD, TG_GAME, TG_DBLO,
- HPT_TOG, HPT_BUZ, KC_NUKE,
+ TG(_DIABLOII), AUTO_CTN, TG_GAME, TG_DBLO,
+ _______, REBOOT, KC_NUKE,
_______, _______, _______,
- _______, TG(_DIABLOII),KC_NUKE, _______
+ _______, _______, KC_NUKE, _______
),
};
@@ -169,255 +164,50 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif
-#ifdef POINTING_DEVICE_ENABLE
-static uint16_t mouse_timer = 0;
-static uint16_t mouse_debounce_timer = 0;
-static uint8_t mouse_keycode_tracker = 0;
-bool tap_toggling = false;
-
-# ifdef TAPPING_TERM_PER_KEY
-# define TAP_CHECK get_tapping_term(KC_BTN1, NULL)
-# else
-# ifndef TAPPING_TERM
-# define TAPPING_TERM 200
-# endif
-# define TAP_CHECK TAPPING_TERM
-# endif
-
-report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
- int8_t x = mouse_report.x, y = mouse_report.y;
- mouse_report.x = 0;
- mouse_report.y = 0;
-
- if (x != 0 && y != 0) {
- mouse_timer = timer_read();
-# ifdef OLED_ENABLE
- oled_timer = timer_read32();
-# endif
- if (timer_elapsed(mouse_debounce_timer) > TAP_CHECK) {
- if (enable_acceleration) {
- x = (x > 0 ? x * x / 16 + x : -x * x / 16 + x);
- y = (y > 0 ? y * y / 16 + y : -y * y / 16 + y);
- }
- mouse_report.x = x;
- mouse_report.y = y;
- if (!layer_state_is(_MOUSE)) {
- layer_on(_MOUSE);
- }
- }
- }
- return mouse_report;
-}
-
-void matrix_scan_keymap(void) {
- if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
- layer_off(_MOUSE);
- }
- if (tap_toggling) {
- if (!layer_state_is(_MOUSE)) {
- layer_on(_MOUSE);
- }
- }
-}
-
-bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
- switch (keycode) {
- case TT(_MOUSE):
- if (record->event.pressed) {
- mouse_keycode_tracker++;
- } else {
-# if TAPPING_TOGGLE != 0
- if (record->tap.count == TAPPING_TOGGLE) {
- tap_toggling ^= 1;
-# if TAPPING_TOGGLE == 1
- if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1;
-# else
- if (!tap_toggling) mouse_keycode_tracker -= record->tap.count;
-# endif
- } else {
- mouse_keycode_tracker--;
- }
-# endif
- }
- mouse_timer = timer_read();
- break;
- case TG(_MOUSE):
- if (record->event.pressed) {
- tap_toggling ^= 1;
- }
- break;
- case MO(_MOUSE):
- case DPI_CONFIG:
- case KC_MS_UP ... KC_MS_WH_RIGHT:
- record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
- mouse_timer = timer_read();
- case KC_ACCEL:
- enable_acceleration = record->event.pressed;
- break;
- default:
- if (IS_NOEVENT(record->event)) break;
- if ((keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) && (((keycode >> 0x8) & 0xF) == _MOUSE)) {
- record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
- mouse_timer = timer_read();
- break;
- }
- if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
- layer_off(_MOUSE);
- }
- mouse_keycode_tracker = 0;
- mouse_debounce_timer = timer_read();
- break;
- }
- return true;
-}
-
-layer_state_t layer_state_set_keymap(layer_state_t state) {
- if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) {
- state |= ((layer_state_t)1 << _MOUSE);
- }
- return state;
-}
-#endif
-
#ifdef OLED_ENABLE
-// WPM-responsive animation stuff here
-# define SLEEP_FRAMES 2
-# define SLEEP_SPEED 10 // below this wpm value your animation will idle
-
-# define WAKE_FRAMES 2 // uncomment if >1
-
-# define KAKI_FRAMES 3
-# define KAKI_SPEED 40 // above this wpm value typing animation to triggere
-
-# define RTOGI_FRAMES 2
-//#define LTOGI_FRAMES 2
-
-//#define ANIM_FRAME_DURATION 500 // how long each frame lasts in ms
-// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
-# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024
+extern uint16_t typing_mode;
-uint32_t anim_timer = 0;
-uint32_t anim_frame_duration = 500;
-uint8_t current_sleep_frame = 0;
-uint8_t current_wake_frame = 0; // uncomment if WAKE_FRAMES >1
-uint8_t current_kaki_frame = 0;
-uint8_t current_rtogi_frame = 0;
-// uint8_t current_ltogi_frame = 0;
+oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_180; }
-void render_kitty(void) {
- // Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
- static const char PROGMEM sleep[SLEEP_FRAMES][ANIM_SIZE] = {{
- // 'sleep1', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa8, 0x48, 0xa8, 0x18, 0x08, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x80, 0x44, 0x84, 0x06, 0x05, 0x04, 0x80, 0x40, 0x20, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x18, 0x04, 0x04, 0x02, 0x7a, 0x86, 0x01, 0x80, 0x80, 0x01, 0x03, 0x05, 0x07, 0x01, 0x00, 0x00, 0x80, 0x83, 0x45, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x29, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
- {// 'sleep2', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x3a, 0x2a, 0x26, 0x22, 0x80, 0xc0, 0x80, 0x00, 0x24, 0x34, 0x2c, 0xe4, 0x60, 0x10, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38, 0x04, 0x02, 0x02, 0x01, 0x79, 0x87, 0x01, 0x80, 0x81, 0x83, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00, 0x80, 0x43, 0x05, 0xfa, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28, 0x28, 0x28, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39, 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
- static const char PROGMEM wake[WAKE_FRAMES][ANIM_SIZE] = {{
- // 'mati2', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x40, 0x40, 0x5c, 0x00, 0x01, 0x41, 0x01, 0x00, 0x5c, 0x40, 0x40, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
- {// 'mati3', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x90, 0x12, 0x0a, 0x02, 0xf4, 0x09, 0x0d, 0xf1, 0x04, 0x02, 0x0a, 0x12, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x01, 0x81, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
- static const char PROGMEM kaki[KAKI_FRAMES][ANIM_SIZE] = {{
- // 'jare2', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0xfc, 0x84, 0x08, 0x08, 0x10, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60, 0x80, 0x00, 0x00, 0x91, 0xa1, 0x80, 0x00, 0x00, 0x22, 0x84, 0x40, 0x50, 0x48, 0xc1, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x41, 0x82, 0xe2, 0x12, 0x0a, 0x06, 0x00, 0x80, 0x88, 0x4f, 0x02, 0x22, 0xe2, 0x9f, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, 0x14, 0x14, 0x1f, 0x1a, 0x0a, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
- {
- // 'kaki1', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x1a, 0x22, 0xc2, 0x04, 0x04, 0x04, 0x07, 0x00, 0xc0, 0x20, 0x10, 0x80, 0x80, 0x01, 0x01, 0x02, 0xfc, 0xfe, 0x02, 0x3c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x09, 0x08, 0x00, 0x80, 0x00, 0x06, 0x09, 0x1b, 0xee, 0x00, 0x00, 0x00, 0x00, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
- {// 'kaki2', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x01, 0x02, 0x04, 0x04, 0x03, 0x80, 0x40, 0x40, 0x20, 0x00, 0x01, 0x02, 0x8c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d, 0x55, 0x50, 0x94, 0xf0, 0x10, 0x0a, 0x0e, 0x1d, 0x95, 0x24, 0x24, 0x27, 0x13, 0xe1, 0x01, 0x01, 0x01, 0x01, 0x02, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14, 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18, 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c, 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
- static const char PROGMEM rtogi[KAKI_FRAMES][ANIM_SIZE] = {{
- // 'rtogi1', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x0f, 0x90, 0x10, 0x20, 0xf0, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0xc7, 0xc4, 0x62, 0x23, 0x11, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x40, 0x20, 0x10, 0x88, 0xcc, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- },
- {// 'rtogi2', 128x32px
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f, 0xa0, 0x20, 0x40, 0x80, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x28, 0x6b, 0x40, 0xa0, 0x99, 0x86, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0f, 0x11, 0x22, 0x44, 0x48, 0x4c, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
-
- // assumes 1 frame prep stage
- void animation_phase(void) {
- if (tap_toggling) {
- anim_frame_duration = 300;
- current_rtogi_frame = (current_rtogi_frame + 1) % RTOGI_FRAMES;
- oled_write_raw_P(rtogi[abs((RTOGI_FRAMES - 1) - current_rtogi_frame)], ANIM_SIZE);
- } else {
- if (get_current_wpm() <= SLEEP_SPEED) {
- anim_frame_duration = 500;
- current_sleep_frame = (current_sleep_frame + 1) % SLEEP_FRAMES;
- oled_write_raw_P(sleep[abs((SLEEP_FRAMES - 1) - current_sleep_frame)], ANIM_SIZE);
- }
- // if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
- if (get_current_wpm() > SLEEP_SPEED) {
- anim_frame_duration = 800;
- current_wake_frame = (current_wake_frame + 1) % WAKE_FRAMES;
- oled_write_raw_P(wake[abs((WAKE_FRAMES - 1) - current_wake_frame)], ANIM_SIZE);
- // oled_write_raw_P(wake[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
- }
- if (get_current_wpm() >= KAKI_SPEED) {
- anim_frame_duration = 500;
- current_kaki_frame = (current_kaki_frame + 1) % KAKI_FRAMES;
- oled_write_raw_P(kaki[abs((KAKI_FRAMES - 1) - current_kaki_frame)], ANIM_SIZE);
- }
- }
- }
- if (get_current_wpm() != 000) {
- // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- if (timer_elapsed32(anim_timer) > anim_frame_duration) {
- anim_timer = timer_read32();
- animation_phase();
- }
+void oled_render_large_display(void) {
+ if (is_keyboard_left()) {
+ render_wpm_graph(54, 64);
} else {
- // if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- if (timer_elapsed32(anim_timer) > anim_frame_duration) {
- anim_timer = timer_read32();
- animation_phase();
+ oled_advance_page(true);
+ oled_advance_page(true);
+
+ static const char PROGMEM logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
+ };
+ oled_write_P(logo, false);
+
+ oled_set_cursor(1, 14);
+ oled_write_ln_P(PSTR("Unicode:"), false);
+ switch (typing_mode) {
+ case KC_WIDE:
+ oled_write_P(PSTR(" Wide"), false);
+ break;
+ case KC_SCRIPT:
+ oled_write_P(PSTR(" Script"), false);
+ break;
+ case KC_BLOCKS:
+ oled_write_P(PSTR(" Blocks"), false);
+ break;
+ case KC_REGIONAL:
+ oled_write_P(PSTR(" Regional"), false);
+ break;
+ case KC_AUSSIE:
+ oled_write_P(PSTR(" Aussie"), false);
+ break;
+ case KC_ZALGO:
+ oled_write_P(PSTR(" Zalgo"), false);
+ break;
+ default:
+ oled_write_P(PSTR(" Normal"), false);
+ break;
}
}
}
-
-void oled_driver_render_logo_left(void) {
- render_kitty();
-
- oled_set_cursor(6, 0);
- oled_write_P(PSTR(" Tractyl "), true);
- oled_set_cursor(6, 1);
- oled_write_P(PSTR(" Manuform "), true);
- oled_set_cursor(6, 2);
-# if defined(WPM_ENABLE)
- render_wpm(1);
-# endif
- oled_set_cursor(6, 3);
-# if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
- render_pointing_dpi_status(0);
-# endif
- oled_set_cursor(0, 4);
-}
#endif
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk
index 9b9032837e..9ef58ab5ec 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk
@@ -1,14 +1,36 @@
-RGBLIGHT_ENABLE = yes
-RGBLIGHT_STARTUP_ANIMATION = yes
-AUDIO_ENABLE = yes
-HAPTIC_ENABLE = no
-COMMAND_ENABLE = no
-TAP_DANCE_ENABLE = yes
-UNICODE_ENABLE = yes
-OLED_ENABLE = yes
-WPM_ENABLE = yes
-ENCODER_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
+COMMAND_ENABLE = no
+RGBLIGHT_ENABLE = yes
+RGBLIGHT_STARTUP_ANIMATION = yes
+AUDIO_ENABLE = yes
+HAPTIC_ENABLE = no
+TAP_DANCE_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+AUTOCORRECTION_ENABLE = yes
+CAPS_WORD_ENABLE = yes
+
+ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/elite_c)
+ RGBLIGHT_ENABLE = no
+ AUDIO_ENABLE = no
+ HAPTIC_ENABLE = no
+ TAP_DANCE_ENABLE = no
+ OLED_ENABLE = no
+ WPM_ENABLE = no
+ ENCODER_ENABLE = no
+ AUTOCORRECTION_ENABLE = no
+ LTO_SUPPORTED = yes
+ SWAP_HANDS_ENABLE = no
+ CUSTOM_UNICODE_ENABLE = no
+ CAPS_WORD_ENABLE = no
+ BOOTLOADER = qmk-hid
+ BOOTLOADER_SIZE = 512
+endif
+ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/teensy2pp)
+ AUTOCORRECTION_ENABLE = no
+ CAPS_WORD_ENABLE = yes
+endif
# DEBOUNCE_TYPE = sym_eager_pk
-LTO_SUPPORTED = no
+OLED_DRIVER = custom
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
index 699e826485..37bbbb4dae 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -17,7 +14,7 @@ SWAP_HANDS_ENABLE = yes
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pmw3360
-MOUSE_SHARED_EP = no
+MOUSE_SHARED_EP = yes
SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/tractyl_manuform/tm_sync.c b/keyboards/handwired/tractyl_manuform/tm_sync.c
index 4739af1e76..549a17a22f 100644
--- a/keyboards/handwired/tractyl_manuform/tm_sync.c
+++ b/keyboards/handwired/tractyl_manuform/tm_sync.c
@@ -1,5 +1,6 @@
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
+ * Copyright 2021 Dasky (@daskygit)
+
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
@@ -14,19 +15,29 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "tractyl_manuform.h"
+#include QMK_KEYBOARD_H
+#include "pointing_device.h"
#include "transactions.h"
#include <string.h>
+#ifdef MOUSEKEY_ENABLE
+# include "mousekey.h"
+#endif
+
+// typedef struct {
+// uint16_t device_cpi;
+// } kb_config_data_t;
-kb_config_data_t kb_config;
-kb_mouse_report_t sync_mouse_report;
+kb_config_data_t kb_config;
+static report_mouse_t shared_mouse_report;
+extern const pointing_device_driver_t pointing_device_driver;
void kb_pointer_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
- if (target2initiator_buffer_size == sizeof(sync_mouse_report)) {
- memcpy(target2initiator_buffer, &sync_mouse_report, sizeof(sync_mouse_report));
- }
- sync_mouse_report.x = 0;
- sync_mouse_report.y = 0;
+ shared_mouse_report = pointing_device_driver.get_report(shared_mouse_report);
+ memcpy(target2initiator_buffer, &shared_mouse_report, sizeof(report_mouse_t));
+ shared_mouse_report.x = 0;
+ shared_mouse_report.y = 0;
+ shared_mouse_report.h = 0;
+ shared_mouse_report.v = 0;
}
void kb_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
@@ -38,12 +49,15 @@ void kb_config_sync_handler(uint8_t initiator2target_buffer_size, const void* in
// Check if the state values are different
if (cpi != kb_config.device_cpi) {
cpi = kb_config.device_cpi;
+ if (!is_keyboard_left()) {
+ pointing_device_set_cpi(cpi);
+ }
}
}
void keyboard_pre_init_sync(void) {
memset(&kb_config, 0, sizeof(kb_config));
- memset(&sync_mouse_report, 0, sizeof(sync_mouse_report));
+ memset(&shared_mouse_report, 0, sizeof(shared_mouse_report));
}
void keyboard_post_init_sync(void) {
@@ -84,3 +98,83 @@ void trackball_set_cpi(uint16_t cpi) {
pointing_device_set_cpi(cpi);
}
}
+
+void pointing_device_task(void) {
+ if (!is_keyboard_master()) {
+ return;
+ }
+
+#if defined(POINTING_DEVICE_TASK_THROTTLE)
+ static uint32_t last_exec = 0;
+ if (timer_elapsed32(last_exec) < 1) {
+ return;
+ }
+ last_exec = timer_read32();
+#endif
+
+ report_mouse_t local_report = pointing_device_get_report();
+
+ // Gather report info
+#ifdef POINTING_DEVICE_MOTION_PIN
+ if (!readPin(POINTING_DEVICE_MOTION_PIN))
+#endif
+#if defined(POINTING_DEVICE_COMBINED)
+ local_report = pointing_device_driver.get_report(local_report);
+ transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &shared_mouse_report);
+ local_report.x = local_report.x | shared_mouse_report.x;
+ local_report.y = local_report.y | shared_mouse_report.y;
+ local_report.h = local_report.h | shared_mouse_report.h;
+ local_report.v = local_report.v | shared_mouse_report.v;
+#elif defined(POINTING_DEVICE_LEFT)
+ if (is_keyboard_left()) {
+ local_report = pointing_device_driver.get_report(local_report);
+ } else {
+ transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &local_report);
+ }
+#elif defined(POINTING_DEVICE_RIGHT)
+ if (!is_keyboard_left()) {
+ local_report = pointing_device_driver.get_report(local_report);
+ } else {
+ transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(report_mouse_t), &local_report);
+ }
+#else
+# error "You need to define the side(s) the pointing device is on. POINTING_DEVICE_COMBINED / POINTING_DEVICE_LEFT / POINTING_DEVICE_RIGHT"
+#endif
+
+ // Support rotation of the sensor data
+#if defined(POINTING_DEVICE_ROTATION_90) || defined(POINTING_DEVICE_ROTATION_180) || defined(POINTING_DEVICE_ROTATION_270)
+ int8_t x = local_report.x, y = local_report.y;
+# if defined(POINTING_DEVICE_ROTATION_90)
+ local_report.x = y;
+ local_report.y = -x;
+# elif defined(POINTING_DEVICE_ROTATION_180)
+ local_report.x = -x;
+ local_report.y = -y;
+# elif defined(POINTING_DEVICE_ROTATION_270)
+ local_report.x = -y;
+ local_report.y = x;
+# else
+# error "How the heck did you get here?!"
+# endif
+#endif
+ // Support Inverting the X and Y Axises
+#if defined(POINTING_DEVICE_INVERT_X)
+ local_report.x = -local_report.x;
+#endif
+#if defined(POINTING_DEVICE_INVERT_Y)
+ local_report.y = -local_report.y;
+#endif
+
+ // allow kb to intercept and modify report
+ local_report = pointing_device_task_kb(local_report);
+ // combine with mouse report to ensure that the combined is sent correctly
+#ifdef MOUSEKEY_ENABLE
+ report_mouse_t mousekey_report = mousekey_get_report();
+ local_report.buttons = local_report.buttons | mousekey_report.buttons;
+#endif
+#if defined(POINTING_DEVICE_COMBINED)
+ local_report.buttons = local_report.buttons | shared_mouse_report.buttons;
+#endif
+ pointing_device_set_report(local_report);
+ pointing_device_send();
+}
diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
index 5f476fcc98..6095bfb7e2 100644
--- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
+++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
@@ -70,6 +70,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
return true;
}
__attribute__((weak)) void keyboard_pre_init_sync(void) {}
+__attribute__((weak)) void keyboard_pre_init_sub(void) {}
void keyboard_pre_init_kb(void) {
// debug_enable = true;
// debug_matrix = true;
@@ -82,6 +83,7 @@ void keyboard_pre_init_kb(void) {
writePin(DEBUG_LED_PIN, !debug_enable);
#endif
+ keyboard_pre_init_sub();
keyboard_pre_init_sync();
keyboard_pre_init_user();
}
@@ -99,20 +101,8 @@ void pointing_device_init_kb(void) {
}
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
- if (is_keyboard_left()) {
- if (is_keyboard_master()) {
- transaction_rpc_recv(RPC_ID_POINTER_STATE_SYNC, sizeof(sync_mouse_report), &sync_mouse_report);
- mouse_report.x = sync_mouse_report.x;
- mouse_report.y = sync_mouse_report.y;
- pointing_device_task_user(mouse_report);
- }
- } else {
- if (is_keyboard_master()) {
- pointing_device_task_user(mouse_report);
- } else {
- sync_mouse_report.x = mouse_report.x;
- sync_mouse_report.y = mouse_report.y;
- }
+ if (is_keyboard_master()) {
+ mouse_report = pointing_device_task_user(mouse_report);
}
return mouse_report;
}
diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.h b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h
index f6a6c07520..c3acade6f1 100644
--- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.h
+++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.h
@@ -43,15 +43,8 @@ typedef struct {
uint16_t device_cpi;
} kb_config_data_t;
-__attribute__((aligned(16))) typedef struct {
- int8_t x;
- int8_t y;
-} kb_mouse_report_t;
+extern kb_config_data_t kb_config;
-extern kb_mouse_report_t sync_mouse_report;
-
-void process_mouse(void);
-void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y);
void trackball_set_cpi(uint16_t cpi);
void matrix_init_sub_kb(void);
void matrix_scan_sub_kb(void);
diff --git a/keyboards/handwired/traveller/rules.mk b/keyboards/handwired/traveller/rules.mk
index ac010606a2..7d2cea91df 100644
--- a/keyboards/handwired/traveller/rules.mk
+++ b/keyboards/handwired/traveller/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/tritium_numpad/rules.mk b/keyboards/handwired/tritium_numpad/rules.mk
index 51d9e849de..ae586aa093 100644
--- a/keyboards/handwired/tritium_numpad/rules.mk
+++ b/keyboards/handwired/tritium_numpad/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/handwired/twadlee/tp69/rules.mk b/keyboards/handwired/twadlee/tp69/rules.mk
index 6264af6a8b..216e797c4b 100644
--- a/keyboards/handwired/twadlee/tp69/rules.mk
+++ b/keyboards/handwired/twadlee/tp69/rules.mk
@@ -9,10 +9,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/unicomp_mini_m/rules.mk b/keyboards/handwired/unicomp_mini_m/rules.mk
index 9372367093..69f5cb2d79 100644
--- a/keyboards/handwired/unicomp_mini_m/rules.mk
+++ b/keyboards/handwired/unicomp_mini_m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/unk/rules.mk b/keyboards/handwired/unk/rules.mk
index 7197df5016..84e2f3e1b2 100644
--- a/keyboards/handwired/unk/rules.mk
+++ b/keyboards/handwired/unk/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/videowriter/rules.mk b/keyboards/handwired/videowriter/rules.mk
index f4059cc842..f5c8a1405b 100644
--- a/keyboards/handwired/videowriter/rules.mk
+++ b/keyboards/handwired/videowriter/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/wabi/rules.mk b/keyboards/handwired/wabi/rules.mk
index 6c849c7d1e..354f194ca2 100644
--- a/keyboards/handwired/wabi/rules.mk
+++ b/keyboards/handwired/wabi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here:https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/woodpad/rules.mk b/keyboards/handwired/woodpad/rules.mk
index 72c4f9df2d..098286cbc1 100644
--- a/keyboards/handwired/woodpad/rules.mk
+++ b/keyboards/handwired/woodpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk
index 8aa1554fd4..f60cc5ea80 100644
--- a/keyboards/handwired/wulkan/rules.mk
+++ b/keyboards/handwired/wulkan/rules.mk
@@ -6,7 +6,7 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -14,7 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
LAYOUTS = ortho_4x12
diff --git a/keyboards/handwired/xealous/keymaps/default/keymap.c b/keyboards/handwired/xealous/keymaps/default/keymap.c
index 41a3f8c805..bf7caef622 100644
--- a/keyboards/handwired/xealous/keymaps/default/keymap.c
+++ b/keyboards/handwired/xealous/keymaps/default/keymap.c
@@ -27,12 +27,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
/* Layer 0: Qwerty */
- [_QWERTY] = LAYOUT_split60( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- FN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, DF(_NUMPAD), KC_SPC, KC_SPC, KC_RALT, FN, KC_APP, KC_RCTL \
+ [_QWERTY] = LAYOUT_split60(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ FN, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, DF(_NUMPAD), KC_SPC, KC_SPC, KC_RALT, FN, KC_APP, KC_RCTL
),
/*
@@ -50,12 +50,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Layer 1: Numpad */
- [_NUMPAD] = LAYOUT_split60( \
- _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_MINUS, _______, _______, KC_BSPC, \
- _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PLUS, _______, _______, KC_BSLS, \
- _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_BSPC, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_DOT, _______, \
- _______, _______, _______,DF(_QWERTY), _______, KC_P0, KC_PDOT, AU_ON, AU_OFF, _______ \
+ [_NUMPAD] = LAYOUT_split60(
+ _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_MINUS, _______, _______, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PLUS, _______, _______, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_BSPC, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_DOT, _______,
+ _______, _______, _______,DF(_QWERTY), _______, KC_P0, KC_PDOT, AU_ON, AU_OFF, _______
),
/*
@@ -73,12 +73,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Layer 2: RAISE */
- [_FN] = LAYOUT_split60( \
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_CAPS, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
- _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, KC_HOME, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, KC_DEL, _______, \
- _______, _______, _______, _______, _______, KC_END, KC_END, AU_TOG, KC_VOLD, KC_VOLU, KC_MUTE, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_FN] = LAYOUT_split60(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_CAPS, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, KC_HOME, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, KC_DEL, _______,
+ _______, _______, _______, _______, _______, KC_END, KC_END, AU_TOG, KC_VOLD, KC_VOLU, KC_MUTE, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk
index 0d1bb863da..985ee385b9 100644
--- a/keyboards/handwired/xealous/rules.mk
+++ b/keyboards/handwired/xealous/rules.mk
@@ -5,24 +5,20 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes # Use shared split_common code
SUBPROJECT_rev1 = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SRC += matrix.c
DEBOUNCE_TYPE = sym_eager_pk
diff --git a/keyboards/handwired/xealousbrown/rules.mk b/keyboards/handwired/xealousbrown/rules.mk
index 67b91e6193..795bd74cbe 100644
--- a/keyboards/handwired/xealousbrown/rules.mk
+++ b/keyboards/handwired/xealousbrown/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/z150/rules.mk b/keyboards/handwired/z150/rules.mk
index f071a8be8c..99b0630157 100644
--- a/keyboards/handwired/z150/rules.mk
+++ b/keyboards/handwired/z150/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/zergo/rules.mk b/keyboards/handwired/zergo/rules.mk
index 85646a5e48..ae614e0b6d 100644
--- a/keyboards/handwired/zergo/rules.mk
+++ b/keyboards/handwired/zergo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hardlineworks/otd_plus/rules.mk b/keyboards/hardlineworks/otd_plus/rules.mk
index 988e01862a..476cf49f27 100644
--- a/keyboards/hardlineworks/otd_plus/rules.mk
+++ b/keyboards/hardlineworks/otd_plus/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hecomi/alpha/rules.mk b/keyboards/hecomi/alpha/rules.mk
index 2b2ae49cc5..343dd7d5a1 100644
--- a/keyboards/hecomi/alpha/rules.mk
+++ b/keyboards/hecomi/alpha/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hecomi/keymaps/default/config.h b/keyboards/hecomi/keymaps/default/config.h
deleted file mode 100644
index 4496c59100..0000000000
--- a/keyboards/hecomi/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/hecomi/keymaps/default/keymap.c b/keyboards/hecomi/keymaps/default/keymap.c
index 465b4ae5c1..4ed135c25e 100644
--- a/keyboards/hecomi/keymaps/default/keymap.c
+++ b/keyboards/hecomi/keymaps/default/keymap.c
@@ -37,19 +37,19 @@ enum layers{
#define KC_SFT(XXX) LSFT(XXX)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [DF]=LAYOUT(\
- KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6, KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_NUHS,KC_GRV,\
- KC_TAB ,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y, KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\
- KC_LCTRL ,KC_A,KC_S,KC_D,KC_F,KC_G, KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\
- KC_LSFT ,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,KC_FN,\
- KC_LCTRL,KC_LGUI,KC_LALT,KC_MHEN,KC_BSPC,KC_SPC, KC_ENT,KC_ESC,KC_HENK,KC_RALT,KC_RGUI,KC_RCTRL\
+ [DF]=LAYOUT(
+ KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6, KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_NUHS,KC_GRV,
+ KC_TAB ,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y, KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,
+ KC_LCTRL ,KC_A,KC_S,KC_D,KC_F,KC_G, KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,
+ KC_LSFT ,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,KC_FN,
+ KC_LCTRL,KC_LGUI,KC_LALT,KC_MHEN,KC_BSPC,KC_SPC, KC_ENT,KC_ESC,KC_HENK,KC_RALT,KC_RGUI,KC_RCTRL
),
- [FN]=LAYOUT(\
- KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6, KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_INS,KC_DEL,\
- KC_TAB ,KC_9,KC_7,KC_5,KC_3,KC_1,KC_Y, KC_Y,KC_U,KC_PSCR,KC_SLCK,KC_PAUSE,KC_UP,KC_RBRC,KC_BSPC,\
- KC_CAPS ,KC_8,KC_6,KC_4,KC_2,KC_0, KC_SFT(KC_8),KC_SLSH,KC_HOME,KC_PGUP,KC_LEFT,KC_RIGHT,KC_ENT,\
- KC_LSFT ,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_B,KC_SFT(KC_EQL),KC_MINS,KC_END,KC_PGDN,KC_DOWN,KC_RSFT,KC_TRNS,\
- KC_LCTRL,KC_LGUI,KC_LALT,KC_MHEN,KC_BSPC,KC_SPC, KC_ENT,KC_ESC,KC_HENK,KC_RALT,KC_RGUI,KC_RCTRL\
+ [FN]=LAYOUT(
+ KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6, KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_INS,KC_DEL,
+ KC_TAB ,KC_9,KC_7,KC_5,KC_3,KC_1,KC_Y, KC_Y,KC_U,KC_PSCR,KC_SLCK,KC_PAUSE,KC_UP,KC_RBRC,KC_BSPC,
+ KC_CAPS ,KC_8,KC_6,KC_4,KC_2,KC_0, KC_SFT(KC_8),KC_SLSH,KC_HOME,KC_PGUP,KC_LEFT,KC_RIGHT,KC_ENT,
+ KC_LSFT ,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_B,KC_SFT(KC_EQL),KC_MINS,KC_END,KC_PGDN,KC_DOWN,KC_RSFT,KC_TRNS,
+ KC_LCTRL,KC_LGUI,KC_LALT,KC_MHEN,KC_BSPC,KC_SPC, KC_ENT,KC_ESC,KC_HENK,KC_RALT,KC_RGUI,KC_RCTRL
),
};
diff --git a/keyboards/hecomi/rules.mk b/keyboards/hecomi/rules.mk
index 7ceb58dcd4..b570db0d06 100644
--- a/keyboards/hecomi/rules.mk
+++ b/keyboards/hecomi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/heliar/wm1_hotswap/rules.mk b/keyboards/heliar/wm1_hotswap/rules.mk
index c7a159b008..7d0fd8ee51 100644
--- a/keyboards/heliar/wm1_hotswap/rules.mk
+++ b/keyboards/heliar/wm1_hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/helix/pico/config.h b/keyboards/helix/pico/config.h
index b01fd3a001..ea2ce8c941 100644
--- a/keyboards/helix/pico/config.h
+++ b/keyboards/helix/pico/config.h
@@ -1,6 +1,7 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
+Copyright 2018 MakotoKurauchi
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -42,12 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-// Helix keyboard OLED support
-// see ./rules.mk: OLED_ENABLE=yes or no
-#ifdef OLED_ENABLE
- #define SSD1306OLED
-#endif
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
@@ -114,8 +109,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-// 120 RGBoff, OLEDoff
-// 120 OLED
+// 120 RGBoff
// 330 RGB 6
// 300 RGB 32
// 310 OLED & RGB 32
diff --git a/keyboards/helix/pico/keymaps/biacco/keymap.c b/keyboards/helix/pico/keymaps/biacco/keymap.c
index a1d041c022..aa196c7e6a 100644
--- a/keyboards/helix/pico/keymaps/biacco/keymap.c
+++ b/keyboards/helix/pico/keymaps/biacco/keymap.c
@@ -1,24 +1,19 @@
+/* Copyright 2018 Biacco42
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include QMK_KEYBOARD_H
-#include "bootloader.h"
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
-#endif
-#ifdef AUDIO_ENABLE
- #include "audio.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
-
-extern keymap_config_t keymap_config;
-
-#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
-
-extern uint8_t is_master;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
diff --git a/keyboards/helix/pico/keymaps/biacco/rules.mk b/keyboards/helix/pico/keymaps/biacco/rules.mk
index 993ade2673..d971359461 100644
--- a/keyboards/helix/pico/keymaps/biacco/rules.mk
+++ b/keyboards/helix/pico/keymaps/biacco/rules.mk
@@ -10,10 +10,8 @@ AUDIO_ENABLE = yes # Audio output on port B5
LTO_ENABLE = no # if firmware size over limit, try this option
# Helix Spacific Build Options
-# you can uncomment and edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
-# OLED_ENABLE = no # OLED_ENABLE
-# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# you can uncomment and edit follows 4 Variables
+# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = no # LED animations
diff --git a/keyboards/helix/pico/keymaps/default/keymap.c b/keyboards/helix/pico/keymaps/default/keymap.c
index 7cc3cb586e..11ee30258c 100644
--- a/keyboards/helix/pico/keymaps/default/keymap.c
+++ b/keyboards/helix/pico/keymaps/default/keymap.c
@@ -1,24 +1,25 @@
+/* Copyright 2018 MakotoKurauchi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include QMK_KEYBOARD_H
-#include "bootloader.h"
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
-#endif
-#ifdef AUDIO_ENABLE
- #include "audio.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
-
#ifdef RGBLIGHT_ENABLE
//Following line allows macro to read current RGB settings
extern rgblight_config_t rgblight_config;
#endif
-extern uint8_t is_master;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -66,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
* ,-----------------------------------------. ,-----------------------------------------.
@@ -83,11 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_COLEMAK] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_COLEMAK] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -101,11 +102,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_DVORAK] = LAYOUT( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_DVORAK] = LAYOUT(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -119,11 +120,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -137,11 +138,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PSCR, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -155,11 +156,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, AU_ON, AU_OFF, MU_TOG, MU_MOD, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, CK_TOGG, CK_RST, CK_UP, CK_DOWN, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, AU_ON, AU_OFF, MU_TOG, MU_MOD, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, CK_TOGG, CK_RST, CK_UP, CK_DOWN, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
@@ -334,10 +335,6 @@ void matrix_init_user(void) {
#ifdef RGBLIGHT_ENABLE
RGB_current_mode = rgblight_config.mode;
#endif
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
}
@@ -365,105 +362,3 @@ void music_scale_user(void)
}
#endif
-
-
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
-
-void matrix_scan_user(void) {
- iota_gfx_task(); // this is what updates the display continuously
-}
-
-void matrix_update(struct CharacterMatrix *dest,
- const struct CharacterMatrix *source) {
- if (memcmp(dest->display, source->display, sizeof(dest->display))) {
- memcpy(dest->display, source->display, sizeof(dest->display));
- dest->dirty = true;
- }
-}
-
-//assign the right code to your layers for OLED display
-#define L_BASE 0
-#define L_LOWER (1<<_LOWER)
-#define L_RAISE (1<<_RAISE)
-#define L_ADJUST (1<<_ADJUST)
-#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
-
-static void render_logo(struct CharacterMatrix *matrix) {
-
- static char logo[]={
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
- 0};
- matrix_write(matrix, logo);
- //matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
-}
-
-
-
-void render_status(struct CharacterMatrix *matrix) {
-
- // Render to mode icon
- static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
- if(keymap_config.swap_lalt_lgui==false){
- matrix_write(matrix, logo[0][0]);
- matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[0][1]);
- }else{
- matrix_write(matrix, logo[1][0]);
- matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[1][1]);
- }
-
- // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
- char buf[40];
- snprintf(buf,sizeof(buf), "Undef-%ld", layer_state);
- matrix_write_P(matrix, PSTR("\nLayer: "));
- switch (layer_state) {
- case L_BASE:
- matrix_write_P(matrix, PSTR("Default"));
- break;
- case L_RAISE:
- matrix_write_P(matrix, PSTR("Raise"));
- break;
- case L_LOWER:
- matrix_write_P(matrix, PSTR("Lower"));
- break;
- case L_ADJUST:
- case L_ADJUST_TRI:
- matrix_write_P(matrix, PSTR("Adjust"));
- break;
- default:
- matrix_write(matrix, buf);
- }
-
- // Host Keyboard LED Status
- char led[40];
- snprintf(led, sizeof(led), "\n%s %s %s",
- (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
- (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
- (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
- matrix_write(matrix, led);
-}
-
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
-
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
-
- matrix_clear(&matrix);
- if(is_master){
- render_status(&matrix);
- }else{
- render_logo(&matrix);
- }
- matrix_update(&display, &matrix);
-}
-
-#endif
diff --git a/keyboards/helix/pico/keymaps/default/readme.md b/keyboards/helix/pico/keymaps/default/readme.md
index 789097021b..a6c81651a3 100644
--- a/keyboards/helix/pico/keymaps/default/readme.md
+++ b/keyboards/helix/pico/keymaps/default/readme.md
@@ -96,10 +96,8 @@ see `qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk`
```
# Helix Spacific Build Options
-# you can uncomment and edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
-# OLED_ENABLE = no # OLED_ENABLE
-# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# you can uncomment and edit follows 4 Variables
+# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
diff --git a/keyboards/helix/pico/keymaps/default/readme_jp.md b/keyboards/helix/pico/keymaps/default/readme_jp.md
index 28594dafcb..73f97ad9a6 100644
--- a/keyboards/helix/pico/keymaps/default/readme_jp.md
+++ b/keyboards/helix/pico/keymaps/default/readme_jp.md
@@ -58,16 +58,13 @@
## カスタマイズ
-オプションの OLED をつけたり、
RGB バックライトまたは、RGB Underglow をつけた場合は、
`qmk_firmware/keyboards/helix/pico/keymaps/default/rules.mk` の以下の部分を編集して機能を有効化してください。
```
# Helix Spacific Build Options
-# you can uncomment and edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
-# OLED_ENABLE = no # OLED_ENABLE
-# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# you can uncomment and edit follows 4 Variables
+# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
@@ -89,13 +86,6 @@ rules.mk の下記の部分を編集して no を yes に変更してくださ
LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
```
-## OLEDを有効にする
-
-rules.mk の下記の部分を編集して no を yes に変更してください。
-```
-OLED_ENABLE = yes # OLED_ENABLE
-```
-
## iPad/iPhoneサポートを有効にする。
rules.mk の下記の部分を編集して no を yes に変更してください。
diff --git a/keyboards/helix/pico/keymaps/default/rules.mk b/keyboards/helix/pico/keymaps/default/rules.mk
index 8a4a0df28e..9a29406c17 100644
--- a/keyboards/helix/pico/keymaps/default/rules.mk
+++ b/keyboards/helix/pico/keymaps/default/rules.mk
@@ -1,19 +1,10 @@
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
-# See TOP/docs/config_options.md for more information.
-#
EXTRAKEY_ENABLE = yes # Audio control and System control
AUDIO_ENABLE = yes # Audio output
LTO_ENABLE = no # if firmware size over limit, try this option
# Helix Spacific Build Options
-# you can uncomment and edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
-# OLED_ENABLE = no # OLED_ENABLE
-# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# you can uncomment and edit follows 4 Variables
+# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c
index 728ef0eb5f..58684be497 100644
--- a/keyboards/helix/pico/keymaps/mtei/keymap.c
+++ b/keyboards/helix/pico/keymaps/mtei/keymap.c
@@ -1,31 +1,23 @@
+/* Copyright 2018 mtei
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include QMK_KEYBOARD_H
-#include "bootloader.h"
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#include "split_util.h"
-#endif
-#ifdef AUDIO_ENABLE
- #include "audio.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
-#ifdef CONSOLE_ENABLE
- #include <print.h>
-#endif
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
#define kc5(a,b,c,d,e) KC_##a, KC_##b, KC_##c, KC_##d, KC_##e
-extern keymap_config_t keymap_config;
-
-#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
-
-extern uint8_t is_master;
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -373,10 +365,6 @@ void matrix_init_user(void) {
#ifdef AUDIO_ENABLE
startup_user();
#endif
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
}
@@ -404,124 +392,3 @@ void music_scale_user(void)
}
#endif
-
-
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
-
-void matrix_scan_user(void) {
- iota_gfx_task(); // this is what updates the display continuously
-}
-
-void matrix_update(struct CharacterMatrix *dest,
- const struct CharacterMatrix *source) {
- if (memcmp(dest->display, source->display, sizeof(dest->display))) {
- memcpy(dest->display, source->display, sizeof(dest->display));
- dest->dirty = true;
- }
-}
-
-static void render_logo(struct CharacterMatrix *matrix) {
-
- static char logo[]={
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
- 0};
- matrix_write(matrix, logo);
-#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_ANIMATIONS)
- char buf[30];
- if(rgblight_config.enable) {
- snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ",
- rgblight_config.mode,
- rgblight_config.hue/RGBLIGHT_HUE_STEP,
- rgblight_config.sat/RGBLIGHT_SAT_STEP,
- rgblight_config.val/RGBLIGHT_VAL_STEP);
- matrix_write(matrix, buf);
- }
-#endif
- //matrix_write_P(&matrix, PSTR(" Split keyboard kit"));
-}
-
-static const char Qwerty_name[] PROGMEM = " Qwerty";
-static const char Colemak_name[] PROGMEM = " Colemak";
-static const char Dvorak_name[] PROGMEM = " Dvorak";
-static const char Eucalyn_name[] PROGMEM = " Eucalyn";
-
-static const char NumL_name[] PROGMEM = ":NumL";
-static const char NumR_name[] PROGMEM = ":NumR";
-static const char Lower_name[] PROGMEM = ":Func";
-static const char Raise_name[] PROGMEM = ":Extra";
-static const char Adjust_name[] PROGMEM = ":Adjust";
-
-static const char *layer_names[] = {
- [_QWERTY] = Qwerty_name,
- [_COLEMAK] = Colemak_name,
- [_DVORAK] = Dvorak_name,
- [_EUCALYN] = Eucalyn_name,
-
- [_NUML] = NumL_name,
- [_NUMR] = NumR_name,
- [_LOWER] = Lower_name,
- [_RAISE] = Raise_name,
- [_ADJUST] = Adjust_name
-};
-
-void render_status(struct CharacterMatrix *matrix) {
-
- // Render to mode icon
- static char logo[][2][3]={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
- if(keymap_config.swap_lalt_lgui==false){
- matrix_write(matrix, logo[0][0]);
- matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[0][1]);
- }else{
- matrix_write(matrix, logo[1][0]);
- matrix_write_P(matrix, PSTR("\n"));
- matrix_write(matrix, logo[1][1]);
- }
-
- // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
- int name_num;
- uint32_t lstate;
- matrix_write_P(matrix, layer_names[current_default_layer]);
- matrix_write_P(matrix, PSTR("\n"));
- for( lstate = layer_state, name_num = 0;
- lstate && name_num < sizeof(layer_names)/sizeof(char *);
- lstate >>=1, name_num++ ) {
- if( (lstate & 1) != 0 ) {
- if( layer_names[name_num] ) {
- matrix_write_P(matrix, layer_names[name_num]);
- }
- }
- }
-
- // Host Keyboard LED Status
- char led[40];
- snprintf(led, sizeof(led), "\n%s %s %s",
- (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NUMLOCK" : " ",
- (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
- (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
- matrix_write(matrix, led);
-}
-
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
-
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
-
- matrix_clear(&matrix);
- if(is_master){
- render_status(&matrix);
- }else{
- render_logo(&matrix);
- }
- matrix_update(&display, &matrix);
-}
-
-#endif
diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk
index 05a60f67d5..413d0519d6 100644
--- a/keyboards/helix/pico/keymaps/mtei/rules.mk
+++ b/keyboards/helix/pico/keymaps/mtei/rules.mk
@@ -10,10 +10,8 @@ AUDIO_ENABLE = yes # Audio output on port B5
LTO_ENABLE = no # if firmware size over limit, try this option
# Helix Spacific Build Options
-# you can uncomment and edit follows 6 Variables
-# jp: 以下の6つの変数を必要に応じて編集し、コメントアウトをはずします。
-# OLED_ENABLE = no # OLED_ENABLE
-# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+# you can uncomment and edit follows 4 Variables
+# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
diff --git a/keyboards/helix/pico/matrix.c b/keyboards/helix/pico/matrix.c
deleted file mode 100644
index b18213d846..0000000000
--- a/keyboards/helix/pico/matrix.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "quantum.h"
-
-#ifdef USE_MATRIX_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#define ERROR_DISCONNECT_COUNT 5
-
-static uint8_t debouncing = DEBOUNCE;
-static const int ROWS_PER_HAND = MATRIX_ROWS/2;
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-static uint8_t matrix_master_scan(void);
-
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
- matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
- matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- split_keyboard_setup();
-
- // initialize row and col
- unselect_rows();
- init_cols();
-
- setPinOutput(B0);
- setPinOutput(D5);
- writePinHigh(B0);
- writePinHigh(D5);
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- matrix_init_quantum();
-}
-
-uint8_t _matrix_scan(void)
-{
- // Right hand is stored after the left in the matirx so, we need to offset it
- int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i+offset] != cols) {
- matrix_debouncing[i+offset] = cols;
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- matrix[i+offset] = matrix_debouncing[i+offset];
- }
- }
- }
-
- return 1;
-}
-
-#ifdef USE_MATRIX_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- int ret=serial_update_buffers();
- if (ret ) {
- if(ret==2) writePinLow(B0);
- return 1;
- }
- writePinHigh(B0);
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- if (is_helix_master()) {
- matrix_master_scan();
- }else{
- matrix_slave_scan();
-
- int offset = (isLeftHand) ? ROWS_PER_HAND : 0;
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[offset+i] = serial_master_buffer[i];
- }
-
- matrix_scan_quantum();
- }
- return 1;
-}
-
-
-uint8_t matrix_master_scan(void) {
-
- int ret = _matrix_scan();
-
-#ifndef KEYBOARD_helix_rev1
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_MATRIX_I2C
-// for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
-// i2c_slave_buffer[i] = matrix[offset+i];
-// }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_master_buffer[i] = matrix[offset+i];
- }
-#endif
-#endif
-
-#ifdef USE_MATRIX_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- writePinLow(D5);
-
- error_count++;
-
- if (error_count > ERROR_DISCONNECT_COUNT) {
- // reset other half if disconnected
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = 0;
- }
- }
- } else {
- // turn off the indicator led on no error
- writePinHigh(D5);
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
-
-#ifdef USE_MATRIX_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- print_hex8(row); print(": ");
- print_bin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- for(int x = 0; x < MATRIX_COLS; x++) {
- _SFR_IO8((col_pins[x] >> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
- _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
- }
-}
-
-static matrix_row_t read_cols(void)
-{
- matrix_row_t result = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
- }
- return result;
-}
-
-static void unselect_rows(void)
-{
- for(int x = 0; x < ROWS_PER_HAND; x++) {
- _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
- _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
- }
-}
-
-static void select_row(uint8_t row)
-{
- _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
- _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
-}
diff --git a/keyboards/helix/pico/override_helix_options.mk-maintenance b/keyboards/helix/pico/override_helix_options.mk-maintenance
new file mode 100644
index 0000000000..0ff930957e
--- /dev/null
+++ b/keyboards/helix/pico/override_helix_options.mk-maintenance
@@ -0,0 +1,42 @@
+#
+# This file is not normally used. It is used for maintenance testing purposes.
+# To use it, do the following:
+#
+# $ cp override_helix_options.mk-maintenance override_helix_options.mk
+#
+$(info -------------------------)
+$(info override_helix_options.mk)
+$(info -------------------------)
+
+define HELIX_OVERRIDE_PARSE
+ ifeq ($(strip $1),back)
+ LED_BACK_ENABLE = yes
+ LED_UNDERGLOW_ENABLE = no
+ endif
+ ifeq ($(strip $1),under)
+ LED_BACK_ENABLE = no
+ LED_UNDERGLOW_ENABLE = yes
+ endif
+ ifneq ($(filter noled led-off led_off,$(strip $1)),)
+ LED_BACK_ENABLE = no
+ LED_UNDERGLOW_ENABLE = no
+ endif
+ ifneq ($(filter noaudio audio-off audio_off,$(strip $1)),)
+ AUDIO_ENABLE = no
+ endif
+ ifneq ($(filter audio audio-on audio_on,$(strip $1)),)
+ AUDIO_ENABLE = yes
+ endif
+ ifneq ($(filter sc split-common split_common,$(strip $1)),)
+ SPLIT_KEYBOARD = yes
+ endif
+ ifneq ($(filter nosc no-sc no-split-common no-split_common,$(strip $1)),)
+ SPLIT_KEYBOARD = no
+ endif
+ ifeq ($(strip $1),scan)
+ DEBUG_MATRIX_SCAN_RATE_ENABLE = yes
+ endif
+ ifeq ($(strip $1),scan-api)
+ DEBUG_MATRIX_SCAN_RATE_ENABLE = api
+ endif
+endef # end of HELIX_OVERRIDE_PARSE
diff --git a/keyboards/helix/pico/pico.c b/keyboards/helix/pico/pico.c
index 315b35a7ae..4cd1953632 100644
--- a/keyboards/helix/pico/pico.c
+++ b/keyboards/helix/pico/pico.c
@@ -1,3 +1,18 @@
+/* Copyright 2018 MakotoKurauchi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "helix.h"
// Each keymap.c should use is_keyboard_master() instead of 'is_master'.
@@ -5,14 +20,6 @@
// for the old keymap.c.
uint8_t is_master = false;
-#ifdef SSD1306OLED
-#include "ssd1306.h"
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- return process_record_gfx(keycode,record) && process_record_user(keycode, record);
-}
-#endif
-
void matrix_init_kb(void) {
// Each keymap.c should use is_keyboard_master() instead of is_master.
// But keep is_master for a while for backwards compatibility
@@ -28,9 +35,3 @@ void keyboard_post_init_kb(void) {
#endif
keyboard_post_init_user();
}
-
-#if defined(SPLIT_KEYBOARD) && defined(SSD1306OLED)
-void matrix_slave_scan_user(void) {
- matrix_scan_user();
-}
-#endif
diff --git a/keyboards/helix/pico/pico.h b/keyboards/helix/pico/pico.h
index 5fa5f72958..3e51d54d84 100644
--- a/keyboards/helix/pico/pico.h
+++ b/keyboards/helix/pico/pico.h
@@ -1,12 +1,22 @@
+/* Copyright 2018 MakotoKurauchi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#pragma once
#include "helix.h"
-#ifndef SPLIT_KEYBOARD
- extern bool is_helix_master(void);
- #define is_keyboard_master() is_helix_master()
-#endif
-
// Each keymap.c should use is_keyboard_master() instead of 'is_master', 'has_usb()'.
// But keep 'is_master' for a while for backwards compatibility
// for the old keymap.c.
diff --git a/keyboards/helix/pico/post_rules.mk b/keyboards/helix/pico/post_rules.mk
index 38573d75a5..88bb5482ba 100644
--- a/keyboards/helix/pico/post_rules.mk
+++ b/keyboards/helix/pico/post_rules.mk
@@ -4,90 +4,30 @@
# Post-processing rules convert keyboard-specific shortcuts (that represent
# combinations of standard options) into QMK standard options.
#
+-include $(strip $(HELIX_TOP_DIR)/pico/override_helix_options.mk) ## File dedicated to maintenance
-define HELIX_CUSTOMISE_MSG
- $(info Helix Spacific Build Options)
- $(info - OLED_ENABLE = $(OLED_ENABLE))
- $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
- $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
- $(info - LED_ANIMATIONS = $(LED_ANIMATIONS))
- $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
- $(info )
-endef
+# Parse 'HELIX=xx,yy,zz' option
+ifneq ($(strip $(HELIX)),)
+ # make HELIX=ios helix/pico:AKEYMAP
+ # make HELIX=no-ani helix/pico:AKEYMAP
+ # make HELIX=ios,no-ani helix/pico:AKEYMAP
+ define HELIX_OPTION_PARSE
+ # parce 'no-ani' 'ios'
+ $(if $(SHOW_PARCE),$(info parse .$1.)) #debug
+ $(if $(HELIX_OVERRIDE_PARSE),$(call HELIX_OVERRIDE_PARSE,$1))
-define HELIX_HELP_MSG
- $(info Helix keyboard convenient command line option)
- $(info - make HELIX=<options> helix/pico:<keymap>)
- $(info - option= oled | back | under | na | no-ani)
- $(info - ios | sc | split-common | scan | verbose)
- $(info - ex.)
- $(info - make HELIX=oled helix/pico:<keymap>)
- $(info - make HELIX=back helix/pico:<keymap>)
- $(info - make HELIX=under helix/pico:<keymap>)
- $(info - make HELIX=back,na helix/pico:<keymap>)
- $(info - make HELIX=back,ios helix/pico:<keymap>)
- $(info )
-endef
+ ifeq ($(strip $1),ios)
+ IOS_DEVICE_ENABLE = yes
+ endif
+ ifneq ($(filter na no_ani no-ani,$(strip $1)),)
+ LED_ANIMATIONS = no
+ endif
+ endef # end of HELIX_OPTION_PARSE
- ifneq ($(strip $(HELIX)),)
COMMA=,
- helix_option := $(subst $(COMMA), , $(HELIX))
- ifneq ($(filter help,$(helix_option)),)
- $(eval $(call HELIX_HELP_MSG))
- $(error )
- endif
- ifneq ($(filter oled,$(helix_option)),)
- OLED_ENABLE = yes
- endif
- ifneq ($(filter back,$(helix_option)),)
- LED_BACK_ENABLE = yes
- else ifneq ($(filter under,$(helix_option)),)
- LED_UNDERGLOW_ENABLE = yes
- endif
- ifneq ($(filter na,$(helix_option)),)
- LED_ANIMATIONS = no
- endif
- ifneq ($(filter no_ani,$(helix_option)),)
- LED_ANIMATIONS = no
- endif
- ifneq ($(filter no-ani,$(helix_option)),)
- LED_ANIMATIONS = no
- endif
- ifneq ($(filter ios,$(helix_option)),)
- IOS_DEVICE_ENABLE = yes
- endif
- ifneq ($(filter sc,$(helix_option)),)
- SPLIT_KEYBOARD = yes
- endif
- ifneq ($(filter split-common,$(helix_option)),)
- SPLIT_KEYBOARD = yes
- endif
- ifneq ($(filter scan,$(helix_option)),)
- # use DEBUG_MATRIX_SCAN_RATE
- # see docs/newbs_testing_debugging.md
- OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
- CONSOLE_ENABLE = yes
- SHOW_VERBOSE_INFO = yes
- endif
- ifneq ($(filter verbose,$(helix_option)),)
- SHOW_VERBOSE_INFO = yes
- endif
+ $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(HELIX)), \
+ $(call HELIX_OPTION_PARSE,$(A_OPTION_NAME))))
SHOW_HELIX_OPTIONS = yes
- endif
-
-ifneq ($(strip $(SPLIT_KEYBOARD)), yes)
- SRC += local_drivers/serial.c
- KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
-
- # A workaround until #7089 is merged.
- # serial.c must not be compiled with the -lto option.
- # The current LIB_SRC has a side effect with the -fno-lto option, so use it.
- LIB_SRC += local_drivers/serial.c
-
- CUSTOM_MATRIX = yes
-
- SRC += pico/matrix.c
- SRC += pico/split_util.c
endif
########
@@ -98,7 +38,6 @@ ifeq ($(strip $(LED_BACK_ENABLE)), yes)
RGBLIGHT_ENABLE = yes
OPT_DEFS += -DRGBLED_BACK
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
- $(eval $(call HELIX_CUSTOMISE_MSG))
$(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
endif
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
@@ -113,35 +52,26 @@ ifeq ($(strip $(LED_ANIMATIONS)), yes)
OPT_DEFS += -DLED_ANIMATIONS
endif
-ifeq ($(strip $(OLED_ENABLE)), yes)
- SRC += local_drivers/i2c.c
- SRC += local_drivers/ssd1306.c
- KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
- OPT_DEFS += -DOLED_ENABLE
- ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
- OPT_DEFS += -DLOCAL_GLCDFONT
- endif
-endif
-
ifeq ($(strip $(AUDIO_ENABLE)),yes)
ifeq ($(strip $(RGBLIGHT_ENABLE)),yes)
LTO_ENABLE = yes
endif
- ifeq ($(strip $(OLED_ENABLE)),yes)
- LTO_ENABLE = yes
- endif
endif
ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
- $(eval $(call HELIX_CUSTOMISE_MSG))
- ifneq ($(strip $(SHOW_VERBOSE_INFO)),)
- $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
- $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE))
- $(info -- OPT_DEFS = $(OPT_DEFS))
- $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD))
- $(info -- LTO_ENABLE = $(LTO_ENABLE))
- $(info )
- endif
+ $(info Helix Spacific Build Options)
+ $(info - LED_BACK_ENABLE = $(LED_BACK_ENABLE))
+ $(info - LED_UNDERGLOW_ENABLE = $(LED_UNDERGLOW_ENABLE))
+ $(info - LED_ANIMATIONS = $(LED_ANIMATIONS))
+ $(info - IOS_DEVICE_ENABLE = $(IOS_DEVICE_ENABLE))
+ $(info )
+ $(info QMK Build Options)
+ $(info -- SPLIT_KEYBOARD = $(SPLIT_KEYBOARD))
+ $(info -- AUDIO_ENABLE = $(AUDIO_ENABLE))
+ $(info -- RGBLIGHT_ENABLE = $(RGBLIGHT_ENABLE))
+ $(info -- CONSOLE_ENABLE = $(CONSOLE_ENABLE))
+ $(info -- OPT_DEFS = $(OPT_DEFS))
+ $(info -- LTO_ENABLE = $(LTO_ENABLE))
+ $(info -- DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE))
+ $(info )
endif
-
-OLED_ENABLE = no # disable OLED in TOP/common_features.mk
diff --git a/keyboards/helix/pico/qmk_conf/rules.mk b/keyboards/helix/pico/qmk_conf/rules.mk
index e2993b3f80..08ca8e094d 100644
--- a/keyboards/helix/pico/qmk_conf/rules.mk
+++ b/keyboards/helix/pico/qmk_conf/rules.mk
@@ -1,4 +1,2 @@
EXTRAKEY_ENABLE = yes # Audio control and System control
AUDIO_ENABLE = yes # Audio output
-
-include $(strip $(KEYBOARD_LOCAL_FEATURES_MK))
diff --git a/keyboards/helix/pico/rules.mk b/keyboards/helix/pico/rules.mk
index 12caec37ef..efa7ae4be5 100644
--- a/keyboards/helix/pico/rules.mk
+++ b/keyboards/helix/pico/rules.mk
@@ -1,6 +1,6 @@
+SPLIT_KEYBOARD = yes
+
# Helix Spacific Build Options default values
-OLED_ENABLE = no # OLED_ENABLE
-LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
LED_ANIMATIONS = yes # LED animations
diff --git a/keyboards/helix/pico/split_util.c b/keyboards/helix/pico/split_util.c
deleted file mode 100644
index c77e63f33c..0000000000
--- a/keyboards/helix/pico/split_util.c
+++ /dev/null
@@ -1,104 +0,0 @@
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/power.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <avr/eeprom.h>
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "wait.h"
-
-#ifdef USE_MATRIX_I2C
-# include "i2c.h"
-#else
-# include "serial.h"
-#endif
-
-#ifdef EE_HANDS
-# include "eeconfig.h"
-#endif
-
-#ifndef SPLIT_USB_TIMEOUT
- #define SPLIT_USB_TIMEOUT 2500
-#endif
-
-volatile bool isLeftHand = true;
-
-bool waitForUsb(void) {
- for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / 100); i++) {
- // This will return true of a USB connection has been established
- if (UDADDR & _BV(ADDEN)) {
- return true;
- }
- wait_ms(100);
- }
-
- // Avoid NO_USB_STARTUP_CHECK - Disable USB as the previous checks seem to enable it somehow
- (USBCON &= ~(_BV(USBE) | _BV(OTGPADE)));
-
- return false;
-}
-
-bool is_keyboard_left(void) {
-#if defined(SPLIT_HAND_PIN)
- // Test pin SPLIT_HAND_PIN for High/Low, if low it's right hand
- setPinInput(SPLIT_HAND_PIN);
- return readPin(SPLIT_HAND_PIN);
-#elif defined(EE_HANDS)
- return eeconfig_read_handedness();
-#elif defined(MASTER_RIGHT)
- return !is_helix_master();
-#endif
-
- return is_helix_master();
-}
-
-bool is_helix_master(void) {
- static enum { UNKNOWN, MASTER, SLAVE } usbstate = UNKNOWN;
-
- // only check once, as this is called often
- if (usbstate == UNKNOWN) {
-#if defined(SPLIT_USB_DETECT)
- usbstate = waitForUsb() ? MASTER : SLAVE;
-#elif defined(__AVR__)
- USBCON |= (1 << OTGPADE); // enables VBUS pad
- wait_us(5);
-
- usbstate = (USBSTA & (1 << VBUS)) ? MASTER : SLAVE; // checks state of VBUS
-#else
- usbstate = MASTER;
-#endif
- }
-
- return (usbstate == MASTER);
- }
-
-static void keyboard_master_setup(void) {
-
-#ifdef USE_MATRIX_I2C
- i2c_master_init();
-#else
- serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
-
-#ifdef USE_MATRIX_I2C
- i2c_slave_init(SLAVE_I2C_ADDRESS);
-#else
- serial_slave_init();
-#endif
-}
-
-void split_keyboard_setup(void) {
- isLeftHand = is_keyboard_left();
-
- if (is_helix_master()) {
- keyboard_master_setup();
- } else {
- keyboard_slave_setup();
- }
- sei();
-}
diff --git a/keyboards/helix/pico/split_util.h b/keyboards/helix/pico/split_util.h
deleted file mode 100644
index b839ce6e3e..0000000000
--- a/keyboards/helix/pico/split_util.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-#define SLAVE_I2C_ADDRESS 0x32
-
-extern volatile bool isLeftHand;
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
-
-void split_keyboard_setup(void);
-bool is_helix_master(void);
-
-void matrix_master_OLED_init (void);
diff --git a/keyboards/helix/rev1/config.h b/keyboards/helix/rev1/config.h
deleted file mode 100644
index 19d1e3be65..0000000000
--- a/keyboards/helix/rev1/config.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265
-#define PRODUCT_ID 0x8000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yushakobo
-#define PRODUCT Helix Alpha
-
-#include "serial_config.h"
-
-#define HELIX_ROWS 5
-
-/* key matrix size */
-// Rows are doubled-up
-#if HELIX_ROWS == 3
- #define MATRIX_ROWS 6
- #define MATRIX_ROW_PINS { D7, E6, B4 }
-#elif HELIX_ROWS == 4
- #define MATRIX_ROWS 8
- #define MATRIX_ROW_PINS { D7, E6, B4, B5 }
-#elif HELIX_ROWS == 5
- #define MATRIX_ROWS 10
- #define MATRIX_ROW_PINS { D7, E6, B4, B5, D4 }
-#else
- #error "expected HELIX_ROWS 3 or 4 or 5"
-#endif
-#define MATRIX_COLS 6
-
-// wiring of each half
-#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
-// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 } //uncomment this line and comment line above if you need to reverse left-to-right key order
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* ws2812 RGB LED */
-#define RGB_DI_PIN D3
-
-#define RGBLED_NUM 12 // Number of LEDs
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
diff --git a/keyboards/helix/rev1/info.json b/keyboards/helix/rev1/info.json
deleted file mode 100644
index c52da08974..0000000000
--- a/keyboards/helix/rev1/info.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "keyboard_name": "Helix rev. 1",
- "url": "https://github.com/MakotoKurauchi/helix",
- "maintainer": "MakotoKurauchi",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"x": 0, "y": 0},
- {"x": 1, "y": 0},
- {"x": 2, "y": 0},
- {"x": 3, "y": 0},
- {"x": 4, "y": 0},
- {"x": 5, "y": 0},
-
- {"x": 7, "y": 0},
- {"x": 8, "y": 0},
- {"x": 9, "y": 0},
- {"x": 10, "y": 0},
- {"x": 11, "y": 0},
- {"x": 12, "y": 0},
-
- {"x": 0, "y": 1},
- {"x": 1, "y": 1},
- {"x": 2, "y": 1},
- {"x": 3, "y": 1},
- {"x": 4, "y": 1},
- {"x": 5, "y": 1},
-
- {"x": 7, "y": 1},
- {"x": 8, "y": 1},
- {"x": 9, "y": 1},
- {"x": 10, "y": 1},
- {"x": 11, "y": 1},
- {"x": 12, "y": 1},
-
- {"x": 0, "y": 2},
- {"x": 1, "y": 2},
- {"x": 2, "y": 2},
- {"x": 3, "y": 2},
- {"x": 4, "y": 2},
- {"x": 5, "y": 2},
-
- {"x": 7, "y": 2},
- {"x": 8, "y": 2},
- {"x": 9, "y": 2},
- {"x": 10, "y": 2},
- {"x": 11, "y": 2},
- {"x": 12, "y": 2},
-
- {"x": 0, "y": 3},
- {"x": 1, "y": 3},
- {"x": 2, "y": 3},
- {"x": 3, "y": 3},
- {"x": 4, "y": 3},
- {"x": 5, "y": 3},
-
- {"x": 7, "y": 3},
- {"x": 8, "y": 3},
- {"x": 9, "y": 3},
- {"x": 10, "y": 3},
- {"x": 11, "y": 3},
- {"x": 12, "y": 3},
-
- {"x": 0, "y": 4},
- {"x": 1, "y": 4},
- {"x": 2, "y": 4},
- {"x": 3, "y": 4},
- {"x": 4, "y": 4},
- {"x": 5, "y": 4},
-
- {"x": 7, "y": 4},
- {"x": 8, "y": 4},
- {"x": 9, "y": 4},
- {"x": 10, "y": 4},
- {"x": 11, "y": 4},
- {"x": 12, "y": 4}
- ]
- }
- }
-}
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/config.h b/keyboards/helix/rev1/keymaps/OLED_sample/config.h
deleted file mode 100644
index 5e8989d96f..0000000000
--- a/keyboards/helix/rev1/keymaps/OLED_sample/config.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define _MASTER_RIGHT
-// #define EE_HANDS
-
-#define SSD1306OLED
-
-#define USE_SERIAL_PD2
-
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 6
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-
-#endif
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c b/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c
deleted file mode 100644
index 6838b90e5e..0000000000
--- a/keyboards/helix/rev1/keymaps/OLED_sample/keymap.c
+++ /dev/null
@@ -1,471 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "bootloader.h"
-#include <LUFA/Drivers/Peripheral/TWI.h>
-#ifdef AUDIO_ENABLE
- #include "audio.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
-
-extern keymap_config_t keymap_config;
-
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _COLEMAK 1
-#define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- DVORAK,
- LOWER,
- RAISE,
- ADJUST,
- BACKLIT,
- RGBLED_TOGGLE,
- RGBLED_STEP_MODE,
- RGBLED_INCREASE_HUE,
- RGBLED_DECREASE_HUE,
- RGBLED_INCREASE_SAT,
- RGBLED_DECREASE_SAT,
- RGBLED_INCREASE_VAL,
- RGBLED_DECREASE_VAL,
- M_SAMPLE
-};
-
-#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Lower
- * ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Raise
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | | | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
- )
-};
-
-#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_COLEMAK] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_DVORAK] = LAYOUT( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Lower
- * ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Raise
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | | | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
- [_ADJUST] = LAYOUT( \
- _______, RESET, _______, M_SAMPLE, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
- )
-};
-
-#else
-#error "undefined keymaps"
-#endif
-
-
-#ifdef AUDIO_ENABLE
-
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-float tone_dvorak[][2] = SONG(DVORAK_SOUND);
-float tone_colemak[][2] = SONG(COLEMAK_SOUND);
-float tone_plover[][2] = SONG(PLOVER_SOUND);
-float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
-float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
-#endif
-
-// define variables for reactive RGB
-bool TOG_STATUS = false;
-int RGB_current_mode;
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
-}
-
-// Setting ADJUST layer RGB back to default
-void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
- if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
- rgblight_mode(RGB_current_mode);
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_qwerty);
- #endif
- persistent_default_layer_set(1UL<<_QWERTY);
- }
- return false;
- break;
- case COLEMAK:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_colemak);
- #endif
- persistent_default_layer_set(1UL<<_COLEMAK);
- }
- return false;
- break;
- case DVORAK:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_dvorak);
- #endif
- persistent_default_layer_set(1UL<<_DVORAK);
- }
- return false;
- break;
- case LOWER:
- if (record->event.pressed) {
- //not sure how to have keyboard check mode and set it to a variable, so my work around
- //uses another variable that would be set to true after the first time a reactive key is pressed.
- if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
- } else {
- TOG_STATUS = !TOG_STATUS;
- rgblight_mode(RGBLIGHT_MODE_SNAKE + 1);
- }
- layer_on(_LOWER);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- } else {
- rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
- TOG_STATUS = false;
- layer_off(_LOWER);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case RAISE:
- if (record->event.pressed) {
- //not sure how to have keyboard check mode and set it to a variable, so my work around
- //uses another variable that would be set to true after the first time a reactive key is pressed.
- if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
- } else {
- TOG_STATUS = !TOG_STATUS;
- rgblight_mode(RGBLIGHT_MODE_SNAKE);
- }
- layer_on(_RAISE);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- } else {
- rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
- layer_off(_RAISE);
- TOG_STATUS = false;
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- return false;
- break;
- case BACKLIT:
- if (record->event.pressed) {
- register_code(KC_RSFT);
- #ifdef BACKLIGHT_ENABLE
- backlight_step();
- #endif
- } else {
- unregister_code(KC_RSFT);
- }
- return false;
- break;
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
- case RGB_MOD:
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- rgblight_step();
- RGB_current_mode = rgblight_config.mode;
- }
- return false;
- break;
- case M_SAMPLE:
- if (record->event.pressed) {
- SEND_STRING("hello world");
- }
- return false;
- }
- return true;
-}
-
-void matrix_init_user(void) {
- #ifdef AUDIO_ENABLE
- startup_user();
- #endif
- RGB_current_mode = rgblight_config.mode;
-}
-
-//SSD1306 OLED init and update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
-void matrix_master_OLED_init (void) {
- TWI_Init(TWI_BIT_PRESCALE_1, TWI_BITLENGTH_FROM_FREQ(1, 800000));
- iota_gfx_init(0); // turns on the display
-}
-
-void matrix_scan_user(void) {
- iota_gfx_task(); // this is what updates the display continuously
-}
-#endif
-
-#ifdef AUDIO_ENABLE
-
-void startup_user()
-{
- _delay_ms(20); // gets rid of tick
-}
-
-void shutdown_user()
-{
- _delay_ms(150);
- stop_all_notes();
-}
-
-void music_on_user(void)
-{
- music_scale_user();
-}
-
-void music_scale_user(void)
-{
- PLAY_SONG(music_scale);
-}
-
-#endif
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/readme.md b/keyboards/helix/rev1/keymaps/OLED_sample/readme.md
deleted file mode 100644
index 02888855b8..0000000000
--- a/keyboards/helix/rev1/keymaps/OLED_sample/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-SSD1306 OLED Display via I2C
-======
-
-Features
---------
-
-Some features supported by the firmware:
-
-
-* I2C connection between the two halves is required as the OLED display will use this connection as well. Note this
- requires pull-up resistors on the data and clock lines.
-* OLED display will connect from either side
-
-
-Wiring
-------
-
-
-Work in progress...
-
-
-OLED Configuration
--------------------------------
-
-Work in progress...
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk b/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk
deleted file mode 100644
index 69170e35c3..0000000000
--- a/keyboards/helix/rev1/keymaps/OLED_sample/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-EXTRAKEY_ENABLE = yes
-NKRO_ENABLE = yes
-RGBLIGHT_ENABLE = yes
-SWAP_HANDS_ENABLE = no
diff --git a/keyboards/helix/rev1/keymaps/OLED_sample/serial_config.h b/keyboards/helix/rev1/keymaps/OLED_sample/serial_config.h
deleted file mode 100644
index f56951e707..0000000000
--- a/keyboards/helix/rev1/keymaps/OLED_sample/serial_config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-//// #error rev1/keymaps/OLED_sample serial config
-
-#ifndef SOFT_SERIAL_PIN
-/* Soft Serial defines */
-#define SOFT_SERIAL_PIN D2
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 0
-#endif
diff --git a/keyboards/helix/rev1/keymaps/default/config.h b/keyboards/helix/rev1/keymaps/default/config.h
deleted file mode 100644
index 0f81f5f7be..0000000000
--- a/keyboards/helix/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
-
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define _MASTER_RIGHT
-// #define EE_HANDS
diff --git a/keyboards/helix/rev1/keymaps/default/keymap.c b/keyboards/helix/rev1/keymaps/default/keymap.c
deleted file mode 100644
index 85391f8f60..0000000000
--- a/keyboards/helix/rev1/keymaps/default/keymap.c
+++ /dev/null
@@ -1,342 +0,0 @@
-#include QMK_KEYBOARD_H
-
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QWERTY 0
-#define _COLEMAK 1
-#define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- DVORAK,
- LOWER,
- RAISE,
- ADJUST,
-};
-
-#if MATRIX_ROWS == 10 // HELIX_ROWS == 5
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Lower
- * ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Raise
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | | | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
- )
-};
-
-#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_COLEMAK] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
- [_DVORAK] = LAYOUT( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
- ),
-
- /* Lower
- * ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Raise
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
- ),
-
- /* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | | | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
- [_ADJUST] = LAYOUT( \
- _______, RESET, _______, M_SAMPLE, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
- )
-};
-
-#else
-#error "undefined keymaps"
-#endif
-
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-float tone_dvorak[][2] = SONG(DVORAK_SOUND);
-float tone_colemak[][2] = SONG(COLEMAK_SOUND);
-#endif
-
-void persistent_default_layer_set(uint16_t default_layer) {
- eeconfig_update_default_layer(default_layer);
- default_layer_set(default_layer);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_qwerty);
- #endif
- persistent_default_layer_set(1UL<<_QWERTY);
- }
- return false;
- break;
- case COLEMAK:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_colemak);
- #endif
- persistent_default_layer_set(1UL<<_COLEMAK);
- }
- return false;
- break;
- case DVORAK:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_dvorak);
- #endif
- persistent_default_layer_set(1UL<<_DVORAK);
- }
- return false;
- break;
- case LOWER:
- if (record->event.pressed) {
- layer_on(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_LOWER);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case RAISE:
- if (record->event.pressed) {
- layer_on(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_RAISE);
- update_tri_layer(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case ADJUST:
- if (record->event.pressed) {
- layer_on(_ADJUST);
- } else {
- layer_off(_ADJUST);
- }
- return false;
- break;
- }
- return true;
-}
diff --git a/keyboards/helix/rev1/matrix.c b/keyboards/helix/rev1/matrix.c
deleted file mode 100644
index aa2cc76905..0000000000
--- a/keyboards/helix/rev1/matrix.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-#include "split_util.h"
-#include "config.h"
-#include "quantum.h"
-
-#ifdef USE_MATRIX_I2C
-# include "i2c.h"
-#else // USE_SERIAL
-# include "serial.h"
-#endif
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 5
-#endif
-
-#define ERROR_DISCONNECT_COUNT 5
-
-static uint8_t debouncing = DEBOUNCE;
-static const int ROWS_PER_HAND = MATRIX_ROWS/2;
-static uint8_t error_count = 0;
-
-static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-
-__attribute__ ((weak))
-void matrix_init_kb(void) {
- matrix_init_user();
-}
-
-__attribute__ ((weak))
-void matrix_scan_kb(void) {
- matrix_scan_user();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- debug_enable = true;
- debug_matrix = true;
- debug_mouse = true;
- // initialize row and col
- unselect_rows();
- init_cols();
-
- setPinOutput(B0);
- setPinOutput(D5);
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- matrix_init_quantum();
-}
-
-uint8_t _matrix_scan(void)
-{
- // Right hand is stored after the left in the matirx so, we need to offset it
- int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
-
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i+offset] != cols) {
- matrix_debouncing[i+offset] = cols;
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
- matrix[i+offset] = matrix_debouncing[i+offset];
- }
- }
- }
-
- return 1;
-}
-
-#ifdef USE_MATRIX_I2C
-
-// Get rows from other half over i2c
-int i2c_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE);
- if (err) goto i2c_error;
-
- // start of matrix stored at 0x00
- err = i2c_master_write(0x00);
- if (err) goto i2c_error;
-
- // Start read
- err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ);
- if (err) goto i2c_error;
-
- if (!err) {
- int i;
- for (i = 0; i < ROWS_PER_HAND-1; ++i) {
- matrix[slaveOffset+i] = i2c_master_read(I2C_ACK);
- }
- matrix[slaveOffset+i] = i2c_master_read(I2C_NACK);
- i2c_master_stop();
- } else {
-i2c_error: // the cable is disconnceted, or something else went wrong
- i2c_reset_state();
- return err;
- }
-
- return 0;
-}
-
-#else // USE_SERIAL
-
-int serial_transaction(void) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-
- if (serial_update_buffers()) {
- return 1;
- }
-
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = serial_slave_buffer[i];
- }
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- int ret = _matrix_scan();
-
-
-
-#ifdef USE_MATRIX_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction() ) {
-#endif
- // turn on the indicator led when halves are disconnected
- writePinLow(D5);
-
- error_count++;
-
- if (error_count > ERROR_DISCONNECT_COUNT) {
- // reset other half if disconnected
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- matrix[slaveOffset+i] = 0;
- }
- }
- } else {
- // turn off the indicator led on no error
- writePinHigh(D5);
- error_count = 0;
- }
- matrix_scan_quantum();
- return ret;
-}
-
-void matrix_slave_scan(void) {
- _matrix_scan();
-
- int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2);
-
-#ifdef USE_MATRIX_I2C
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- /* i2c_slave_buffer[i] = matrix[offset+i]; */
- i2c_slave_buffer[i] = matrix[offset+i];
- }
-#else // USE_SERIAL
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- serial_slave_buffer[i] = matrix[offset+i];
- }
-#endif
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- print_hex8(row); print(": ");
- print_bin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- for(int x = 0; x < MATRIX_COLS; x++) {
- _SFR_IO8((col_pins[x] >> 4) + 1) &= ~_BV(col_pins[x] & 0xF);
- _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
- }
-}
-
-static matrix_row_t read_cols(void)
-{
- matrix_row_t result = 0;
- for(int x = 0; x < MATRIX_COLS; x++) {
- result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
- }
- return result;
-}
-
-static void unselect_rows(void)
-{
- for(int x = 0; x < ROWS_PER_HAND; x++) {
- _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF);
- _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
- }
-}
-
-static void select_row(uint8_t row)
-{
- _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF);
- _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
-}
diff --git a/keyboards/helix/rev1/rev1.c b/keyboards/helix/rev1/rev1.c
deleted file mode 100644
index d053f0de17..0000000000
--- a/keyboards/helix/rev1/rev1.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "helix.h"
-
-
-#ifdef SSD1306OLED
-#include "ssd1306.h"
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- return process_record_gfx(keycode,record) && process_record_user(keycode, record);
-}
-#endif
diff --git a/keyboards/helix/rev1/rev1.h b/keyboards/helix/rev1/rev1.h
deleted file mode 100644
index 7db27bcca0..0000000000
--- a/keyboards/helix/rev1/rev1.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#pragma once
-
-#include "helix.h"
-
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
-#if MATRIX_ROWS == 6 // HELIX_ROWS == 3
- #ifndef FLIP_HALF
- // Standard Keymap
- // (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
- #define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25 \
- ) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { R05, R04, R03, R02, R01, R00 }, \
- { R15, R14, R13, R12, R11, R10 }, \
- { R25, R24, R23, R22, R21, R20 } \
- }
- #else
- // Keymap with right side flipped
- // (TRRS jack on both halves are to the right)
- #define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25 \
- ) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { R00, R01, R02, R03, R04, R05 }, \
- { R10, R11, R12, R13, R14, R15 }, \
- { R20, R21, R22, R23, R24, R25 } \
- }
- #endif
-#elif MATRIX_ROWS == 8 // HELIX_ROWS == 4
- #ifndef FLIP_HALF
- // Standard Keymap
- // (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
- #define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
- ) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { L30, L31, L32, L33, L34, L35 }, \
- { R05, R04, R03, R02, R01, R00 }, \
- { R15, R14, R13, R12, R11, R10 }, \
- { R25, R24, R23, R22, R21, R20 }, \
- { R35, R34, R33, R32, R31, R30 } \
- }
- #else
- // Keymap with right side flipped
- // (TRRS jack on both halves are to the right)
- #define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35 \
- ) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { L30, L31, L32, L33, L34, L35 }, \
- { R00, R01, R02, R03, R04, R05 }, \
- { R10, R11, R12, R13, R14, R15 }, \
- { R20, R21, R22, R23, R24, R25 }, \
- { R30, R31, R32, R33, R34, R35 } \
- }
- #endif
-#elif MATRIX_ROWS == 10 // HELIX_ROWS == 5
- #ifndef FLIP_HALF
- // Standard Keymap
- // (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
- L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45 \
-) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { L30, L31, L32, L33, L34, L35 }, \
- { L40, L41, L42, L43, L44, L45 }, \
- { R05, R04, R03, R02, R01, R00 }, \
- { R15, R14, R13, R12, R11, R10 }, \
- { R25, R24, R23, R22, R21, R20 }, \
- { R35, R34, R33, R32, R31, R30 }, \
- { R45, R44, R43, R42, R41, R40 } \
-}
- #else
- // Keymap with right side flipped
- // (TRRS jack on both halves are to the right)
- #define LAYOUT( \
- L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
- L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
- L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
- L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
- L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45 \
- ) { \
- { L00, L01, L02, L03, L04, L05 }, \
- { L10, L11, L12, L13, L14, L15 }, \
- { L20, L21, L22, L23, L24, L25 }, \
- { L30, L31, L32, L33, L34, L35 }, \
- { L40, L41, L42, L43, L44, L45 }, \
- { R00, R01, R02, R03, R04, R05 }, \
- { R10, R11, R12, R13, R14, R15 }, \
- { R20, R21, R22, R23, R24, R25 }, \
- { R30, R31, R32, R33, R34, R35 }, \
- { R40, R41, R42, R43, R44, R45 } \
- }
- #endif
-#else
- #error "expected HELIX_ROWS 3 or 4 or 5"
-#endif
diff --git a/keyboards/helix/rev1/rules.mk b/keyboards/helix/rev1/rules.mk
deleted file mode 100644
index 1418f01786..0000000000
--- a/keyboards/helix/rev1/rules.mk
+++ /dev/null
@@ -1,11 +0,0 @@
-SRC += local_drivers/i2c.c
-SRC += local_drivers/serial.c
-SRC += local_drivers/ssd1306.c
-KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
-
-CUSTOM_MATRIX = yes
-
-SRC += rev1/matrix.c
-SRC += rev1/split_util.c
-
-BACKLIGHT_ENABLE = no
diff --git a/keyboards/helix/rev1/serial_config.h b/keyboards/helix/rev1/serial_config.h
deleted file mode 100644
index 32218f9bbe..0000000000
--- a/keyboards/helix/rev1/serial_config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/// #error rev1 serial config
-
-#ifndef SOFT_SERIAL_PIN
-/* Soft Serial defines */
-#define SOFT_SERIAL_PIN D0
-
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH 0
-#endif
diff --git a/keyboards/helix/rev1/split_util.c b/keyboards/helix/rev1/split_util.c
deleted file mode 100644
index 5debd6e00b..0000000000
--- a/keyboards/helix/rev1/split_util.c
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/power.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <avr/eeprom.h>
-#include "split_util.h"
-#include "matrix.h"
-#include "keyboard.h"
-#include "config.h"
-
-#ifdef USE_MATRIX_I2C
-# include "i2c.h"
-#else
-# include "serial.h"
-#endif
-
-volatile bool isLeftHand = true;
-
-static void setup_handedness(void) {
- #ifdef EE_HANDS
- isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS);
- #else
- // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
- #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT)
- isLeftHand = !has_usb();
- #else
- isLeftHand = has_usb();
- #endif
- #endif
-}
-
-static void keyboard_master_setup(void) {
-#ifdef USE_I2C
-#ifdef SSD1306OLED
- matrix_master_OLED_init ();
-#endif
-#endif
-#ifdef USE_MATRIX_I2C
- i2c_master_init();
-#else
- serial_master_init();
-#endif
-}
-
-static void keyboard_slave_setup(void) {
-#ifdef USE_MATRIX_I2C
- i2c_slave_init(SLAVE_I2C_ADDRESS);
-#else
- serial_slave_init();
-#endif
-}
-
-bool has_usb(void) {
- USBCON |= (1 << OTGPADE); //enables VBUS pad
- _delay_us(5);
- return (USBSTA & (1<<VBUS)); //checks state of VBUS
-}
-
-void split_keyboard_setup(void) {
- setup_handedness();
-
- if (has_usb()) {
- keyboard_master_setup();
- } else {
- keyboard_slave_setup();
- }
- sei();
-}
-
-void keyboard_slave_loop(void) {
- matrix_init();
-
- while (1) {
- matrix_slave_scan();
- }
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
- split_keyboard_setup();
-
- if (!has_usb()) {
- keyboard_slave_loop();
- }
-}
diff --git a/keyboards/helix/rev1/split_util.h b/keyboards/helix/rev1/split_util.h
deleted file mode 100644
index 807412cd38..0000000000
--- a/keyboards/helix/rev1/split_util.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include "eeconfig.h"
-
-#define SLAVE_I2C_ADDRESS 0x32
-
-extern volatile bool isLeftHand;
-
-// slave version of matix scan, defined in matrix.c
-void matrix_slave_scan(void);
-
-void split_keyboard_setup(void);
-bool has_usb(void);
-void keyboard_slave_loop(void);
-
-void matrix_master_OLED_init (void);
diff --git a/keyboards/helix/rev2/keymaps/default/keymap.c b/keyboards/helix/rev2/keymaps/default/keymap.c
index d5209d8537..88820dac8a 100644
--- a/keyboards/helix/rev2/keymaps/default/keymap.c
+++ b/keyboards/helix/rev2/keymaps/default/keymap.c
@@ -73,12 +73,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -94,12 +94,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_COLEMAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -115,12 +115,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_DVORAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LBRC, KC_RBRC, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -136,12 +136,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -157,12 +157,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -178,12 +178,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
@@ -202,11 +202,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -220,11 +220,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_COLEMAK] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_COLEMAK] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -238,11 +238,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_DVORAK] = LAYOUT( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_DVORAK] = LAYOUT(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -256,11 +256,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -274,11 +274,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -292,11 +292,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/helix/rev2/keymaps/default/rules.mk b/keyboards/helix/rev2/keymaps/default/rules.mk
index 58b43a6bda..2aa62bc830 100644
--- a/keyboards/helix/rev2/keymaps/default/rules.mk
+++ b/keyboards/helix/rev2/keymaps/default/rules.mk
@@ -1,10 +1,3 @@
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
-# See TOP/docs/config_options.md for more information.
-#
LTO_ENABLE = yes # if firmware size over limit, try this option
# Helix Spacific Build Options
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index 8a091605ac..e4d0390c3a 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -1,10 +1,3 @@
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
-# See TOP/docs/config_options.md for more information.
-#
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# CONSOLE_ENABLE and COMMAND_ENABLE
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
index 7c4a7b6045..3ef6f82366 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/rules.mk
@@ -1,10 +1,3 @@
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
-# See TOP/docs/config_options.md for more information.
-#
LTO_ENABLE = no # if firmware size over limit, try this option
# Helix Spacific Build Options
diff --git a/keyboards/helix/rev3_4rows/keymaps/default/config.h b/keyboards/helix/rev3_4rows/keymaps/default/config.h
deleted file mode 100644
index ba446182d2..0000000000
--- a/keyboards/helix/rev3_4rows/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 yushakobo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c
index 408e7125c6..3ef5e476e9 100644
--- a/keyboards/helix/rev3_4rows/keymaps/default/keymap.c
+++ b/keyboards/helix/rev3_4rows/keymaps/default/keymap.c
@@ -48,11 +48,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -66,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -84,11 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -102,11 +102,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, RGBRST, EEP_RST, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, RGBRST, EEP_RST, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/helix/rev3_4rows/keymaps/via/config.h b/keyboards/helix/rev3_4rows/keymaps/via/config.h
deleted file mode 100644
index ba446182d2..0000000000
--- a/keyboards/helix/rev3_4rows/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 yushakobo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c
index 6cc9aedb03..3c152f9c91 100644
--- a/keyboards/helix/rev3_4rows/keymaps/via/keymap.c
+++ b/keyboards/helix/rev3_4rows/keymaps/via/keymap.c
@@ -48,11 +48,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- MO(_ADJUST), KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ MO(_ADJUST), KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -66,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -84,11 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -102,11 +102,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/helix/rev3_5rows/keymaps/default/config.h b/keyboards/helix/rev3_5rows/keymaps/default/config.h
deleted file mode 100644
index ba446182d2..0000000000
--- a/keyboards/helix/rev3_5rows/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 yushakobo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c
index 09132f75e1..f744f82681 100644
--- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c
+++ b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c
@@ -49,12 +49,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------. ,-----------------------------------------.
@@ -69,12 +69,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -90,12 +90,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -111,12 +111,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, RGBRST, EEP_RST, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, RGBRST, EEP_RST, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk b/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk
index b0cca79129..3f3bd9a9ab 100644
--- a/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk
@@ -1,9 +1,3 @@
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-# See TOP/docs/config_options.md for more information.
-#
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# CONSOLE_ENABLE and COMMAND_ENABLE
diff --git a/keyboards/helix/rev3_5rows/keymaps/via/config.h b/keyboards/helix/rev3_5rows/keymaps/via/config.h
deleted file mode 100644
index ba446182d2..0000000000
--- a/keyboards/helix/rev3_5rows/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 yushakobo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c
index b1d17c50fa..43ea393a87 100644
--- a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c
+++ b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c
@@ -49,12 +49,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Esc | Alt | GUI | EISU |Lower |Space |Space |Raise | KANA | Left | Down | Up |Right |
* `-------------------------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- MO(_ADJUST), KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ MO(_ADJUST), KC_ESC, KC_LALT, KC_LGUI, EISU, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ,-----------------------------------------. ,-----------------------------------------.
@@ -69,12 +69,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_LPRN, KC_RPRN, KC_F12, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -90,12 +90,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-------------------------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, _______, KC_PGDN, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -111,12 +111,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | MODE | HUE- | SAT- | VAL- |
* `-------------------------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/helix/rules.mk b/keyboards/helix/rules.mk
index 974081835e..e5cf469689 100644
--- a/keyboards/helix/rules.mk
+++ b/keyboards/helix/rules.mk
@@ -4,9 +4,8 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
-# QMK Standard Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# Build Options
+# change yes to no to disable
#
# See TOP/docs/config_options.md for more information.
#
@@ -15,12 +14,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
DEFAULT_FOLDER = helix/rev2
diff --git a/keyboards/hhkb/ansi/rules.mk b/keyboards/hhkb/ansi/rules.mk
index d9a69a5e38..0b110d6561 100644
--- a/keyboards/hhkb/ansi/rules.mk
+++ b/keyboards/hhkb/ansi/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# HHKB_RN42_ENABLE = yes # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree.
diff --git a/keyboards/hhkb/jp/rules.mk b/keyboards/hhkb/jp/rules.mk
index f197cd9eef..ae0710e028 100644
--- a/keyboards/hhkb/jp/rules.mk
+++ b/keyboards/hhkb/jp/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# HHKB_RN42_ENABLE = yes # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree.
diff --git a/keyboards/hhkb_lite_2/rules.mk b/keyboards/hhkb_lite_2/rules.mk
index 951db8a1e9..005769e43a 100644
--- a/keyboards/hhkb_lite_2/rules.mk
+++ b/keyboards/hhkb_lite_2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hid_liber/rules.mk b/keyboards/hid_liber/rules.mk
index ecd04298c9..ecdc53dad1 100755
--- a/keyboards/hid_liber/rules.mk
+++ b/keyboards/hid_liber/rules.mk
@@ -13,10 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hidtech/bastyl/rules.mk b/keyboards/hidtech/bastyl/rules.mk
index aeb183666e..070c6b27ad 100644
--- a/keyboards/hidtech/bastyl/rules.mk
+++ b/keyboards/hidtech/bastyl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hifumi/rules.mk b/keyboards/hifumi/rules.mk
index 09e9bba8c0..2e57c8520c 100644
--- a/keyboards/hifumi/rules.mk
+++ b/keyboards/hifumi/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/hineybush/h08_ocelot/config.h b/keyboards/hineybush/h08_ocelot/config.h
new file mode 100644
index 0000000000..9b5fd2d9b9
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/config.h
@@ -0,0 +1,150 @@
+/*
+Copyright 2021 hineybush
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE8E9
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Hiney LLC
+#define PRODUCT h08
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B4, B6 }
+#define MATRIX_COL_PINS { F4, C7, D0, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN F1
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 7
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 220 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/hineybush/h08_ocelot/h08_ocelot.c b/keyboards/hineybush/h08_ocelot/h08_ocelot.c
new file mode 100644
index 0000000000..e00bd9ecb5
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/h08_ocelot.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "h08_ocelot.h"
diff --git a/keyboards/hineybush/h08_ocelot/h08_ocelot.h b/keyboards/hineybush/h08_ocelot/h08_ocelot.h
new file mode 100644
index 0000000000..92bded4558
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/h08_ocelot.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13 \
+) { \
+ { k00, k01, k02, k03 }, \
+ { k10, k11, k12, k13 } \
+}
+
diff --git a/keyboards/hineybush/h08_ocelot/info.json b/keyboards/hineybush/h08_ocelot/info.json
new file mode 100644
index 0000000000..2e8dd25a87
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "h08",
+ "url": "",
+ "maintainer": "hineybush",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}]
+ }
+ }
+}
diff --git a/keyboards/hineybush/h08_ocelot/keymaps/default/keymap.c b/keyboards/hineybush/h08_ocelot/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e236a5c6ab
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4,
+ KC_5, KC_6, KC_7, MO(_FN)
+ ),
+ [_FN] = LAYOUT(
+ RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/hineybush/h08_ocelot/keymaps/default/readme.md b/keyboards/hineybush/h08_ocelot/keymaps/default/readme.md
new file mode 100644
index 0000000000..7bed472217
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for h08
diff --git a/keyboards/hineybush/h08_ocelot/keymaps/via/keymap.c b/keyboards/hineybush/h08_ocelot/keymaps/via/keymap.c
new file mode 100644
index 0000000000..99e2b28c08
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4,
+ KC_5, KC_6, KC_7, MO(_FN1)
+ ),
+ [_FN1] = LAYOUT(
+ RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/hineybush/h08_ocelot/keymaps/via/readme.md b/keyboards/hineybush/h08_ocelot/keymaps/via/readme.md
new file mode 100644
index 0000000000..54e95c67fd
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA-enabled keymap for h08
diff --git a/keyboards/hineybush/h08_ocelot/keymaps/via/rules.mk b/keyboards/hineybush/h08_ocelot/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/hineybush/h08_ocelot/readme.md b/keyboards/hineybush/h08_ocelot/readme.md
new file mode 100644
index 0000000000..07d170101c
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/readme.md
@@ -0,0 +1,27 @@
+# h08
+
+![h08](https://i.imgur.com/8B0ORJE.png)
+
+8-key macropad for the Singa Ocelot.
+
+* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
+* Hardware Supported: h08
+* Hardware Availability: Singa Ocelot
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hineybush/h08_ocelot:default
+
+Flashing example for this keyboard:
+
+ make hineybush/h08_ocelot:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hineybush/h08_ocelot/rules.mk b/keyboards/hineybush/h08_ocelot/rules.mk
new file mode 100644
index 0000000000..465de5f68d
--- /dev/null
+++ b/keyboards/hineybush/h08_ocelot/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/h10/rules.mk b/keyboards/hineybush/h10/rules.mk
index d46c6dcc6d..12b7178a79 100644
--- a/keyboards/hineybush/h10/rules.mk
+++ b/keyboards/hineybush/h10/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/h60/rules.mk b/keyboards/hineybush/h60/rules.mk
index f2513c9752..6444ea87d8 100644
--- a/keyboards/hineybush/h60/rules.mk
+++ b/keyboards/hineybush/h60/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_tsangan_hhkb
diff --git a/keyboards/hineybush/h65/config.h b/keyboards/hineybush/h65/config.h
new file mode 100644
index 0000000000..b99f486013
--- /dev/null
+++ b/keyboards/hineybush/h65/config.h
@@ -0,0 +1,150 @@
+/*
+Copyright 2021 hineybush
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE9E4
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Hiney LLC
+#define PRODUCT h65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D7, D6, D4, D1, D0 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, B0, B1, B2, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+#define LED_CAPS_LOCK_PIN E6
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D2
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 17
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/hineybush/h65/h65.c b/keyboards/hineybush/h65/h65.c
new file mode 100644
index 0000000000..76467ef91b
--- /dev/null
+++ b/keyboards/hineybush/h65/h65.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "h65.h"
diff --git a/keyboards/hineybush/h65/h65.h b/keyboards/hineybush/h65/h65.h
new file mode 100644
index 0000000000..8e82f1620f
--- /dev/null
+++ b/keyboards/hineybush/h65/h65.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k114, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k214, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k314, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k414, \
+ k400, k401, k402, k403, k406, k408, k409, k410, k411, k412, k413 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314 }, \
+ { k400, k401, k402, k403, KC_NO,KC_NO,k406,KC_NO, k408, k409, k410, k411, k412, k413, k414 } \
+}
diff --git a/keyboards/hineybush/h65/info.json b/keyboards/hineybush/h65/info.json
new file mode 100644
index 0000000000..770875afae
--- /dev/null
+++ b/keyboards/hineybush/h65/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "h65",
+ "url": "",
+ "maintainer": "hineybush",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/hineybush/h65/keymaps/default/keymap.c b/keyboards/hineybush/h65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f17f822f69
--- /dev/null
+++ b/keyboards/hineybush/h65/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_END,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FN),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/hineybush/h65/keymaps/default/readme.md b/keyboards/hineybush/h65/keymaps/default/readme.md
new file mode 100644
index 0000000000..17b99a5cde
--- /dev/null
+++ b/keyboards/hineybush/h65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for h65
diff --git a/keyboards/hineybush/h65/keymaps/via/keymap.c b/keyboards/hineybush/h65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4369579675
--- /dev/null
+++ b/keyboards/hineybush/h65/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_END,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FN1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
diff --git a/keyboards/hineybush/h65/keymaps/via/readme.md b/keyboards/hineybush/h65/keymaps/via/readme.md
new file mode 100644
index 0000000000..ec8815555f
--- /dev/null
+++ b/keyboards/hineybush/h65/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for h65
diff --git a/keyboards/hineybush/h65/keymaps/via/rules.mk b/keyboards/hineybush/h65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/hineybush/h65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/hineybush/h65/readme.md b/keyboards/hineybush/h65/readme.md
new file mode 100644
index 0000000000..c793a44966
--- /dev/null
+++ b/keyboards/hineybush/h65/readme.md
@@ -0,0 +1,27 @@
+# h65
+
+![h65](https://i.imgur.com/Q1m98Hnh.png)
+
+A 65%, USB 2.0 Type C PCB.
+
+* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
+* Hardware Supported: h65, Singa Kohaku, MC65 "mcbitch" PCB
+* Hardware Availability: Singa Kohaku Group Buy, MC65
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make h65:default
+
+Flashing example for this keyboard:
+
+ make h65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hineybush/h65/rules.mk b/keyboards/hineybush/h65/rules.mk
new file mode 100644
index 0000000000..702fe717f2
--- /dev/null
+++ b/keyboards/hineybush/h65/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/h65_hotswap/config.h b/keyboards/hineybush/h65_hotswap/config.h
new file mode 100644
index 0000000000..805476d002
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/config.h
@@ -0,0 +1,150 @@
+/*
+Copyright 2021 hineybush
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE8B7
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Hiney LLC
+#define PRODUCT h65 hotswap
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D7, D6, D4, D1, D0 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, B0, B1, B2, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+#define LED_CAPS_LOCK_PIN E6
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D2
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 17
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/hineybush/h65_hotswap/h65_hotswap.c b/keyboards/hineybush/h65_hotswap/h65_hotswap.c
new file mode 100644
index 0000000000..df5e56bf0b
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/h65_hotswap.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "h65_hotswap.h"
diff --git a/keyboards/hineybush/h65_hotswap/h65_hotswap.h b/keyboards/hineybush/h65_hotswap/h65_hotswap.h
new file mode 100644
index 0000000000..a4b41be481
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/h65_hotswap.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k114, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k214, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k314, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k414, \
+ k400, k401, k402, k404, k406, k407, k409, k410, k411, k412, k413 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314 }, \
+ { k400, k401, k402, KC_NO,k404 ,KC_NO,k406, k407, KC_NO, k409, k410, k411, k412, k413, k414 } \
+}
diff --git a/keyboards/hineybush/h65_hotswap/info.json b/keyboards/hineybush/h65_hotswap/info.json
new file mode 100644
index 0000000000..105358b98d
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "h65 hotswap",
+ "url": "",
+ "maintainer": "hineybush",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/hineybush/h65_hotswap/keymaps/default/keymap.c b/keyboards/hineybush/h65_hotswap/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f8af1d5d15
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_END,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FN),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/hineybush/h65_hotswap/keymaps/default/readme.md b/keyboards/hineybush/h65_hotswap/keymaps/default/readme.md
new file mode 100644
index 0000000000..9984e09531
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for h65 hotswap
diff --git a/keyboards/hineybush/h65_hotswap/keymaps/via/keymap.c b/keyboards/hineybush/h65_hotswap/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bdd6458902
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2021 hineybush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_END,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(_FN1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
diff --git a/keyboards/hineybush/h65_hotswap/keymaps/via/readme.md b/keyboards/hineybush/h65_hotswap/keymaps/via/readme.md
new file mode 100644
index 0000000000..a8811e97c1
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for h65 hotswap
diff --git a/keyboards/hineybush/h65_hotswap/keymaps/via/rules.mk b/keyboards/hineybush/h65_hotswap/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/hineybush/h65_hotswap/readme.md b/keyboards/hineybush/h65_hotswap/readme.md
new file mode 100644
index 0000000000..5e2250b5af
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/readme.md
@@ -0,0 +1,27 @@
+# h65 hotswap
+
+![h65 hotswap](https://i.imgur.com/QKeHtDrh.png)
+
+A 65%, hotswap, USB 2.0 Type C PCB.
+
+* Keyboard Maintainer: [hineybush](https://github.com/hineybush)
+* Hardware Supported: h65hs, Singa Kohaku
+* Hardware Availability: Singa Kohaku Group Buy
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hineybush/h65:default
+
+Flashing example for this keyboard:
+
+ make hineybush/h65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/hineybush/h65_hotswap/rules.mk b/keyboards/hineybush/h65_hotswap/rules.mk
new file mode 100644
index 0000000000..702fe717f2
--- /dev/null
+++ b/keyboards/hineybush/h65_hotswap/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/h660s/keymaps/default/keymap.c b/keyboards/hineybush/h660s/keymaps/default/keymap.c
index b87ac711f7..ceefb00f2b 100644
--- a/keyboards/hineybush/h660s/keymaps/default/keymap.c
+++ b/keyboards/hineybush/h660s/keymaps/default/keymap.c
@@ -22,14 +22,6 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /*
- k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, k114, \
- k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k313, \
- k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k314, \
- k400, k401, k402, k404, k409, k410, k412, k413, k414 \
- */
-
[_BASE] = LAYOUT_66_ansi_rwkl(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
diff --git a/keyboards/hineybush/h660s/keymaps/via/keymap.c b/keyboards/hineybush/h660s/keymaps/via/keymap.c
index c437660034..146aa77793 100644
--- a/keyboards/hineybush/h660s/keymaps/via/keymap.c
+++ b/keyboards/hineybush/h660s/keymaps/via/keymap.c
@@ -24,14 +24,6 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /*
- k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k113, k013, k014, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k213, k114, \
- k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k313, \
- k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k314, \
- k400, k401, k402, k407, k409, k410, k411, k412, k413, k414 \
- */
-
[_BASE] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
diff --git a/keyboards/hineybush/h660s/rules.mk b/keyboards/hineybush/h660s/rules.mk
index 1d0782a2ee..b42558c680 100644
--- a/keyboards/hineybush/h660s/rules.mk
+++ b/keyboards/hineybush/h660s/rules.mk
@@ -12,10 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
diff --git a/keyboards/hineybush/h75_singa/keymaps/default/keymap.c b/keyboards/hineybush/h75_singa/keymaps/default/keymap.c
index 85f59d0fb2..1a1231d0f3 100644
--- a/keyboards/hineybush/h75_singa/keymaps/default/keymap.c
+++ b/keyboards/hineybush/h75_singa/keymaps/default/keymap.c
@@ -16,12 +16,6 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, \
- k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
- k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, \
- k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
- k500, k501, k502, k504, k506, k508, k510, k511, k513, k514, k515 \ */
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
diff --git a/keyboards/hineybush/h75_singa/keymaps/via/keymap.c b/keyboards/hineybush/h75_singa/keymaps/via/keymap.c
index 37efc344c0..0a4b3eea4b 100644
--- a/keyboards/hineybush/h75_singa/keymaps/via/keymap.c
+++ b/keyboards/hineybush/h75_singa/keymaps/via/keymap.c
@@ -16,12 +16,6 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, \
- k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
- k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k315, \
- k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
- k500, k501, k502, k504, k506, k508, k510, k511, k513, k514, k515 \ */
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
diff --git a/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c b/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
index 156f99225d..694d851d94 100644
--- a/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
+++ b/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
@@ -16,12 +16,6 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k114, k115, \
- k200, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
- k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k314, k315, \
- k400, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k414, k415, \
- k500, k501, k506, k510, k511, k513, k514, k515 \*/
[0] = LAYOUT_wkl_std(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PAUS, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
diff --git a/keyboards/hineybush/h75_singa/rules.mk b/keyboards/hineybush/h75_singa/rules.mk
index 76590c14a5..4323e2466e 100644
--- a/keyboards/hineybush/h75_singa/rules.mk
+++ b/keyboards/hineybush/h75_singa/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/h87a/keymaps/default/config.h b/keyboards/hineybush/h87a/keymaps/default/config.h
deleted file mode 100644
index cef67bd488..0000000000
--- a/keyboards/hineybush/h87a/keymaps/default/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2018 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/hineybush/h87a/keymaps/wkl/config.h b/keyboards/hineybush/h87a/keymaps/wkl/config.h
deleted file mode 100644
index cef67bd488..0000000000
--- a/keyboards/hineybush/h87a/keymaps/wkl/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2018 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/hineybush/h87a/rules.mk b/keyboards/hineybush/h87a/rules.mk
index 75a1312273..7d4728f70c 100644
--- a/keyboards/hineybush/h87a/rules.mk
+++ b/keyboards/hineybush/h87a/rules.mk
@@ -12,11 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/hineybush/h88/keymaps/default/config.h b/keyboards/hineybush/h88/keymaps/default/config.h
deleted file mode 100644
index dbb63d3d54..0000000000
--- a/keyboards/hineybush/h88/keymaps/default/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2019 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/hineybush/h88/keymaps/wkl/config.h b/keyboards/hineybush/h88/keymaps/wkl/config.h
deleted file mode 100644
index dbb63d3d54..0000000000
--- a/keyboards/hineybush/h88/keymaps/wkl/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2019 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/hineybush/h88/rules.mk b/keyboards/hineybush/h88/rules.mk
index d3ee3fd1c6..7d4728f70c 100644
--- a/keyboards/hineybush/h88/rules.mk
+++ b/keyboards/hineybush/h88/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/hbcp/keymaps/default/config.h b/keyboards/hineybush/hbcp/keymaps/default/config.h
deleted file mode 100644
index 89865cef35..0000000000
--- a/keyboards/hineybush/hbcp/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 hineybush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/hineybush/hbcp/keymaps/default/keymap.c b/keyboards/hineybush/hbcp/keymaps/default/keymap.c
index 9bc9ec8e81..19f67669f2 100644
--- a/keyboards/hineybush/hbcp/keymaps/default/keymap.c
+++ b/keyboards/hineybush/hbcp/keymaps/default/keymap.c
@@ -24,15 +24,6 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all( /* Base */
-
- /*#define LAYOUT_all( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, K017, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K013, K114, K115, K116, K117, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, \
- K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, K417, \
- K500, K501, K502, K505, K509, K510, K511, K512, K513, K514, K515, K516, K517 \
-)*/
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGUP, KC_PGDN,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
diff --git a/keyboards/hineybush/hbcp/keymaps/wkl/config.h b/keyboards/hineybush/hbcp/keymaps/wkl/config.h
deleted file mode 100644
index 89865cef35..0000000000
--- a/keyboards/hineybush/hbcp/keymaps/wkl/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 hineybush
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/hineybush/hbcp/keymaps/wkl/keymap.c b/keyboards/hineybush/hbcp/keymaps/wkl/keymap.c
index 09d5b6b33c..948b914e19 100644
--- a/keyboards/hineybush/hbcp/keymaps/wkl/keymap.c
+++ b/keyboards/hineybush/hbcp/keymaps/wkl/keymap.c
@@ -24,13 +24,6 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_wkl( /* Base */
-
- /*K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, K017, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K013, K114, K115, K116, K117, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, K315, K316, K317, \
- K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, K416, \
- K500, K501, K505, K510, K511, K512, K513, K514, K515, K516, K517 \*/
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS, KC_PGUP, KC_PGDN,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
diff --git a/keyboards/hineybush/hbcp/rules.mk b/keyboards/hineybush/hbcp/rules.mk
index af9655c57a..669b18a549 100644
--- a/keyboards/hineybush/hbcp/rules.mk
+++ b/keyboards/hineybush/hbcp/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/hineyg80/keymaps/default/config.h b/keyboards/hineybush/hineyg80/keymaps/default/config.h
deleted file mode 100644
index 16e640d306..0000000000
--- a/keyboards/hineybush/hineyg80/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/hineybush/hineyg80/keymaps/wkl/config.h b/keyboards/hineybush/hineyg80/keymaps/wkl/config.h
deleted file mode 100644
index 16e640d306..0000000000
--- a/keyboards/hineybush/hineyg80/keymaps/wkl/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Josh Hinnebusch
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/hineybush/hineyg80/rules.mk b/keyboards/hineybush/hineyg80/rules.mk
index 71e5c41e74..a2a5932cdc 100644
--- a/keyboards/hineybush/hineyg80/rules.mk
+++ b/keyboards/hineybush/hineyg80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/physix/keymaps/default/keymap.c b/keyboards/hineybush/physix/keymaps/default/keymap.c
index 2e0cf3155c..fbd5dd60b2 100644
--- a/keyboards/hineybush/physix/keymaps/default/keymap.c
+++ b/keyboards/hineybush/physix/keymaps/default/keymap.c
@@ -24,13 +24,6 @@ enum layer_names {
// Defines the keycodes used by our macros in process_record_user
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* #define LAYOUT_split_bksp_275_rspace( \
- k000, k001, k002, k003, k004, k005, k403, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
- k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
- k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k214, \
- k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
- k400, k402, k404, k405, k406, K409, k410, k411, k412, k413 \
-) \ */
[_BASE] = LAYOUT_split_bksp_275_rspace(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
diff --git a/keyboards/hineybush/physix/rules.mk b/keyboards/hineybush/physix/rules.mk
index 0d9012c70b..3ca912f6ec 100644
--- a/keyboards/hineybush/physix/rules.mk
+++ b/keyboards/hineybush/physix/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hineybush/sm68/rules.mk b/keyboards/hineybush/sm68/rules.mk
index 1ef41c30ce..9c435aa07b 100644
--- a/keyboards/hineybush/sm68/rules.mk
+++ b/keyboards/hineybush/sm68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/holyswitch/southpaw75/rules.mk b/keyboards/holyswitch/southpaw75/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/holyswitch/southpaw75/rules.mk
+++ b/keyboards/holyswitch/southpaw75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk
index ae6a59e07f..2b5eb0360c 100755
--- a/keyboards/honeycomb/rules.mk
+++ b/keyboards/honeycomb/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
#MOUSEKEY_ENABLE = yes # Mouse keys
@@ -14,9 +14,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# # project specific files
diff --git a/keyboards/horizon/rules.mk b/keyboards/horizon/rules.mk
index b484be6c00..9cfcaf1bbc 100644
--- a/keyboards/horizon/rules.mk
+++ b/keyboards/horizon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = yes # Console for debug
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
new file mode 100644
index 0000000000..825b6d3e5b
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
@@ -0,0 +1,103 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7516
+#define PRODUCT_ID 0x6001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER HorrorTroll
+#define PRODUCT Devil68 Pro
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B7, B3, B2, F6, F7 }
+#define MATRIX_COL_PINS { B1, B0, B5, B6, C6, C7, E2, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
+
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
+
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL 86
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_KEYPRESSES
+
+ /* RGB Matrix config */
+ #define RGB_DI_PIN E6
+
+ /* RGB Matrix effect */
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_BREATHING
+ #define ENABLE_RGB_MATRIX_BAND_SAT
+ #define ENABLE_RGB_MATRIX_BAND_VAL
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+ #define ENABLE_RGB_MATRIX_CYCLE_ALL
+ #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #define ENABLE_RGB_MATRIX_RAINDROPS
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define ENABLE_RGB_MATRIX_HUE_BREATHING
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #define ENABLE_RGB_MATRIX_HUE_WAVE
+ #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_SPLASH
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.c b/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.c
new file mode 100644
index 0000000000..8b51920b81
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "devil68_pro.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, NO_LED, 13, 14 },
+ { 15, NO_LED, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43 },
+ { NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, NO_LED, 55, 56, 57 },
+ { 58, 59, NO_LED, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 }
+}, {
+ // Key matrix (0 -> 67)
+ {0 , 0}, {15 , 0}, {30 , 0}, {45 , 0}, {60 , 0}, {75 , 0}, {90 , 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {224, 0},
+ {3 , 16}, {21 , 16}, {36 , 16}, {51 , 16}, {66 , 16}, {81 , 16}, {96 , 16}, {111, 16}, {126, 16}, {141, 16}, {156, 16}, {171, 16}, {186, 16}, {205, 16}, {224, 16},
+ {5 , 32}, {25 , 32}, {40 , 32}, {55 , 32}, {70 , 32}, {85 , 32}, {100, 32}, {115, 32}, {130, 32}, {145, 32}, {160, 32}, {175, 32}, {200, 32}, {224, 32},
+ {8 , 48}, {31 , 48}, {46 , 48}, {61 , 48}, {76 , 48}, {91 , 48}, {106, 48}, {121, 48}, {136, 48}, {151, 48}, {166, 48}, {188, 48}, {210, 48}, {224, 48},
+ {2 , 64}, {19 , 64}, {36 , 64}, {96 , 64}, {149, 64}, {164, 64}, {179, 64}, {194, 64}, {209, 64}, {224, 64},
+
+ // Underglow (68 -> 85)
+ {210, 60}, {186, 12}, {158, 12}, {130, 12}, {101, 12}, {71 , 12}, {39 , 12}, {13 , 12}, {13 , 35},
+ {13 , 12}, {39 , 12}, {71 , 12}, {101, 12}, {130, 12}, {158, 12}, {186, 12}, {210, 12}, {210, 35},
+}, {
+ // Key matrix (0 -> 67)
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 4, 4, 4,
+
+ // Underglow (68 -> 85)
+ 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.h
new file mode 100644
index 0000000000..0c83132f57
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/devil68_pro.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0E │0F │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2F │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │3F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │40 │41 │43 │46 │4A │4B │4C │4D │4E │4F │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E, K0F }, \
+ { K10, XXX, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
+ { XXX, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F } \
+}
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
new file mode 100644
index 0000000000..9e7f4524a3
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Devil68 Pro",
+ "url": "",
+ "maintainer": "HorrorTroll",
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"`~", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PgUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"PgDn", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Fn", "x":11, "y":4},
+ {"label":"Ctrl", "x":12, "y":4},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/keymap.c b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..48416c84c9
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/keymap.c
@@ -0,0 +1,187 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1
+};
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bakspc│ ` │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │Del│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAt│Fn │RCl│ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ ~ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_BASE] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Rst│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ │ ↑ │ │ │ │ │ │Ins│ │PSc│ │ │ Hui │Mod│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ │ ← │ ↓ │ → │ │ │ │ │ │Tog│ │ │ │Hom│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │ │Vai│End│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │App│Spd│Vad│Spi│
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT_65_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, RGB_HUI, RGB_MOD,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, KC_END,
+ _______, _______, _______, _______, _______, _______, KC_APP, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(30, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/readme.md b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/readme.md
new file mode 100644
index 0000000000..820d3551c3
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default Layout
+
+Keymap is default 68 qwerty, 65% layout
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/config.h
new file mode 100644
index 0000000000..fe6aa8c1f7
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+#ifdef RGB_MATRIX_ENABLE
+ #define VIA_QMK_RGBLIGHT_ENABLE
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/keymap.c b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/keymap.c
new file mode 100644
index 0000000000..48416c84c9
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/keymap.c
@@ -0,0 +1,187 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1
+};
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bakspc│ ` │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │Del│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAt│Fn │RCl│ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ ~ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_BASE] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Rst│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ │ ↑ │ │ │ │ │ │Ins│ │PSc│ │ │ Hui │Mod│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ │ ← │ ↓ │ → │ │ │ │ │ │Tog│ │ │ │Hom│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │ │Vai│End│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │App│Spd│Vad│Spi│
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT_65_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, RGB_HUI, RGB_MOD,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, KC_END,
+ _______, _______, _______, _______, _______, _______, KC_APP, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(30, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/readme.md b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/readme.md
new file mode 100644
index 0000000000..af924c17b7
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# Default Layout with VIA
+
+Keymap is default 68 qwerty, 65% layout
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/rules.mk b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md b/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md
new file mode 100644
index 0000000000..27bd974af4
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md
@@ -0,0 +1,24 @@
+# Devil68 Pro
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make horrortroll/chinese_pcb/devil68_pro:default
+
+Flashing example for this keyboard:
+
+ make horrortroll/chinese_pcb/devil68_pro:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (3,6) in the matrix (B key) and plug in the keyboard
+* **Reset by wire**: Using a wire, 1 head to GND hole and other one to Reset pin on MCU
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/rules.mk b/keyboards/horrortroll/chinese_pcb/devil68_pro/rules.mk
new file mode 100644
index 0000000000..66354d7926
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/config.h b/keyboards/horrortroll/chinese_pcb/m63_rgb/config.h
new file mode 100644
index 0000000000..2983971258
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/config.h
@@ -0,0 +1,107 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7516
+#define PRODUCT_ID 0x6002
+#define DEVICE_VER 0x0001
+#define MANUFACTURER HorrorTroll
+#define PRODUCT M63 RGB
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B3, B4, A0, A2, A3 }
+#define MATRIX_COL_PINS { B0, B1, B2, B10, A7, A6, A5, A4, B5, B6, A1, B7, B8, B9 }
+
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 5
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
+
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL 75
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_KEYPRESSES
+ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+ /* RGB Matrix config */
+ #define RGB_DI_PIN B15
+
+ /* RGB Matrix effect */
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_BREATHING
+ #define ENABLE_RGB_MATRIX_BAND_SAT
+ #define ENABLE_RGB_MATRIX_BAND_VAL
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+ #define ENABLE_RGB_MATRIX_CYCLE_ALL
+ #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #define ENABLE_RGB_MATRIX_RAINDROPS
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define ENABLE_RGB_MATRIX_HUE_BREATHING
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #define ENABLE_RGB_MATRIX_HUE_WAVE
+ #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+ #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_SPLASH
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/info.json b/keyboards/horrortroll/chinese_pcb/m63_rgb/info.json
new file mode 100644
index 0000000000..651e58a100
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/info.json
@@ -0,0 +1,78 @@
+{
+ "keyboard_name": "M63 RGB",
+ "url": "",
+ "maintainer": "HorrorTroll",
+ "layouts": {
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"Shift", "x":11.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":13, "y":3},
+ {"label":"/?", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Fn", "x":11, "y":4},
+ {"label":"\u2190", "x":12, "y":4},
+ {"label":"\u2193", "x":13, "y":4},
+ {"label":"\u2192", "x":14, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/keymap.c b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8f421c22f5
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/keymap.c
@@ -0,0 +1,187 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1
+};
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bakspc│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ RSft │ ↑ │ / │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAt│Fn │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ RSft │ │ ? │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 */
+ [_BASE] = LAYOUT_60_ansi_arrow(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │Reset│ │ │ │ │ │ │ │Ins│ │PSc│ │Hui│ Mod │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ │ │ │ │ │ │ │ │ │Tog│ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │Vai│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │Spd│Vad│Spi│
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 */
+ [_FN] = LAYOUT_60_ansi_arrow(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, RGB_HUI, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_VAI, _______,
+ _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(28, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/readme.md b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/readme.md
new file mode 100644
index 0000000000..01ff3523b9
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default Layout
+
+Keymap is default 63 qwerty, 60% arrow layout
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/config.h b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/config.h
new file mode 100644
index 0000000000..fe6aa8c1f7
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+#ifdef RGB_MATRIX_ENABLE
+ #define VIA_QMK_RGBLIGHT_ENABLE
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/keymap.c b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8f421c22f5
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/keymap.c
@@ -0,0 +1,187 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1
+};
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bakspc│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ RSft │ ↑ │ / │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAt│Fn │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ RSft │ │ ? │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 */
+ [_BASE] = LAYOUT_60_ansi_arrow(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ │Reset│ │ │ │ │ │ │ │Ins│ │PSc│ │Hui│ Mod │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ │ │ │ │ │ │ │ │ │Tog│ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │Vai│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ │ │ │ │ │ │ │Spd│Vad│Spi│
+ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 */
+ [_FN] = LAYOUT_60_ansi_arrow(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ RESET, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, RGB_HUI, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_VAI, _______,
+ _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(28, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/readme.md b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/readme.md
new file mode 100644
index 0000000000..c60a188047
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# Default Layout with VIA
+
+Keymap is default 63 qwerty, 60% arrow layout
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/rules.mk b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.c b/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.c
new file mode 100644
index 0000000000..ef1eabddf8
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "m63_rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, NO_LED, 52, 53 },
+ { 54, 55, 56, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 58, 59, 60, 61, 62 }
+}, {
+ // Key matrix (0 -> 62)
+ {0 , 0}, {16 , 0}, {33 , 0}, {49 , 0}, {66 , 0}, {82 , 0}, {99 , 0}, {115, 0}, {132, 0}, {148, 0}, {165, 0}, {181, 0}, {198, 0}, {214, 0},
+ {3 , 16}, {23 , 16}, {39 , 16}, {56 , 16}, {72 , 16}, {88 , 16}, {105, 16}, {121, 16}, {138, 16}, {154, 16}, {171, 16}, {187, 16}, {204, 16}, {220, 16},
+ {5 , 32}, {26 , 32}, {42 , 32}, {59 , 32}, {75 , 32}, {92 , 32}, {108, 32}, {124, 32}, {141, 32}, {157, 32}, {174, 32}, {190, 32}, {214, 32},
+ {8 , 48}, {28 , 48}, {48 , 48}, {65 , 48}, {81 , 48}, {98 , 48}, {114, 48}, {131, 48}, {147, 48}, {164, 48}, {186, 48}, {208, 48}, {224, 48},
+ {2 , 64}, {20 , 64}, {38 , 64}, {100, 64}, {160, 64}, {176, 64}, {192, 64}, {208, 64}, {224, 64},
+
+ // Underglow (63 -> 74)
+ {216, 56}, {181, 57}, {138, 59}, {105, 58}, {52 , 60}, {10 , 60},
+ {20 , 12}, {54 , 12}, {102, 10}, {145, 13}, {182, 9}, {211, 10},
+}, {
+ // Key matrix (0 -> 62)
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 4, 4,
+
+ // Underglow (63 -> 74)
+ 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.h b/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.h
new file mode 100644
index 0000000000..b2461758e2
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/m63_rgb.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │3D │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │40 │41 │42 │45 │49 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+
+#define LAYOUT_60_ansi_arrow( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/readme.md b/keyboards/horrortroll/chinese_pcb/m63_rgb/readme.md
new file mode 100644
index 0000000000..7ec01047b1
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/readme.md
@@ -0,0 +1,24 @@
+# M63 RGB
+
+Support STM32F072CBU6 keyboard.
+
+* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
+* Hardware Supported: STM32F072CBU6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make horrortroll/chinese_pcb/m63_rgb:default
+
+Flashing example for this keyboard:
+
+ make horrortroll/chinese_pcb/m63_rgb:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (3,5) in the matrix (B key) and plug in the keyboard
+* **Physical reset button**: Press and hold the button on the back of the PCB, then plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/horrortroll/chinese_pcb/m63_rgb/rules.mk b/keyboards/horrortroll/chinese_pcb/m63_rgb/rules.mk
new file mode 100644
index 0000000000..9291499b77
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/m63_rgb/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/horrortroll/chinese_pcb/readme.md b/keyboards/horrortroll/chinese_pcb/readme.md
new file mode 100644
index 0000000000..3aa0ce6195
--- /dev/null
+++ b/keyboards/horrortroll/chinese_pcb/readme.md
@@ -0,0 +1,14 @@
+# A folder for some Chinese PCB without source code
+
+This is a folder for collection code of Chinese PCB, where they only sold one-time limited on Taobao and no source code or contact info of Maker. Everything was re-write by using multimeter and sometimes with ISP/ICP flashing!
+
+## List for those keyboard in here:
+<details>
+ <summary>Click to expand!</summary>
+
+ | Keyboard name | MCU | Layout | Hotswap | LED | OLED | Other |
+ | ------------- | ------------- | ------------- | ------- | ---- | ---- | ----- |
+ | Devil68 Pro | Atmega32U4 | 68 Keys (65%) | Yes | RGB | No | No |
+ | M63 RGB | STM32F072CBU6 | 63 Keys (60%) | Yes | RGB | No | No |
+ | | | | | | | |
+</details>
diff --git a/keyboards/horrortroll/handwired_k552/boards/k552/board.c b/keyboards/horrortroll/handwired_k552/boards/k552/board.c
new file mode 100644
index 0000000000..65269520ea
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/boards/k552/board.c
@@ -0,0 +1,49 @@
+/*
+ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#include <hal.h>
+
+/**
+ * @brief PAL setup.
+ * @details Digital I/O ports static configuration as defined in @p board.h.
+ * This variable is used by the HAL when initializing the PAL driver.
+ */
+#if HAL_USE_PAL || defined(__DOXYGEN__)
+const PALConfig pal_default_config =
+{
+ {VAL_GPIOAODR, VAL_GPIOACRL, VAL_GPIOACRH},
+ {VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
+ {VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
+ {VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
+};
+#endif
+
+/*
+ * Early initialization code.
+ * This initialization must be performed just after stack setup and before
+ * any other initialization.
+ */
+void __early_init(void) {
+ stm32_clock_init();
+
+}
+
+/*
+ * Board-specific initialization code.
+ */
+void boardInit(void) {
+
+}
diff --git a/keyboards/horrortroll/handwired_k552/boards/k552/board.h b/keyboards/horrortroll/handwired_k552/boards/k552/board.h
new file mode 100644
index 0000000000..f9b38b0caf
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/boards/k552/board.h
@@ -0,0 +1,145 @@
+/*
+ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+/*
+ * Board identifier.
+ */
+#define BOARD_K552
+#define BOARD_NAME "K552 keyboard"
+
+/*
+ * Board frequencies.
+ */
+#define STM32_LSECLK 32768
+#define STM32_HSECLK 8000000
+
+/*
+ * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
+ *
+ * Only xC (256KB Flash) is defined, but it's identical to the
+ * x8 version (64KB Flash) except for the Flash region size in the
+ * linker script. For x8 parts use xC here and change to the x8 linker
+ * script in the project Makefile.
+ */
+#pragma once
+#include_next <board.h>
+#undef STM32F103xB
+#define STM32F103xE
+
+/*
+ * IO pins assignments
+ *
+ * numbering is sorted by onboard/connectors, as from the schematics in
+ * http://www.vcc-gnd.com/read.php?tid=369
+ */
+
+/* on-board */
+#define GPIOA_USBDM 11 // pin 8
+#define GPIOA_USBDP 12 // pin 9
+
+#define GPIOC_OSC32_IN 14
+#define GPIOC_OSC32_OUT 15
+
+/*
+ * I/O ports initial setup, this configuration is established soon after reset
+ * in the initialization code.
+ *
+ * The digits have the following meaning:
+ * 0 - Analog input.
+ * 1 - Push Pull output 10MHz.
+ * 2 - Push Pull output 2MHz.
+ * 3 - Push Pull output 50MHz.
+ * 4 - Digital input.
+ * 5 - Open Drain output 10MHz.
+ * 6 - Open Drain output 2MHz.
+ * 7 - Open Drain output 50MHz.
+ * 8 - Digital input with PullUp or PullDown resistor depending on ODR.
+ * 9 - Alternate Push Pull output 10MHz.
+ * A - Alternate Push Pull output 2MHz.
+ * B - Alternate Push Pull output 50MHz.
+ * C - Reserved.
+ * D - Alternate Open Drain output 10MHz.
+ * E - Alternate Open Drain output 2MHz.
+ * F - Alternate Open Drain output 50MHz.
+ * Please refer to the STM32 Reference Manual for details.
+ */
+
+/*
+ * Port A setup.
+ * Everything input with pull-up except:
+ */
+#define VAL_GPIOACRL 0x88888888 /* PA7...PA0 */
+#define VAL_GPIOACRH 0x88888888 /* PA15...PA8 */
+#define VAL_GPIOAODR 0xFFFFFFFF
+
+/*
+ * Port B setup.
+ * Everything input with pull-up except:
+ */
+#define VAL_GPIOBCRL 0x88888888 /* PB7...PB0 */
+#define VAL_GPIOBCRH 0x88888888 /* PB15...PB8 */
+#define VAL_GPIOBODR 0xFFFFFFFF
+
+/*
+ * Port C setup.
+ * Everything input with pull-up except:
+ */
+#define VAL_GPIOCCRL 0x88888888 /* PC7...PC0 */
+#define VAL_GPIOCCRH 0x88888888 /* PC15...PC8 */
+#define VAL_GPIOCODR 0xFFFFFFFF
+
+/*
+ * Port D setup.
+ * Everything input with pull-up except:
+ * PD0 - Normal input (XTAL).
+ * PD1 - Normal input (XTAL).
+ */
+#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
+#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
+#define VAL_GPIODODR 0xFFFFFFFF
+
+/*
+ * Port E setup.
+ * Everything input with pull-up except:
+ */
+#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
+#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
+#define VAL_GPIOEODR 0xFFFFFFFF
+
+/*
+ * USB bus activation macro, required by the USB driver.
+ */
+#define usb_lld_connect_bus(usbp) /* always connected */
+
+/*
+ * USB bus de-activation macro, required by the USB driver.
+ */
+#define usb_lld_disconnect_bus(usbp) /* always connected */
+
+#if !defined(_FROM_ASM_)
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void boardInit(void);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _FROM_ASM_ */
+
+#endif /* _BOARD_H_ */
diff --git a/keyboards/horrortroll/handwired_k552/boards/k552/board.mk b/keyboards/horrortroll/handwired_k552/boards/k552/board.mk
new file mode 100644
index 0000000000..15831c4f15
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/boards/k552/board.mk
@@ -0,0 +1,5 @@
+# List of all the board related files.
+BOARDSRC = $(BOARD_PATH)/boards/k552/board.c
+
+# Required include directories
+BOARDINC = $(BOARD_PATH)/boards/k552
diff --git a/keyboards/horrortroll/handwired_k552/chconf.h b/keyboards/horrortroll/handwired_k552/chconf.h
new file mode 100644
index 0000000000..4ad4a3be34
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/chconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/horrortroll/handwired_k552/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#include_next <chconf.h>
diff --git a/keyboards/horrortroll/handwired_k552/config.h b/keyboards/horrortroll/handwired_k552/config.h
new file mode 100644
index 0000000000..87908a1dcd
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/config.h
@@ -0,0 +1,102 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7516
+#define PRODUCT_ID 0x5104
+#define DEVICE_VER 0x0001
+#define MANUFACTURER HorrorTroll
+#define PRODUCT K552 Kumara
+
+/* Key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { C12, C10, A10, A8, C8, C9 }
+#define MATRIX_COL_PINS { B15, C6, C7, A3, A1, C3, C1, B14, B13, A9, B3, B4, A0, C11, A2, C0, C2 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Bootmagic reset */
+#define BOOTMAGIC_LITE_ROW 4
+#define BOOTMAGIC_LITE_COLUMN 6
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
+
+/* EEPROM size */
+#define EEPROM_PAGE_SIZE
+#define FEE_PAGE_SIZE 0x800
+#define FEE_PAGE_COUNT 4
+
+#define FEE_MCU_FLASH_SIZE_IGNORE_CHECK
+#define FEE_MCU_FLASH_SIZE \
+({ \
+ uint16_t flash_size = *(uint16_t*)FLASHSIZE_BASE; \
+ (flash_size <= 512) ? flash_size : 512; \
+})
+
+#ifdef OLED_ENABLE
+ /* Mapping I2C2 for OLED */
+ #define I2C1_SCL_PIN B10
+ #define I2C1_SDA_PIN B11
+ #define I2C_DRIVER I2CD2
+
+ /* Use the custom font */
+ #define OLED_FONT_H "lib/glcdfont.c"
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL 24
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+
+ /* RGB Matrix config */
+ #define RGB_DI_PIN C14
+
+ /* RGB Matrix effect */
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_BREATHING
+ #define ENABLE_RGB_MATRIX_BAND_VAL
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #define ENABLE_RGB_MATRIX_CYCLE_ALL
+ #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define ENABLE_RGB_MATRIX_RAINDROPS
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define ENABLE_RGB_MATRIX_HUE_BREATHING
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #define ENABLE_RGB_MATRIX_HUE_WAVE
+ #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#endif
diff --git a/keyboards/horrortroll/handwired_k552/halconf.h b/keyboards/horrortroll/handwired_k552/halconf.h
new file mode 100644
index 0000000000..2ef68f8fb2
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/horrortroll/handwired_k552/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/horrortroll/handwired_k552/handwired_k552.c b/keyboards/horrortroll/handwired_k552/handwired_k552.c
new file mode 100644
index 0000000000..31012d8a33
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/handwired_k552.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "handwired_k552.h"
+
+// OLED animation
+#include "lib/logo.c"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { }
+}, {
+ {152, 0}, {165, 0}, {190, 0}, {205, 0},
+ {224, 21}, {224, 43}, {224, 54},
+ {188, 64}, {172, 64}, {156, 64}, {140, 64}, {115, 64}, {99 , 64}, {75 , 64}, {59 , 64}, {43 , 64}, {26 , 64},
+ {0 , 15}, {0 , 50}, {0 , 39},
+ {18 , 0}, {36 , 0}, {57 , 0}, {67 , 0}
+}, {
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+} };
+#endif
+
+#ifdef OLED_ENABLE
+ uint16_t startup_timer;
+
+ oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ startup_timer = timer_read();
+
+ return rotation;
+ }
+
+ bool oled_task_kb(void) {
+ static bool finished_logo = false;
+
+ if ((timer_elapsed(startup_timer) < 5000) && !finished_logo) {
+ render_logo();
+ } else {
+ finished_logo = true;
+
+ if (!oled_task_user()) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+#endif
diff --git a/keyboards/horrortroll/handwired_k552/handwired_k552.h b/keyboards/horrortroll/handwired_k552/handwired_k552.h
new file mode 100644
index 0000000000..2a537714e3
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/handwired_k552.h
@@ -0,0 +1,54 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │00 │ │01 │02 │03 │04 │ │05 │06 │07 │08 │ │09 │0A │0B │0C │ │0E │0F │0G │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │1E │1F │1G │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4D │ │4F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ * │50 │51 │52 │53 │54 │55 │56 │58 │ │5E │5F │5G │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+
+#define LAYOUT_tkl_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \
+ K50, K51, K52, K53, K54, K55, K56, K58, K5E, K5F, K5G \
+)\
+{\
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, XXX, XXX, XXX }, \
+ { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, XXX, K4F, XXX }, \
+ { K50, K51, K52, K53, K54, K55, K56, XXX, K58, XXX, XXX, XXX, XXX, XXX, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/horrortroll/handwired_k552/info.json b/keyboards/horrortroll/handwired_k552/info.json
new file mode 100644
index 0000000000..2db30bb552
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "Handwired K552 Kumara",
+ "url": "",
+ "maintainer": "HorrorTroll",
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"App", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/keymap.c b/keyboards/horrortroll/handwired_k552/keymaps/default/keymap.c
new file mode 100644
index 0000000000..641e0e5381
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#include "keymap_stuff.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │Del│End│PgD│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RShift │ │ ↑ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ App│RCrl│ │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RShift │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_WAVE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │Rst│ │MeP│VoD│VoU│Mut│ │Stp│Prv│Ply│Nxt│ │Mai│Hom│Cal│Sch│ │Rod│Mod│Tog│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ │ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │C_E│ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │1Hd│1Hi│1Sd│1Si│1Vd│1Vi│ │ │ │ │ │ │ │ │ │ │Wve│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │2Hd│2Hi│2Sd│2Si│2Vd│2Vi│ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ │ │Pre│Ref│Flp│ │ │ │ │ │ │ │ │Vai│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │ │ │ │ │ │ Fn │ │ │ │Hud│Vad│Hui│
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_FN] = LAYOUT_tkl_ansi(
+ RESET, KC_MSEL, KC_VOLD, KC_VOLU, KC_MUTE, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MAIL, KC_WHOM, KC_CALC, KC_WSCH, RGB_RMOD, RGB_MOD, RGB_TOG,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_C_E, _______, _______,
+ _______, G1_HUD, G1_HUI, G1_SAD, G1_SAI, G1_VAD, G1_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_WAVE),
+ _______, G2_HUD, G2_HUI, G2_SAD, G2_SAI, G2_VAD, G2_VAI, _______, _______, _______, _______, _______, _______,
+ _______, G_PRE, REF_G, G_FLIP, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI
+ ),
+};
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/keymap_stuff.h b/keyboards/horrortroll/handwired_k552/keymaps/default/keymap_stuff.h
new file mode 100644
index 0000000000..a97b46e5e4
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/keymap_stuff.h
@@ -0,0 +1,300 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include "oled/oled_stuff.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _WAVE = 1,
+ _FN = 2
+};
+
+// For CUSTOM_GRADIENT
+HSV gradient_0 = {205, 250, 255};
+HSV gradient_100 = {140, 215, 125};
+bool reflected_gradient = false;
+uint8_t gp_i = 0;
+
+typedef struct {
+ HSV gradient_0;
+ HSV gradient_1;
+ bool reflected;
+} CUSTOM_PRESETS;
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+enum layer_keycodes {
+ //Custom Gradient control keycode
+ G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase
+ G1_HUD, //Custom gradient color 1 hue decrease
+ G1_SAI, //Custom gradient color 1 saturation increase
+ G1_SAD, //Custom gradient color 1 saturation decrease
+ G1_VAI, //Custom gradient color 1 value increase
+ G1_VAD, //Custom gradient color 1 value decrease
+ G2_HUI, //Custom gradient color 2 hue increase
+ G2_HUD, //Custom gradient color 2 hue decrease
+ G2_SAI, //Custom gradient color 2 saturation increase
+ G2_SAD, //Custom gradient color 2 saturation decrease
+ G2_VAI, //Custom gradient color 2 value increase
+ G2_VAD, //Custom gradient color 2 value decrease
+ G_PRE, //Gradient presets
+ REF_G, //Toggle between linear and reflected gradient
+ G_FLIP, //Flip the gradient colors
+
+ //Custom led effect keycode
+ RGB_C_E, //Cycle user effect
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ process_record_user_oled(keycode, record);
+
+ uint8_t color_adj_step = 5;
+
+ CUSTOM_PRESETS gradient_presets[] = {
+ {{41 , 255, 255}, {233, 245, 255}, false },
+ {{45 , 245, 155}, {160, 255, 80}, false },
+ {{173, 245, 40}, {41 , 255, 205}, true },
+ {{32 , 255, 165}, {217, 185, 70}, false },
+ {{240, 255, 145}, {115, 255, 245}, true },
+ {{118, 255, 255}, {242, 255, 255}, false },
+ {{212, 0 , 0}, {223, 235, 165}, true },
+ {{205, 250, 255}, {140, 215, 125}, false },
+ };
+
+ uint8_t gp_length = sizeof(gradient_presets)/sizeof(gradient_presets[0]);
+
+ switch (keycode) {
+ case G1_HUI:
+ if (record->event.pressed) {
+ gradient_0.h += color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_HUD:
+ if (record->event.pressed) {
+ gradient_0.h -= color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAI:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAD:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAI:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAD:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G2_HUI:
+ if (record->event.pressed) {
+ gradient_100.h += color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_HUD:
+ if (record->event.pressed) {
+ gradient_100.h -= color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAI:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAD:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAI:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAD:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G_PRE:
+ if (record->event.pressed) {
+ gp_i = (gp_i + gp_length ) % gp_length;
+
+ gradient_0 = gradient_presets[gp_i].gradient_0;
+ gradient_100 = gradient_presets[gp_i].gradient_1;
+ reflected_gradient = gradient_presets[gp_i].reflected;
+
+ gp_i += 1;
+ }
+ return false;
+ case REF_G:
+ if (record->event.pressed) {
+ reflected_gradient = !reflected_gradient;
+ }
+ return false;
+ case G_FLIP:
+ if (record->event.pressed) {
+ HSV temp_color = gradient_0;
+ gradient_0 = gradient_100;
+ gradient_100 = temp_color;
+ }
+ return false;
+ case RGB_C_E:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_mode()) {
+ case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_COOL_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT);
+ return false;
+ case RGB_MATRIX_CUSTOM_KITT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW);
+ return false;
+ default:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT);
+ return false;
+ }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ uint8_t side_leds_left[3] = {17, 18, 19};
+ uint8_t side_leds_right[3] = { 4, 5, 6};
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_ALL)) {
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], rgb.r, rgb.g, rgb.b);
+ }
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], rgb.r, rgb.g, rgb.b);
+ }
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], 0, 0, 0);
+ }
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], 0, 0, 0);
+ }
+ }
+ }
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/led/cool_diagonal.c b/keyboards/horrortroll/handwired_k552/keymaps/default/led/cool_diagonal.c
new file mode 100644
index 0000000000..2c518a5431
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/led/cool_diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); } \ No newline at end of file
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/led/custom_gradient.c b/keyboards/horrortroll/handwired_k552/keymaps/default/led/custom_gradient.c
new file mode 100644
index 0000000000..49e4a242fb
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/led/custom_gradient.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+extern HSV gradient_0;
+extern HSV gradient_100;
+extern bool reflected_gradient;
+
+static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) {
+ uint8_t cw, ccw;
+ HSV color;
+
+ cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255.
+ ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h;
+
+ if( cw < ccw ) { // going clockwise
+ color.h = gradient_0.h + (uint8_t)(step * cw);
+ } else { // Going counter clockwise
+ color.h = gradient_0.h - (uint8_t)(step * ccw);
+ }
+
+ color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s);
+
+ // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0
+ color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255));
+
+ return color;
+}
+
+static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) {
+ float step = (float)led_x / (max_x - min_x);
+ float mid_gradient_pos = 0.5;
+
+ if( reflected_gradient ) {
+ if( step <= mid_gradient_pos ) {
+ return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100);
+ } else {
+ return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0);
+ }
+
+ } else {
+ return INTERPOLATE_HSV(step, gradient_0, gradient_100);
+ }
+}
+
+static bool CUSTOM_GRADIENT(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t min_x = 0; // X coordinate of the left-most LED
+ uint8_t max_x = 224; // X coordinate of the right-most LED
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+
+ HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x);
+ RGB rgb = hsv_to_rgb(hsv_orig);
+
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/led/diagonal.c b/keyboards/horrortroll/handwired_k552/keymaps/default/led/diagonal.c
new file mode 100644
index 0000000000..19e3791bd6
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/led/diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = g_led_config.point[i].x - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &DIAGONAL_math); }
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/led/kitt.c b/keyboards/horrortroll/handwired_k552/keymaps/default/led/kitt.c
new file mode 100644
index 0000000000..823eb5839b
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/led/kitt.c
@@ -0,0 +1,68 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// variable for startup animation
+bool BASE_EFFECT_NOT_STARTED_YET = true;
+uint8_t base_effect_startup_counter = 255;
+
+uint8_t led_count = 10;
+uint8_t led_first = 7;
+
+static uint8_t time_to_led(uint8_t time, uint8_t led_behind) {
+ uint16_t led_time = led_count * time;
+ uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count);
+ uint8_t led;
+
+ if (step < led_count) {
+ led = step;
+ } else {
+ led = led_count - 1 - (step - led_count);
+ }
+
+ return led;
+}
+
+static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) {
+
+ // reset base effect startup
+ if (i == 0) {
+ BASE_EFFECT_NOT_STARTED_YET = true;
+ }
+
+ hsv.h = 0;
+ hsv.s = 255;
+
+ if (i >= led_first && i < led_first + led_count) {
+ uint8_t j = i - led_first;
+ if (j == time_to_led(time, 0)) {
+ hsv.v = hsv.v;
+ } else if (j == time_to_led(time, 1)) {
+ hsv.v = hsv.v/2;
+ } else if (j == time_to_led(time, 2)) {
+ hsv.v = hsv.v/4;
+ } else if (j == time_to_led(time, 3)) {
+ hsv.v = hsv.v/8;
+ } else {
+ hsv.v = 0;
+ }
+ } else {
+ hsv.v = 0;
+ }
+
+ return hsv;
+}
+
+bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); }
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/led/random_breath_rainbow.c b/keyboards/horrortroll/handwired_k552/keymaps/default/led/random_breath_rainbow.c
new file mode 100644
index 0000000000..041417477b
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/led/random_breath_rainbow.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static uint8_t offset[DRIVER_LED_TOTAL];
+
+static void doRandom_breath_rainbow(int i, effect_params_t* params) {
+ if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
+ uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6);
+
+ if (rand() * 50 == 1) {
+ if (rand() * 2 == 1) {
+ offset[i]++;
+ }
+ else {
+ offset[i]--;
+ }
+ }
+
+ //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05;
+ HSV hsv = {0, 255, 255};
+ hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2);
+ hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+}
+
+bool RANDOM_BREATH_RAINBOW(effect_params_t* params) {
+
+ if (!params->init) {
+ // Change one LED every tick, make sure speed is not 0
+ doRandom_breath_rainbow(rand() % DRIVER_LED_TOTAL, params);
+ return false;
+ }
+
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ doRandom_breath_rainbow(i, params);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/oled/oled_stuff.h b/keyboards/horrortroll/handwired_k552/keymaps/default/oled/oled_stuff.h
new file mode 100644
index 0000000000..9d8d629179
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/oled/oled_stuff.h
@@ -0,0 +1,69 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// OLED animation
+#include "lib/bongocat.c"
+#include "lib/galaxy.c"
+#include "lib/wave.c"
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+ static uint8_t old_layer;
+ uint8_t layer = get_highest_layer(layer_state | default_layer_state);
+
+ if (layer != old_layer) {
+ oled_clear();
+ }
+
+ old_layer = layer;
+
+ switch (layer) {
+ case 0:
+ render_bongocat();
+ oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top)
+ oled_write_P(PSTR("WPM:"), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string
+ oled_set_cursor(17, 2);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+ break;
+ case 1:
+ // sleep if it has been long enough since we last got a char
+ if (timer_elapsed32(wave_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ oled_on();
+ }
+ // time for the next frame?
+ if (timer_elapsed(wave_timer) > FRAME_TIMEOUT) {
+ wave_timer = timer_read();
+ render_frame();
+ }
+
+ oled_set_cursor(0, 3);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+ break;
+ case 2:
+ render_galaxy();
+ break;
+ }
+ return false;
+ }
+#endif
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/readme.md b/keyboards/horrortroll/handwired_k552/keymaps/default/readme.md
new file mode 100644
index 0000000000..c8f9c1f8ec
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/readme.md
@@ -0,0 +1,16 @@
+# Default layout and custom LED / OLED
+
+Keymap is default 87 qwerty, TKL layout
+
+It have new LED effect:
+- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt])
+- Diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Cool diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Knight Rider (ported from jumper149 code [https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/])
+- Random breath rainbow (based from daed code [https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed] and modify by me)
+
+And OLED Animation:
+- Bongo Cat (ported from nwii code [https://github.com/nwii/oledbongocat] and modify image animation by me)
+- Waveform Typing (ported from drcforbin code [https://github.com/drcforbin/keyboards] and modify to correct my TKL layout)
+- Galaxy image when pressing FN key (original image [https://www.deviantart.com/rock-bomber/art/Gateway-668850827] and redraw then cut for 128x32 size by me)
+- Redragon Logo when booting up
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/rgb_matrix_user.inc b/keyboards/horrortroll/handwired_k552/keymaps/default/rgb_matrix_user.inc
new file mode 100644
index 0000000000..38edbae993
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/rgb_matrix_user.inc
@@ -0,0 +1,15 @@
+RGB_MATRIX_EFFECT(CUSTOM_GRADIENT)
+RGB_MATRIX_EFFECT(DIAGONAL)
+RGB_MATRIX_EFFECT(COOL_DIAGONAL)
+RGB_MATRIX_EFFECT(KITT)
+RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW)
+
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+#include "led/custom_gradient.c"
+#include "led/diagonal.c"
+#include "led/cool_diagonal.c"
+#include "led/kitt.c"
+#include "led/random_breath_rainbow.c"
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS \ No newline at end of file
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/default/rules.mk b/keyboards/horrortroll/handwired_k552/keymaps/default/rules.mk
new file mode 100644
index 0000000000..6245023e80
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/default/rules.mk
@@ -0,0 +1 @@
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/config.h b/keyboards/horrortroll/handwired_k552/keymaps/via/config.h
new file mode 100644
index 0000000000..ba3e8e9a03
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+#ifdef RGB_MATRIX_ENABLE
+ #define VIA_QMK_RGBLIGHT_ENABLE
+#endif
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/keymap.c b/keyboards/horrortroll/handwired_k552/keymaps/via/keymap.c
new file mode 100644
index 0000000000..641e0e5381
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#include "keymap_stuff.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │Del│End│PgD│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RShift │ │ ↑ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ App│RCrl│ │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RShift │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_WAVE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ │Rst│ │MeP│VoD│VoU│Mut│ │Stp│Prv│Ply│Nxt│ │Mai│Hom│Cal│Sch│ │Rod│Mod│Tog│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ │ │ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │C_E│ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │1Hd│1Hi│1Sd│1Si│1Vd│1Vi│ │ │ │ │ │ │ │ │ │ │Wve│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │2Hd│2Hi│2Sd│2Si│2Vd│2Vi│ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ │ │ │Pre│Ref│Flp│ │ │ │ │ │ │ │ │Vai│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ │ │ │ │ │ │ Fn │ │ │ │Hud│Vad│Hui│
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_FN] = LAYOUT_tkl_ansi(
+ RESET, KC_MSEL, KC_VOLD, KC_VOLU, KC_MUTE, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MAIL, KC_WHOM, KC_CALC, KC_WSCH, RGB_RMOD, RGB_MOD, RGB_TOG,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_C_E, _______, _______,
+ _______, G1_HUD, G1_HUI, G1_SAD, G1_SAI, G1_VAD, G1_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_WAVE),
+ _______, G2_HUD, G2_HUI, G2_SAD, G2_SAI, G2_VAD, G2_VAI, _______, _______, _______, _______, _______, _______,
+ _______, G_PRE, REF_G, G_FLIP, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI
+ ),
+};
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/keymap_stuff.h b/keyboards/horrortroll/handwired_k552/keymaps/via/keymap_stuff.h
new file mode 100644
index 0000000000..a97b46e5e4
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/keymap_stuff.h
@@ -0,0 +1,300 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include "oled/oled_stuff.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _WAVE = 1,
+ _FN = 2
+};
+
+// For CUSTOM_GRADIENT
+HSV gradient_0 = {205, 250, 255};
+HSV gradient_100 = {140, 215, 125};
+bool reflected_gradient = false;
+uint8_t gp_i = 0;
+
+typedef struct {
+ HSV gradient_0;
+ HSV gradient_1;
+ bool reflected;
+} CUSTOM_PRESETS;
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+enum layer_keycodes {
+ //Custom Gradient control keycode
+ G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase
+ G1_HUD, //Custom gradient color 1 hue decrease
+ G1_SAI, //Custom gradient color 1 saturation increase
+ G1_SAD, //Custom gradient color 1 saturation decrease
+ G1_VAI, //Custom gradient color 1 value increase
+ G1_VAD, //Custom gradient color 1 value decrease
+ G2_HUI, //Custom gradient color 2 hue increase
+ G2_HUD, //Custom gradient color 2 hue decrease
+ G2_SAI, //Custom gradient color 2 saturation increase
+ G2_SAD, //Custom gradient color 2 saturation decrease
+ G2_VAI, //Custom gradient color 2 value increase
+ G2_VAD, //Custom gradient color 2 value decrease
+ G_PRE, //Gradient presets
+ REF_G, //Toggle between linear and reflected gradient
+ G_FLIP, //Flip the gradient colors
+
+ //Custom led effect keycode
+ RGB_C_E, //Cycle user effect
+};
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ process_record_user_oled(keycode, record);
+
+ uint8_t color_adj_step = 5;
+
+ CUSTOM_PRESETS gradient_presets[] = {
+ {{41 , 255, 255}, {233, 245, 255}, false },
+ {{45 , 245, 155}, {160, 255, 80}, false },
+ {{173, 245, 40}, {41 , 255, 205}, true },
+ {{32 , 255, 165}, {217, 185, 70}, false },
+ {{240, 255, 145}, {115, 255, 245}, true },
+ {{118, 255, 255}, {242, 255, 255}, false },
+ {{212, 0 , 0}, {223, 235, 165}, true },
+ {{205, 250, 255}, {140, 215, 125}, false },
+ };
+
+ uint8_t gp_length = sizeof(gradient_presets)/sizeof(gradient_presets[0]);
+
+ switch (keycode) {
+ case G1_HUI:
+ if (record->event.pressed) {
+ gradient_0.h += color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_HUD:
+ if (record->event.pressed) {
+ gradient_0.h -= color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAI:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAD:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAI:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAD:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G2_HUI:
+ if (record->event.pressed) {
+ gradient_100.h += color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_HUD:
+ if (record->event.pressed) {
+ gradient_100.h -= color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAI:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAD:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAI:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAD:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G_PRE:
+ if (record->event.pressed) {
+ gp_i = (gp_i + gp_length ) % gp_length;
+
+ gradient_0 = gradient_presets[gp_i].gradient_0;
+ gradient_100 = gradient_presets[gp_i].gradient_1;
+ reflected_gradient = gradient_presets[gp_i].reflected;
+
+ gp_i += 1;
+ }
+ return false;
+ case REF_G:
+ if (record->event.pressed) {
+ reflected_gradient = !reflected_gradient;
+ }
+ return false;
+ case G_FLIP:
+ if (record->event.pressed) {
+ HSV temp_color = gradient_0;
+ gradient_0 = gradient_100;
+ gradient_100 = temp_color;
+ }
+ return false;
+ case RGB_C_E:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_mode()) {
+ case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_COOL_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT);
+ return false;
+ case RGB_MATRIX_CUSTOM_KITT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW);
+ return false;
+ default:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT);
+ return false;
+ }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ uint8_t side_leds_left[3] = {17, 18, 19};
+ uint8_t side_leds_right[3] = { 4, 5, 6};
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_ALL)) {
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], rgb.r, rgb.g, rgb.b);
+ }
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], rgb.r, rgb.g, rgb.b);
+ }
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_left[i], 0, 0, 0);
+ }
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ for (uint8_t i = 0; i < 3; i++)
+ {
+ rgb_matrix_set_color(side_leds_right[i], 0, 0, 0);
+ }
+ }
+ }
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/led/cool_diagonal.c b/keyboards/horrortroll/handwired_k552/keymaps/via/led/cool_diagonal.c
new file mode 100644
index 0000000000..2c518a5431
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/led/cool_diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); } \ No newline at end of file
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/led/custom_gradient.c b/keyboards/horrortroll/handwired_k552/keymaps/via/led/custom_gradient.c
new file mode 100644
index 0000000000..49e4a242fb
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/led/custom_gradient.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+extern HSV gradient_0;
+extern HSV gradient_100;
+extern bool reflected_gradient;
+
+static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) {
+ uint8_t cw, ccw;
+ HSV color;
+
+ cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255.
+ ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h;
+
+ if( cw < ccw ) { // going clockwise
+ color.h = gradient_0.h + (uint8_t)(step * cw);
+ } else { // Going counter clockwise
+ color.h = gradient_0.h - (uint8_t)(step * ccw);
+ }
+
+ color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s);
+
+ // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0
+ color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255));
+
+ return color;
+}
+
+static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) {
+ float step = (float)led_x / (max_x - min_x);
+ float mid_gradient_pos = 0.5;
+
+ if( reflected_gradient ) {
+ if( step <= mid_gradient_pos ) {
+ return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100);
+ } else {
+ return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0);
+ }
+
+ } else {
+ return INTERPOLATE_HSV(step, gradient_0, gradient_100);
+ }
+}
+
+static bool CUSTOM_GRADIENT(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t min_x = 0; // X coordinate of the left-most LED
+ uint8_t max_x = 224; // X coordinate of the right-most LED
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+
+ HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x);
+ RGB rgb = hsv_to_rgb(hsv_orig);
+
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/led/diagonal.c b/keyboards/horrortroll/handwired_k552/keymaps/via/led/diagonal.c
new file mode 100644
index 0000000000..19e3791bd6
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/led/diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = g_led_config.point[i].x - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &DIAGONAL_math); }
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/led/kitt.c b/keyboards/horrortroll/handwired_k552/keymaps/via/led/kitt.c
new file mode 100644
index 0000000000..823eb5839b
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/led/kitt.c
@@ -0,0 +1,68 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// variable for startup animation
+bool BASE_EFFECT_NOT_STARTED_YET = true;
+uint8_t base_effect_startup_counter = 255;
+
+uint8_t led_count = 10;
+uint8_t led_first = 7;
+
+static uint8_t time_to_led(uint8_t time, uint8_t led_behind) {
+ uint16_t led_time = led_count * time;
+ uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count);
+ uint8_t led;
+
+ if (step < led_count) {
+ led = step;
+ } else {
+ led = led_count - 1 - (step - led_count);
+ }
+
+ return led;
+}
+
+static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) {
+
+ // reset base effect startup
+ if (i == 0) {
+ BASE_EFFECT_NOT_STARTED_YET = true;
+ }
+
+ hsv.h = 0;
+ hsv.s = 255;
+
+ if (i >= led_first && i < led_first + led_count) {
+ uint8_t j = i - led_first;
+ if (j == time_to_led(time, 0)) {
+ hsv.v = hsv.v;
+ } else if (j == time_to_led(time, 1)) {
+ hsv.v = hsv.v/2;
+ } else if (j == time_to_led(time, 2)) {
+ hsv.v = hsv.v/4;
+ } else if (j == time_to_led(time, 3)) {
+ hsv.v = hsv.v/8;
+ } else {
+ hsv.v = 0;
+ }
+ } else {
+ hsv.v = 0;
+ }
+
+ return hsv;
+}
+
+bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); }
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/led/random_breath_rainbow.c b/keyboards/horrortroll/handwired_k552/keymaps/via/led/random_breath_rainbow.c
new file mode 100644
index 0000000000..041417477b
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/led/random_breath_rainbow.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static uint8_t offset[DRIVER_LED_TOTAL];
+
+static void doRandom_breath_rainbow(int i, effect_params_t* params) {
+ if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
+ uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6);
+
+ if (rand() * 50 == 1) {
+ if (rand() * 2 == 1) {
+ offset[i]++;
+ }
+ else {
+ offset[i]--;
+ }
+ }
+
+ //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05;
+ HSV hsv = {0, 255, 255};
+ hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2);
+ hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+}
+
+bool RANDOM_BREATH_RAINBOW(effect_params_t* params) {
+
+ if (!params->init) {
+ // Change one LED every tick, make sure speed is not 0
+ doRandom_breath_rainbow(rand() % DRIVER_LED_TOTAL, params);
+ return false;
+ }
+
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ doRandom_breath_rainbow(i, params);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/oled/oled_stuff.h b/keyboards/horrortroll/handwired_k552/keymaps/via/oled/oled_stuff.h
new file mode 100644
index 0000000000..9d8d629179
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/oled/oled_stuff.h
@@ -0,0 +1,69 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// OLED animation
+#include "lib/bongocat.c"
+#include "lib/galaxy.c"
+#include "lib/wave.c"
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+ static uint8_t old_layer;
+ uint8_t layer = get_highest_layer(layer_state | default_layer_state);
+
+ if (layer != old_layer) {
+ oled_clear();
+ }
+
+ old_layer = layer;
+
+ switch (layer) {
+ case 0:
+ render_bongocat();
+ oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top)
+ oled_write_P(PSTR("WPM:"), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string
+ oled_set_cursor(17, 2);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+ break;
+ case 1:
+ // sleep if it has been long enough since we last got a char
+ if (timer_elapsed32(wave_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ oled_on();
+ }
+ // time for the next frame?
+ if (timer_elapsed(wave_timer) > FRAME_TIMEOUT) {
+ wave_timer = timer_read();
+ render_frame();
+ }
+
+ oled_set_cursor(0, 3);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_set_cursor(17, 3);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false);
+ break;
+ case 2:
+ render_galaxy();
+ break;
+ }
+ return false;
+ }
+#endif
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/readme.md b/keyboards/horrortroll/handwired_k552/keymaps/via/readme.md
new file mode 100644
index 0000000000..c8f9c1f8ec
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/readme.md
@@ -0,0 +1,16 @@
+# Default layout and custom LED / OLED
+
+Keymap is default 87 qwerty, TKL layout
+
+It have new LED effect:
+- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt])
+- Diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Cool diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Knight Rider (ported from jumper149 code [https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/])
+- Random breath rainbow (based from daed code [https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed] and modify by me)
+
+And OLED Animation:
+- Bongo Cat (ported from nwii code [https://github.com/nwii/oledbongocat] and modify image animation by me)
+- Waveform Typing (ported from drcforbin code [https://github.com/drcforbin/keyboards] and modify to correct my TKL layout)
+- Galaxy image when pressing FN key (original image [https://www.deviantart.com/rock-bomber/art/Gateway-668850827] and redraw then cut for 128x32 size by me)
+- Redragon Logo when booting up
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/rgb_matrix_user.inc b/keyboards/horrortroll/handwired_k552/keymaps/via/rgb_matrix_user.inc
new file mode 100644
index 0000000000..38edbae993
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/rgb_matrix_user.inc
@@ -0,0 +1,15 @@
+RGB_MATRIX_EFFECT(CUSTOM_GRADIENT)
+RGB_MATRIX_EFFECT(DIAGONAL)
+RGB_MATRIX_EFFECT(COOL_DIAGONAL)
+RGB_MATRIX_EFFECT(KITT)
+RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW)
+
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+#include "led/custom_gradient.c"
+#include "led/diagonal.c"
+#include "led/cool_diagonal.c"
+#include "led/kitt.c"
+#include "led/random_breath_rainbow.c"
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS \ No newline at end of file
diff --git a/keyboards/horrortroll/handwired_k552/keymaps/via/rules.mk b/keyboards/horrortroll/handwired_k552/keymaps/via/rules.mk
new file mode 100644
index 0000000000..d475530c87
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/horrortroll/handwired_k552/ld/k552_f103.ld b/keyboards/horrortroll/handwired_k552/ld/k552_f103.ld
new file mode 100644
index 0000000000..7b9e75b3c7
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/ld/k552_f103.ld
@@ -0,0 +1,85 @@
+/*
+ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * STM32F103xC memory setup for use with the K552 mass-storage device bootloader.
+ */
+MEMORY
+{
+ flash0 : org = 0x08002000, len = 256k - 0x2000
+ flash1 : org = 0x00000000, len = 0
+ flash2 : org = 0x00000000, len = 0
+ flash3 : org = 0x00000000, len = 0
+ flash4 : org = 0x00000000, len = 0
+ flash5 : org = 0x00000000, len = 0
+ flash6 : org = 0x00000000, len = 0
+ flash7 : org = 0x00000000, len = 0
+ ram0 : org = 0x20000000, len = 48k
+ ram1 : org = 0x00000000, len = 0
+ ram2 : org = 0x00000000, len = 0
+ ram3 : org = 0x00000000, len = 0
+ ram4 : org = 0x00000000, len = 0
+ ram5 : org = 0x00000000, len = 0
+ ram6 : org = 0x00000000, len = 0
+ ram7 : org = 0x00000000, len = 0
+}
+
+/* For each data/text section two region are defined, a virtual region
+ and a load region (_LMA suffix).*/
+
+/* Flash region to be used for exception vectors.*/
+REGION_ALIAS("VECTORS_FLASH", flash0);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash0);
+REGION_ALIAS("XTORS_FLASH_LMA", flash0);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash0);
+REGION_ALIAS("TEXT_FLASH_LMA", flash0);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash0);
+REGION_ALIAS("RODATA_FLASH_LMA", flash0);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash0);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash0);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+/* Generic rules inclusion.*/
+INCLUDE rules.ld
diff --git a/keyboards/horrortroll/handwired_k552/lib/bongocat.c b/keyboards/horrortroll/handwired_k552/lib/bongocat.c
new file mode 100644
index 0000000000..fbde9c911a
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/lib/bongocat.c
@@ -0,0 +1,376 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// WPM-responsive animation stuff here
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 10 // below this wpm value your animation will idle
+// #define PREP_FRAMES 1 // uncomment if >1
+# define TAP_FRAMES 2
+# define ANIM_WPM_LOWER 20 // above this wpm value typing animation to trigger
+# define ANIM_FRAME_DURATION_MAX 450 // longest animation duration in ms
+# define ANIM_FRAME_DURATION_MIN 100 // shortest animation duration in ms
+# define IDLE_FRAME_DURATION 300 // how long each frame lasts in ms
+# define ANIM_FRAME_RATIO 2.5 // how aggressively animation speeds up with wpm
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+# define MAX(x, y) (((x) > (y)) ? (x) : (y)) // Math.max macro
+
+uint32_t curr_anim_duration = 0; // variable animation duration
+uint32_t bongo_timer = 0;
+uint32_t bongo_sleep = 0;
+uint8_t current_idle_frame = 0;
+// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
+uint8_t current_tap_frame = 0;
+
+// Code containing pixel art, contains:
+// 5 idle frames, 1 prep frame, and 2 tap frames
+
+// To make your own pixel art:
+// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
+// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
+// replace numbers in brackets with your own
+// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
+static void render_bongocat(void) {
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+ {
+ //Idle 1 - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0,
+ 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Idle 2 - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0xf0,
+ 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0xff,
+ 0xff, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1e, 0x1e, 0x3f, 0x3d, 0x3d, 0x3e, 0x7f, 0x7f, 0x7f, 0x7f, 0xf9, 0xf9, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xc0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Idle 3 - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0,
+ 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0xff,
+ 0xff, 0x7f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1e, 0x1e, 0x3f, 0x3d, 0x3d, 0x3e, 0x7f, 0x7f, 0x7f, 0x7f, 0xf9, 0xf9, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xc0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Idle 4 - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0,
+ 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0x3c, 0x1c, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Idle 5 - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0,
+ 0xf8, 0xfc, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ };
+
+ static const char PROGMEM prep[][ANIM_SIZE] = {
+ {
+ //Prepare - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0,
+ 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0xf0, 0xf8,
+ 0xdc, 0x36, 0x3e, 0xee, 0xfc, 0xe0, 0x9c, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x7e, 0xbe, 0xbc, 0xbc, 0x7c, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x44, 0xc4, 0xc4, 0x68, 0x78,
+ 0x59, 0x89, 0x91, 0x91, 0xd3, 0xf3, 0xa3, 0x23, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0x81,
+ 0xfa, 0xff, 0xe6, 0xe7, 0xfd, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x13, 0x12, 0x3c,
+ 0x2c, 0x26, 0x27, 0x45, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x34, 0x3c, 0x2c, 0x44, 0xc8, 0xc8,
+ 0xe9, 0xb9, 0x11, 0x11, 0x13, 0x93, 0xe3, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ };
+
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {
+ //Tap left - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0,
+ 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0xf0, 0xf8,
+ 0xdc, 0x36, 0x3e, 0xee, 0xfc, 0xe0, 0x9c, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfe, 0xfe, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x30, 0x38, 0x2c, 0x44, 0xc4, 0xc4, 0x68, 0x78,
+ 0x59, 0x89, 0x91, 0x91, 0xd3, 0xf3, 0xa3, 0x23, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x3f, 0x1f, 0x07, 0x83, 0xc0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x13, 0x12, 0x3c,
+ 0x2c, 0x26, 0x27, 0x45, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x24, 0x18, 0x3c, 0x7e, 0x7f, 0x7f,
+ 0x7f, 0xbf, 0x3f, 0x1f, 0x1f, 0x8f, 0xe7, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x11, 0x11, 0x21, 0x23, 0x23, 0x21, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Tap right - 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xce, 0x9c, 0xf8, 0xfc, 0xfe, 0x80, 0xe0, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0,
+ 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x38, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0x31, 0x00, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0xa0, 0xa0, 0x20, 0x20, 0x40, 0x46, 0x4f, 0x5f, 0x9f, 0x9c, 0x90, 0x80,
+ 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xcf, 0xff,
+ 0xff, 0xbf, 0x7f, 0x7f, 0xbf, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x7e, 0xbe, 0xbc, 0xbc, 0x7c, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x0f, 0x8f, 0xc7, 0xe3, 0x31, 0x38, 0x2c, 0x04, 0x64, 0xf8, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf, 0x8f, 0x27, 0x27, 0x27, 0xc7, 0xc7, 0x4f, 0x4f, 0x8f, 0x8f,
+ 0x9f, 0x9f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3e, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0xfc, 0xfc, 0xff, 0x81,
+ 0xfa, 0xff, 0xe6, 0xe7, 0xfd, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x18, 0x08, 0x08, 0x08, 0x18, 0x10, 0x30,
+ 0x60, 0x40, 0xc0, 0x86, 0x87, 0x85, 0xc4, 0x49, 0x69, 0x3e, 0x0e, 0x13, 0x11, 0x12, 0x12, 0x3d,
+ 0x2d, 0x25, 0x26, 0x44, 0x68, 0x78, 0x58, 0x9d, 0x97, 0x93, 0xe3, 0x62, 0x34, 0x3c, 0x2c, 0x26,
+ 0xc7, 0xc5, 0x69, 0x39, 0x19, 0x1d, 0x36, 0xa2, 0xe2, 0x62, 0x34, 0x3c, 0x2c, 0x44, 0xc8, 0xc8,
+ 0xe9, 0xb9, 0x11, 0x11, 0x13, 0x93, 0xe3, 0x63, 0x27, 0x27, 0x47, 0x47, 0xcf, 0xcf, 0x0f, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ };
+
+ // assumes 1 frame prep stage
+ void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < ANIM_WPM_LOWER) {
+ // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ }
+
+ if (get_current_wpm() >= ANIM_WPM_LOWER) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+ }
+
+ // variable animation duration. Don't want this value to get near zero as it'll bug out.
+ curr_anim_duration = MAX(ANIM_FRAME_DURATION_MIN, ANIM_FRAME_DURATION_MAX - ANIM_FRAME_RATIO * get_current_wpm());
+
+ if (get_current_wpm() > ANIM_WPM_LOWER) {
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
+
+ if (timer_elapsed32(bongo_timer) > curr_anim_duration) {
+ bongo_timer = timer_read32();
+ animation_phase();
+ }
+
+ bongo_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(bongo_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(bongo_timer) > IDLE_FRAME_DURATION) {
+ bongo_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+}
diff --git a/keyboards/horrortroll/handwired_k552/lib/galaxy.c b/keyboards/horrortroll/handwired_k552/lib/galaxy.c
new file mode 100644
index 0000000000..5cc340dded
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/lib/galaxy.c
@@ -0,0 +1,58 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+static void render_galaxy(void) {
+ static const char PROGMEM galaxy[][ANIM_SIZE] = {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0xc8, 0xe8, 0x49, 0x72,
+ 0x7e, 0x4b, 0x82, 0x05, 0xa2, 0x55, 0x0a, 0x11, 0x2a, 0x44, 0xaa, 0x11, 0xaa, 0x44, 0x2a, 0x10,
+ 0x20, 0x42, 0x02, 0x80, 0xc4, 0x92, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x05, 0x02, 0x05, 0x03, 0x06, 0x81, 0xfe, 0x81, 0x1c, 0x1e, 0x08, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x10, 0x65, 0xcd, 0x63, 0xce, 0x2b, 0x2b, 0x8e, 0x9c, 0x2c, 0x78, 0xf3, 0x58, 0xc0, 0xe8,
+ 0xe0, 0xf9, 0x88, 0x68, 0xa1, 0x00, 0x01, 0x03, 0x8f, 0x0f, 0x1f, 0x2f, 0xdf, 0x7f, 0x7e, 0xff,
+ 0x79, 0x2f, 0xff, 0xdf, 0x5f, 0xbf, 0xff, 0x7f, 0xff, 0x9e, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf7,
+ 0xde, 0xfd, 0xfe, 0x50, 0xa8, 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x42, 0xe4, 0xf0, 0xfe, 0xf0, 0xe1, 0x41, 0x47, 0x49, 0xab,
+ 0x14, 0x48, 0x22, 0x55, 0x0a, 0x05, 0x20, 0x55, 0x88, 0x54, 0xa2, 0x14, 0x08, 0x00, 0x48, 0x22,
+ 0x90, 0x20, 0x00, 0x40, 0xa8, 0x70, 0x86, 0x5d, 0x60, 0x04, 0x08, 0x00, 0x04, 0x00, 0x04, 0x04,
+ 0x04, 0x04, 0x84, 0x84, 0x0e, 0x1f, 0x3f, 0xff, 0x3f, 0x1f, 0x6e, 0xe4, 0xe4, 0xd4, 0xa4, 0xd4,
+ 0xa5, 0xd9, 0xad, 0xde, 0xfd, 0xf9, 0xfd, 0xf4, 0x08, 0xf0, 0x40, 0x40, 0x00, 0xc1, 0x01, 0x0b,
+ 0x9f, 0x4f, 0xbf, 0x7f, 0xff, 0xff, 0xfa, 0xc0, 0xea, 0x84, 0xaa, 0x84, 0x00, 0x05, 0x00, 0x01,
+ 0xc5, 0x7c, 0x2d, 0x57, 0x28, 0x53, 0x20, 0x11, 0x2b, 0x9d, 0x1e, 0x2f, 0x57, 0x2f, 0xdf, 0x3f,
+ 0xff, 0x7f, 0xff, 0x7f, 0xbf, 0x3f, 0x52, 0x04, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x31, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x0a, 0x11, 0x2a, 0x44, 0xa8, 0x00, 0x80, 0x00, 0x01, 0x00, 0x04, 0x19, 0x58, 0xf6, 0xf5,
+ 0xf8, 0xd5, 0x58, 0xe1, 0x6e, 0xb4, 0x02, 0x80, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x07, 0xa7, 0xa3, 0x00, 0x00, 0xaf, 0x80, 0x00, 0x04, 0x01, 0x03, 0x83, 0x73, 0x05,
+ 0xd3, 0xff, 0x7f, 0xbf, 0x7f, 0xbf, 0xdf, 0xff, 0xfb, 0xf5, 0xe9, 0xac, 0x97, 0x1e, 0xae, 0xf0,
+ 0x82, 0xc1, 0x42, 0xc5, 0x50, 0xef, 0x9b, 0x1f, 0x9f, 0x6f, 0x59, 0x80, 0x18, 0xe0, 0x60, 0xf1,
+ 0x56, 0x23, 0x61, 0x22, 0x11, 0x02, 0x01, 0x00, 0x00, 0x80, 0x80, 0x10, 0x08, 0x1a, 0xfd, 0x02,
+ 0xa9, 0x71, 0x3f, 0x16, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x0a, 0x11, 0x0a, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0xff, 0xff, 0xbf, 0xea, 0xed, 0x7a, 0x05, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x09, 0x2e, 0x80, 0x30,
+ 0x02, 0x04, 0x82, 0x8a, 0x0d, 0xb8, 0x10, 0xf1, 0xe0, 0xe0, 0x80, 0xe0, 0x40, 0x00, 0x54, 0xa8,
+ 0x41, 0x82, 0x01, 0x00, 0x01, 0x00, 0x41, 0x88, 0x55, 0x23, 0x55, 0x8b, 0x57, 0xaf, 0xdf, 0xff,
+ 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfc, 0xbf, 0x4b, 0x8c, 0x07, 0x0f, 0x1f, 0x0c, 0xaa, 0x10, 0x00,
+ 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x04, 0x01, 0x80,
+ 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x04, 0x00
+ }
+ };
+
+ oled_write_raw_P(galaxy[0], ANIM_SIZE);
+} \ No newline at end of file
diff --git a/keyboards/horrortroll/handwired_k552/lib/glcdfont.c b/keyboards/horrortroll/handwired_k552/lib/glcdfont.c
new file mode 100644
index 0000000000..23bfd92d72
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/lib/glcdfont.c
@@ -0,0 +1,248 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#include "progmem.h"
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x3E, 0x04, 0x08, 0x00,
+ 0x08, 0x10, 0x3E, 0x10, 0x08, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x41, 0x22, 0x14, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x38, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x10, 0x38, 0x10, 0x10, 0x1C, 0x00,
+ 0x0C, 0x7A, 0x41, 0x7A, 0x0C, 0x00,
+ 0x18, 0x2F, 0x41, 0x2F, 0x18, 0x00,
+ 0x22, 0x72, 0x22, 0x27, 0x22, 0x00,
+ 0x08, 0x1C, 0x08, 0x08, 0x08, 0x00,
+ 0x08, 0x08, 0x38, 0x20, 0x28, 0x28,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x2A, 0x2A, 0x2A, 0x00, 0x00,
+ 0x4E, 0x46, 0x4A, 0x50, 0x2F, 0x00,
+ 0x3E, 0x45, 0x55, 0x51, 0x3E, 0x00,
+ 0x48, 0x50, 0x7E, 0x50, 0x48, 0x00,
+ 0x3E, 0x49, 0x71, 0x49, 0x3E, 0x00,
+ 0x10, 0x22, 0x4F, 0x20, 0x10, 0x00,
+ 0x0E, 0x06, 0x0A, 0x10, 0x20, 0x00,
+ 0x20, 0x10, 0x0A, 0x06, 0x0E, 0x00,
+ 0x08, 0x08, 0x08, 0x1C, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+ 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+ 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+ 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+ 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+ 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+ 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+ 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+ 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+ 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/horrortroll/handwired_k552/lib/logo.c b/keyboards/horrortroll/handwired_k552/lib/logo.c
new file mode 100644
index 0000000000..2e05555af2
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/lib/logo.c
@@ -0,0 +1,58 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+static void render_logo(void) {
+ static const char PROGMEM redragon[][ANIM_SIZE] = {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x80,
+ 0x80, 0xc0, 0xe0, 0x80, 0xc0, 0xe0, 0x30, 0x8c, 0x83, 0xc0, 0x60, 0x18, 0x04, 0x00, 0x01, 0x03,
+ 0x0e, 0x3e, 0xfe, 0xfc, 0xfc, 0xf8, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xfc, 0xf6, 0xf3, 0x31, 0xfc, 0xff, 0xff, 0x3f,
+ 0x9f, 0x5f, 0x5f, 0x5f, 0xcf, 0xcf, 0xcf, 0xcb, 0xc9, 0x8c, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0xe0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0xf0, 0xe0, 0x60, 0x60, 0xc0, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x10, 0xf0, 0xf0, 0xf0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0xcf, 0xff, 0x0c,
+ 0x02, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0xfe, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0x7f, 0xff, 0xff,
+ 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xff, 0xff, 0x20, 0x60, 0xd9, 0x9f, 0x0f, 0x00,
+ 0x01, 0xff, 0xff, 0x23, 0x21, 0x21, 0x73, 0x00, 0xff, 0xff, 0x03, 0x22, 0x1e, 0xfc, 0xf8, 0x41,
+ 0xff, 0xff, 0xe3, 0xb2, 0x3e, 0x1c, 0x00, 0xe0, 0xfe, 0x7f, 0x43, 0x4f, 0x7d, 0xf0, 0x80, 0x70,
+ 0xfc, 0x9e, 0x22, 0x03, 0x43, 0x43, 0xc6, 0xcc, 0x80, 0x78, 0xfc, 0x06, 0x23, 0x22, 0x06, 0x9c,
+ 0xf8, 0x40, 0x20, 0xff, 0xff, 0xff, 0x07, 0x1f, 0x7c, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf1, 0xf9, 0xfd, 0xff, 0xfe,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x97, 0x87, 0xc1, 0xe3, 0xf0, 0x78, 0x7e, 0x7f, 0x38,
+ 0x3e, 0x3f, 0x9f, 0x6f, 0x3f, 0x1f, 0x07, 0x00, 0x03, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x0f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0e, 0x0f, 0x0f, 0x08, 0x00, 0x01, 0x03, 0x0f, 0x1e,
+ 0x3c, 0x77, 0x67, 0x44, 0x04, 0x04, 0x04, 0x02, 0x07, 0x07, 0x06, 0x06, 0x03, 0x03, 0x01, 0x04,
+ 0x07, 0x07, 0x00, 0x03, 0x07, 0x04, 0x06, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06,
+ 0x05, 0x03, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07,
+ 0x01, 0x00, 0x04, 0x07, 0x07, 0x07, 0x04, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x3f, 0xff, 0x00, 0x00
+ }
+ };
+
+ oled_write_raw_P(redragon[0], ANIM_SIZE);
+}
diff --git a/keyboards/horrortroll/handwired_k552/lib/wave.c b/keyboards/horrortroll/handwired_k552/lib/wave.c
new file mode 100644
index 0000000000..79b4e0ced7
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/lib/wave.c
@@ -0,0 +1,133 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+extern const unsigned char font[] PROGMEM;
+
+#define ROW_1 OLED_DISPLAY_WIDTH
+#define ROW_2 (OLED_DISPLAY_WIDTH * 2)
+
+static uint32_t wave_sleep = 0;
+
+#define FRAME_TIMEOUT (1000/24)
+
+static uint16_t wave_timer = 0;
+
+static uint8_t next_bar_val = 0;
+static uint8_t next_log_byte[OLED_FONT_WIDTH] = {0};
+static uint8_t line1[OLED_DISPLAY_WIDTH] = {0};
+static uint8_t line2[OLED_DISPLAY_WIDTH] = {0};
+
+static const uint8_t PROGMEM bar_lut[8] = {0, 16, 24, 56, 60, 124, 126, 255};
+
+#define BAR_KEY_WEIGHT 128
+#define BAR_KEY_DECAY_MAX 18
+
+static uint8_t bar_key_decay = BAR_KEY_DECAY_MAX;
+
+// clang-format off
+static const char PROGMEM code_to_name[0xFF] = {
+// 0 1 2 3 4 5 6 7 8 9 A B C D E F
+ ' ', ' ', ' ', ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', // 0x
+ 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', // 1x
+ '3', '4', '5', '6', '7', '8', '9', '0', 128, 136, 132, 131, 22, '-', '=', '[', // 2x
+ ']','\\', '#', ';','\'', '`', ',', '.', '/', 130, 7, 7, 7, 7, 7, 7, // 3x
+ 7, 7, 7, 7, 7, 7, 137, 138, 139, 140, 141, 30, 143, 142, 31, 26, // 4x
+ 27, 25, 24, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
+ ' ', ' ', ' ', ' ', ' ', 135, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
+ 15, 129, 133, 4, 15, 129, 133, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
+};
+// clang-format on
+
+void add_keylog(uint16_t keycode) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) ||
+ (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
+ keycode = keycode & 0xFF;
+ } else if (keycode > 0xFF) {
+ keycode = 0;
+ }
+
+ if (keycode < (sizeof(code_to_name) / sizeof(char))) {
+ char log_char = pgm_read_byte(&code_to_name[keycode]);
+
+ for (uint8_t j = 0; j < OLED_FONT_WIDTH; j++) {
+ const uint8_t glyph_line = pgm_read_byte(&font[log_char * OLED_FONT_WIDTH + j]);
+ next_log_byte[j] = glyph_line;
+ }
+ }
+}
+
+bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ wave_sleep = timer_read32();
+ add_keylog(keycode);
+
+ uint8_t t = next_bar_val + BAR_KEY_WEIGHT;
+
+ if (t < next_bar_val) {
+ next_bar_val = 255;
+ } else {
+ next_bar_val = t;
+ }
+
+ bar_key_decay = BAR_KEY_DECAY_MAX;
+ }
+
+ return true;
+}
+
+void render_layer_name(void) {
+ oled_write_P(PSTR("LAYER: WAVE"), false);
+}
+
+void render_frame(void) {
+ // rotate line 1, and stick in the next byte of the next char,
+ // then rotate the next char buffer
+ memmove(line1+1, line1, OLED_DISPLAY_WIDTH - 1);
+ line1[0] = next_log_byte[OLED_FONT_WIDTH - 1];
+ memmove(next_log_byte+1, next_log_byte, OLED_FONT_WIDTH - 1);
+ next_log_byte[0] = 0;
+
+ // rotate line 2, sticking in the next display value
+ uint8_t disp_val = pgm_read_byte(&bar_lut[next_bar_val / 32]);
+ memmove(line2+1, line2, OLED_DISPLAY_WIDTH - 1);
+ line2[0] = disp_val;
+
+ // draw both bars
+ for (uint8_t i = 0; i < OLED_DISPLAY_WIDTH; i++) {
+ oled_write_raw_byte(line1[i], ROW_1 + i);
+ oled_write_raw_byte(line2[i], ROW_2 + i);
+ }
+
+ // decay the next bar value
+ if (next_bar_val > bar_key_decay) {
+ next_bar_val -= bar_key_decay;
+ } else {
+ next_bar_val = 0;
+ }
+
+ if (bar_key_decay > 1) {
+ bar_key_decay -= 1;
+ }
+}
diff --git a/keyboards/horrortroll/handwired_k552/mcuconf.h b/keyboards/horrortroll/handwired_k552/mcuconf.h
new file mode 100644
index 0000000000..c9970fa28b
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/horrortroll/handwired_k552/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C2
+#define STM32_I2C_USE_I2C2 TRUE
diff --git a/keyboards/horrortroll/handwired_k552/readme.md b/keyboards/horrortroll/handwired_k552/readme.md
new file mode 100644
index 0000000000..85e99f4cd4
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/readme.md
@@ -0,0 +1,22 @@
+# Handwired K552 Kumara
+
+![K552](https://i.imgur.com/XpNmJpBh.png)
+
+A handwired K552 Kumara. Built using STM32F103RCT6 Mini
+
+* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
+* Hardware Supported: STM32F103RCT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make horrortroll/handwired_k552:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (4,6) in the matrix (B key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/horrortroll/handwired_k552/rules.mk b/keyboards/horrortroll/handwired_k552/rules.mk
new file mode 100644
index 0000000000..5df510cd44
--- /dev/null
+++ b/keyboards/horrortroll/handwired_k552/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = STM32F103
+
+MCU_LDSCRIPT = k552_f103
+BOARD = k552
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+NO_USB_STARTUP_CHECK = yes
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+# OLED enabled
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/horrortroll/paws60/config.h b/keyboards/horrortroll/paws60/config.h
new file mode 100644
index 0000000000..d502ee985c
--- /dev/null
+++ b/keyboards/horrortroll/paws60/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7516
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER HorrorTroll
+#define PRODUCT Paws 60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
+#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
+
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Larger keys per scan */
+#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/horrortroll/paws60/info.json b/keyboards/horrortroll/paws60/info.json
new file mode 100644
index 0000000000..1008bf29e2
--- /dev/null
+++ b/keyboards/horrortroll/paws60/info.json
@@ -0,0 +1,285 @@
+{
+ "keyboard_name": "Paws 60",
+ "url": "https://github.com/HorrorTroll/KeebProj/tree/default/paws60/pcb/Hotswap",
+ "maintainer": "HorrorTroll",
+ "layouts": {
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Shift", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"Win", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"Win", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Win", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Fn", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"`~", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Shift", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Win", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Fn", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/horrortroll/paws60/keymaps/default/keymap.c b/keyboards/horrortroll/paws60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..33319041d5
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/default/keymap.c
@@ -0,0 +1,87 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE,
+ _FN,
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ ` │Bks│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ GUI│RCrl│
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ ~ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │RSt│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_BASE] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RGUI, KC_RCTL
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Del│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │Reset│ │ ↑ │ │ │ │ │ │Ins│ │PSc│ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ │ ← │ ↓ │ → │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │ │ │ │ │ │ Fn │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
+ RESET, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/horrortroll/paws60/keymaps/default/readme.md b/keyboards/horrortroll/paws60/keymaps/default/readme.md
new file mode 100644
index 0000000000..f450e1a224
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default Layout
+
+Keymap is default 61 qwerty, 60% layout with split backspace & split right shift
diff --git a/keyboards/horrortroll/paws60/keymaps/via/config.h b/keyboards/horrortroll/paws60/keymaps/via/config.h
new file mode 100644
index 0000000000..4a9ae9bdc2
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/via/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/horrortroll/paws60/keymaps/via/keymap.c b/keyboards/horrortroll/paws60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..33319041d5
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/via/keymap.c
@@ -0,0 +1,87 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE,
+ _FN,
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ ` │Bks│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ GUI│RCrl│
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ ~ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │RSt│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_BASE] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RGUI, KC_RCTL
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Del│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ │Reset│ │ ↑ │ │ │ │ │ │Ins│ │PSc│ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ │ │ ← │ ↓ │ → │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ │ │ │ │Cal│ │ │ │Mut│VoD│VoU│ │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ │ │ │ │ │ │ Fn │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
+ RESET, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/horrortroll/paws60/keymaps/via/readme.md b/keyboards/horrortroll/paws60/keymaps/via/readme.md
new file mode 100644
index 0000000000..13fa492ddf
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# Default Layout with VIA
+
+Keymap is default 61 qwerty, 60% layout with split backspace & split right shift
diff --git a/keyboards/horrortroll/paws60/keymaps/via/rules.mk b/keyboards/horrortroll/paws60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/horrortroll/paws60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/horrortroll/paws60/paws60.c b/keyboards/horrortroll/paws60/paws60.c
new file mode 100644
index 0000000000..8734d75070
--- /dev/null
+++ b/keyboards/horrortroll/paws60/paws60.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "paws60.h"
diff --git a/keyboards/horrortroll/paws60/paws60.h b/keyboards/horrortroll/paws60/paws60.h
new file mode 100644
index 0000000000..3c79345d7c
--- /dev/null
+++ b/keyboards/horrortroll/paws60/paws60.h
@@ -0,0 +1,129 @@
+/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
+ * │40 │41 │42 │46 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, XXX } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │40 │41 │42 │46 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+
+#define LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, XXX }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, XXX } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤
+ * │40 │41 │42 │46 │4B │4C │4D │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_60_ansi_tsangan( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K41, K42, K46, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, XXX }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, XXX } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
+ * │40 │41 │42 │46 │4B │4C │4D │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K46, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, XXX } \
+}
diff --git a/keyboards/horrortroll/paws60/readme.md b/keyboards/horrortroll/paws60/readme.md
new file mode 100644
index 0000000000..62783d3b5e
--- /dev/null
+++ b/keyboards/horrortroll/paws60/readme.md
@@ -0,0 +1,27 @@
+# Paws 60
+
+A PCB that has been inspired by Bakeneko 60 from kkatano [GitHub](https://github.com/kkatano/bakeneko-60)
+
+But more changes has been added: Hotswap socket, ...
+
+* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
+* Hardware Supported: Atmega32u4
+* Hardware Availability: [Open source on GitHub](https://github.com/HorrorTroll/KeebProj/tree/default/paws60/pcb/Hotswap)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make horrortroll/paws60:default
+
+Flashing example for this keyboard:
+
+ make horrortroll/paws60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (3,6) in the matrix (B key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/horrortroll/paws60/rules.mk b/keyboards/horrortroll/paws60/rules.mk
new file mode 100644
index 0000000000..daf1d593f1
--- /dev/null
+++ b/keyboards/horrortroll/paws60/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 60_ansi_split_bs_rshift 60_ansi 60_ansi_tsangan 60_tsangan_hhkb
diff --git a/keyboards/horrortroll/readme.md b/keyboards/horrortroll/readme.md
new file mode 100644
index 0000000000..0cef793ef9
--- /dev/null
+++ b/keyboards/horrortroll/readme.md
@@ -0,0 +1,11 @@
+# Welcome to my keyboard folder
+
+In here, you can find:
+- Chinese PCB that doesn't have source code (lost contact of Maker, can't found on Taobao, ... etc)
+- My keyboard (ETA on future)
+
+## Contact me if you have any problem
+
+**Discord:** HorrorTroll#0975
+**Facebook:** https://www.facebook.com/PhamChonChe.Duc/
+**Email:** sonicvipduc@gmail.com
diff --git a/keyboards/hotdox/keymaps/bliss/keymap.c b/keyboards/hotdox/keymaps/bliss/keymap.c
new file mode 100644
index 0000000000..0076718fcb
--- /dev/null
+++ b/keyboards/hotdox/keymaps/bliss/keymap.c
@@ -0,0 +1,173 @@
+/* Copyright 2021 Benjamin Chausse
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+enum layer_names {
+ BASE, // default layer
+ FUNC, // functions keys, numbpad, and arrows
+};
+
+enum custom_keycodes {
+ VRSN = SAFE_RANGE,
+ RGB_SLD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: default layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BkSp |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | { | | } | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | TUX | A | S | D | F | G |------| |------| H | J | K | L | ; | '/TUX |
+ * |--------+------+------+------+------+------| ^ | | & |------+------+------+------+------+--------|
+ * | Shft/( | Z | X | C | V | B | | | | N | M | , | . | / | Shft/) |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Ctrl | Alt | Caps | MP1 | FUNC | | MR1 | MS1 | [ | ] | TFUNC |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,---------------.
+ * | | Prnt | | INS | HOME |
+ * ,------|------|------| |------+--------+------.
+ * | | | Vol+ | | PgUp | | |
+ * | Space|Backsp|------| |------| Enter | : |
+ * | |ace | Vol- | | PgDn | | |
+ * `--------------------' `----------------------'
+ *
+ * MR1: Record macro 1 Prnt: Print Screen
+ * MS1: Stop recording macro 1 INS: INSERT
+ * MP1: Play macro 1 TFUNC: Goto FUNC only while pressed
+ * FUNC: Set FUNC as default layer
+ *
+ *
+ */
+
+/* If it accepts an argument (i.e, is a function), it doesn't need KC_. */
+/* Otherwise, it needs KC_* */
+ [BASE] = LAYOUT_ergodox( /* layer 0: default */
+ /* Left hand */
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, LSFT(KC_LBRC),
+ MT(MOD_LGUI, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, LSFT(KC_6),
+ KC_LCTL, KC_LALT, KC_CAPS, DM_PLY1, DF(1),
+
+ KC_NO, KC_PSCR,
+ KC_VOLU,
+ KC_SPC, KC_BSPC, KC_VOLD,
+
+ /* right hand */
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ RSFT(KC_RBRC), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RGUI, KC_QUOT),
+ RSFT(KC_7), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
+ DM_REC1, DM_RSTP, KC_LBRC, KC_RBRC, MO(1),
+
+ KC_INS, KC_HOME,
+ KC_PGUP,
+ KC_PGDN, KC_ENT, RSFT(KC_SCLN)),
+
+/* Keymap 1: function keys, numpad, and arrows
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | UP | | | | | | / | 7 | 8 | 9 | - | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | LEFT | DOWN |RIGHT | |------| |------| * | 4 | 5 | 6 | + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | | | | | % | 1 | 2 | 3 | , | Shft/) |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | Ctrl | Alt | Caps | | MAIN | | 0 | . | [ | ] | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,---------------.
+ * | | Prnt | | Ins | Home |
+ * ,------|------|------| |------+--------+------.
+ * | | | Vol+ | | PgUp | | |
+ * | Space|Backsp|------| |------| Enter | Equal|
+ * | |ace | Vol- | | PgDn | | |
+ * `--------------------' `----------------------'
+ */
+
+ [FUNC] = LAYOUT_ergodox( /* layer 1: func */
+ /* left hand */
+ KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_LALT, KC_CAPS, KC_NO, DF(0),
+
+ KC_NO, KC_PSCR,
+ KC_VOLU,
+ KC_SPC, KC_BSPC, KC_VOLD,
+
+ /* right hand */
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO,
+ KC_NO, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_BSLS,
+ KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_NO,
+ KC_NO, LSFT(KC_5), KC_P1, KC_P2, KC_P3, KC_PCMM, KC_RSPC,
+ KC_P0, KC_PDOT, KC_LBRC, KC_RBRC, KC_NO,
+
+ KC_INS, KC_HOME,
+ KC_PGUP,
+ KC_PGDN, KC_ENT, KC_PEQL)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ // dynamically generate these.
+ case VRSN:
+ if (record->event.pressed) {
+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ }
+ return false;
+ break;
+ case RGB_SLD:
+ if (record->event.pressed) {
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_mode(1);
+ #endif
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+ uint8_t layer = get_highest_layer(layer_state);
+
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+};
diff --git a/keyboards/hotdox/keymaps/bliss/readme.md b/keyboards/hotdox/keymaps/bliss/readme.md
new file mode 100644
index 0000000000..a31ee2826e
--- /dev/null
+++ b/keyboards/hotdox/keymaps/bliss/readme.md
@@ -0,0 +1,8 @@
+# Bliss for Hotdox
+
+This keymap for the ergodox hotdox is a take on a development setup I quite
+enjoy. Developers constantly use brackets and they should therefore be
+accessible instead of hidden away behind a shift key. Also this setup aims to minimize hand travel with a layer containing a numpad as well as arrows. Finally,
+this setup incorporates a dynamic macro recorder for an easy, software agnostic way to program macros.
+
+All keybinding diagrams can be read in the `keymap.c` file. It is quite well documented.
diff --git a/keyboards/hotdox/keymaps/bliss/rules.mk b/keyboards/hotdox/keymaps/bliss/rules.mk
new file mode 100644
index 0000000000..ca616d75ee
--- /dev/null
+++ b/keyboards/hotdox/keymaps/bliss/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
+EXTRAKEY_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes
diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk
index dbfc855ccb..0860e9d475 100644
--- a/keyboards/hotdox/rules.mk
+++ b/keyboards/hotdox/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone
UNICODE_ENABLE = yes # Unicode
@@ -14,8 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
SWAP_HANDS_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no
diff --git a/keyboards/hp69/rules.mk b/keyboards/hp69/rules.mk
index f66979ae5f..6deb7a3162 100644
--- a/keyboards/hp69/rules.mk
+++ b/keyboards/hp69/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hs60/v1/keymaps/ansi/keymap.c b/keyboards/hs60/v1/keymaps/ansi/keymap.c
index bf3d4aea28..9cb6d9e254 100644
--- a/keyboards/hs60/v1/keymaps/ansi/keymap.c
+++ b/keyboards/hs60/v1/keymaps/ansi/keymap.c
@@ -19,16 +19,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_ansi( /* FN */
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,\
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v1/keymaps/default/keymap.c b/keyboards/hs60/v1/keymaps/default/keymap.c
index d30ce56aec..222ac0e4b1 100644
--- a/keyboards/hs60/v1/keymaps/default/keymap.c
+++ b/keyboards/hs60/v1/keymaps/default/keymap.c
@@ -19,16 +19,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_iso( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_iso( /* FN */
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v1/rules.mk b/keyboards/hs60/v1/rules.mk
index fe22c20c36..a9d286f07c 100644
--- a/keyboards/hs60/v1/rules.mk
+++ b/keyboards/hs60/v1/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/hs60/v2/ansi/keymaps/default/keymap.c b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c
index 5ccc977959..228e6ac19d 100644
--- a/keyboards/hs60/v2/ansi/keymaps/default/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/default/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_ansi( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v2/ansi/keymaps/via/keymap.c b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c
index 5ccc977959..228e6ac19d 100644
--- a/keyboards/hs60/v2/ansi/keymaps/via/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/via/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_ansi( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk
index 5aef811dc0..b7d4ce80a8 100644
--- a/keyboards/hs60/v2/ansi/rules.mk
+++ b/keyboards/hs60/v2/ansi/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c
index 7c48d0bc23..86912e9d36 100644
--- a/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/default/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_hhkb( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,\
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),\
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ),
[1] = LAYOUT_60_hhkb( /* FN */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \
- KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,\
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
};
diff --git a/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c
index 7c48d0bc23..86912e9d36 100644
--- a/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/via/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_hhkb( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,\
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),\
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ),
[1] = LAYOUT_60_hhkb( /* FN */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \
- KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,\
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
};
diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk
index 60d8385f42..8dedad03df 100644
--- a/keyboards/hs60/v2/hhkb/rules.mk
+++ b/keyboards/hs60/v2/hhkb/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/hs60/v2/iso/keymaps/default/keymap.c b/keyboards/hs60/v2/iso/keymaps/default/keymap.c
index 1b1e5ea4e2..c4e8930b22 100644
--- a/keyboards/hs60/v2/iso/keymaps/default/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/default/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_iso( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_iso( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v2/iso/keymaps/via/keymap.c b/keyboards/hs60/v2/iso/keymaps/via/keymap.c
index 1b1e5ea4e2..c4e8930b22 100644
--- a/keyboards/hs60/v2/iso/keymaps/via/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/via/keymap.c
@@ -19,30 +19,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_iso( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL),
[1] = LAYOUT_60_iso( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET ,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk
index 6cfe2dacec..399a93fcc7 100644
--- a/keyboards/hs60/v2/iso/rules.mk
+++ b/keyboards/hs60/v2/iso/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/hub16/rules.mk b/keyboards/hub16/rules.mk
index e3b8c7cb69..9b3be3a2c9 100755
--- a/keyboards/hub16/rules.mk
+++ b/keyboards/hub16/rules.mk
@@ -5,16 +5,15 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
+# change yes to no to disable
+#
CUSTOM_MATRIX = lite # Custom scanning of matrix
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hub20/rules.mk b/keyboards/hub20/rules.mk
index 853f006e0c..96702a3a76 100644
--- a/keyboards/hub20/rules.mk
+++ b/keyboards/hub20/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ianklug/grooveboard/rules.mk b/keyboards/ianklug/grooveboard/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/ianklug/grooveboard/rules.mk
+++ b/keyboards/ianklug/grooveboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
index 323a834c53..8acd50a10f 100644
--- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
+++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = no # Enable rotary encoder support
diff --git a/keyboards/id67/config.h b/keyboards/id67/default_rgb/config.h
index fbf99cf673..fbf99cf673 100644
--- a/keyboards/id67/config.h
+++ b/keyboards/id67/default_rgb/config.h
diff --git a/keyboards/id67/default_rgb/default_rgb.c b/keyboards/id67/default_rgb/default_rgb.c
new file mode 100644
index 0000000000..972b0b8b06
--- /dev/null
+++ b/keyboards/id67/default_rgb/default_rgb.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Tybera
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "default_rgb.h"
diff --git a/keyboards/id67/id67.h b/keyboards/id67/default_rgb/default_rgb.h
index 7c0a6d5aa8..7c0a6d5aa8 100644
--- a/keyboards/id67/id67.h
+++ b/keyboards/id67/default_rgb/default_rgb.h
diff --git a/keyboards/id67/info.json b/keyboards/id67/default_rgb/info.json
index f3114121c1..f3114121c1 100644
--- a/keyboards/id67/info.json
+++ b/keyboards/id67/default_rgb/info.json
diff --git a/keyboards/id67/default_rgb/readme.md b/keyboards/id67/default_rgb/readme.md
new file mode 100644
index 0000000000..9559384f1e
--- /dev/null
+++ b/keyboards/id67/default_rgb/readme.md
@@ -0,0 +1,19 @@
+# IDOBAO ID67
+
+A 65% hotswap keyboard from IDOBAO.
+
+## ANSI support:
+
+* Keyboard Maintainer: Tybera
+* Hardware Supported: IDOBAO ID67
+* Hardware Availability: [IDOBAO](https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make id67/default_rgb:default
+
+Flashing example for this keyboard:
+
+ make id67/default_rgb:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/id67/default_rgb/rules.mk b/keyboards/id67/default_rgb/rules.mk
new file mode 100644
index 0000000000..574f0067fb
--- /dev/null
+++ b/keyboards/id67/default_rgb/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+KEY_LOCK_ENABLE = yes # Enable KC_LOCK support
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/id67/id67.c b/keyboards/id67/id67.c
deleted file mode 100644
index d0377a4345..0000000000
--- a/keyboards/id67/id67.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Tybera
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "id67.h" \ No newline at end of file
diff --git a/keyboards/id67/readme.md b/keyboards/id67/readme.md
index eca398184a..7949ee1af2 100644
--- a/keyboards/id67/readme.md
+++ b/keyboards/id67/readme.md
@@ -6,14 +6,24 @@ A 65% hotswap keyboard from IDOBAO.
* Keyboard Maintainer: Tybera
* Hardware Supported: IDOBAO ID67
-* Hardware Availability: [IDOBAO]https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1
+* Hardware Availability: [IDOBAO](https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1)
-Make example for this keyboard (after setting up your build environment):
+## Variants
- make id67:default
+Currently there are two variants for the id67:
+1. `rgb_default` which uses the `RGB Lightning` feature for the on-board LEDs.
+2. `rgb` which uses the more advanced `RGB Matrix` feature for the per-key and underglow (bottom of PCB) LEDs.
-Flashing example for this keyboard:
+Make examples for this keyboard (after setting up your build environment):
- make id67:default:flash
+ make id67/default_rgb:default
+
+ make id67/rgb:default
+
+Flashing examples for this keyboard:
+
+ make id67/default_rgb:default:flash
+
+ make id67/rgb:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/id67/rgb/config.h b/keyboards/id67/rgb/config.h
new file mode 100644
index 0000000000..be6594b0c1
--- /dev/null
+++ b/keyboards/id67/rgb/config.h
@@ -0,0 +1,120 @@
+/* Copyright 2021 Tybera
+ * Copyright 2021 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6964 /* "id" */
+#define PRODUCT_ID 0x0067
+#define DEVICE_VER 0x0001
+#define MANUFACTURER IDOBAO
+#define PRODUCT ID67
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, F7 }
+#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, B7, D5, D1, D2, D3, D4, D0, D6, D7, B4 }
+
+#define DIODE_DIRECTION COL2ROW
+#define RGB_DI_PIN F0
+
+// RGB Light config
+#if defined(RGBLIGHT_ENABLE)
+ #define RGBLED_NUM 77
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+ #define RGBLIGHT_ANIMATIONS
+// /*== or choose animations ==*/
+// #define RGBLIGHT_EFFECT_BREATHING
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+// #define RGBLIGHT_EFFECT_SNAKE
+// #define RGBLIGHT_EFFECT_KNIGHT
+// #define RGBLIGHT_EFFECT_CHRISTMAS
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+#endif
+
+// RGB Matrix config
+#if defined(RGB_MATRIX_ENABLE)
+ #define DRIVER_LED_TOTAL 77
+ #define DRIVER_LED_UNDERGLOW 10
+
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+
+ #define RGB_MATRIX_KEYPRESSES
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
+ #define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+ #define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
+ #define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+ #define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+ #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+ #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+ #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+ #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+ #define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+ #define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE// Pulses keys hit to hue & value then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
+ #define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
+#endif // #if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
+#endif // #if defined(RGB_MATRIX_ENABLE)
diff --git a/keyboards/id67/rgb/info.json b/keyboards/id67/rgb/info.json
new file mode 100644
index 0000000000..774d913413
--- /dev/null
+++ b/keyboards/id67/rgb/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "ID67 RGB Matrix variant",
+ "url": "",
+ "maintainer": "qmk",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_65_ansi_blocker"
+ },
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"label":"K00 (B0,C7)", "x":0, "y":0},
+ {"label":"K01 (B0,F6)", "x":1, "y":0},
+ {"label":"K02 (B0,F5)", "x":2, "y":0},
+ {"label":"K03 (B0,F4)", "x":3, "y":0},
+ {"label":"K04 (B0,F1)", "x":4, "y":0},
+ {"label":"K05 (B0,B7)", "x":5, "y":0},
+ {"label":"K06 (B0,D5)", "x":6, "y":0},
+ {"label":"K07 (B0,D1)", "x":7, "y":0},
+ {"label":"K08 (B0,D2)", "x":8, "y":0},
+ {"label":"K09 (B0,D3)", "x":9, "y":0},
+ {"label":"K0A (B0,D4)", "x":10, "y":0},
+ {"label":"K0B (B0,D0)", "x":11, "y":0},
+ {"label":"K0C (B0,D6)", "x":12, "y":0},
+ {"label":"K0D (B0,D7)", "x":13, "y":0, "w":2},
+ {"label":"K0E (B0,B4)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C7)", "x":0, "y":1, "w":1.5},
+ {"label":"K11 (B1,F6)", "x":1.5, "y":1},
+ {"label":"K12 (B1,F5)", "x":2.5, "y":1},
+ {"label":"K13 (B1,F4)", "x":3.5, "y":1},
+ {"label":"K14 (B1,F1)", "x":4.5, "y":1},
+ {"label":"K15 (B1,B7)", "x":5.5, "y":1},
+ {"label":"K16 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K17 (B1,D1)", "x":7.5, "y":1},
+ {"label":"K18 (B1,D2)", "x":8.5, "y":1},
+ {"label":"K19 (B1,D3)", "x":9.5, "y":1},
+ {"label":"K1A (B1,D4)", "x":10.5, "y":1},
+ {"label":"K1B (B1,D0)", "x":11.5, "y":1},
+ {"label":"K1C (B1,D6)", "x":12.5, "y":1},
+ {"label":"K1D (B1,D7)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E (B1,B4)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C7)", "x":0, "y":2, "w":1.75},
+ {"label":"K21 (B2,F6)", "x":1.75, "y":2},
+ {"label":"K22 (B2,F5)", "x":2.75, "y":2},
+ {"label":"K23 (B2,F4)", "x":3.75, "y":2},
+ {"label":"K24 (B2,F1)", "x":4.75, "y":2},
+ {"label":"K25 (B2,B7)", "x":5.75, "y":2},
+ {"label":"K26 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K27 (B2,D1)", "x":7.75, "y":2},
+ {"label":"K28 (B2,D2)", "x":8.75, "y":2},
+ {"label":"K29 (B2,D3)", "x":9.75, "y":2},
+ {"label":"K2A (B2,D4)", "x":10.75, "y":2},
+ {"label":"K2B (B2,D0)", "x":11.75, "y":2},
+ {"label":"K2D (B2,D7)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2E (B2,B4)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C7)", "x":0, "y":3, "w":2.25},
+ {"label":"K32 (B3,F5)", "x":2.25, "y":3},
+ {"label":"K33 (B3,F4)", "x":3.25, "y":3},
+ {"label":"K34 (B3,F1)", "x":4.25, "y":3},
+ {"label":"K35 (B3,B7)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D5)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D1)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D2)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D3)", "x":9.25, "y":3},
+ {"label":"K3A (B3,D4)", "x":10.25, "y":3},
+ {"label":"K3B (B3,D0)", "x":11.25, "y":3},
+ {"label":"K3C (B3,D6)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3D (B3,D7)", "x":14, "y":3},
+ {"label":"K3E (B3,B4)", "x":15, "y":3},
+
+ {"label":"K40 (F7,C7)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (F7,F6)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (F7,F4)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (F7,D5)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (F7,D4)", "x":10, "y":4, "w":1.25},
+ {"label":"K4B (F7,D0)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4C (F7,D6)", "x":13, "y":4},
+ {"label":"K4D (F7,D7)", "x":14, "y":4},
+ {"label":"K4E (F7,B4)", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/id67/rgb/keymaps/default/keymap.c b/keyboards/id67/rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..450550e12a
--- /dev/null
+++ b/keyboards/id67/rgb/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Tybera
+ * Copyright 2022 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TILD,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______,
+ _______, RESET, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/id67/rgb/keymaps/thewerther/config.h b/keyboards/id67/rgb/keymaps/thewerther/config.h
new file mode 100644
index 0000000000..539e3bbb41
--- /dev/null
+++ b/keyboards/id67/rgb/keymaps/thewerther/config.h
@@ -0,0 +1,95 @@
+/* Copyright 2021 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DRIVER_LED_UNDERGLOW 10
+#define TAPPING_TERM 500
+
+#if defined(RGB_MATRIX_ENABLE)
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+ #undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+
+ // change saturation and hue step size
+ #undef RGBLIGHT_HUE_STEP
+ #undef RGBLIGHT_SAT_STEP
+ #define RGBLIGHT_SAT_STEP 5
+ #define RGBLIGHT_HUE_STEP 5
+
+ #define RGB_MATRIX_KEYPRESSES
+
+ // disable effects from keyboard level config.h
+ #undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #undef ENABLE_RGB_MATRIX_BREATHING
+ #undef ENABLE_RGB_MATRIX_BAND_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_VAL
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+ #undef ENABLE_RGB_MATRIX_CYCLE_ALL
+ #undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #undef ENABLE_RGB_MATRIX_DUAL_BEACON
+ #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #undef ENABLE_RGB_MATRIX_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_HUE_BREATHING
+ #undef ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+ #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #undef ENABLE_RGB_MATRIX_SPLASH
+ #undef ENABLE_RGB_MATRIX_MULTISPLASH
+ #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+ // only enable a few
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+
+#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE// Pulses keys hit to hue & value then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
+#endif // # if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES)
+#endif // # if defined(RGB_MATRIX_ENABLE)
+
diff --git a/keyboards/id67/rgb/keymaps/thewerther/keymap.c b/keyboards/id67/rgb/keymaps/thewerther/keymap.c
new file mode 100644
index 0000000000..8af720755f
--- /dev/null
+++ b/keyboards/id67/rgb/keymaps/thewerther/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Tybera
+ * Copyright 2021 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_RALT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, LT(1, KC_SPC), MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_PGDN, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, RESET, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
+
+void matrix_scan_user(void) {
+# if defined(RGB_MATRIX_ENABLE)
+ int current_effect = rgb_matrix_get_mode();
+ if (current_effect >= RGB_MATRIX_SOLID_REACTIVE_SIMPLE && current_effect <= RGB_MATRIX_SOLID_MULTISPLASH) {
+ // set all underglow leds to current color
+ RGB current_color = hsv_to_rgb(rgb_matrix_get_hsv());
+ for (int i = DRIVER_LED_TOTAL - DRIVER_LED_UNDERGLOW; i < DRIVER_LED_TOTAL; i++) {
+ rgb_matrix_set_color(i, current_color.r, current_color.g, current_color.b);
+ }
+ }
+# endif
+}
+
diff --git a/keyboards/id67/rgb/keymaps/thewerther/rules.mk b/keyboards/id67/rgb/keymaps/thewerther/rules.mk
new file mode 100644
index 0000000000..acd3adaa9a
--- /dev/null
+++ b/keyboards/id67/rgb/keymaps/thewerther/rules.mk
@@ -0,0 +1,2 @@
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
diff --git a/keyboards/id67/rgb/readme.md b/keyboards/id67/rgb/readme.md
new file mode 100644
index 0000000000..8376af1468
--- /dev/null
+++ b/keyboards/id67/rgb/readme.md
@@ -0,0 +1,36 @@
+# IDOBAO ID67
+
+![id67](https://i.imgur.com/9roQ4Mih.jpeg)
+
+A 65% hotswap keyboard from IDOBAO.
+
+## ANSI support:
+
+* Keyboard Maintainer: Tybera
+* Hardware Supported: IDOBAO ID67
+* Hardware Availability: [IDOBAO-website](https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1)
+
+## Layout
+
+![ID67 layout](https://i.imgur.com/Ge6Uxao.png)
+
+
+## Compiling and flashing
+
+Make example for this keyboard (after setting up your build environment):
+
+ make id67/rgb:default
+
+Flashing example for this keyboard:
+
+ make id67/rgb:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the `Escape` key and plug in the keyboard.
+* **Physical reset button**: Briefly press the button on the back of the PCB.
+* **Keycode in layout**: Press the key mapped to `RESET` (FN+Z).
diff --git a/keyboards/id67/rgb/rgb.c b/keyboards/id67/rgb/rgb.c
new file mode 100644
index 0000000000..5fc007d19a
--- /dev/null
+++ b/keyboards/id67/rgb/rgb.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Tybera
+ * Copyright 2021 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rgb.h"
+
+#define __ NO_LED
+
+// Indices are reveresed on the physical board, top left is bottom right.
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ {66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52},
+ {51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37},
+ {36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, __, 24, 23},
+ {22, __, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9},
+ { 8, 7, __, 6, __, __, 5, __, __, __, 4, 3, 2, 1, 0},
+}, {
+ // LED Index to Physical Position
+ {224, 64}, {196, 64}, {168, 64}, {140, 64}, {112, 64}, {84, 64}, {56, 64}, {28, 64}, {0, 64},
+ {224, 48}, {206, 48}, {189, 48}, {172, 48}, {155, 48}, {137, 48}, {120, 48}, {103, 48}, {86, 48}, {68, 48}, {51, 48}, {34, 48}, {17, 48}, {0, 48},
+ {224, 32}, {206, 32}, {189, 32}, {172, 32}, {155, 32}, {137, 32}, {120, 32}, {103, 32}, {86, 32}, {68, 32}, {51, 32}, {34, 32}, {17, 32}, {0, 32},
+ {224, 16}, {208, 16}, {192, 16}, {176, 16}, {160, 16}, {144, 16}, {128, 16}, {112, 16}, {96, 16}, {80, 16}, {64, 16}, {48, 16}, {32, 16}, {16, 16}, {0, 16},
+ {224, 0}, {208, 0}, {192, 0}, {176, 0}, {160, 0}, {144, 0}, {128, 0}, {112, 0}, {96, 0}, {80, 0}, {64, 0}, {48, 0}, {32, 0}, {16, 0}, {0, 0},
+ // underglow LEDs
+ {0, 0}, {56, 0}, {112, 0}, {168, 0}, {224, 0},
+ {224, 64}, {168, 64}, {112, 64}, {56, 64}, {0, 64}
+}, {
+ // LED Index to Flag
+ 4, 4, 4, 1, 1, 4, 1, 1, 1, // first row
+ 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // second row
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // third row
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // fourth row
+ 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // fifth row
+ // underglow leds
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
diff --git a/keyboards/id67/rgb/rgb.h b/keyboards/id67/rgb/rgb.h
new file mode 100644
index 0000000000..cca757bfc7
--- /dev/null
+++ b/keyboards/id67/rgb/rgb.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Tybera
+ * Copyright 2021 thewerther
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
diff --git a/keyboards/id67/rgb/rules.mk b/keyboards/id67/rgb/rules.mk
new file mode 100644
index 0000000000..5ebc2b824a
--- /dev/null
+++ b/keyboards/id67/rgb/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes # Enable RGB Matrix feature
+RGB_MATRIX_DRIVER = WS2812 # ID67 uses WS2812 driver
+
+KEY_LOCK_ENABLE = yes # Enable KC_LOCK support
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/id67/rules.mk b/keyboards/id67/rules.mk
deleted file mode 100644
index bf105353e1..0000000000
--- a/keyboards/id67/rules.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
-KEY_LOCK_ENABLE = yes # Enable KC_LOCK support
-
-LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/id80/rules.mk b/keyboards/id80/rules.mk
index 7ff53f51f1..eea8b69900 100644
--- a/keyboards/id80/rules.mk
+++ b/keyboards/id80/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/id87/rules.mk b/keyboards/id87/rules.mk
index 21c6980ad4..5009fceaf9 100644
--- a/keyboards/id87/rules.mk
+++ b/keyboards/id87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/idb/idb_60/rules.mk b/keyboards/idb/idb_60/rules.mk
index 47102bc8e1..6862c48e49 100644
--- a/keyboards/idb/idb_60/rules.mk
+++ b/keyboards/idb/idb_60/rules.mk
@@ -5,12 +5,12 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# Comment out to disable the options.
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/idobao/id75/v2/config.h b/keyboards/idobao/id75/v2/config.h
new file mode 100644
index 0000000000..c2b64649cb
--- /dev/null
+++ b/keyboards/idobao/id75/v2/config.h
@@ -0,0 +1,152 @@
+/* Copyright 2022 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6964 // ID
+#define PRODUCT_ID 0x0075
+#define DEVICE_VER 0x0002
+#define MANUFACTURER IDOBAO
+#define PRODUCT ID75
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B0, B3, C7, B6, C6 }
+#define MATRIX_COL_PINS { F6, F5, F4, F1, E6, D5, D3, D2, D1, D0, D4, D6, D7, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#undef RGB_DI_PIN
+#define RGB_DI_PIN F0
+#ifdef RGB_MATRIX_ENABLE
+# define DRIVER_LED_TOTAL 85 /* 10 Bottom 75 top*/
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_KEYPRESSES
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/idobao/id75/v2/info.json b/keyboards/idobao/id75/v2/info.json
new file mode 100644
index 0000000000..fe24920f81
--- /dev/null
+++ b/keyboards/idobao/id75/v2/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "idobao/id75/v2",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_ortho_5x15": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/idobao/id75/v2/readme.md b/keyboards/idobao/id75/v2/readme.md
new file mode 100644
index 0000000000..76a94ae38c
--- /dev/null
+++ b/keyboards/idobao/id75/v2/readme.md
@@ -0,0 +1,27 @@
+# ID75 v2
+
+![ID75 v2](https://i.imgur.com/KdAjS5f.jpg)
+
+A 5x15 ortholinear keyboard with hotswap sockets and north facing in switch RGB LEDs and RGB underglow
+
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
+* Hardware Supported: ID75 v2
+* Hardware Availability: https://idobao.net/products/idobao-id75-crystal-hot-swap-keyboard-kit?_pos=1&_sid=8758d3561&_ss=r
+
+Make example for this keyboard (after setting up your build environment):
+
+ make idobao/id75/v2:default
+
+Flashing example for this keyboard:
+
+ make idobao/id75/v2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/idobao/id75/v2/rules.mk b/keyboards/idobao/id75/v2/rules.mk
new file mode 100644
index 0000000000..303a814c3a
--- /dev/null
+++ b/keyboards/idobao/id75/v2/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes # Use link time optimization
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LAYOUTS = ortho_5x15
diff --git a/keyboards/idobao/id75/v2/v2.c b/keyboards/idobao/id75/v2/v2.c
new file mode 100644
index 0000000000..f65a9e3362
--- /dev/null
+++ b/keyboards/idobao/id75/v2/v2.c
@@ -0,0 +1,49 @@
+/* Copyright 2022 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "v2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+{ 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70 },
+{ 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55 },
+{ 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40 },
+{ 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25 },
+{ 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10 }
+}, {
+ // LED Index to Physical Position
+{8, 12},{60, 12},{112, 12},{164, 12},{216, 12},
+{216, 60},{164, 60},{112, 60},{60, 60},{8, 60},
+
+
+{224, 64}, {208, 64}, {192, 64}, {176, 64}, {160, 64}, {144, 64}, {128, 64}, {112, 64}, {96, 64}, {80, 64}, {64, 64}, {48, 64}, {32, 64}, {16, 64}, {0, 64},
+{224, 48}, {208, 48}, {192, 48}, {176, 48}, {160, 48}, {144, 48}, {128, 48}, {112, 48}, {96, 48}, {80, 48}, {64, 48}, {48, 48}, {32, 48}, {16, 48}, {0, 48},
+{224, 32}, {208, 32}, {192, 32}, {176, 32}, {160, 32}, {144, 32}, {128, 32}, {112, 32}, {96, 32}, {80, 32}, {64, 32}, {48, 32}, {32, 32}, {16, 32}, {0, 32},
+{224, 16}, {208, 16}, {192, 16}, {176, 16}, {160, 16}, {144, 16}, {128, 16}, {112, 16}, {96, 16}, {80, 16}, {64, 16}, {48, 16}, {32, 16}, {16, 16}, {0, 16},
+{224, 0}, {208, 0}, {192, 0}, {176, 0}, {160, 0}, {144, 0}, {128, 0}, {112, 0}, {96, 0}, {80, 0}, {64, 0}, {48, 0}, {32, 0}, {16, 0}, {0, 0},
+
+}, {
+ // LED Index to Flag
+2,2,2,2,2,2,2,2,2,2,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+
+} };
+
+#endif
diff --git a/keyboards/idobao/id75/v2/v2.h b/keyboards/idobao/id75/v2/v2.h
new file mode 100644
index 0000000000..9643a1efd3
--- /dev/null
+++ b/keyboards/idobao/id75/v2/v2.h
@@ -0,0 +1,41 @@
+/* Copyright 2018 MechMerlin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_5x15( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E } \
+}
diff --git a/keyboards/idobao/id80/v3/config.h b/keyboards/idobao/id80/v3/config.h
new file mode 100644
index 0000000000..06ca74a0e9
--- /dev/null
+++ b/keyboards/idobao/id80/v3/config.h
@@ -0,0 +1,135 @@
+/*
+Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
+Copyright 2022 peepeetee
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6964 /* "id" */
+#define PRODUCT_ID 0x0080
+#define DEVICE_VER 0x0003
+#define MANUFACTURER IDOBAO
+#define PRODUCT ID80 v3
+
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 11
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ * The matrix description in the vendor-supplied JSON file for kbfirmware.com
+ * had 9 columns:
+ * { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
+ * and 12 rows:
+ * { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
+ * However, the row 6 was completely empty, and the pin F0 was not actually
+ * routed anywhere on the PCB, therefore this row was removed to save some
+ * resources (the EEPROM space for dynamic keymaps is especially scarce).
+ *
+ * After doing the above change, the matrix was transposed (rows and columns
+ * were swapped), because a matrix with the COL2ROW layout can be scanned much
+ * more efficiently than a matrix with the ROW2COL layout (depending on various
+ * optimizations, the difference in scan rate can be over 2 times). Because of
+ * this, the "columns" in the matrix layout now mostly correspond to physical
+ * rows, and the "rows" have mostly vertical physical orientation.
+ */
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
+#define MATRIX_COL_PINS { B7, B3, B2, B1, B0, E6, F1, F4, F5, F6, F7 }
+
+#define DIODE_DIRECTION COL2ROW
+
+
+#define RGB_DI_PIN B6
+# define DRIVER_LED_TOTAL 96 /* 16 Bottom 80 top*/
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 96 /* 16 Bottom 80 top*/
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+#endif
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_KEYPRESSES
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+/* Bootmagic Lite key configuration: use the Esc key */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 5
+
+#define ENCODERS_PAD_A { C7 }
+#define ENCODERS_PAD_B { C6 }
+
+
+
+
diff --git a/keyboards/idobao/id80/v3/info.json b/keyboards/idobao/id80/v3/info.json
new file mode 100644
index 0000000000..0dc8efaf02
--- /dev/null
+++ b/keyboards/idobao/id80/v3/info.json
@@ -0,0 +1,96 @@
+{
+ "keyboard_name": "ID80 v3",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Fn", "x":14, "y":0},
+ {"label":"Insert", "x":15.25, "y":0},
+
+ {"label":"`", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Home", "x":15.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.5},
+ {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":13.25, "y":5.5},
+ {"label":"\u2193", "x":14.25, "y":5.5},
+ {"label":"\u2192", "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/idobao/id80/v3/keymaps/default/keymap.c b/keyboards/idobao/id80/v3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..697c4b9189
--- /dev/null
+++ b/keyboards/idobao/id80/v3/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
+ _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
+ ),
+};
+
diff --git a/keyboards/idobao/id80/v3/keymaps/default/readme.md b/keyboards/idobao/id80/v3/keymaps/default/readme.md
new file mode 100644
index 0000000000..8ae9f656cd
--- /dev/null
+++ b/keyboards/idobao/id80/v3/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for id80
diff --git a/keyboards/idobao/id80/v3/keymaps/via/keymap.c b/keyboards/idobao/id80/v3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1f37572503
--- /dev/null
+++ b/keyboards/idobao/id80/v3/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
+ _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/idobao/id80/v3/keymaps/via/rules.mk b/keyboards/idobao/id80/v3/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/idobao/id80/v3/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id80/v3/readme.md b/keyboards/idobao/id80/v3/readme.md
new file mode 100644
index 0000000000..dc6c67b4f4
--- /dev/null
+++ b/keyboards/idobao/id80/v3/readme.md
@@ -0,0 +1,27 @@
+# ID80v3
+
+![ID80v3](https://i.imgur.com/PGvZfQj.jpg)
+
+A 75% hotswap in-switch RGB keyboard with an encoder.
+
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
+* Hardware Supported: ID80v3
+* Hardware Availability: Not avaliable yet
+
+Make example for this keyboard (after setting up your build environment):
+
+ make idobao/id80/v3:default
+
+Flashing example for this keyboard:
+
+ make idobao/id80/v3:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/idobao/id80/v3/rules.mk b/keyboards/idobao/id80/v3/rules.mk
new file mode 100644
index 0000000000..49781db616
--- /dev/null
+++ b/keyboards/idobao/id80/v3/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/idobao/id80/v3/v3.c b/keyboards/idobao/id80/v3/v3.c
new file mode 100644
index 0000000000..cd05a26a49
--- /dev/null
+++ b/keyboards/idobao/id80/v3/v3.c
@@ -0,0 +1,62 @@
+// Copyright 2022 peepeetee (@peepeetee)
+// Copyright 2022 Xelus22
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "v3.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 8, 9, 34, 35, 64, 65, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 7, NO_LED, 33, 36, 63, 66, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 6, 10, 32, 37, 62, 67, NO_LED, NO_LED, 49, 50, 79 },
+ { 0, 11, 31, 38, 61, 68, 21, NO_LED, 48, NO_LED, 77 },
+ { 1, 12, 30, 39, 60, 69, 20, 22, 47, 52, 76 },
+ { 2, 13, 29, 40, 59, 70, 19, 23, 46, 53, 75 },
+ { 5, 14, 28, 41, 58, 71, NO_LED, NO_LED, NO_LED, 51, 78 },
+ { 3, 15, 27, 42, 57, 72, 18, 24, 45, 54, 74 },
+ { 4, 16, 26, 43, 56, 73, 17, 25, 44, 55, NO_LED },
+}, {
+ // LED Index to Physical Position
+{224, 64}, {209, 64}, {195, 64}, {173, 61}, {151, 61}, {94 , 61}, {39 , 61}, {20 , 61}, {2 , 61}, {9 , 50}, {33 , 50},
+{48 , 50}, {62 , 50}, {77 , 50}, {92 , 50}, {106, 50}, {121, 50}, {136, 50}, {151, 50}, {165, 50}, {185, 50}, {209, 53},
+{196, 39}, {173, 39}, {158, 39}, {143, 39}, {129, 39}, {114, 39}, {99 , 39}, {84 , 39}, {70 , 39}, {55 , 39}, {40 , 39},
+{26 , 39}, {6 , 39}, {4 , 28}, {22 , 28}, {37 , 28}, {51 , 28}, {66 , 28}, {81 , 28}, {95 , 28}, {110, 28}, {125, 28},
+{140, 28}, {154, 28}, {169, 28}, {184, 28}, {202, 28}, {224, 28}, {224, 17}, {198, 17}, {176, 17}, {162, 17}, {147, 17},
+{132, 17}, {118, 17}, {103, 17}, {88 , 17}, {73 , 17}, {59 , 17}, {44 , 17}, {29 , 17}, {15 , 17}, {0 , 17}, {0 , 0},
+{18 , 0}, {33 , 0}, {48 , 0}, {62 , 0}, {81 , 0}, {95 , 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0},
+{187, 0}, {206, 0}, {224, 0},
+
+{ 207, 13},
+{ 207, 32},
+{ 207, 51},{ 174, 51},{ 141, 51},{ 108, 51},{ 73, 51},{ 40, 51},{ 13, 51 },
+{ 13, 32},
+{ 13, 13},{ 40, 13},{ 73, 13},{ 108, 13},{ 141, 13},{ 174, 13},
+
+}, {
+ // LED Index to Flag
+1,1,1,1,1,4,1,1,1,
+1,4,4,4,4,4,4,4,4,4,4,1,1,
+1,4,4,4,4,4,4,4,4,4,4,4,1,
+1,4,4,4,4,4,4,4,4,4,4,4,4,4,1,
+1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,
+1,4,4,4,4,1,1,1,1,4,4,4,4,1,1,
+2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+
+} };
+
+#endif
diff --git a/keyboards/idobao/id80/v3/v3.h b/keyboards/idobao/id80/v3/v3.h
new file mode 100644
index 0000000000..94626fe4f6
--- /dev/null
+++ b/keyboards/idobao/id80/v3/v3.h
@@ -0,0 +1,37 @@
+/* Copyright 2020 Sergey Vlasov <sigprof@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K50, K51, K52, K53, K54, K55, K56, K57, K58, KA7, KA5, KA4, KA3, KA6, KA2, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K98, K97, K95, K94, K96, K92, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K88, K87, K85, K84, K83, K82, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K78, K77, K75, K74, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K68, K67, K65, K64, K63, \
+ K00, K01, K02, K06, K08, K07, K05, K04, K03 \
+) { \
+ { K00, K10, K20, K30, K40, K50, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K01, KC_NO, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K02, K12, K22, K32, K42, K52, KC_NO, KC_NO, K82, K92, KA2 }, \
+ { K03, K13, K23, K33, K43, K53, K63, KC_NO, K83, KC_NO, KA3 }, \
+ { K04, K14, K24, K34, K44, K54, K64, K74, K84, K94, KA4 }, \
+ { K05, K15, K25, K35, K45, K55, K65, K75, K85, K95, KA5 }, \
+ { K06, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, K96, KA6 }, \
+ { K07, K17, K27, K37, K47, K57, K67, K77, K87, K97, KA7 }, \
+ { K08, K18, K28, K38, K48, K58, K68, K78, K88, K98, KC_NO }, \
+}
diff --git a/keyboards/idobao/id96/rules.mk b/keyboards/idobao/id96/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/idobao/id96/rules.mk
+++ b/keyboards/idobao/id96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/idobo/keymaps/default/config.h b/keyboards/idobo/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/idobo/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/idobo/keymaps/default/keymap.c b/keyboards/idobo/keymaps/default/keymap.c
index 1aadfb4529..6c0c09804d 100644
--- a/keyboards/idobo/keymaps/default/keymap.c
+++ b/keyboards/idobo/keymaps/default/keymap.c
@@ -22,12 +22,12 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ortho_5x15( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT_ortho_5x15(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/idobo/keymaps/default75/config.h b/keyboards/idobo/keymaps/default75/config.h
deleted file mode 100644
index 17c7addb38..0000000000
--- a/keyboards/idobo/keymaps/default75/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/idobo/keymaps/default75/keymap.c b/keyboards/idobo/keymaps/default75/keymap.c
index d607e11f66..8d8ae4414c 100644
--- a/keyboards/idobo/keymaps/default75/keymap.c
+++ b/keyboards/idobo/keymaps/default75/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_QW] = LAYOUT_ortho_5x15( /* QWERTY */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_UP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_RGUI, KC_RCTL \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_GRV, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_BSLS, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_DEL, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_UP, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_RGUI, KC_RCTL
),
/* FUNCTION
@@ -58,10 +58,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NLCK, KC_SLSH, KC_ASTR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_MSEL, KC_CALC, KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_P7, KC_P8, KC_P9, KC_MINS, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, RESET, _______, _______, _______, \
- KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, RGB_VAD, RGB_VAI, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______, \
- _______, _______, RGB_TOG, MO(_FN), RGB_RMOD,RGB_MOD, KC_P0, _______, KC_PDOT, KC_PENT, KC_PENT, MO(_FN), _______, _______, _______ \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_NLCK, KC_SLSH, KC_ASTR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_MSEL, KC_CALC, KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_P7, KC_P8, KC_P9, KC_MINS, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, RESET, _______, _______, _______,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, RGB_VAD, RGB_VAI, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, MO(_FN), RGB_RMOD,RGB_MOD, KC_P0, _______, KC_PDOT, KC_PENT, KC_PENT, MO(_FN), _______, _______, _______
),
};
diff --git a/keyboards/idobo/rules.mk b/keyboards/idobo/rules.mk
index d8a55ed135..721b7f5606 100644
--- a/keyboards/idobo/rules.mk
+++ b/keyboards/idobo/rules.mk
@@ -12,13 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto # Use link time optimization
+LTO_ENABLE = yes # Use link time optimization
LAYOUTS = ortho_5x15
diff --git a/keyboards/illuminati/is0/rules.mk b/keyboards/illuminati/is0/rules.mk
index 7d36ae3c45..9d7635000a 100644
--- a/keyboards/illuminati/is0/rules.mk
+++ b/keyboards/illuminati/is0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/illusion/rosa/rules.mk b/keyboards/illusion/rosa/rules.mk
index 95a41885b1..a8fae8605e 100644
--- a/keyboards/illusion/rosa/rules.mk
+++ b/keyboards/illusion/rosa/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ilumkb/primus75/rules.mk b/keyboards/ilumkb/primus75/rules.mk
index 5f180ae00d..1c4073c9ce 100644
--- a/keyboards/ilumkb/primus75/rules.mk
+++ b/keyboards/ilumkb/primus75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ilumkb/simpler61/config.h b/keyboards/ilumkb/simpler61/config.h
new file mode 100644
index 0000000000..1efdb1af25
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/config.h
@@ -0,0 +1,104 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xC3C3
+#define PRODUCT_ID 0xC361
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Equalz
+#define PRODUCT Simpler
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { F6, F5, F4, F1, F0 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 3
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_LED_PROCESS_LIMIT 4
+#define RGB_MATRIX_LED_FLUSH_LIMIT 26
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define DRIVER_ADDR_1 0b0110000
+#define DRIVER_COUNT 1
+#define DRIVER_1_LED_TOTAL 61
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_INDICATOR_LED_TOTAL 0
+
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// # define ENABLE_RGB_MATRIX_SPLASH
+// # define ENABLE_RGB_MATRIX_MULTISPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/ilumkb/simpler61/info.json b/keyboards/ilumkb/simpler61/info.json
new file mode 100644
index 0000000000..01dc02797f
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/info.json
@@ -0,0 +1,76 @@
+{
+ "keyboard_name": "Simpler61",
+ "url": "",
+ "maintainer": "Equalz",
+ "layouts": {
+ "LAYOUT_61_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":7},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ilumkb/simpler61/keymaps/default/keymap.c b/keyboards/ilumkb/simpler61/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8e7fe51b99
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_61_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_61_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, RESET,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/ilumkb/simpler61/keymaps/via/keymap.c b/keyboards/ilumkb/simpler61/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c885617df0
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_61_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_61_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, RESET,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_61_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_61_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/ilumkb/simpler61/keymaps/via/rules.mk b/keyboards/ilumkb/simpler61/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ilumkb/simpler61/readme.md b/keyboards/ilumkb/simpler61/readme.md
new file mode 100644
index 0000000000..5721be617a
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/readme.md
@@ -0,0 +1,17 @@
+# iLumkb Simpler60% - 61 Keys Layout
+
+![iLumkb Simpler](https://i.imgur.com/QaalKfX.jpg)
+
+A hotswap 60% RGB Custom Mechanical keyboard.
+
+* Keyboard Maintainer: [Equalz](https://github.com/EqualzC3)
+* Hardware Supported: iLumkb Simpler61 (ATmega32U4)
+* Hardware Availability: [iLumkb](https://ilumkb.com/products/simpler60)
+
+Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ilumkb/simpler61:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ilumkb/simpler61/rules.mk b/keyboards/ilumkb/simpler61/rules.mk
new file mode 100644
index 0000000000..ab16f67c8d
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = IS31FL3741
diff --git a/keyboards/ilumkb/simpler61/simpler61.c b/keyboards/ilumkb/simpler61/simpler61.c
new file mode 100644
index 0000000000..20a40e9169
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/simpler61.c
@@ -0,0 +1,110 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "simpler61.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS3_SW1, CS2_SW1, CS1_SW1},
+ {0, CS3_SW2, CS2_SW2, CS1_SW2},
+ {0, CS3_SW3, CS2_SW3, CS1_SW3},
+ {0, CS3_SW4, CS2_SW4, CS1_SW4},
+ {0, CS3_SW5, CS2_SW5, CS1_SW5},
+ {0, CS3_SW6, CS2_SW6, CS1_SW6},
+ {0, CS3_SW7, CS2_SW7, CS1_SW7},
+ {0, CS3_SW8, CS2_SW8, CS1_SW8},
+ {0, CS3_SW9, CS2_SW9, CS1_SW9},
+ {0, CS18_SW9, CS17_SW9, CS16_SW9},
+ {0, CS18_SW8, CS17_SW8, CS16_SW8},
+ {0, CS18_SW7, CS17_SW7, CS16_SW7},
+ {0, CS18_SW6, CS17_SW6, CS16_SW6},
+ {0, CS18_SW5, CS17_SW5, CS16_SW5},
+
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {0, CS6_SW2, CS5_SW2, CS4_SW2},
+ {0, CS6_SW3, CS5_SW3, CS4_SW3},
+ {0, CS6_SW4, CS5_SW4, CS4_SW4},
+ {0, CS6_SW5, CS5_SW5, CS4_SW5},
+ {0, CS6_SW6, CS5_SW6, CS4_SW6},
+ {0, CS6_SW7, CS5_SW7, CS4_SW7},
+ {0, CS6_SW8, CS5_SW8, CS4_SW8},
+ {0, CS6_SW9, CS5_SW9, CS4_SW9},
+ {0, CS21_SW9, CS20_SW9, CS19_SW9},
+ {0, CS21_SW8, CS20_SW8, CS19_SW8},
+ {0, CS21_SW7, CS20_SW7, CS19_SW7},
+ {0, CS21_SW6, CS20_SW6, CS19_SW6},
+ {0, CS21_SW5, CS20_SW5, CS19_SW5},
+
+ {0, CS9_SW1, CS8_SW1, CS7_SW1},
+ {0, CS9_SW2, CS8_SW2, CS7_SW2},
+ {0, CS9_SW3, CS8_SW3, CS7_SW3},
+ {0, CS9_SW4, CS8_SW4, CS7_SW4},
+ {0, CS9_SW5, CS8_SW5, CS7_SW5},
+ {0, CS9_SW6, CS8_SW6, CS7_SW6},
+ {0, CS9_SW7, CS8_SW7, CS7_SW7},
+ {0, CS9_SW8, CS8_SW8, CS7_SW8},
+ {0, CS9_SW9, CS8_SW9, CS7_SW9},
+ {0, CS24_SW9, CS23_SW9, CS22_SW9},
+ {0, CS24_SW8, CS23_SW8, CS22_SW8},
+ {0, CS24_SW7, CS23_SW7, CS22_SW7},
+ {0, CS24_SW5, CS23_SW5, CS22_SW5},
+
+ {0, CS12_SW1, CS11_SW1, CS10_SW1},
+ {0, CS12_SW2, CS11_SW2, CS10_SW2},
+ {0, CS12_SW3, CS11_SW3, CS10_SW3},
+ {0, CS12_SW4, CS11_SW4, CS10_SW4},
+ {0, CS12_SW5, CS11_SW5, CS10_SW5},
+ {0, CS12_SW6, CS11_SW6, CS10_SW6},
+ {0, CS12_SW7, CS11_SW7, CS10_SW7},
+ {0, CS12_SW8, CS11_SW8, CS10_SW8},
+ {0, CS12_SW9, CS11_SW9, CS10_SW9},
+ {0, CS27_SW9, CS26_SW9, CS25_SW9},
+ {0, CS27_SW8, CS26_SW8, CS25_SW8},
+ {0, CS27_SW7, CS26_SW7, CS25_SW7},
+ {0, CS27_SW5, CS26_SW5, CS25_SW5},
+
+ {0, CS15_SW1, CS14_SW1, CS13_SW1},
+ {0, CS15_SW2, CS14_SW2, CS13_SW2},
+ {0, CS15_SW3, CS14_SW3, CS13_SW3},
+ {0, CS15_SW6, CS14_SW6, CS13_SW6},
+ {0, CS30_SW8, CS29_SW8, CS28_SW8},
+ {0, CS30_SW7, CS29_SW7, CS28_SW7},
+ {0, CS30_SW5, CS29_SW5, CS28_SW5},
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27},
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40},
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, NO_LED, 53},
+ { 54, 55, 56, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, NO_LED, 58, 59, NO_LED, 60},
+ }, {
+ {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {216, 0},
+ {4, 16}, {24, 16}, {40, 16}, {56, 16}, {72, 16}, {88, 16}, {104, 16}, {120, 16}, {136, 16}, {152, 16}, {168, 16}, {184, 16}, {200, 16}, {220, 16},
+ {2, 32}, {28, 32}, {44, 32}, {60, 32}, {76, 32}, {92, 32}, {108, 32}, {114, 32}, {130, 32}, {146, 32}, {162, 32}, {178, 32}, {204, 32},
+ {9, 48}, {36, 48}, {52, 48}, {68, 48}, {84, 48}, {100, 48}, {116, 48}, {132, 48}, {148, 48}, {164, 48}, {180, 48}, {202, 48}, {224, 48},
+ {4, 64}, {24, 64}, {44, 64}, {112, 64}, {180, 64}, {200, 64}, {220, 64},
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+
+#endif
diff --git a/keyboards/ilumkb/simpler61/simpler61.h b/keyboards/ilumkb/simpler61/simpler61.h
new file mode 100644
index 0000000000..afa308b12d
--- /dev/null
+++ b/keyboards/ilumkb/simpler61/simpler61.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_61_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K41, K42, K45, K4A, K4B, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, K4B, XXX, K4D } \
+}
diff --git a/keyboards/ilumkb/simpler64/config.h b/keyboards/ilumkb/simpler64/config.h
new file mode 100644
index 0000000000..179b98113b
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/config.h
@@ -0,0 +1,105 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xC3C3
+#define PRODUCT_ID 0xC364
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Equalz
+#define PRODUCT Simpler
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { F6, F5, F4, F1, F0 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 3
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_LED_PROCESS_LIMIT 4
+#define RGB_MATRIX_LED_FLUSH_LIMIT 26
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define DRIVER_ADDR_1 0b0110000
+#define DRIVER_COUNT 1
+#define DRIVER_1_LED_TOTAL 64
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define DRIVER_INDICATOR_LED_TOTAL 0
+
+
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// # define ENABLE_RGB_MATRIX_SPLASH
+// # define ENABLE_RGB_MATRIX_MULTISPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/ilumkb/simpler64/info.json b/keyboards/ilumkb/simpler64/info.json
new file mode 100644
index 0000000000..c0fd4800cc
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/info.json
@@ -0,0 +1,79 @@
+{
+ "keyboard_name": "Simpler64",
+ "url": "",
+ "maintainer": "Equalz",
+ "layouts": {
+ "LAYOUT_64_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":6, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/ilumkb/simpler64/keymaps/default/keymap.c b/keyboards/ilumkb/simpler64/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f3f83cc411
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_64_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_64_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, EEP_RST,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/ilumkb/simpler64/keymaps/via/keymap.c b/keyboards/ilumkb/simpler64/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f003f733b7
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_64_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_64_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, EEP_RST,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_64_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_64_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/ilumkb/simpler64/keymaps/via/rules.mk b/keyboards/ilumkb/simpler64/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ilumkb/simpler64/readme.md b/keyboards/ilumkb/simpler64/readme.md
new file mode 100644
index 0000000000..14cbb52ee6
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/readme.md
@@ -0,0 +1,17 @@
+# iLumkb Simpler60% - 64 Keys Layout
+
+![iLumkb Simpler](https://i.imgur.com/QaalKfX.jpg)
+
+A hotswap 60% RGB Custom Mechanical keyboard.
+
+* Keyboard Maintainer: [Equalz](https://github.com/EqualzC3)
+* Hardware Supported: iLumkb Simpler64 (ATmega32U4)
+* Hardware Availability: [iLumkb](https://ilumkb.com/products/simpler60)
+
+Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ilumkb/simpler64:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ilumkb/simpler64/rules.mk b/keyboards/ilumkb/simpler64/rules.mk
new file mode 100644
index 0000000000..ab16f67c8d
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = IS31FL3741
diff --git a/keyboards/ilumkb/simpler64/simpler64.c b/keyboards/ilumkb/simpler64/simpler64.c
new file mode 100644
index 0000000000..8ab72caaca
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/simpler64.c
@@ -0,0 +1,113 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "simpler64.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS3_SW1, CS2_SW1, CS1_SW1},
+ {0, CS3_SW2, CS2_SW2, CS1_SW2},
+ {0, CS3_SW3, CS2_SW3, CS1_SW3},
+ {0, CS3_SW4, CS2_SW4, CS1_SW4},
+ {0, CS3_SW5, CS2_SW5, CS1_SW5},
+ {0, CS3_SW6, CS2_SW6, CS1_SW6},
+ {0, CS3_SW7, CS2_SW7, CS1_SW7},
+ {0, CS3_SW8, CS2_SW8, CS1_SW8},
+ {0, CS3_SW9, CS2_SW9, CS1_SW9},
+ {0, CS18_SW9, CS17_SW9, CS16_SW9},
+ {0, CS18_SW8, CS17_SW8, CS16_SW8},
+ {0, CS18_SW7, CS17_SW7, CS16_SW7},
+ {0, CS18_SW6, CS17_SW6, CS16_SW6},
+ {0, CS18_SW5, CS17_SW5, CS16_SW5},
+
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {0, CS6_SW2, CS5_SW2, CS4_SW2},
+ {0, CS6_SW3, CS5_SW3, CS4_SW3},
+ {0, CS6_SW4, CS5_SW4, CS4_SW4},
+ {0, CS6_SW5, CS5_SW5, CS4_SW5},
+ {0, CS6_SW6, CS5_SW6, CS4_SW6},
+ {0, CS6_SW7, CS5_SW7, CS4_SW7},
+ {0, CS6_SW8, CS5_SW8, CS4_SW8},
+ {0, CS6_SW9, CS5_SW9, CS4_SW9},
+ {0, CS21_SW9, CS20_SW9, CS19_SW9},
+ {0, CS21_SW8, CS20_SW8, CS19_SW8},
+ {0, CS21_SW7, CS20_SW7, CS19_SW7},
+ {0, CS21_SW6, CS20_SW6, CS19_SW6},
+ {0, CS21_SW5, CS20_SW5, CS19_SW5},
+
+ {0, CS9_SW1, CS8_SW1, CS7_SW1},
+ {0, CS9_SW2, CS8_SW2, CS7_SW2},
+ {0, CS9_SW3, CS8_SW3, CS7_SW3},
+ {0, CS9_SW4, CS8_SW4, CS7_SW4},
+ {0, CS9_SW5, CS8_SW5, CS7_SW5},
+ {0, CS9_SW6, CS8_SW6, CS7_SW6},
+ {0, CS9_SW7, CS8_SW7, CS7_SW7},
+ {0, CS9_SW8, CS8_SW8, CS7_SW8},
+ {0, CS9_SW9, CS8_SW9, CS7_SW9},
+ {0, CS24_SW9, CS23_SW9, CS22_SW9},
+ {0, CS24_SW8, CS23_SW8, CS22_SW8},
+ {0, CS24_SW7, CS23_SW7, CS22_SW7},
+ {0, CS24_SW5, CS23_SW5, CS22_SW5},
+
+ {0, CS12_SW1, CS11_SW1, CS10_SW1},
+ {0, CS12_SW2, CS11_SW2, CS10_SW2},
+ {0, CS12_SW3, CS11_SW3, CS10_SW3},
+ {0, CS12_SW4, CS11_SW4, CS10_SW4},
+ {0, CS12_SW5, CS11_SW5, CS10_SW5},
+ {0, CS12_SW6, CS11_SW6, CS10_SW6},
+ {0, CS12_SW7, CS11_SW7, CS10_SW7},
+ {0, CS12_SW8, CS11_SW8, CS10_SW8},
+ {0, CS12_SW9, CS11_SW9, CS10_SW9},
+ {0, CS27_SW9, CS26_SW9, CS25_SW9},
+ {0, CS27_SW8, CS26_SW8, CS25_SW8},
+ {0, CS27_SW7, CS26_SW7, CS25_SW7},
+ {0, CS27_SW6, CS26_SW6, CS25_SW6},
+ {0, CS27_SW5, CS26_SW5, CS25_SW5},
+
+ {0, CS15_SW1, CS14_SW1, CS13_SW1},
+ {0, CS15_SW2, CS14_SW2, CS13_SW2},
+ {0, CS15_SW3, CS14_SW3, CS13_SW3},
+ {0, CS15_SW6, CS14_SW6, CS13_SW6},
+ {0, CS30_SW9, CS29_SW9, CS28_SW9},
+ {0, CS30_SW8, CS29_SW8, CS28_SW8},
+ {0, CS30_SW7, CS29_SW7, CS28_SW7},
+ {0, CS30_SW6, CS29_SW6, CS28_SW6},
+ {0, CS30_SW5, CS29_SW5, CS28_SW5},
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13},
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27},
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40},
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54},
+ { 55, 56, 57, NO_LED, NO_LED, 58, NO_LED, NO_LED, NO_LED, 59, 60, 61, 62, 63},
+ }, {
+ {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {216, 0},
+ {4, 16}, {24, 16}, {40, 16}, {56, 16}, {72, 16}, {88, 16}, {104, 16}, {120, 16}, {136, 16}, {152, 16}, {168, 16}, {184, 16}, {200, 16}, {220, 16},
+ {6, 32}, {28, 32}, {44, 32}, {60, 32}, {76, 32}, {92, 32}, {108, 32}, {114, 32}, {130, 32}, {146, 32}, {162, 32}, {178, 32}, {204, 32},
+ {8, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {138, 48}, {154, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48}, {224, 48},
+ {2, 64}, {22, 64}, {42, 64}, {102, 64}, {160, 64}, {176, 64}, {192, 64}, {208, 64}, {224, 64},
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+
+#endif
diff --git a/keyboards/ilumkb/simpler64/simpler64.h b/keyboards/ilumkb/simpler64/simpler64.h
new file mode 100644
index 0000000000..01a8bbc34f
--- /dev/null
+++ b/keyboards/ilumkb/simpler64/simpler64.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 Equalz
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_64_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/ilumkb/volcano660/rules.mk b/keyboards/ilumkb/volcano660/rules.mk
index 5f180ae00d..1c4073c9ce 100644
--- a/keyboards/ilumkb/volcano660/rules.mk
+++ b/keyboards/ilumkb/volcano660/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/inett_studio/sqx/hotswap/rules.mk b/keyboards/inett_studio/sqx/hotswap/rules.mk
index 6f3514ea12..5540b38405 100644
--- a/keyboards/inett_studio/sqx/hotswap/rules.mk
+++ b/keyboards/inett_studio/sqx/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/inett_studio/sqx/universal/rules.mk b/keyboards/inett_studio/sqx/universal/rules.mk
index ee6d6367f0..1dbdece9df 100644
--- a/keyboards/inett_studio/sqx/universal/rules.mk
+++ b/keyboards/inett_studio/sqx/universal/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/infinity60/rules.mk b/keyboards/infinity60/rules.mk
index 78062f8a9e..a3e05edde1 100644
--- a/keyboards/infinity60/rules.mk
+++ b/keyboards/infinity60/rules.mk
@@ -21,10 +21,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/irene/rules.mk b/keyboards/irene/rules.mk
index 33e1763375..1f52c37154 100644
--- a/keyboards/irene/rules.mk
+++ b/keyboards/irene/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/iriskeyboards/rules.mk b/keyboards/iriskeyboards/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/iriskeyboards/rules.mk
+++ b/keyboards/iriskeyboards/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/iron180/config.h b/keyboards/iron180/config.h
index b7b6cb6520..cc5c81a50c 100644
--- a/keyboards/iron180/config.h
+++ b/keyboards/iron180/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2015 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+Copyright 2021 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -36,12 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 1
-#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_LEVELS 20
#define BACKLIGHT_BREATHING
-#define BREATHING_PERIOD 6
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
+#define BREATHING_PERIOD 5
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
@@ -51,20 +48,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
+// Turn backlight on-off according to capslock (off by default)
+#define CAPSLOCK_BACKLIGHT
diff --git a/keyboards/iron180/halconf.h b/keyboards/iron180/halconf.h
index 2d08414263..dbc739b134 100644
--- a/keyboards/iron180/halconf.h
+++ b/keyboards/iron180/halconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 QMK
+/* Copyright 2021 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -14,14 +14,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/iron180/halconf.h -r platforms/chibios/common/configs/halconf.h`
- */
-
#pragma once
-#define HAL_USE_PWM YES
+#define HAL_USE_PWM TRUE
#include_next <halconf.h>
-
diff --git a/keyboards/iron180/iron180.c b/keyboards/iron180/iron180.c
index 236f8176f6..546ff7fc8f 100644
--- a/keyboards/iron180/iron180.c
+++ b/keyboards/iron180/iron180.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+Copyright 2021 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,3 +16,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "iron180.h"
+
+#ifdef CAPSLOCK_BACKLIGHT
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (!led_state.caps_lock){
+ if (is_backlight_breathing()) breathing_disable();
+ backlight_disable();
+ }
+ else {
+ if (is_backlight_breathing()) breathing_enable();
+ backlight_enable();
+ }
+ return res;
+}
+#endif
diff --git a/keyboards/iron180/iron180.h b/keyboards/iron180/iron180.h
index 032d8afb58..3027ed11ac 100644
--- a/keyboards/iron180/iron180.h
+++ b/keyboards/iron180/iron180.h
@@ -1,5 +1,5 @@
/*
-Copyright 2015 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+Copyright 2021 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/keyboards/iron180/keymaps/default/keymap.c b/keyboards/iron180/keymaps/default/keymap.c
index d78f60e118..46b1072228 100755
--- a/keyboards/iron180/keymaps/default/keymap.c
+++ b/keyboards/iron180/keymaps/default/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/iron180/keymaps/via/keymap.c b/keyboards/iron180/keymaps/via/keymap.c
index d78f60e118..46b1072228 100755
--- a/keyboards/iron180/keymaps/via/keymap.c
+++ b/keyboards/iron180/keymaps/via/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC , KC_RALT, KC_RWIN, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/iron180/mcuconf.h b/keyboards/iron180/mcuconf.h
index 620b983c75..a81f812207 100644
--- a/keyboards/iron180/mcuconf.h
+++ b/keyboards/iron180/mcuconf.h
@@ -14,17 +14,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/iron180/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
- */
-
#pragma once
#include_next <mcuconf.h>
-#undef STM32_I2C_USE_DMA
-#define STM32_I2C_USE_DMA FALSE
-
#undef STM32_PWM_USE_TIM3
-#define STM32_PWM_USE_TIM3 YES
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/iron180/readme.md b/keyboards/iron180/readme.md
index 5f340c4251..d89ca912ef 100644
--- a/keyboards/iron180/readme.md
+++ b/keyboards/iron180/readme.md
@@ -1,4 +1,6 @@
-# Iron180 QMK folder
+# Iron180 QMK firmware folder
+
+![iron180](https://i.imgur.com/zHcZoxa.png)
## Introduction
@@ -6,13 +8,39 @@ This is the QMK Firmware repository for the Iron180 PCB, a keyboard designed by
The Iron180 PCB is a F13 TKL PCB with ALPS switches support. It also supports in-switch single-color LEDs and a multi-layout design for default or 7U bottom row, ISO layout, split backspace and right shift.
-As of November 2020, the only way to obtain an Iron180 was through the [Group Buy](https://geekhack.org/index.php?topic=109513) which is already over and all spots were filled.
+As of november 2021, the Group Buy of Iron180 is already over and extras were not sold yet. See the [GB page](https://geekhack.org/index.php?topic=109513) for more information.
+
+## How to flash
+
+### Enter bootloader
-## How to compile
+The DFU state in the bootloader can be accessed in 3 ways:
-After setting up your build environment, you can compile the Iron180 default keymap by using:
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard with the key pressed;
+* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds;
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (ESCAPE key in layer 1 of the default layout);
+
+## Compile firmware and flash
+
+To build the default layout for this keyboard (after setting up your build environment), use:
make iron180:default
+Then, after accessing the DFU state, use a tool like `dfu-util` or the QMK Toolbox to download that firmware into your PCB. To directly compile-and-flash the PCB after it is put into a DFU state, use
+
+ make iron180:default:flash
+
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+## The 'caps lock backlight' feature
+
+The Iron180 firmware allows the user to adjust the backlight according to the caps lock key. This will toggle *all backlight LEDs* according to caps lock, enabling backlight when caps is on and disabling when it is off.
+
+This option is specially useful if you are only interested in the caps lock LED and want it to work as an indicator; however, it must be noted that this works keyboard-wide, so if that is your case you should only solder the caps lock key LED and none else.
+
+This option is disabled by default; in order to enable it, you must un-comment the last line in `config.h`:
+
+ // Turn backlight on-off according to capslock
+ #define CAPSLOCK_BACKLIGHT
+
+Then compile and flash the firmware.
diff --git a/keyboards/iron180/rules.mk b/keyboards/iron180/rules.mk
index ee6c0dfca7..6649381de3 100644
--- a/keyboards/iron180/rules.mk
+++ b/keyboards/iron180/rules.mk
@@ -12,11 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = pwm
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = no
diff --git a/keyboards/ivy/keymaps/default/keymap.c b/keyboards/ivy/keymaps/default/keymap.c
index 0215a3e6c5..f02580f19c 100644
--- a/keyboards/ivy/keymaps/default/keymap.c
+++ b/keyboards/ivy/keymaps/default/keymap.c
@@ -26,16 +26,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | FN |
* `------'
*/
-[_L1] = LAYOUT( \
- KC_1, \
- KC_2, \
- MO(_FUNC) \
+[_L1] = LAYOUT(
+ KC_1,
+ KC_2,
+ MO(_FUNC)
),
-[_FUNC] = LAYOUT( \
- CALTDEL, \
- TSKMGR, \
- _______ \
+[_FUNC] = LAYOUT(
+ CALTDEL,
+ TSKMGR,
+ _______
)
};
diff --git a/keyboards/ivy/rules.mk b/keyboards/ivy/rules.mk
index 8dd1f9758e..66812904cd 100644
--- a/keyboards/ivy/rules.mk
+++ b/keyboards/ivy/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = ivy/rev1
diff --git a/keyboards/jacky_studio/bear_65/rules.mk b/keyboards/jacky_studio/bear_65/rules.mk
index aebfff7a01..684173395e 100644
--- a/keyboards/jacky_studio/bear_65/rules.mk
+++ b/keyboards/jacky_studio/bear_65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jacky_studio/s7_elephant/rev1/rules.mk b/keyboards/jacky_studio/s7_elephant/rev1/rules.mk
index 6852ee4c63..543f0f79da 100644
--- a/keyboards/jacky_studio/s7_elephant/rev1/rules.mk
+++ b/keyboards/jacky_studio/s7_elephant/rev1/rules.mk
@@ -12,7 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
diff --git a/keyboards/jacky_studio/s7_elephant/rev2/rules.mk b/keyboards/jacky_studio/s7_elephant/rev2/rules.mk
index 16501de0ae..1daeed7bd7 100644
--- a/keyboards/jacky_studio/s7_elephant/rev2/rules.mk
+++ b/keyboards/jacky_studio/s7_elephant/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jadookb/jkb2/rules.mk b/keyboards/jadookb/jkb2/rules.mk
index 10e9616d6f..73ac281e0b 100644
--- a/keyboards/jadookb/jkb2/rules.mk
+++ b/keyboards/jadookb/jkb2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jadookb/jkb65/config.h b/keyboards/jadookb/jkb65/config.h
index a7710a0e03..d397f1962b 100644
--- a/keyboards/jadookb/jkb65/config.h
+++ b/keyboards/jadookb/jkb65/config.h
@@ -42,7 +42,58 @@
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_DISABLE_TIMEOUT 90000
+#define RGB_MATRIX_LED_PROCESS_LIMIT 4
+#define RGB_MATRIX_LED_FLUSH_LIMIT 26
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+ // RGB Matrix Animation modes. Explicitly enabled
+ // For full list of effects, see:
+ // https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+ // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+ // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define DEBOUNCE 5
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/jadookb/jkb65/keymaps/default/keymap.c b/keyboards/jadookb/jkb65/keymaps/default/keymap.c
index b7b81a1500..f03211d220 100644
--- a/keyboards/jadookb/jkb65/keymaps/default/keymap.c
+++ b/keyboards/jadookb/jkb65/keymaps/default/keymap.c
@@ -33,19 +33,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
MAGIC_UNNO_GUI,MAGIC_NO_GUI, _______, RGB_TOG, _______, MO(2), RGB_SPD, RGB_VAD, RGB_SPI
- ),
- [2] = LAYOUT_67_ansi(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [3] = LAYOUT_67_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
+ )
};
diff --git a/keyboards/jadookb/jkb65/keymaps/via/rules.mk b/keyboards/jadookb/jkb65/keymaps/via/rules.mk
index 1e5b99807c..43061db1dd 100644
--- a/keyboards/jadookb/jkb65/keymaps/via/rules.mk
+++ b/keyboards/jadookb/jkb65/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jadookb/jkb65/r2/config.h b/keyboards/jadookb/jkb65/r2/config.h
new file mode 100644
index 0000000000..a0039001a8
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r2/config.h
@@ -0,0 +1,27 @@
+ /* Copyright 2022 Wizad-GG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#undef DEVICE_VER
+#define DEVICE_VER 0x0002
+
+#undef PRODUCT
+#define PRODUCT JKB65 RGB R2
+
+
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS { F6,B0,F1,C7,C6,B6,B5,B4,D7,D6,D4,D5,D3,D2,D1,D0 } \ No newline at end of file
diff --git a/keyboards/jadookb/jkb65/r2/readme.md b/keyboards/jadookb/jkb65/r2/readme.md
new file mode 100644
index 0000000000..9833769fb3
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r2/readme.md
@@ -0,0 +1,23 @@
+# JKB65 RGB R2
+
+![JKB65RGB R2](https://i.imgur.com/VgtMLuih.jpg)
+
+R2 version of JKB65
+
+* Keyboard Maintainer: [Wizard-GG](https://github.com/wizard-gg)
+* Hardware Supported: JKB65 RGB R2
+* Hardware Availability: [Jadoo Keyboard](https://jadookb.com/jkb65)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jadookb/jkb65/r2:default
+
+Flashing example for this keyboard:
+
+ make jadookb/jkb65/r2:default:flash
+
+To reset the board into bootloader mode, do the following step:
+
+* Hold the **Esc** key while connecting the USB cable
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/jadookb/jkb65/rules.mk b/keyboards/jadookb/jkb65/rules.mk
index 091ce689b7..239ea39a74 100644
--- a/keyboards/jadookb/jkb65/rules.mk
+++ b/keyboards/jadookb/jkb65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jae/j01/keymaps/default/keymap.c b/keyboards/jae/j01/keymaps/default/keymap.c
index 53fba7a0f5..7afb8bc96a 100644
--- a/keyboards/jae/j01/keymaps/default/keymap.c
+++ b/keyboards/jae/j01/keymaps/default/keymap.c
@@ -19,17 +19,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_DEL, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), \
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_ansi(
- KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, \
- KC_TRNS, KC_TRNS, BL_BRTG, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,
+ KC_TRNS, KC_TRNS, BL_BRTG, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/jae/j01/rules.mk b/keyboards/jae/j01/rules.mk
index 0b23d7cb96..983fcface1 100644
--- a/keyboards/jae/j01/rules.mk
+++ b/keyboards/jae/j01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jagdpietr/drakon/rules.mk b/keyboards/jagdpietr/drakon/rules.mk
index 85a762c68b..1c043b7c4f 100644
--- a/keyboards/jagdpietr/drakon/rules.mk
+++ b/keyboards/jagdpietr/drakon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jc65/v32a/rules.mk b/keyboards/jc65/v32a/rules.mk
index 694ad609a2..9686fd1aa4 100644
--- a/keyboards/jc65/v32a/rules.mk
+++ b/keyboards/jc65/v32a/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/jc65/v32u4/keymaps/default/config.h b/keyboards/jc65/v32u4/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/jc65/v32u4/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/jc65/v32u4/rules.mk b/keyboards/jc65/v32u4/rules.mk
index eb9d4d9ad9..4551e3c365 100644
--- a/keyboards/jc65/v32u4/rules.mk
+++ b/keyboards/jc65/v32u4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jd40/rules.mk b/keyboards/jd40/rules.mk
index 10cefa36c5..59bbf0ca8b 100644
--- a/keyboards/jd40/rules.mk
+++ b/keyboards/jd40/rules.mk
@@ -5,15 +5,13 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
diff --git a/keyboards/jd45/rules.mk b/keyboards/jd45/rules.mk
index 4e856aa50f..0e6f70f0c9 100644
--- a/keyboards/jd45/rules.mk
+++ b/keyboards/jd45/rules.mk
@@ -5,15 +5,13 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI support
diff --git a/keyboards/jels/jels88/rules.mk b/keyboards/jels/jels88/rules.mk
index 5c97c17ce9..15caede3fd 100644
--- a/keyboards/jels/jels88/rules.mk
+++ b/keyboards/jels/jels88/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jiran/rules.mk b/keyboards/jiran/rules.mk
index 6bd86a2e1a..f7ee8a2214 100644
--- a/keyboards/jiran/rules.mk
+++ b/keyboards/jiran/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jisplit89/rules.mk b/keyboards/jisplit89/rules.mk
index 3f78c5cce5..5427cabfa2 100644
--- a/keyboards/jisplit89/rules.mk
+++ b/keyboards/jisplit89/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jkdlab/binary_monkey/rules.mk b/keyboards/jkdlab/binary_monkey/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/jkdlab/binary_monkey/rules.mk
+++ b/keyboards/jkdlab/binary_monkey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jm60/rules.mk b/keyboards/jm60/rules.mk
index d2684a21d7..6cb13d932d 100644
--- a/keyboards/jm60/rules.mk
+++ b/keyboards/jm60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jnao/keymaps/default/keymap.c b/keyboards/jnao/keymaps/default/keymap.c
index 04f410057e..356f056bdb 100644
--- a/keyboards/jnao/keymaps/default/keymap.c
+++ b/keyboards/jnao/keymaps/default/keymap.c
@@ -33,12 +33,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | ` | GUI | ALT |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_5x12( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- MO(_FUNCTION), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, \
- KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_5x12(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ MO(_FUNCTION), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -54,12 +54,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | |Lower | Bksp |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_5x12( \
- KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE, \
- _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE,
+ _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -75,12 +75,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | , | 0 | . |Lower | Bksp |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_5x12( \
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, \
- KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, \
- _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
+ _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -96,12 +96,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |RESET |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_5x12( \
- KC_ESC, KC_F1, KC_F2, KC_F3, LALT(KC_F4), KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+[_ADJUST] = LAYOUT_ortho_5x12(
+ KC_ESC, KC_F1, KC_F2, KC_F3, LALT(KC_F4), KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
),
/* Function
@@ -117,12 +117,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_FUNCTION] = LAYOUT_ortho_5x12( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_FUNCTION] = LAYOUT_ortho_5x12(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/jnao/rules.mk b/keyboards/jnao/rules.mk
index 1a50c6388e..e50247dfb6 100644
--- a/keyboards/jnao/rules.mk
+++ b/keyboards/jnao/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jolofsor/denial75/config.h b/keyboards/jolofsor/denial75/config.h
new file mode 100644
index 0000000000..702fee324f
--- /dev/null
+++ b/keyboards/jolofsor/denial75/config.h
@@ -0,0 +1,63 @@
+/* Copyright 2021 Johannes Paolo Soriano (https://github.com/jolofsor)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4A48
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER jsor-hpoli
+#define PRODUCT denial75
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, F6, F5, F4, F1, F0 }
+#define MATRIX_COL_PINS { F7, C7, C6, B5, B4, D7, D6, D4, E6, B1, B2, B3, B7, D0, D1, D3 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Caps Lock Definition */
+#define LED_CAPS_LOCK_PIN B6
+#define LED_PIN_ON_STATE 0
+
+
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+
+/* RGB Definitions */
+
+#define RGB_DI_PIN D2
+#define RGBLED_NUM 84
+#define RGBLIGHT_MAX_LAYERS 32
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 200
diff --git a/keyboards/jolofsor/denial75/denial75.c b/keyboards/jolofsor/denial75/denial75.c
new file mode 100644
index 0000000000..6b35a6b0d7
--- /dev/null
+++ b/keyboards/jolofsor/denial75/denial75.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Johannes Paolo Soriano (https://github.com/jolofsor)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "denial75.h"
diff --git a/keyboards/jolofsor/denial75/denial75.h b/keyboards/jolofsor/denial75/denial75.h
new file mode 100644
index 0000000000..b85f0540b8
--- /dev/null
+++ b/keyboards/jolofsor/denial75/denial75.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Johannes Paolo Soriano (https://github.com/jolofsor)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#define LAYOUT_denial75_ansi( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
+ K500, K501, K502, K503, K504, K505, K506, K507, K508, K509 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO,K113, K114 }, \
+ { K200, KC_NO,K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, KC_NO,K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO,K313 }, \
+ { KC_NO,K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, KC_NO,K411, K412, K413 }, \
+ { K500, K501, KC_NO,K502, KC_NO,KC_NO,K503, KC_NO,KC_NO,KC_NO,K504, K505, K506, K507, K508, K509 } \
+}
diff --git a/keyboards/jolofsor/denial75/info.json b/keyboards/jolofsor/denial75/info.json
new file mode 100644
index 0000000000..71c9651a8a
--- /dev/null
+++ b/keyboards/jolofsor/denial75/info.json
@@ -0,0 +1,99 @@
+{
+ "keyboard_name": "denial75",
+ "url": "",
+ "maintainer": "jolofsor",
+ "layouts": {
+ "LAYOUT_denial75_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.25, "y":0},
+ {"label":"F6", "x":6.25, "y":0},
+ {"label":"F7", "x":7.25, "y":0},
+ {"label":"F8", "x":8.25, "y":0},
+ {"label":"F9", "x":9.25, "y":0},
+ {"label":"F10", "x":10.25, "y":0},
+ {"label":"F11", "x":11.25, "y":0},
+ {"label":"F12", "x":12.25, "y":0},
+ {"label":"PrtScr", "x":13.5, "y":0},
+ {"label":"Insert", "x":14.5, "y":0},
+ {"label":"Delete", "x":15.5, "y":0},
+
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"@", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Home", "x":15.5, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Page Up", "x":15.5, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"Page Down", "x":15.5, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":4.5},
+ {"label":"End", "x":15.5, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25},
+ {"label":"Fn", "x":11, "y":5.25},
+ {"label":"Ctrl", "x":12, "y":5.25},
+ {"label":"Left", "x":13.25, "y":5.5},
+ {"label":"Down", "x":14.25, "y":5.5},
+ {"label":"Right", "x":15.25, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/jolofsor/denial75/keymaps/default/keymap.c b/keyboards/jolofsor/denial75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b324f24558
--- /dev/null
+++ b/keyboards/jolofsor/denial75/keymaps/default/keymap.c
@@ -0,0 +1,134 @@
+/* Copyright 2021 Johannes Paolo Soriano (https://github.com/jolofsor)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ LEDRED = SAFE_RANGE,
+ LEDBLUE,
+ LEDYELLOW,
+ LEDORANGE,
+ LEDGREEN,
+ LEDPURPLE,
+ LEDWHITE,
+ LEDPINK,
+ LEDBLACK
+};
+
+//this function sets RGB to last set before it was disconnected
+void keyboard_post_init_user(void) {
+ rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LEDRED:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_RED);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ } else {
+ }
+ break;
+
+ case LEDBLUE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_BLUE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ } else {
+ }
+ break;
+
+ case LEDYELLOW:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_YELLOW);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDORANGE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_ORANGE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDGREEN:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_GREEN);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDPURPLE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_PURPLE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDWHITE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_WHITE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDPINK:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_PINK);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDBLACK:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_BLACK);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_denial75_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_denial75_ansi(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRIU,
+ KC_NO, LEDRED, LEDBLUE, LEDYELLOW, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRID,
+ KC_NO, LEDORANGE, LEDGREEN, LEDPURPLE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI,
+ KC_NO, LEDWHITE, LEDPINK, LEDBLACK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MO(1), RGB_TOG, KC_NO, KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/jolofsor/denial75/keymaps/via/keymap.c b/keyboards/jolofsor/denial75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..678522ddfb
--- /dev/null
+++ b/keyboards/jolofsor/denial75/keymaps/via/keymap.c
@@ -0,0 +1,152 @@
+/* Copyright 2021 Johannes Paolo Soriano (https://github.com/jolofsor)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ LEDRED = SAFE_RANGE,
+ LEDBLUE,
+ LEDYELLOW,
+ LEDORANGE,
+ LEDGREEN,
+ LEDPURPLE,
+ LEDWHITE,
+ LEDPINK,
+ LEDBLACK
+};
+
+//this function sets RGB to last set before it was disconnected
+void keyboard_post_init_user(void) {
+ rgblight_sethsv(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LEDRED:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_RED);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ } else {
+ }
+ break;
+
+ case LEDBLUE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_BLUE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ } else {
+ }
+ break;
+
+ case LEDYELLOW:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_YELLOW);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDORANGE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_ORANGE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDGREEN:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_GREEN);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDPURPLE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_PURPLE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDWHITE:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_WHITE);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDPINK:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_PINK);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+
+ case LEDBLACK:
+ if (record->event.pressed) {
+ rgblight_enable();
+ rgblight_sethsv(HSV_BLACK);
+ rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
+ }
+ break;
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_denial75_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_denial75_ansi(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRIU,
+ KC_NO, LEDRED, LEDBLUE, LEDYELLOW, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRID,
+ KC_NO, LEDORANGE, LEDGREEN, LEDPURPLE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAI,
+ KC_NO, LEDWHITE, LEDPINK, LEDBLACK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MO(1), RGB_TOG, KC_NO, KC_NO, KC_NO
+ ),
+
+ [2] = LAYOUT_denial75_ansi(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+
+ [3] = LAYOUT_denial75_ansi(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/jolofsor/denial75/keymaps/via/rules.mk b/keyboards/jolofsor/denial75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/jolofsor/denial75/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/jolofsor/denial75/readme.md b/keyboards/jolofsor/denial75/readme.md
new file mode 100644
index 0000000000..9475ec9fe0
--- /dev/null
+++ b/keyboards/jolofsor/denial75/readme.md
@@ -0,0 +1,20 @@
+# Denial75
+
+Hotswappable Expanded 75% keyboard.
+
+* Keyboard Maintainer: [jolofsor](https://github.com/jolofsor)
+* Hardware Supported: ATmega32u4
+* Hardware Availability: [Denial75](Fb.com/pmx.gg)
+
+Bootloader
+ Physical Reset Button : Briefly press the button under the spacebar. It can be accessed by removing the spacebar keycap
+
+Make example for these keyboards (after setting up your build environment):
+
+ make jolofsor/denial75:default
+
+Flashing example for this keyboard:
+
+ make jolofsor/denial75:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/jolofsor/denial75/rules.mk b/keyboards/jolofsor/denial75/rules.mk
new file mode 100644
index 0000000000..0d5a61e255
--- /dev/null
+++ b/keyboards/jolofsor/denial75/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jones/v03/rules.mk b/keyboards/jones/v03/rules.mk
index b1bc528a83..5b420e24ea 100644
--- a/keyboards/jones/v03/rules.mk
+++ b/keyboards/jones/v03/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/jones/v03_1/rules.mk b/keyboards/jones/v03_1/rules.mk
index d33aa9047e..93e442d480 100644
--- a/keyboards/jones/v03_1/rules.mk
+++ b/keyboards/jones/v03_1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/jorne/config.h b/keyboards/jorne/config.h
new file mode 100644
index 0000000000..7717194431
--- /dev/null
+++ b/keyboards/jorne/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "config_common.h"
+
diff --git a/keyboards/jorne/info.json b/keyboards/jorne/info.json
new file mode 100644
index 0000000000..a28af0a320
--- /dev/null
+++ b/keyboards/jorne/info.json
@@ -0,0 +1,240 @@
+{
+ "keyboard_name": "Jorne",
+ "url": "https://github.com/joric/jorne/wiki",
+ "maintainer": "joric",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "GUI",
+ "x": 0,
+ "y": 2.13
+ },
+ {
+ "label": "~",
+ "x": 1,
+ "y": 1.38
+ },
+ {
+ "label": "Q",
+ "x": 2,
+ "y": 1.38
+ },
+ {
+ "label": "W",
+ "x": 3,
+ "y": 1.13
+ },
+ {
+ "label": "E",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 5,
+ "y": 1.13
+ },
+ {
+ "label": "T",
+ "x": 6,
+ "y": 1.25
+ },
+
+ {
+ "label": "Y",
+ "x": 10.5,
+ "y": 1.25
+ },
+ {
+ "label": "U",
+ "x": 11.5,
+ "y": 1.125
+ },
+ {
+ "label": "I",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 13.5,
+ "y": 1.125
+ },
+ {
+ "label": "P",
+ "x": 14.5,
+ "y": 1.375
+ },
+ {
+ "label": "{[",
+ "x": 15.5,
+ "y": 1.375
+ },
+ {
+ "label": "}]",
+ "x": 16.5,
+ "y": 2.13
+ },
+
+ {
+ "label": "Ctrl",
+ "x": 1,
+ "y": 2.38
+ },
+ {
+ "label": "A",
+ "x": 2,
+ "y": 2.38
+ },
+ {
+ "label": "S",
+ "x": 3,
+ "y": 2.13
+ },
+ {
+ "label": "D",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 5,
+ "y": 2.13
+ },
+ {
+ "label": "G",
+ "x": 6,
+ "y": 2.25
+ },
+
+ {
+ "label": "H",
+ "x": 10.5,
+ "y": 2.25
+ },
+ {
+ "label": "J",
+ "x": 11.5,
+ "y": 2.13
+ },
+ {
+ "label": "K",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 13.5,
+ "y": 2.125
+ },
+ {
+ "label": ":;",
+ "x": 14.5,
+ "y": 2.375
+ },
+ {
+ "label": "\"'",
+ "x": 15.5,
+ "y": 2.375
+ },
+
+ {
+ "label": "Alt",
+ "x": 1,
+ "y": 3.38
+ },
+ {
+ "label": "Z",
+ "x": 2,
+ "y": 3.38
+ },
+ {
+ "label": "X",
+ "x": 3,
+ "y": 3.13
+ },
+ {
+ "label": "C",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5,
+ "y": 3.13
+ },
+ {
+ "label": "B",
+ "x": 6,
+ "y": 3.25
+ },
+
+ {
+ "label": "N",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "M",
+ "x": 11.5,
+ "y": 3.13
+ },
+ {
+ "label": "<,",
+ "x": 12.5,
+ "y": 3
+ },
+ {
+ "label": ">.",
+ "x": 13.5,
+ "y": 3.13
+ },
+ {
+ "label": "?/",
+ "x": 14.5,
+ "y": 3.38
+ },
+ {
+ "label": "|\\",
+ "x": 15.5,
+ "y": 3.38
+ },
+
+ {
+ "label": "Rise",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "Space",
+ "x": 6,
+ "y": 5
+ },
+ {
+ "label": "Lower",
+ "x": 7,
+ "y": 4.5,
+ "h": 1.5
+ },
+
+ {
+ "label": "Lower",
+ "x": 9.5,
+ "y": 4.5,
+ "h": 1.5
+ },
+ {
+ "label": "Bcs",
+ "x": 10.5,
+ "y": 5
+ },
+ {
+ "label": "Rise",
+ "x": 11.5,
+ "y": 5
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/jorne/jorne.c b/keyboards/jorne/jorne.c
new file mode 100644
index 0000000000..fec24d476c
--- /dev/null
+++ b/keyboards/jorne/jorne.c
@@ -0,0 +1,70 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "jorne.h"
+
+#ifdef OLED_ENABLE
+static void render_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 192, 224, 240, 240, 240, 240, 240, 240, 240, 224,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 224, 240, 0, 0, 240, 252, 254, 255, 255, 255, 1, 240, 252, 255,
+ 255, 255, 255, 255, 255, 255, 255, 127, 31, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 0, 0, 240,
+ 248, 252, 30, 14, 14, 14, 14, 14, 14, 30, 252, 248, 240, 0, 0, 254, 254, 252, 28, 14, 14, 14, 14, 0, 0, 254, 254, 252, 28, 14, 14,
+ 14, 14, 30, 252, 248, 240, 0, 0, 240, 248, 252, 222, 206, 206, 206, 206, 206, 206, 222, 252, 248, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 255, 255, 255, 254, 240, 255, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 193, 128, 128, 128, 192, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 255, 255, 255, 0, 0,
+ 15, 31, 63, 120, 112, 112, 112, 112, 112, 112, 120, 63, 31, 15, 0, 0, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 0, 0, 0,
+ 0, 0, 0, 127, 127, 127, 0, 0, 15, 31, 63, 121, 113, 113, 113, 113, 113, 113, 121, 61, 29, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 3, 1, 1, 3, 3, 7, 7, 7, 3, 3, 1, 3, 7, 7, 7, 7, 7, 7, 7, 3, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+static void render_status(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjust\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined\n"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_left()) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_logo();
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/jorne/jorne.h b/keyboards/jorne/jorne.h
new file mode 100644
index 0000000000..7c2478c563
--- /dev/null
+++ b/keyboards/jorne/jorne.h
@@ -0,0 +1,9 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifdef KEYBOARD_jorne_rev1
+# include "rev1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/jorne/keymaps/default/config.h b/keyboards/jorne/keymaps/default/config.h
new file mode 100644
index 0000000000..2fb5ca4c4f
--- /dev/null
+++ b/keyboards/jorne/keymaps/default/config.h
@@ -0,0 +1,25 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define OLED_DISPLAY_128X32
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/jorne/keymaps/default/keymap.c b/keyboards/jorne/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cd7eab1709
--- /dev/null
+++ b/keyboards/jorne/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+
+enum custom_keycodes {
+ RGBRST = SAFE_RANGE
+};
+
+#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
+#define F12_RGU MT(MOD_RGUI, KC_F12)
+#define PLS_LCT MT(MOD_LCTL, KC_PPLS)
+#define EQL_LCT MT(MOD_LCTL, KC_PEQL)
+#define APP_LCT MT(MOD_LCTL, KC_APP)
+#define EQL_RCT MT(MOD_RCTL, KC_PEQL)
+#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
+#define APP_RCT MT(MOD_RCTL, KC_APP)
+#define MIN_RCT MT(MOD_RCTL, KC_MINS)
+#define EQL_LAL MT(MOD_LALT, KC_EQL)
+#define BSL_RAL MT(MOD_RALT, KC_BSLS)
+#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
+#define SPC_RSH MT(MOD_RSFT, KC_SPC)
+#define DEL_RSE LT(_RAISE, KC_DEL)
+#define TAB_RSE LT(_RAISE, KC_TAB)
+#define ENT_LWR LT(_LOWER, KC_ENT)
+#define ESC_LWR LT(_LOWER, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ KC_LGUI, KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, RGUI_T(KC_RBRC),
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RCTL_T(KC_QUOT),
+ KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, BSL_RAL,
+ TAB_RSE, SPC_RSH, ENT_LWR, ESC_LWR, BSP_LSH, DEL_RSE
+),
+
+[_LOWER] = LAYOUT(
+ _______, KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, F12_RGU,
+ PLS_LCT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
+ EQL_LAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_RAISE] = LAYOUT(
+ _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
+ EQL_LCT, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RGHT, KC_INS, APP_RCT,
+ _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT(
+ RESET, RGBRST, KC_ASUP, KC_ASTG, KC_ASDN, _______, _______, _______, _______, KC_ASDN, KC_ASTG, KC_ASUP, RGBRST, RESET,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, RGB_TOG,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_MOD,
+ _______, SH_TG, _______, _______, SH_TG, _______
+),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/jorne/keymaps/via/config.h b/keyboards/jorne/keymaps/via/config.h
new file mode 100644
index 0000000000..0b25d4a0b8
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/config.h
@@ -0,0 +1,24 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define OLED_DISPLAY_128X32
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/jorne/keymaps/via/keymap.c b/keyboards/jorne/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cd7eab1709
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/keymap.c
@@ -0,0 +1,84 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+
+enum custom_keycodes {
+ RGBRST = SAFE_RANGE
+};
+
+#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
+#define F12_RGU MT(MOD_RGUI, KC_F12)
+#define PLS_LCT MT(MOD_LCTL, KC_PPLS)
+#define EQL_LCT MT(MOD_LCTL, KC_PEQL)
+#define APP_LCT MT(MOD_LCTL, KC_APP)
+#define EQL_RCT MT(MOD_RCTL, KC_PEQL)
+#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
+#define APP_RCT MT(MOD_RCTL, KC_APP)
+#define MIN_RCT MT(MOD_RCTL, KC_MINS)
+#define EQL_LAL MT(MOD_LALT, KC_EQL)
+#define BSL_RAL MT(MOD_RALT, KC_BSLS)
+#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
+#define SPC_RSH MT(MOD_RSFT, KC_SPC)
+#define DEL_RSE LT(_RAISE, KC_DEL)
+#define TAB_RSE LT(_RAISE, KC_TAB)
+#define ENT_LWR LT(_LOWER, KC_ENT)
+#define ESC_LWR LT(_LOWER, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+ KC_LGUI, KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, RGUI_T(KC_RBRC),
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RCTL_T(KC_QUOT),
+ KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, BSL_RAL,
+ TAB_RSE, SPC_RSH, ENT_LWR, ESC_LWR, BSP_LSH, DEL_RSE
+),
+
+[_LOWER] = LAYOUT(
+ _______, KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, F12_RGU,
+ PLS_LCT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
+ EQL_LAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_RAISE] = LAYOUT(
+ _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
+ EQL_LCT, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RGHT, KC_INS, APP_RCT,
+ _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT(
+ RESET, RGBRST, KC_ASUP, KC_ASTG, KC_ASDN, _______, _______, _______, _______, KC_ASDN, KC_ASTG, KC_ASUP, RGBRST, RESET,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, RGB_TOG,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_MOD,
+ _______, SH_TG, _______, _______, SH_TG, _______
+),
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/jorne/keymaps/via/rules.mk b/keyboards/jorne/keymaps/via/rules.mk
new file mode 100644
index 0000000000..824642767a
--- /dev/null
+++ b/keyboards/jorne/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jorne/post_config.h b/keyboards/jorne/post_config.h
new file mode 100644
index 0000000000..8da923087e
--- /dev/null
+++ b/keyboards/jorne/post_config.h
@@ -0,0 +1,29 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifndef BOOTMAGIC_LITE_ROW
+# define BOOTMAGIC_LITE_ROW 0
+#endif
+#ifndef BOOTMAGIC_LITE_COLUMN
+# define BOOTMAGIC_LITE_COLUMN 1
+#endif
+
+#ifndef BOOTMAGIC_LITE_ROW_RIGHT
+# define BOOTMAGIC_LITE_ROW_RIGHT 4
+#endif
+#ifndef BOOTMAGIC_LITE_COLUMN_RIGHT
+# define BOOTMAGIC_LITE_COLUMN_RIGHT 1
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+# ifndef RGBLIGHT_LIMIT_VAL
+# define RGBLIGHT_LIMIT_VAL 120
+# endif
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# ifndef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+# endif
+#endif
diff --git a/keyboards/jorne/readme.md b/keyboards/jorne/readme.md
new file mode 100644
index 0000000000..71c698e67e
--- /dev/null
+++ b/keyboards/jorne/readme.md
@@ -0,0 +1,25 @@
+# Jorne
+
+<img src="https://i.imgur.com/ywDcw2w.jpg" data-canonical-src="Jorne" width="600"/>
+
+Jorne is essentially [Corne](https://github.com/foostan/crkbd) but with an extra keys for brackets and international layouts (44 keys instead of 42).
+
+* Keyboard Maintainer: [joric](https://github.com/joric)
+* Hardware Supported: Jorne 2.1, 3.0
+* Layout: [keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/#/gists/df19fba80500d1179dfda8c41b9f221a)
+* Hardware Availability: [wiki](https://github.com/joric/jorne/wiki)
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the reset button on the PCB
+* **Keycode in layout**: Press the key mapped to `RESET`
+
+## Make
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jorne/rev1:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/jorne/rev1/config.h b/keyboards/jorne/rev1/config.h
new file mode 100644
index 0000000000..7144d9fe0a
--- /dev/null
+++ b/keyboards/jorne/rev1/config.h
@@ -0,0 +1,46 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4753
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER joric
+#define PRODUCT Jorne Keyboard
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2
+
+#define RGB_DI_PIN D3
+#define RGBLED_SPLIT { 28, 28 }
+#define RGBLED_NUM 56
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
diff --git a/keyboards/jorne/rev1/rev1.c b/keyboards/jorne/rev1/rev1.c
new file mode 100644
index 0000000000..f120ef87f8
--- /dev/null
+++ b/keyboards/jorne/rev1/rev1.c
@@ -0,0 +1,3 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "rev1.h"
diff --git a/keyboards/jorne/rev1/rev1.h b/keyboards/jorne/rev1/rev1.h
new file mode 100644
index 0000000000..af4ef8e3b3
--- /dev/null
+++ b/keyboards/jorne/rev1/rev1.h
@@ -0,0 +1,31 @@
+// Copyright 2021 Joric (@joric)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "jorne.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT( \
+L33, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R33, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L33, KC_NO, KC_NO, L30, L31, L32 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R33, KC_NO, KC_NO, R32, R31, R30 } \
+ }
diff --git a/keyboards/jorne/rev1/rules.mk b/keyboards/jorne/rev1/rules.mk
new file mode 100644
index 0000000000..52a6de4da9
--- /dev/null
+++ b/keyboards/jorne/rev1/rules.mk
@@ -0,0 +1,2 @@
+OLED_ENABLE = yes # Enable OLED
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/jorne/rules.mk b/keyboards/jorne/rules.mk
new file mode 100644
index 0000000000..cb35ae6cff
--- /dev/null
+++ b/keyboards/jorne/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes # Split common
+LTO_ENABLE = yes
+
+DEFAULT_FOLDER = jorne/rev1
diff --git a/keyboards/just60/rules.mk b/keyboards/just60/rules.mk
index a2d0c06a5d..7323e8f1e2 100644
--- a/keyboards/just60/rules.mk
+++ b/keyboards/just60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/k34/config.h b/keyboards/k34/config.h
new file mode 100644
index 0000000000..4d9910d50d
--- /dev/null
+++ b/keyboards/k34/config.h
@@ -0,0 +1,38 @@
+// Copyright 2021 jp_smasher (@jp_smasher)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER jp_smasher
+#define PRODUCT k34
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F4, B2, E6, B4 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, F5, F6, F7, B1, B3 }
+#define UNUSED_PINS { B5, B6, D2, D3 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
diff --git a/keyboards/k34/info.json b/keyboards/k34/info.json
new file mode 100644
index 0000000000..0917e44961
--- /dev/null
+++ b/keyboards/k34/info.json
@@ -0,0 +1,52 @@
+{
+ "keyboard_name": "k34",
+ "url": "https://github.com/wongjingping/k34",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "Q", "x": 0, "y": 0.3 },
+ { "label": "W", "x": 1, "y": 0.1 },
+ { "label": "E", "x": 2, "y": 0 },
+ { "label": "R", "x": 3, "y": 0.1 },
+ { "label": "T", "x": 4, "y": 0.2 },
+
+ { "label": "Y", "x": 8, "y": 0.2 },
+ { "label": "U", "x": 9, "y": 0.1 },
+ { "label": "I", "x": 10, "y": 0 },
+ { "label": "O", "x": 11, "y": 0.1 },
+ { "label": "P", "x": 12, "y": 0.3 },
+
+ { "label": "A", "x": 0, "y": 1.3 },
+ { "label": "S", "x": 1, "y": 1.1 },
+ { "label": "D", "x": 2, "y": 1 },
+ { "label": "F", "x": 3, "y": 1.1 },
+ { "label": "G", "x": 4, "y": 1.2 },
+
+ { "label": "H", "x": 8, "y": 1.2 },
+ { "label": "J", "x": 9, "y": 1.1 },
+ { "label": "K", "x": 10, "y": 1 },
+ { "label": "L", "x": 11, "y": 1.1 },
+ { "label": ";", "x": 12, "y": 1.3 },
+
+ { "label": "Z", "x": 0, "y": 2.3 },
+ { "label": "X", "x": 1, "y": 2.1 },
+ { "label": "C", "x": 2, "y": 2 },
+ { "label": "V", "x": 3, "y": 2.1 },
+ { "label": "B", "x": 4, "y": 2.2 },
+
+ { "label": "N", "x": 8, "y": 2.2 },
+ { "label": "M", "x": 9, "y": 2.1 },
+ { "label": ",", "x": 10, "y": 2 },
+ { "label": ".", "x": 11, "y": 2.1 },
+ { "label": "/", "x": 12, "y": 2.3 },
+
+ { "label": "GUI / KC_HANJ", "x": 3, "y": 3.7 },
+ { "label": "Lower", "x": 4, "y": 3.7 },
+
+ { "label": "Raise", "x": 8, "y": 3.7 },
+ { "label": "Alt / KC_HAEN", "x": 9, "y": 3.7 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/k34/k34.c b/keyboards/k34/k34.c
new file mode 100644
index 0000000000..0dffa61ffd
--- /dev/null
+++ b/keyboards/k34/k34.c
@@ -0,0 +1,4 @@
+// Copyright 2021 jp_smasher (@jp_smasher)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "k34.h"
diff --git a/keyboards/k34/k34.h b/keyboards/k34/k34.h
new file mode 100644
index 0000000000..e34f5408d4
--- /dev/null
+++ b/keyboards/k34/k34.h
@@ -0,0 +1,26 @@
+// Copyright 2021 jp_smasher (@jp_smasher)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
+ k33, k34, k35, k36 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { KC_NO, KC_NO, KC_NO, k33, k34, k35, k36, KC_NO, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/k34/keymaps/default/config.h b/keyboards/k34/keymaps/default/config.h
new file mode 100644
index 0000000000..803471e550
--- /dev/null
+++ b/keyboards/k34/keymaps/default/config.h
@@ -0,0 +1,24 @@
+ /* Copyright Wong Jing Ping <@wongjingping>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#pragma once
+
+// use 1 combo
+#define COMBO_COUNT 1
+#define COMBO_TERM 300
+
+// mod taps for home row mods
+#define TAPPING_TERM_PER_KEY
+#define IGNORE_MOD_TAP_INTERRUPT
+
diff --git a/keyboards/k34/keymaps/default/keymap.c b/keyboards/k34/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6bd8e402da
--- /dev/null
+++ b/keyboards/k34/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+// Copyright 2021 jp_smasher (@jp_smasher)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _L1,
+ _L2
+};
+
+// define layers
+#define L1 MO(_L1)
+#define L2 LT(_L2, KC_ENT)
+
+// define home-row styled alpha-mods
+#define C_C LCTL_T(KC_C)
+#define C_COMM LCTL_T(KC_COMM)
+#define G_A CMD_T(KC_A)
+#define G_SC CMD_T(KC_SCLN)
+#define A_X LOPT_T(KC_X)
+#define A_DOT LOPT_T(KC_DOT)
+#define S_Z SFT_T(KC_Z)
+#define S_SLSH SFT_T(KC_SLSH)
+
+// combos for application shortcuts
+#define SG_LBRC SGUI(KC_LBRC)
+#define SG_RBRC SGUI(KC_RBRC)
+#define G_LBRC G(KC_LBRC)
+#define G_RBRC G(KC_RBRC)
+#define A_SLSH A(KC_SLSH)
+
+/* combos */
+const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
+combo_t key_combos[COMBO_COUNT] = {COMBO(jk_combo, KC_ESC)};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ G_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, G_SC,
+ S_Z, A_X, C_C, KC_V, KC_B, KC_N, KC_M, C_COMM, A_DOT, S_SLSH,
+ L1, KC_SPC, KC_SPC, L2
+ ),
+
+
+ [_L1] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,
+ KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, KC_GRV, KC_QUOT, KC_LBRC, KC_RBRC, KC_BSLS, KC_PIPE,
+ _______, _______, _______, KC_TAB, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______
+ ),
+
+ [_L2] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ _______, _______, _______, _______, KC_DOT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_BSPC,
+ _______, _______, _______, _______, _______, A_SLSH, SG_LBRC, SG_RBRC, G_LBRC, G_RBRC,
+ KC_LALT, KC_LGUI, _______, _______
+ ),
+};
diff --git a/keyboards/k34/keymaps/default/readme.md b/keyboards/k34/keymaps/default/readme.md
new file mode 100644
index 0000000000..bad277222b
--- /dev/null
+++ b/keyboards/k34/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for k34
diff --git a/keyboards/k34/keymaps/default/rules.mk b/keyboards/k34/keymaps/default/rules.mk
new file mode 100644
index 0000000000..439d48d6e6
--- /dev/null
+++ b/keyboards/k34/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes # enable combo
diff --git a/keyboards/k34/readme.md b/keyboards/k34/readme.md
new file mode 100644
index 0000000000..8f17c7e5de
--- /dev/null
+++ b/keyboards/k34/readme.md
@@ -0,0 +1,25 @@
+# k34
+
+![k34](https://i.imgur.com/tarkFIph.jpeg)
+
+## Keyboard Info
+
+The K34 is a custom 34-key unibody keyboard.
+
+* Keyboard Maintainer: [wongjingping](https://github.com/wongjingping)
+All hardware supported can be found in the [k34 repository](https://github.com/wongjingping/k34)
+
+## Flashing Instructions
+
+To enter the bootloader, short the RST and GND pins, or press the key mapped to `RESET`.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make k34:default
+
+Flashing example for this keyboard:
+
+ make k34:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/k34/rules.mk b/keyboards/k34/rules.mk
new file mode 100644
index 0000000000..a61e60c8a4
--- /dev/null
+++ b/keyboards/k34/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/k_type/config.h b/keyboards/k_type/config.h
index 82f641c533..de73e06a98 100644
--- a/keyboards/k_type/config.h
+++ b/keyboards/k_type/config.h
@@ -105,3 +105,82 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0
+
+
+#ifdef RGB_MATRIX_ENABLE
+//#include "gpio.h"
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+
+// i2c_master defines
+# define I2C_COUNT 2
+# define I2C1_CLOCK_SPEED 400000
+
+# define I2C1_SCL_PIN B0 // A2 on pinout = B0
+# define I2C1_SDA_PIN B1 // A2 on pinout = B1
+# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
+# define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
+
+# define USE_I2C2
+# define I2C2_SCL_PIN C10 // A2 on pinout = C10
+# define I2C2_SDA_PIN C11 // A2 on pinout = C11
+# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
+# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
+
+# define DRIVER_ADDR_1 0b1010000
+# define DRIVER_ADDR_2 0b1010000
+# define DRIVER_COUNT 2
+# define DRIVER_1_LED_TOTAL 64
+# define DRIVER_2_LED_TOTAL 55
+# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#endif
diff --git a/keyboards/k_type/i2c_master.c b/keyboards/k_type/i2c_master.c
index 62d732c2d0..af34d55ef6 100644
--- a/keyboards/k_type/i2c_master.c
+++ b/keyboards/k_type/i2c_master.c
@@ -63,22 +63,22 @@ static i2c_status_t chibios_to_qmk(const msg_t* status) {
}
}
-__attribute__((weak)) void i2c_init(I2CDriver *driver, ioportid_t scl_port, ioportid_t sda_port, iopadid_t scl_pad, iopadid_t sda_pad) {
+__attribute__((weak)) void i2c_init(I2CDriver *driver, ioline_t scl_pin, ioline_t sda_pin) {
static uint8_t index = 0;
if (index < I2C_COUNT) {
-
+
// Try releasing special pins for a short time
- palSetPadMode(scl_port, scl_pad, PAL_MODE_INPUT);
- palSetPadMode(sda_port, sda_pad, PAL_MODE_INPUT);
+ palSetLineMode(scl_pin, PAL_MODE_INPUT);
+ palSetLineMode(sda_pin, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
#if defined(USE_GPIOV1)
- palSetPadMode(scl_port, scl_pad, I2C1_SCL_PAL_MODE);
- palSetPadMode(sda_port, sda_pad, I2C1_SDA_PAL_MODE);
+ palSetLineMode(scl_pin, I2C1_SCL_PAL_MODE);
+ palSetLineMode(sda_pin, I2C1_SDA_PAL_MODE);
#else
- palSetPadMode(scl_port, scl_pad, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
- palSetPadMode(sda_port, sda_pad, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
+ palSetLineMode(scl_pin, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
+ palSetLineMode(sda_pin, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN);
#endif
drivers[index++] = driver;
diff --git a/keyboards/k_type/i2c_master.h b/keyboards/k_type/i2c_master.h
index 5a7893fae8..d4e9d6878f 100644
--- a/keyboards/k_type/i2c_master.h
+++ b/keyboards/k_type/i2c_master.h
@@ -58,11 +58,11 @@
# endif
#endif
-#ifndef I2C1_SCL
-# define I2C1_SCL 6
+#ifndef I2C1_SCL_PIN
+# define I2C1_SCL_PIN 6
#endif
-#ifndef I2C1_SDA
-# define I2C1_SDA 7
+#ifndef I2C1_SDA_PIN
+# define I2C1_SDA_PIN 7
#endif
#ifdef USE_I2CV1
@@ -118,7 +118,7 @@ typedef int16_t i2c_status_t;
#define I2C_STATUS_ERROR (-1)
#define I2C_STATUS_TIMEOUT (-2)
-void i2c_init(I2CDriver *driver, ioportid_t scl_port, ioportid_t sda_port, iopadid_t scl_pad, iopadid_t sda_pad);
+void i2c_init(I2CDriver *driver, ioline_t scl_pin, ioline_t sda_pin);
i2c_status_t i2c_start(uint8_t index, uint8_t address);
i2c_status_t i2c_transmit(uint8_t index, uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
i2c_status_t i2c_receive(uint8_t index, uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
diff --git a/keyboards/k_type/is31fl3733-dual.c b/keyboards/k_type/is31fl3733-dual.c
index 8f39e73c69..e76479b01a 100644
--- a/keyboards/k_type/is31fl3733-dual.c
+++ b/keyboards/k_type/is31fl3733-dual.c
@@ -51,7 +51,7 @@
#define ISSI_REG_CSPULLUP 0x10 // PG3
#ifndef ISSI_TIMEOUT
-# define ISSI_TIMEOUT 100
+# define ISSI_TIMEOUT 5000
#endif
#ifndef ISSI_PERSISTENCE
@@ -80,12 +80,12 @@ bool IS31FL3733_write_register(uint8_t index, uint8_t addr, uint8_t reg, uint8_t
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, TIME_US2I(ISSI_TIMEOUT)) != 0) {
return false;
}
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 2, TIME_US2I(ISSI_TIMEOUT)) != 0) {
return false;
}
#endif
@@ -110,12 +110,12 @@ bool IS31FL3733_write_pwm_buffer(uint8_t index, uint8_t addr, uint8_t *pwm_buffe
#if ISSI_PERSISTENCE > 0
for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) {
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, TIME_US2I(ISSI_TIMEOUT)) != 0) {
return false;
}
}
#else
- if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) {
+ if (i2c_transmit(index, addr << 1, g_twi_transfer_buffer, 17, TIME_US2I(ISSI_TIMEOUT)) != 0) {
return false;
}
#endif
diff --git a/keyboards/k_type/is31fl3733-dual.h b/keyboards/k_type/is31fl3733-dual.h
index ea45a70867..d4af1848fb 100644
--- a/keyboards/k_type/is31fl3733-dual.h
+++ b/keyboards/k_type/is31fl3733-dual.h
@@ -20,6 +20,7 @@
#include <stdint.h>
#include <stdbool.h>
+#include "progmem.h"
typedef struct is31_led {
uint8_t driver : 2;
diff --git a/keyboards/k_type/k_type-rgbdriver.c b/keyboards/k_type/k_type-rgbdriver.c
index 8369aa909e..5ae132d63a 100644
--- a/keyboards/k_type/k_type-rgbdriver.c
+++ b/keyboards/k_type/k_type-rgbdriver.c
@@ -23,10 +23,10 @@
static void init(void) {
- i2c_init(&I2CD1, I2C1_SCL_BANK, I2C1_SDA_BANK, I2C1_SCL, I2C1_SDA);
+ i2c_init(&I2CD1, I2C1_SCL_PIN, I2C1_SDA_PIN);
IS31FL3733_init(0, DRIVER_ADDR_1, 0);
# ifdef USE_I2C2
- i2c_init(&I2CD2, I2C2_SCL_BANK, I2C2_SDA_BANK, I2C2_SCL, I2C2_SDA);
+ i2c_init(&I2CD2, I2C2_SCL_PIN, I2C2_SDA_PIN);
IS31FL3733_init(1, DRIVER_ADDR_2, 0);
# endif
for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
diff --git a/keyboards/k_type/k_type.c b/keyboards/k_type/k_type.c
index 29e7fa57b2..0e10710cb1 100644
--- a/keyboards/k_type/k_type.c
+++ b/keyboards/k_type/k_type.c
@@ -67,11 +67,11 @@ const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, H_7, G_7, I_7 },
{ 0, H_8, G_8, I_8 },
{ 0, H_9, G_9, I_9 },
- { 0, H_10, G_10, I_10 },
- { 0, H_11, G_11, I_11 },
- { 0, H_12, G_12, I_12 },
- { 0, H_13, G_13, I_13 },
- { 0, H_14, G_14, I_14 },
+ { 0, H_10, G_10, I_10 },
+ { 0, H_11, G_11, I_11 },
+ { 0, H_12, G_12, I_12 },
+ { 0, H_13, G_13, I_13 },
+ { 0, H_14, G_14, I_14 },
{ 0, H_15, G_15, I_15 },
{ 0, H_16, G_16, I_16 },
@@ -84,15 +84,15 @@ const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 0, K_7, J_7, L_7 },
{ 0, K_8, J_8, L_8 },
{ 0, K_9, J_9, L_9 },
- { 0, K_10, J_10, L_10 },
- { 0, K_11, J_11, L_11 },
- { 0, K_12, J_12, L_12 },
- { 0, K_13, J_13, L_13 },
- { 0, K_14, J_14, L_14 },
+ { 0, K_10, J_10, L_10 },
+ { 0, K_11, J_11, L_11 },
+ { 0, K_12, J_12, L_12 },
+ { 0, K_13, J_13, L_13 },
+ { 0, K_14, J_14, L_14 },
{ 0, K_15, J_15, L_15 },
{ 0, K_16, J_16, L_16 },
- // Driver 2 is on I2C2 - currently not usable with i2c_master
+ // Driver 2 is on I2C2
{ 1, B_1, A_1, C_1 },
{ 1, B_2, A_2, C_2 },
{ 1, B_3, A_3, C_3 },
@@ -176,7 +176,7 @@ led_config_t g_led_config = {
{ 0, 42.67 }, { 13.18, 42.67 }, { 26.35, 42.67 }, { 39.53, 42.67 }, { 52.71, 42.67 }, { 65.88, 42.67 }, { 79.06, 42.67 }, { 92.24, 42.67 }, { 105.41, 42.67 }, { 118.59, 42.67 }, { 131.77, 42.67 }, { 144.94, 42.67 }, { 171.29, 42.67 },
{ 0, 53.33 }, { 26.35, 53.33 }, { 39.53, 53.33 }, { 52.71, 53.33 }, { 65.88, 53.33 }, { 79.06, 53.33 }, { 92.24, 53.33 }, { 105.41, 53.33 }, { 118.59, 53.33 }, { 131.77, 53.33 }, { 144.94, 53.33 }, { 171.29, 53.33 }, { 210.82, 53.33 },
{ 0, 64 }, { 13.18, 64 }, { 26.35, 64 }, { 79.06, 64 }, { 131.77, 64 }, { 144.94, 64 }, { 158.12, 64 }, { 171.29, 64 }, { 197.65, 64 }, { 210.82, 64 }, { 224, 64 },
-
+
// Underglow LED
{ 224, 64 }, { 206.77, 64 }, { 189.54, 64 }, { 172.31, 64 }, { 155.08, 64 }, { 137.85, 64 }, { 120.61, 64 }, { 103.38, 64 }, { 86.15, 64 }, { 68.92, 64 }, { 51.69, 64 }, { 34.46, 64 }, { 17.23, 64 }, { 0, 64 },
{ 0, 42.67 }, { 0, 21.33 },
@@ -197,10 +197,39 @@ led_config_t g_led_config = {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2,
-
+
2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
}
};
#endif
+
+
+void keyboard_pre_init_kb(void) {
+#ifdef RGB_MATRIX_ENABLE
+ // Turn on LED controller
+ setPinOutput(B16);
+ writePinHigh(B16);
+#endif
+ keyboard_pre_init_user();
+}
+
+void matrix_init_kb(void) {
+ // put your keyboard start-up code here
+ // runs once when the firmware starts up
+
+#ifdef RGB_MATRIX_ENABLE
+ /*
+ * Since K20x is stuck with a 32 byte EEPROM (see tmk_core/common/chibios/eeprom_teensy.c),
+ * and neither led_matrix_eeconfig.speed or .flags fit in this boundary, just force their values to default on boot.
+ */
+# if !defined(RGB_MATRIX_STARTUP_SPD)
+# define RGB_MATRIX_STARTUP_SPD UINT8_MAX / 2
+# endif
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD),
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+#endif
+
+ matrix_init_user();
+}
diff --git a/keyboards/k_type/keymaps/default/keymap.c b/keyboards/k_type/keymaps/default/keymap.c
index b8df4df5ee..ef069af650 100644
--- a/keyboards/k_type/keymaps/default/keymap.c
+++ b/keyboards/k_type/keymaps/default/keymap.c
@@ -8,6 +8,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______,
+
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/k_type/keymaps/rgb/rules.mk b/keyboards/k_type/keymaps/default/rules.mk
index aad92997d0..aad92997d0 100644
--- a/keyboards/k_type/keymaps/rgb/rules.mk
+++ b/keyboards/k_type/keymaps/default/rules.mk
diff --git a/keyboards/k_type/keymaps/rgb/config.h b/keyboards/k_type/keymaps/rgb/config.h
deleted file mode 100644
index 4c5d234545..0000000000
--- a/keyboards/k_type/keymaps/rgb/config.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
-
-# define RGB_MATRIX_LED_FLUSH_LIMIT 100
-
-
-// i2c_master defines
-# define I2C_COUNT 2
-
-# define I2C1_BANK GPIOB
-# define I2C1_SCL 0 // A2 on pinout = B0
-# define I2C1_SDA 1 // A2 on pinout = B1
-# define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-# define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-
-# define USE_I2C2
-# define I2C2_BANK GPIOC
-# define I2C2_SCL 10 // A2 on pinout = C10
-# define I2C2_SDA 11 // A2 on pinout = C11
-# define I2C2_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-# define I2C2_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
-
-# define DRIVER_ADDR_1 0b1010000
-# define DRIVER_ADDR_2 0b1010000
-# define DRIVER_COUNT 2
-# define DRIVER_1_LED_TOTAL 64
-# define DRIVER_2_LED_TOTAL 55
-# define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#endif
diff --git a/keyboards/k_type/keymaps/rgb/keymap.c b/keyboards/k_type/keymaps/rgb/keymap.c
deleted file mode 100644
index 88f5eaa37b..0000000000
--- a/keyboards/k_type/keymaps/rgb/keymap.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
-
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_tkl_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______,
-
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_HUI, RGB_SAI, RGB_VAI,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-};
-
-#ifdef RGB_MATRIX_ENABLE
-// Turn off SDB
-void keyboard_pre_init_user() {
- palSetPadMode(GPIOB, 16, PAL_MODE_OUTPUT_PUSHPULL);
- palSetPad(GPIOB, 16);
-}
-#endif
diff --git a/keyboards/k_type/keymaps/rgb/readme.md b/keyboards/k_type/keymaps/rgb/readme.md
deleted file mode 100644
index 330321976c..0000000000
--- a/keyboards/k_type/keymaps/rgb/readme.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# K-Type RGB Matrix Keymap
-
-This is an experimental keymap adding support for RGB Matrix on the K-Type.
-
-The keyboard should now support full RGB lightings. The lighting animations are running at 10 fps for performance reasons.
-You can configure this by changing the `RGB_MATRIX_LED_FLUSH_LIMIT` inside the `config.h` file to a lower value.
-For example `RGB_MATRIX_LED_FLUSH_LIMIT 16` would mean that the animations run every 16 ms or at 60 fps.
diff --git a/keyboards/k_type/mcuconf.h b/keyboards/k_type/mcuconf.h
index 1d9ecf6104..b898d25e88 100644
--- a/keyboards/k_type/mcuconf.h
+++ b/keyboards/k_type/mcuconf.h
@@ -52,6 +52,6 @@
#define KINETIS_I2C_I2C0_PRIORITY 4
#define KINETIS_I2C_USE_I2C1 TRUE
-#define KINETIS_I2C_I2C0_PRIORITY 4
+#define KINETIS_I2C_I2C1_PRIORITY 4
#endif /* _MCUCONF_H_ */
diff --git a/keyboards/k_type/rules.mk b/keyboards/k_type/rules.mk
index dc2534a282..93c81d9ada 100644
--- a/keyboards/k_type/rules.mk
+++ b/keyboards/k_type/rules.mk
@@ -15,22 +15,21 @@ BOARD = IC_TEENSY_3_1
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
+# RGB options
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = custom
+# Additional files for RGB lighting
SRC += k_type-rgbdriver.c
-
QUANTUM_LIB_SRC += i2c_master.c is31fl3733-dual.c
LAYOUTS = tkl_ansi
diff --git a/keyboards/kabedon/kabedon78s/rules.mk b/keyboards/kabedon/kabedon78s/rules.mk
index a580bc2077..30854a59b9 100644
--- a/keyboards/kabedon/kabedon78s/rules.mk
+++ b/keyboards/kabedon/kabedon78s/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kabedon/kabedon980/rules.mk b/keyboards/kabedon/kabedon980/rules.mk
index a580bc2077..30854a59b9 100644
--- a/keyboards/kabedon/kabedon980/rules.mk
+++ b/keyboards/kabedon/kabedon980/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kabedon/kabedon98e/rules.mk b/keyboards/kabedon/kabedon98e/rules.mk
index e93f7b4b92..05b69c269a 100644
--- a/keyboards/kabedon/kabedon98e/rules.mk
+++ b/keyboards/kabedon/kabedon98e/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kagamidget/keymaps/default/config.h b/keyboards/kagamidget/keymaps/default/config.h
deleted file mode 100644
index bab59c67e0..0000000000
--- a/keyboards/kagamidget/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 yynmt
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kagamidget/rules.mk b/keyboards/kagamidget/rules.mk
index 2368de648d..9afe45ddf5 100644
--- a/keyboards/kagamidget/rules.mk
+++ b/keyboards/kagamidget/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kapcave/arya/arya.h b/keyboards/kapcave/arya/arya.h
index ea1d1916c3..38e4afaf05 100644
--- a/keyboards/kapcave/arya/arya.h
+++ b/keyboards/kapcave/arya/arya.h
@@ -36,8 +36,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ KC_NO , K71 , K72 , K73 , K74 , K75 , K76 , K77 }, \
{ K80 , K81 , K82 , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \
}
-
-
-
-
-#define LAYOUT_all LAYOUT_alice_split_bs
diff --git a/keyboards/kapcave/arya/info.json b/keyboards/kapcave/arya/info.json
index fb220aa070..72ee2e1d74 100644
--- a/keyboards/kapcave/arya/info.json
+++ b/keyboards/kapcave/arya/info.json
@@ -3,75 +3,79 @@
"url": "https://kapcave.com/products/arya",
"maintainer": "nachie",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_alice_split_bs": {
"layout": [
- {"label":"Esc", "x":2.75, "y":5.9},
- {"label":"\u00ac", "x":4, "y":6.0},
- {"label":"!", "x":5, "y":6.0},
- {"label":"\"", "x":6, "y":6.0},
- {"label":"_", "x":15.25, "y":6.0},
- {"label":"+", "x":16.25, "y":6.0},
- {"label":"", "x":17.25, "y":6.0},
- {"label":"", "x":18.25, "y":6.0},
- {"label":"Pg Up", "x":2.5, "y":6.9},
- {"label":"Tab", "x":3.75, "y":7.0, "w":1.5},
- {"label":"Q", "x":5.25, "y":7.0},
- {"label":"P", "x":15, "y":7.0},
- {"label":"{", "x":16, "y":7.0},
- {"label":"}", "x":17, "y":7.0},
- {"label":"|", "x":18, "y":7.0, "w":1.5},
- {"label":"Pg Dn", "x":2.25, "y":7.9},
- {"label":"Caps Lock", "x":3.5, "y":8.0, "w":1.75},
- {"label":"A", "x":5.25, "y":8.0},
- {"label":":", "x":15.5, "y":8.0},
- {"label":"\"", "x":16.5, "y":8.0},
- {"label":"Enter", "x":17.5, "y":8.0, "w":2.25},
- {"label":"Shift", "x":3.25, "y":9.0, "w":2.25},
- {"label":"Z", "x":5.5, "y":9.0},
- {"label":">", "x":15.25, "y":9.0},
- {"label":"?", "x":16.25, "y":9.0},
- {"label":"Shift", "x":17.25, "y":9.0, "w":1.75},
- {"label":"Fn", "x":19, "y":9.0},
- {"label":"Ctrl", "x":3.25, "y":10.0, "w":1.5},
- {"label":"Ctrl", "x":18.25, "y":10.0, "w":1.5},
- {"label":"\u00a3", "x":8.25, "y":4.5},
- {"label":"$", "x":9.25, "y":4.5},
- {"label":"%", "x":10.25, "y":4.5},
- {"label":"^", "x":11.25, "y":4.5},
- {"label":"W", "x":7.75, "y":5.5},
- {"label":"E", "x":8.75, "y":5.5},
- {"label":"R", "x":9.75, "y":5.5},
- {"label":"T", "x":10.75, "y":5.5},
- {"label":"S", "x":8, "y":6.5},
- {"label":"D", "x":9, "y":6.5},
- {"label":"F", "x":10, "y":6.5},
- {"label":"G", "x":11, "y":6.5},
- {"label":"X", "x":8.5, "y":7.5},
- {"label":"C", "x":9.5, "y":7.5},
- {"label":"V", "x":10.5, "y":7.5},
- {"label":"B", "x":11.5, "y":7.5},
- {"label":"Alt", "x":8.25, "y":8.5, "w":1.5},
- {"label":"", "x":9.75, "y":8.5, "w":2},
- {"label":"Fn", "x":11.75, "y":8.5, "w":1.25},
- {"label":"&", "x":9.5, "y":9.0},
- {"label":"*", "x":10.5, "y":9.0},
- {"label":"(", "x":11.5, "y":9.0},
- {"label":")", "x":12.5, "y":9.0},
- {"label":"Y", "x":9, "y":10.0},
- {"label":"U", "x":10, "y":10.0},
- {"label":"I", "x":11, "y":10.0},
- {"label":"O", "x":12, "y":10.0},
- {"label":"H", "x":9.25, "y":11.0},
- {"label":"J", "x":10.25, "y":11.0},
- {"label":"K", "x":11.25, "y":11.0},
- {"label":"L", "x":12.25, "y":11.0},
- {"label":"Fn", "x":8.75, "y":12.0},
- {"label":"N", "x":9.75, "y":12.0},
- {"label":"M", "x":10.75, "y":12.0},
- {"label":"<", "x":11.75, "y":12.0},
- {"label":"Shift", "x":8.75, "y":13.0, "w":2.75},
- {"label":"Alt", "x":11.5, "y":13.0, "w":1.5}
+ {"x":0.4, "y":0},
+ {"x":1.55, "y":0.1},
+ {"x":2.55, "y":0.1},
+ {"x":3.55, "y":0},
+ {"x":4.55, "y":0.1},
+ {"x":5.55, "y":0.1},
+ {"x":6.55, "y":0.1},
+ {"x":7.55, "y":0.1},
+ {"x":9.75, "y":0.1},
+ {"x":10.75, "y":0.1},
+ {"x":11.75, "y":0.1},
+ {"x":12.75, "y":0.1},
+ {"x":13.75, "y":0},
+ {"x":14.75, "y":0.1},
+ {"x":15.75, "y":0.1},
+ {"x":16.75, "y":0.1},
+
+ {"x":0.2, "y":1.0},
+ {"x":1.35, "y":1.1, "w":1.5},
+ {"x":2.85, "y":1.1},
+ {"x":3.85, "y":1.1},
+ {"x":4.85, "y":1.1},
+ {"x":5.85, "y":1.1},
+ {"x":6.85, "y":1.1},
+ {"x":9.45, "y":1.1},
+ {"x":10.45, "y":1.1},
+ {"x":11.45, "y":1.1},
+ {"x":12.45, "y":1.1},
+ {"x":13.45, "y":1.1},
+ {"x":14.45, "y":1.1},
+ {"x":15.45, "y":1.1},
+ {"x":16.45, "y":1.1, "w":1.5},
+
+ {"x":0, "y":2.0},
+ {"x":1.15, "y":2.1, "w":1.75},
+ {"x":2.9, "y":2.1},
+ {"x":3.9, "y":2.1},
+ {"x":4.9, "y":2.1},
+ {"x":5.9, "y":2.1},
+ {"x":6.9, "y":2.1},
+ {"x":9.9, "y":2.1},
+ {"x":10.9, "y":2.1},
+ {"x":11.9, "y":2.1},
+ {"x":12.9, "y":2.1},
+ {"x":13.9, "y":2.1},
+ {"x":14.9, "y":2.1},
+ {"x":15.9, "y":2.1, "w":2.25},
+
+ {"x":0.95, "y":3.1, "w":2.25},
+ {"x":3.2, "y":3.1},
+ {"x":4.2, "y":3.1},
+ {"x":5.2, "y":3.1},
+ {"x":6.2, "y":3.1},
+ {"x":7.2, "y":3.1},
+ {"x":9.6, "y":3.1},
+ {"x":10.6, "y":3.1},
+ {"x":11.6, "y":3.1},
+ {"x":12.6, "y":3.1},
+ {"x":13.6, "y":3.1},
+ {"x":14.6, "y":3.1},
+ {"x":15.6, "y":3.1, "w":1.75},
+ {"x":17.35, "y":3.1},
+
+ {"x":0.95, "y":4.1, "w":1.5},
+ {"x":3.85, "y":4.1, "w":1.5},
+ {"x":5.35, "y":4.1, "w":2},
+ {"x":7.35, "y":4.1, "w":1.25},
+ {"x":9.6, "y":4.1, "w":2.75},
+ {"x":12.35, "y":4.1, "w":1.5},
+ {"x":16.65, "y":4.1, "w":1.5}
]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/kapcave/arya/rules.mk b/keyboards/kapcave/arya/rules.mk
index 4732327713..5ceb651b1c 100644
--- a/keyboards/kapcave/arya/rules.mk
+++ b/keyboards/kapcave/arya/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -23,3 +20,5 @@ ENCODER_ENABLE = yes
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = alice_split_bs
diff --git a/keyboards/kapcave/gskt00/rules.mk b/keyboards/kapcave/gskt00/rules.mk
index 4766062779..7774ac0f87 100755
--- a/keyboards/kapcave/gskt00/rules.mk
+++ b/keyboards/kapcave/gskt00/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/kapcave/paladin64/rules.mk b/keyboards/kapcave/paladin64/rules.mk
index f526755d4b..41bf364b41 100755
--- a/keyboards/kapcave/paladin64/rules.mk
+++ b/keyboards/kapcave/paladin64/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kapcave/paladinpad/rules.mk b/keyboards/kapcave/paladinpad/rules.mk
index bb918b188d..be9806cab9 100644
--- a/keyboards/kapcave/paladinpad/rules.mk
+++ b/keyboards/kapcave/paladinpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kapl/config.h b/keyboards/kapl/config.h
new file mode 100644
index 0000000000..ba249d4667
--- /dev/null
+++ b/keyboards/kapl/config.h
@@ -0,0 +1,5 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/kapl/info.json b/keyboards/kapl/info.json
new file mode 100644
index 0000000000..67e5470288
--- /dev/null
+++ b/keyboards/kapl/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "Kapl",
+ "url": "https://github.com/keyzog/kapl",
+ "maintainer": "keyzog",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0.38},
+ {"label":"L01", "x":1, "y":0.38},
+ {"label":"L02", "x":2, "y":0.13},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0.13},
+ {"label":"L05", "x":5, "y":0.25},
+ {"label":"L06", "x":6, "y":0.35},
+ {"label":"R00", "x":8.67, "y":0.35},
+ {"label":"R01", "x":9.67, "y":0.25},
+ {"label":"R02", "x":10.67, "y":0.13},
+ {"label":"R03", "x":11.67, "y":0},
+ {"label":"R04", "x":12.67, "y":0.13},
+ {"label":"R05", "x":13.67, "y":0.38},
+ {"label":"R06", "x":14.67, "y":0.38},
+
+ {"label":"L10", "x":0, "y":1.38},
+ {"label":"L11", "x":1, "y":1.38},
+ {"label":"L12", "x":2, "y":1.13},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1.13},
+ {"label":"L15", "x":5, "y":1.25},
+ {"label":"L16", "x":6, "y":1.35},
+ {"label":"R10", "x":8.67, "y":1.35},
+ {"label":"R11", "x":9.67, "y":1.25},
+ {"label":"R12", "x":10.67, "y":1.13},
+ {"label":"R13", "x":11.67, "y":1},
+ {"label":"R14", "x":12.67, "y":1.13},
+ {"label":"R15", "x":13.67, "y":1.38},
+ {"label":"R16", "x":14.67, "y":1.38},
+
+ {"label":"L20", "x":0, "y":2.38},
+ {"label":"L21", "x":1, "y":2.38},
+ {"label":"L22", "x":2, "y":2.13},
+ {"label":"L23", "x":3, "y":2.0},
+ {"label":"L24", "x":4, "y":2.13},
+ {"label":"L25", "x":5, "y":2.25},
+ {"label":"L26", "x":6, "y":2.35},
+ {"label":"R20", "x":8.67, "y":2.35},
+ {"label":"R21", "x":9.67, "y":2.25},
+ {"label":"R22", "x":10.67, "y":2.13},
+ {"label":"R23", "x":11.67, "y":2.0},
+ {"label":"R24", "x":12.67, "y":2.13},
+ {"label":"R25", "x":13.67, "y":2.38},
+ {"label":"R26", "x":14.67, "y":2.38},
+
+ {"label":"L30", "x":0, "y":3.38},
+ {"label":"L31", "x":1, "y":3.38},
+ {"label":"L32", "x":2, "y":3.13},
+ {"label":"L33", "x":3, "y":3.0},
+ {"label":"L34", "x":4, "y":3.13},
+ {"label":"L35", "x":5, "y":3.25},
+ {"label":"L36", "x":6, "y":3.35},
+ {"label":"R30", "x":8.67, "y":3.35},
+ {"label":"R31", "x":9.67, "y":3.25},
+ {"label":"R32", "x":10.67, "y":3.13},
+ {"label":"R33", "x":11.67, "y":3.0},
+ {"label":"R34", "x":12.67, "y":3.13},
+ {"label":"R35", "x":13.67, "y":3.38},
+ {"label":"R36", "x":14.67, "y":3.38},
+
+ {"label":"L40", "x":0, "y":4.38},
+ {"label":"L41", "x":1, "y":4.38},
+ {"label":"L42", "x":2, "y":4.13},
+ {"label":"L43", "x":3, "y":4.0},
+ {"label":"L44", "x":4, "y":4.13},
+ {"label":"L45", "x":5.35, "y":4.92},
+ {"label":"L46", "x":6.35, "y":4.45, "h":1.5},
+ {"label":"R40", "x":8.02, "y":4.45, "h":1.5},
+ {"label":"R41", "x":9.02, "y":4.92},
+ {"label":"R42", "x":10.67, "y":4.13},
+ {"label":"R43", "x":11.67, "y":4.0},
+ {"label":"R44", "x":12.67, "y":4.13},
+ {"label":"R45", "x":13.67, "y":4.38},
+ {"label":"R46", "x":14.67, "y":4.38}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kapl/kapl.c b/keyboards/kapl/kapl.c
new file mode 100644
index 0000000000..165900e142
--- /dev/null
+++ b/keyboards/kapl/kapl.c
@@ -0,0 +1,3 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "kapl.h"
diff --git a/keyboards/kapl/kapl.h b/keyboards/kapl/kapl.h
new file mode 100644
index 0000000000..019e3267d4
--- /dev/null
+++ b/keyboards/kapl/kapl.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#include "quantum.h"
+
+#ifdef KEYBOARD_kapl_rev1
+# include "rev1.h"
+#endif
diff --git a/keyboards/kapl/keymaps/default/config.h b/keyboards/kapl/keymaps/default/config.h
new file mode 100644
index 0000000000..cc82705192
--- /dev/null
+++ b/keyboards/kapl/keymaps/default/config.h
@@ -0,0 +1,3 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
diff --git a/keyboards/kapl/keymaps/default/keymap.c b/keyboards/kapl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e2bea1f47
--- /dev/null
+++ b/keyboards/kapl/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+#define SPC_FN LT(1,KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PGUP, KC_HOME, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_PGDN, KC_END, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EXLM, KC_QUES, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), SPC_FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [1] = LAYOUT( // "FN" Funcional
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_PSCR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F12,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_GRV, KC_TRNS, KC_TRNS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F13,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_TILD, KC_TRNS, KC_TRNS, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_F14,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_F15
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [2] = LAYOUT( // "CNT" Control
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, RGB_SAI, RGB_SPI, RGB_VAI, RGB_HUI, RGB_MOD, KC_NO, KC_NO, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, RGB_SAD, RGB_SPD, RGB_VAD, RGB_HUD, RGB_RMOD, KC_NO, KC_NO, KC_VOLD, KC_MPLY, KC_MNXT, KC_MPRV, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_M_P, KC_NO, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kapl/keymaps/via/config.h b/keyboards/kapl/keymaps/via/config.h
new file mode 100644
index 0000000000..cc82705192
--- /dev/null
+++ b/keyboards/kapl/keymaps/via/config.h
@@ -0,0 +1,3 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
diff --git a/keyboards/kapl/keymaps/via/keymap.c b/keyboards/kapl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..002cc1ef3a
--- /dev/null
+++ b/keyboards/kapl/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+#define ____ KC_TRNS
+#define SPC_FN LT(1,KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_PGUP, KC_HOME, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_PGDN, KC_END, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LBRC, KC_RBRC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EXLM, KC_QUES, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), SPC_FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [1] = LAYOUT( // "FN" Funcional
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_PSCR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_F12,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_GRV, KC_TRNS, KC_TRNS, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_F13,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_PERC, KC_CIRC, KC_LPRN, KC_RPRN, KC_TILD, KC_TRNS, KC_TRNS, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_F14,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_P0, KC_PDOT, KC_PENT, KC_F15
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [2] = LAYOUT( // "CNT" Control
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, RGB_SAI, RGB_SPI, RGB_VAI, RGB_HUI, RGB_MOD, KC_NO, KC_NO, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, RGB_SAD, RGB_SPD, RGB_VAD, RGB_HUD, RGB_RMOD,KC_NO, KC_NO, KC_VOLD, KC_MPLY, KC_MNXT, KC_MPRV, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_M_P, KC_NO, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ ),
+
+ [3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
+ //├────────┼────────┼────────┼────────┼────────┼─┬──────┴─┬──────┴─┐ ┌─┴──────┬─┴──────┬─┼────────┼────────┼────────┼────────┼────────┤
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
+ //└────────┴────────┴────────┴────────┴────────┘ └────────┴────────┘ └────────┴────────┘ └────────┴────────┴────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/kapl/keymaps/via/rules.mk b/keyboards/kapl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kapl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kapl/readme.md b/keyboards/kapl/readme.md
new file mode 100644
index 0000000000..c42a5d8947
--- /dev/null
+++ b/keyboards/kapl/readme.md
@@ -0,0 +1,27 @@
+# Kapl Keyboard
+
+![Kapl Keyboard](https://i.imgur.com/XH8APgi.jpg)
+![Kapl PCB](https://i.imgur.com/uir2nQq.jpg)
+
+The Kapl is a split ergonomic keyboard with 70 keys (7x5).
+
+* Keyboard Maintainer: [keyzog](https://github.com/keyzog)
+* Hardware Supported: Kapl PCB / Pro Micro
+* Hardware Availability: Order PCBs with gerber files from the [repository](https://github.com/keyzog/kapl/tree/main/gerbers)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kapl/rev1:default
+
+Flashing example for this keyboard:
+
+ make kapl/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the reset button on the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/kapl/rev1/config.h b/keyboards/kapl/rev1/config.h
new file mode 100644
index 0000000000..4984459275
--- /dev/null
+++ b/keyboards/kapl/rev1/config.h
@@ -0,0 +1,99 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4C41 // "LA" Lozyuk Alexander
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER keyzog
+#define PRODUCT Kapl Keyboard
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+
+/* Serial settings */
+#define USE_SERIAL
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+/* Select hand configuration */
+#define MASTER_LEFT
+
+
+#define RGB_DI_PIN D4
+#define RGBLED_NUM 88
+#define RGBLED_SPLIT { 44, 44 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_LIMIT_VAL 120 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+
+#define DRIVER_LED_TOTAL 88
+#define RGB_MATRIX_SPLIT { 44, 44 }
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+#define SPLIT_TRANSPORT_MIRROR
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 16
+#define RGBLIGHT_VAL_STEP 16
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_MATRIX_HUE_STEP 8
+#define RGB_MATRIX_SAT_STEP 16
+#define RGB_MATRIX_VAL_STEP 16
+#define RGB_MATRIX_SPD_STEP 10
+// EFFECTS
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+// KEYPRESSES EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
diff --git a/keyboards/kapl/rev1/rev1.c b/keyboards/kapl/rev1/rev1.c
new file mode 100644
index 0000000000..b51021307e
--- /dev/null
+++ b/keyboards/kapl/rev1/rev1.c
@@ -0,0 +1,55 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "kapl.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Left Hand
+ // { 8, 7, 6, 5, 4, 3, 2, 1, 0 }, // underglow
+ { 9, 10, 11, 12, 13, 14, 15 },
+ { 22, 21, 20, 19, 18, 17, 16 },
+ { 23, 24, 25, 26, 27, 28, 29 },
+ { 36, 35, 34, 33, 32, 31, 30 },
+ { 37, 38, 39, 40, 41, 42, 43 },
+
+ // Right Hand
+ // { 44, 45, 46, 47, 48, 49, 50, 51, 52 }, // underglow
+ { 53, 54, 55, 56, 57, 58, 59 },
+ { 66, 65, 64, 63, 62, 61, 60 },
+ { 67, 68, 69, 70, 71, 72, 73 },
+ { 80, 79, 78, 77, 76, 75, 74 },
+ { 81, 82, 83, 84, 85, 86, 87 }
+}, {
+ // Left Hand
+ {96, 57}, {112, 44}, {112, 19}, {80, 19}, {48, 19}, {16, 19}, {16, 57}, {48, 57}, {80, 57}, // underglow
+ {0, 0}, {17, 0}, {34, 0}, {52, 0}, {69, 0}, {86, 0}, {103, 0},
+ {103, 16}, {86, 16}, {69, 16}, {52, 16}, {34, 16}, {17, 16}, {0, 16},
+ {0, 32}, {17, 32}, {34, 32}, {52, 32}, {69, 32}, {86, 32}, {103, 32},
+ {103, 48}, {86, 48}, {69, 48}, {52, 48}, {34, 48}, {17, 48}, {0, 48},
+ {0, 64}, {17, 64}, {34, 64}, {52, 64}, {69, 64}, {86, 64}, {103, 64},
+
+ // Right Hand
+ {144, 57}, {128, 44}, {128, 19}, {160, 19}, {192, 19}, {224, 19}, {224, 57}, {192, 57}, {160, 57}, // underglow
+ {224, 0}, {207, 0}, {190, 0}, {172, 0}, {155, 0}, {138, 0}, {121, 0},
+ {121, 16}, {138, 16}, {155, 16}, {172, 16}, {190, 16}, {207, 16}, {224, 16},
+ {224, 32}, {207, 32}, {190, 32}, {172, 32}, {155, 32}, {138, 32}, {121, 32},
+ {121, 48}, {138, 48}, {155, 48}, {172, 48}, {190, 48}, {207, 48}, {224, 48},
+ {224, 64}, {207, 64}, {190, 64}, {172, 64}, {155, 64}, {138, 64}, {121, 64}
+}, {
+ // Left Hand
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, // underglow
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1,
+
+ // Right Hand
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, // underglow
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1
+} };
+#endif
diff --git a/keyboards/kapl/rev1/rev1.h b/keyboards/kapl/rev1/rev1.h
new file mode 100644
index 0000000000..68649a7991
--- /dev/null
+++ b/keyboards/kapl/rev1/rev1.h
@@ -0,0 +1,34 @@
+// Copyright 2022 Alexander Lozyuk (@keyzog)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "kapl.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25, L26 }, \
+ { L30, L31, L32, L33, L34, L35, L36 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { R06, R05, R04, R03, R02, R01, R00 }, \
+ { R16, R15, R14, R13, R12, R11, R10 }, \
+ { R26, R25, R24, R23, R22, R21, R20 }, \
+ { R36, R35, R34, R33, R32, R31, R30 }, \
+ { R46, R45, R44, R43, R42, R41, R40 } \
+}
diff --git a/keyboards/kapl/rev1/rules.mk b/keyboards/kapl/rev1/rules.mk
new file mode 100644
index 0000000000..e3a4137694
--- /dev/null
+++ b/keyboards/kapl/rev1/rules.mk
@@ -0,0 +1,5 @@
+# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/kapl/rules.mk b/keyboards/kapl/rules.mk
new file mode 100644
index 0000000000..19a0cb5fa4
--- /dev/null
+++ b/keyboards/kapl/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes # Split common
+
+DEFAULT_FOLDER = kapl/rev1
diff --git a/keyboards/karlb/kbic65/info.json b/keyboards/karlb/kbic65/info.json
new file mode 100644
index 0000000000..560e162a3e
--- /dev/null
+++ b/keyboards/karlb/kbic65/info.json
@@ -0,0 +1,400 @@
+{
+ "keyboard_name": "KBIC65",
+ "url": "https://karlb.eu/kbic65/",
+ "maintainer": "b-karl",
+ "diode_direction": "ROW2COL",
+ "matrix_pins": {
+ "cols": [
+ "B2",
+ "B6",
+ "B3",
+ "B1",
+ "F7",
+ "F6",
+ "F5",
+ "F4"
+ ],
+ "rows": [
+ "B5",
+ "D1",
+ "B4",
+ "D0",
+ "E6",
+ "D4",
+ "D7",
+ "C6",
+ "D2"
+ ]
+ },
+ "usb": {
+ "vid": "0x424B",
+ "pid": "0xD87A",
+ "device_ver": "0x0001"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "Esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "!",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "\"",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "£",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "$",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "%",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "^",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "&",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "*",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "(",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": ")",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "_",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "BkSp1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "BkSp2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "Delete",
+ "x": 15.5,
+ "y": 0
+ },
+ {
+ "label": "Tab",
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "label": "{",
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "label": "}",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "Enter_ISO",
+ "x": 13.75,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "label": "¬",
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "label": "Caps Lock",
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "label": ":",
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "label": "@",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "~",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "PgUp",
+ "x": 15.5,
+ "y": 2
+ },
+ {
+ "label": "Shift",
+ "x": 0,
+ "y": 3,
+ "w": 1.25
+ },
+ {
+ "label": "|",
+ "x": 1.25,
+ "y": 3
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "label": "<",
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "label": ">",
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "label": "?",
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "label": "Shift",
+ "x": 12.25,
+ "y": 3,
+ "w": 1.75
+ },
+ {
+ "label": "PgDn",
+ "x": 15.5,
+ "y": 3
+ },
+ {
+ "label": "↑",
+ "x": 14.25,
+ "y": 3.25
+ },
+ {
+ "label": "Ctrl",
+ "x": 0,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Win",
+ "x": 1.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Alt",
+ "x": 2.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "Space",
+ "x": 3.75,
+ "y": 4,
+ "w": 6.25
+ },
+ {
+ "label": "AltGr",
+ "x": 10,
+ "y": 4
+ },
+ {
+ "label": "Win",
+ "x": 11,
+ "y": 4
+ },
+ {
+ "label": "Ctrl",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "←",
+ "x": 13.25,
+ "y": 4.25
+ },
+ {
+ "label": "↓",
+ "x": 14.25,
+ "y": 4.25
+ },
+ {
+ "label": "→",
+ "x": 15.25,
+ "y": 4.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/karlb/kbic65/kbic65.c b/keyboards/karlb/kbic65/kbic65.c
new file mode 100644
index 0000000000..910c2a6c72
--- /dev/null
+++ b/keyboards/karlb/kbic65/kbic65.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "kbic65.h"
diff --git a/keyboards/karlb/kbic65/kbic65.h b/keyboards/karlb/kbic65/kbic65.h
new file mode 100644
index 0000000000..112386bc60
--- /dev/null
+++ b/keyboards/karlb/kbic65/kbic65.h
@@ -0,0 +1,28 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+#define LAYOUT( \
+ K10, K00, K11, K01, K12, K02, K13, K03, K14, K04, K15, K05, K16, K06, K17, K07, \
+ K30, K20, K31, K21, K32, K22, K33, K23, K34, K24, K35, K25, K36, K26, K37, \
+ K50, K40, K51, K41, K52, K42, K53, K43, K54, K44, K55, K45, K56, K47, \
+ K70, K60, K71, K61, K72, K62, K73, K63, K74, K64, K75, K65, K76, K66, K57, \
+ K80, K81, K82, K83, K84, K85, K86, K87, K77, K67 \
+) { \
+ {K00, K01, K02, K03, K04, K05, K06, K07}, \
+ {K10, K11, K12, K13, K14, K15, K16, K17}, \
+ {K20, K21, K22, K23, K24, K25, K26, KC_NO}, \
+ {K30, K31, K32, K33, K34, K35, K36, K37}, \
+ {K40, K41, K42, K43, K44, K45, KC_NO, K47}, \
+ {K50, K51, K52, K53, K54, K55, K56, K57}, \
+ {K60, K61, K62, K63, K64, K65, K66, K67}, \
+ {K70, K71, K72, K73, K74, K75, K76, K77}, \
+ {K80, K81, K82, K83, K84, K85, K86, K87} \
+}
+
diff --git a/keyboards/karlb/kbic65/keymaps/default/keymap.c b/keyboards/karlb/kbic65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1691cdd193
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/default/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default ANSI keymap
+[0] = LAYOUT(
+KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_HOME,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT(
+KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/default/readme.md b/keyboards/karlb/kbic65/keymaps/default/readme.md
new file mode 100644
index 0000000000..a071af6710
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# Default KBIC65 Layout
+
+This is the default layout for the KBIC65, it is recommended that you create your own keymap tailored to your specific needs. It is an ANSI keymap but uses the full KBIC65 layoutm, i.e., includes ISO backslash and split backspace but these are set to no action in this default layout. The layers are based on the KBDFans 67 rev 2 default keymap.
diff --git a/keyboards/karlb/kbic65/keymaps/iso/keymap.c b/keyboards/karlb/kbic65/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..ad2b23626f
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ISO keymap
+[0] = LAYOUT(
+KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_HOME,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_PGUP,
+KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN,
+KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT(
+KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/iso/readme.md b/keyboards/karlb/kbic65/keymaps/iso/readme.md
new file mode 100644
index 0000000000..8d83b91f09
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 ISO Layout
+
+This is a basic ISO keymap for the KBIC65. It is based on the KBDFans 67 rev 2 default keymap.
diff --git a/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c b/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c
new file mode 100644
index 0000000000..671cc8b8a8
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso_full/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ISO keymap
+[0] = LAYOUT(
+KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_PGUP,
+KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN,
+KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT(
+KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/iso_full/readme.md b/keyboards/karlb/kbic65/keymaps/iso_full/readme.md
new file mode 100644
index 0000000000..9cd1d1c536
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/iso_full/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 ISO 70-key Layout
+
+This is a 70 key ISO keymap for the KBIC65 including split backspace, it uses the maximum amount of keys available on the KBIC65. It is recommended to modify the layout for your personal needs.
diff --git a/keyboards/karlb/kbic65/keymaps/via/keymap.c b/keyboards/karlb/kbic65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1691cdd193
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 Karl Berggren <@bkarl>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Default ANSI keymap
+[0] = LAYOUT(
+KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, KC_HOME,
+KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT(
+KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, KC_INS,
+_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+_______, _______, _______, _______, _______, _______, RESET, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
+};
diff --git a/keyboards/karlb/kbic65/keymaps/via/readme.md b/keyboards/karlb/kbic65/keymaps/via/readme.md
new file mode 100644
index 0000000000..50b9f63309
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+![KBIC65 layout options](https://github.com/b-karl/KBIC65/blob/main/img/layout-options.svg)
+
+# KBIC65 VIA Support
+
+VIA support for KBIC65 with same keymap as the default (ANSI).
diff --git a/keyboards/karlb/kbic65/keymaps/via/rules.mk b/keyboards/karlb/kbic65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..fcb7b9eab6
--- /dev/null
+++ b/keyboards/karlb/kbic65/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/karlb/kbic65/readme.md b/keyboards/karlb/kbic65/readme.md
new file mode 100644
index 0000000000..43d2e5cd70
--- /dev/null
+++ b/keyboards/karlb/kbic65/readme.md
@@ -0,0 +1,31 @@
+# KBIC65
+
+![KBIC65 top-down view](https://github.com/b-karl/KBIC65/blob/main/img/photoshoot/full_keyboard_straight_above.jpg)
+
+A 65%/70 key FR4-stack open-source keyboard with some design optimizations for wireless. For more info visit the [KBIC65 website](https://karlb.eu/kbic65/) or the [GitHub repo](https://github.com/b-karl/KBIC65).
+
+* Keyboard Maintainer: [Karl Berggren](https://github.com/b-karl)
+* Hardware Supported: [KBIC65](https://github.com/b-karl/KBIC65)
+* Hardware Availability: Open-source design [available on GitHub](https://github.com/b-karl/KBIC65)
+
+Firmware and default keymap have been tested using a KBIC65 with an Elite-C rev 4 controller.
+
+## Build firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+```bash
+ qmk compile -kb karlb/kbic65 -km default
+```
+
+See the [QMK setup documentation](https://docs.qmk.fm/#/newbs_getting_started) to set up the QMK tools. I recommend flashing using
+
+```bash
+ qmk flash -kb karlb/kbic65 -km default
+```
+
+## Bootloader
+
+Since the keyboard is designed to have an exposed ProMicro the bootloader can always be entered by short circuiting the `RST` and `GND` pins on the ProMicro. If the keyboard is configured with the default keymap, the bootloader can be entered by pressing `R_GUI/FN + B`
+
+
diff --git a/keyboards/karlb/kbic65/rules.mk b/keyboards/karlb/kbic65/rules.mk
new file mode 100644
index 0000000000..f7da71aab2
--- /dev/null
+++ b/keyboards/karlb/kbic65/rules.mk
@@ -0,0 +1,17 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/67mk_e/rules.mk b/keyboards/kb_elmo/67mk_e/rules.mk
index 68c8a17ca8..940717cdfe 100644
--- a/keyboards/kb_elmo/67mk_e/rules.mk
+++ b/keyboards/kb_elmo/67mk_e/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/aek2_usb/rules.mk b/keyboards/kb_elmo/aek2_usb/rules.mk
index c11958500e..b06d4ee367 100644
--- a/keyboards/kb_elmo/aek2_usb/rules.mk
+++ b/keyboards/kb_elmo/aek2_usb/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/elmopad/rules.mk b/keyboards/kb_elmo/elmopad/rules.mk
index 3f57446238..3ee57307fe 100644
--- a/keyboards/kb_elmo/elmopad/rules.mk
+++ b/keyboards/kb_elmo/elmopad/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/isolation/rules.mk b/keyboards/kb_elmo/isolation/rules.mk
index 9602f01bcc..4450aebc2a 100644
--- a/keyboards/kb_elmo/isolation/rules.mk
+++ b/keyboards/kb_elmo/isolation/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/m0110a_usb/rules.mk b/keyboards/kb_elmo/m0110a_usb/rules.mk
index c11958500e..b06d4ee367 100644
--- a/keyboards/kb_elmo/m0110a_usb/rules.mk
+++ b/keyboards/kb_elmo/m0110a_usb/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/m0116_usb/rules.mk b/keyboards/kb_elmo/m0116_usb/rules.mk
index c11958500e..b06d4ee367 100644
--- a/keyboards/kb_elmo/m0116_usb/rules.mk
+++ b/keyboards/kb_elmo/m0116_usb/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/noah_avr/rules.mk b/keyboards/kb_elmo/noah_avr/rules.mk
index 9610473b49..b63c2b97e5 100644
--- a/keyboards/kb_elmo/noah_avr/rules.mk
+++ b/keyboards/kb_elmo/noah_avr/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/qez/rules.mk b/keyboards/kb_elmo/qez/rules.mk
index 895a77853d..43eb792fc1 100644
--- a/keyboards/kb_elmo/qez/rules.mk
+++ b/keyboards/kb_elmo/qez/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/sesame/rules.mk b/keyboards/kb_elmo/sesame/rules.mk
index 83a923c8e3..14bb48ced9 100644
--- a/keyboards/kb_elmo/sesame/rules.mk
+++ b/keyboards/kb_elmo/sesame/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/twelvekey/rules.mk b/keyboards/kb_elmo/twelvekey/rules.mk
index 07857f30fe..b5150a96c4 100644
--- a/keyboards/kb_elmo/twelvekey/rules.mk
+++ b/keyboards/kb_elmo/twelvekey/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/vertex/config.h b/keyboards/kb_elmo/vertex/config.h
new file mode 100644
index 0000000000..7fca07280e
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2021 kb-elmo<mail@elmo.space>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xA68C
+#define PRODUCT_ID 0x6B47
+#define DEVICE_VER 0x0001
+#define MANUFACTURER kb_elmo
+#define PRODUCT Vertex
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { D2, D4, B7, C6 }
+#define MATRIX_COL_PINS { C4, C7, D3, D5, B6, D6, B5, B0, B4, B1, B3, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/kb_elmo/vertex/info.json b/keyboards/kb_elmo/vertex/info.json
new file mode 100644
index 0000000000..a7bea40772
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/info.json
@@ -0,0 +1,205 @@
+{
+ "keyboard_name": "vertex",
+ "url": "",
+ "maintainer": "kb-elmo",
+ "layouts": {
+ "LAYOUT_8keys": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":10.25, "y":1},
+ {"x":11.25, "y":1, "w":1.75},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2, "w":1.25},
+ {"x":0, "y":3, "w":1.5},
+ {"x":1.5, "y":3, "w":1.25},
+ {"x":2.75, "y":3, "w":1.25},
+ {"x":4, "y":3, "w":2.5},
+ {"x":6.5, "y":3, "w":2.5},
+ {"x":9, "y":3, "w":1.25},
+ {"x":10.25, "y":3, "w":1.25},
+ {"x":11.5, "y":3, "w":1.5}
+ ]
+ },
+ "LAYOUT_8keys_full_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0, "w":2},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":10.25, "y":1},
+ {"x":11.25, "y":1, "w":1.75},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2, "w":1.25},
+ {"x":0, "y":3, "w":1.5},
+ {"x":1.5, "y":3, "w":1.25},
+ {"x":2.75, "y":3, "w":1.25},
+ {"x":4, "y":3, "w":2.5},
+ {"x":6.5, "y":3, "w":2.5},
+ {"x":9, "y":3, "w":1.25},
+ {"x":10.25, "y":3, "w":1.25},
+ {"x":11.5, "y":3, "w":1.5}
+ ]
+ },
+ "LAYOUT_10keys": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":10.25, "y":1},
+ {"x":11.25, "y":1, "w":1.75},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2, "w":1.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3, "w":2.5},
+ {"x":6.5, "y":3, "w":2.5},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3}
+ ]
+ },
+ "LAYOUT_10keys_full_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0, "w":2},
+ {"x":0, "y":1, "w":1.25},
+ {"x":1.25, "y":1},
+ {"x":2.25, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":7.25, "y":1},
+ {"x":8.25, "y":1},
+ {"x":9.25, "y":1},
+ {"x":10.25, "y":1},
+ {"x":11.25, "y":1, "w":1.75},
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2, "w":1.25},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3, "w":2.5},
+ {"x":6.5, "y":3, "w":2.5},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kb_elmo/vertex/keymaps/default/keymap.c b/keyboards/kb_elmo/vertex/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7b714fd3ac
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_8keys(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_8keys(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_8keys(
+ KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_PSCR,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kb_elmo/vertex/keymaps/via/keymap.c b/keyboards/kb_elmo/vertex/keymaps/via/keymap.c
new file mode 100644
index 0000000000..7cdac26239
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_10keys(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2),
+ KC_LCTL, KC_LGUI, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_10keys(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_QUOT, KC_BSLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_10keys(
+ KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_PSCR,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_10keys(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/kb_elmo/vertex/keymaps/via/rules.mk b/keyboards/kb_elmo/vertex/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kb_elmo/vertex/readme.md b/keyboards/kb_elmo/vertex/readme.md
new file mode 100644
index 0000000000..0710e48070
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/readme.md
@@ -0,0 +1,25 @@
+# Vertex
+
+![vertex](https://i.imgur.com/drRZO54l.jpg)
+
+3D printed Vortex 40% inspired screwless exterior, top-mount keyboard
+
+* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo)
+* Hardware Supported: Vertex rev.1
+* Hardware Availability: [Open source project](https://github.com/kb-elmo/Vertex)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kb_elmo/vertex:default
+
+Flashing example for this keyboard:
+
+ make kb_elmo/vertex:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Briefly press the button labeled "Reset" on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/kb_elmo/vertex/rules.mk b/keyboards/kb_elmo/vertex/rules.mk
new file mode 100644
index 0000000000..20c49d4776
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kb_elmo/vertex/vertex.c b/keyboards/kb_elmo/vertex/vertex.c
new file mode 100644
index 0000000000..26467196f1
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/vertex.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "vertex.h"
diff --git a/keyboards/kb_elmo/vertex/vertex.h b/keyboards/kb_elmo/vertex/vertex.h
new file mode 100644
index 0000000000..89728fa3bc
--- /dev/null
+++ b/keyboards/kb_elmo/vertex/vertex.h
@@ -0,0 +1,69 @@
+/* Copyright 2021 kb-elmo<mail@elmo.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_8keys( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k302, k303, k304, k306, k307, k308, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, ____, k302, k303, k304, ____, k306, k307, k308, ____, k310, k311 } \
+}
+
+#define LAYOUT_8keys_full_bs( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k302, k303, k304, k306, k307, k308, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, ____, k302, k303, k304, ____, k306, k307, k308, ____, k310, ____ } \
+}
+
+#define LAYOUT_10keys( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k311, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k301, k302, k303, k304, k306, k307, k308, k309, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, k301, k302, k303, k304, ____, k306, k307, k308, k309, k310, k311 } \
+}
+
+#define LAYOUT_10keys_full_bs( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, \
+ k300, k301, k302, k303, k304, k306, k307, k308, k309, k310 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211 }, \
+ { k300, k301, k302, k303, k304, ____, k306, k307, k308, k309, k310, ____ } \
+}
diff --git a/keyboards/kbdclack/kaishi65/rules.mk b/keyboards/kbdclack/kaishi65/rules.mk
index f319f383e6..1048e0b34b 100644
--- a/keyboards/kbdclack/kaishi65/rules.mk
+++ b/keyboards/kbdclack/kaishi65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/bella/rgb/rules.mk b/keyboards/kbdfans/bella/rgb/rules.mk
index c75e7259b6..60a8bdbdb9 100644
--- a/keyboards/kbdfans/bella/rgb/rules.mk
+++ b/keyboards/kbdfans/bella/rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/bella/rgb_iso/rules.mk b/keyboards/kbdfans/bella/rgb_iso/rules.mk
index c75e7259b6..60a8bdbdb9 100644
--- a/keyboards/kbdfans/bella/rgb_iso/rules.mk
+++ b/keyboards/kbdfans/bella/rgb_iso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/bella/soldered/rules.mk b/keyboards/kbdfans/bella/soldered/rules.mk
index 5f180ae00d..1c4073c9ce 100755
--- a/keyboards/kbdfans/bella/soldered/rules.mk
+++ b/keyboards/kbdfans/bella/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/boop65/rgb/config.h b/keyboards/kbdfans/boop65/rgb/config.h
index 0d67db2110..20ee0df25a 100644
--- a/keyboards/kbdfans/boop65/rgb/config.h
+++ b/keyboards/kbdfans/boop65/rgb/config.h
@@ -82,7 +82,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/kbdfans/boop65/rgb/rules.mk b/keyboards/kbdfans/boop65/rgb/rules.mk
index c7ff60a4a8..ca15c882ad 100644
--- a/keyboards/kbdfans/boop65/rgb/rules.mk
+++ b/keyboards/kbdfans/boop65/rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd19x/info.json b/keyboards/kbdfans/kbd19x/info.json
index b271d7e537..68832438d0 100644
--- a/keyboards/kbdfans/kbd19x/info.json
+++ b/keyboards/kbdfans/kbd19x/info.json
@@ -1,7 +1,7 @@
{
"keyboard_name": "KBD19x",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd19x",
- "maintainer": "qmk",
+ "maintainer": "jshuf, mechmerlin",
"layouts": {
"LAYOUT_ansi": {
"layout": [
@@ -23,6 +23,7 @@
{"label":"Pause", "x":16.5, "y":0},
{"label":"Insert", "x":17.5, "y":0},
{"label":"Home", "x":18.5, "y":0},
+
{"label":"`~", "x":0, "y":1.5},
{"label":"1!", "x":1, "y":1.5},
{"label":"2@", "x":2, "y":1.5},
@@ -41,6 +42,7 @@
{"label":"/", "x":16.5, "y":1.5},
{"label":"*", "x":17.5, "y":1.5},
{"label":"-", "x":18.5, "y":1.5},
+
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
@@ -59,6 +61,7 @@
{"label":"8", "x":16.5, "y":2.5},
{"label":"9", "x":17.5, "y":2.5},
{"label":"+", "x":18.5, "y":2.5, "h":2},
+
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
{"label":"A", "x":1.75, "y":3.5},
{"label":"S", "x":2.75, "y":3.5},
@@ -75,6 +78,7 @@
{"label":"4", "x":15.5, "y":3.5},
{"label":"5", "x":16.5, "y":3.5},
{"label":"6", "x":17.5, "y":3.5},
+
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
@@ -92,6 +96,7 @@
{"label":"2", "x":16.5, "y":4.5},
{"label":"3", "x":17.5, "y":4.5},
{"label":"Enter", "x":18.5, "y":4.5, "h":2},
+
{"label":"Control", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":5.5},
{"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
@@ -100,8 +105,117 @@
{"label":"Fn", "x":10.75, "y":5.5},
{"label":"Control", "x":11.75, "y":5.5, "w":1.25},
{"label":"Left", "x":13.25, "y":5.75},
- {"label":"Right", "x":14.25, "y":5.75},
- {"label":"Down", "x":15.25, "y":5.75},
+ {"label":"Down", "x":14.25, "y":5.75},
+ {"label":"Right", "x":15.25, "y":5.75},
+ {"label":"0", "x":16.5, "y":5.5},
+ {"label":".", "x":17.5, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Extra Esc", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.5, "y":0},
+ {"label":"Pause", "x":16.5, "y":0},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+
+ {"label":"`\u00ac", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2\"", "x":2, "y":1.5},
+ {"label":"3\u00a3", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Num Lock", "x":15.5, "y":1.5},
+ {"label":"/", "x":16.5, "y":1.5},
+ {"label":"*", "x":17.5, "y":1.5},
+ {"label":"-", "x":18.5, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"7", "x":15.5, "y":2.5},
+ {"label":"8", "x":16.5, "y":2.5},
+ {"label":"9", "x":17.5, "y":2.5},
+ {"label":"+", "x":18.5, "y":2.5, "h":2},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'@", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+ {"label":"4", "x":15.5, "y":3.5},
+ {"label":"5", "x":16.5, "y":3.5},
+ {"label":"6", "x":17.5, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"Up", "x":14.25, "y":4.75},
+ {"label":"1", "x":15.5, "y":4.5},
+ {"label":"2", "x":16.5, "y":4.5},
+ {"label":"3", "x":17.5, "y":4.5},
+ {"label":"Enter", "x":18.5, "y":4.5, "h":2},
+
+ {"label":"Control", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5},
+ {"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.5, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":9.75, "y":5.5},
+ {"label":"Fn", "x":10.75, "y":5.5},
+ {"label":"Control", "x":11.75, "y":5.5, "w":1.25},
+ {"label":"Left", "x":13.25, "y":5.75},
+ {"label":"Down", "x":14.25, "y":5.75},
+ {"label":"Right", "x":15.25, "y":5.75},
{"label":"0", "x":16.5, "y":5.5},
{"label":".", "x":17.5, "y":5.5}
]
@@ -126,6 +240,7 @@
{"label":"Pause", "x":16.5, "y":0},
{"label":"Insert", "x":17.5, "y":0},
{"label":"Home", "x":18.5, "y":0},
+
{"label":"`~", "x":0, "y":1.5},
{"label":"1!", "x":1, "y":1.5},
{"label":"2@", "x":2, "y":1.5},
@@ -145,6 +260,7 @@
{"label":"/", "x":16.5, "y":1.5},
{"label":"*", "x":17.5, "y":1.5},
{"label":"-", "x":18.5, "y":1.5},
+
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
@@ -163,6 +279,7 @@
{"label":"8", "x":16.5, "y":2.5},
{"label":"9", "x":17.5, "y":2.5},
{"label":"Split + (Top)", "x":18.5, "y":2.5},
+
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
{"label":"A", "x":1.75, "y":3.5},
{"label":"S", "x":2.75, "y":3.5},
@@ -180,6 +297,7 @@
{"label":"5", "x":16.5, "y":3.5},
{"label":"6", "x":17.5, "y":3.5},
{"label":"Split + (Bottom)", "x":18.5, "y":3.5},
+
{"label":"Shift", "x":0, "y":4.5, "w":1.25},
{"label":"ISO Backslash", "x":1.25, "y":4.5},
{"label":"Z", "x":2.25, "y":4.5},
@@ -198,6 +316,7 @@
{"label":"2", "x":16.5, "y":4.5},
{"label":"3", "x":17.5, "y":4.5},
{"label":"Split Enter (Top)", "x":18.5, "y":4.5},
+
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"GUI", "x":1.25, "y":5.5},
{"label":"Alt", "x":2.25, "y":5.5, "w":1.25},
diff --git a/keyboards/kbdfans/kbd19x/kbd19x.h b/keyboards/kbdfans/kbd19x/kbd19x.h
index 41c27230f2..d3766eadba 100644
--- a/keyboards/kbdfans/kbd19x/kbd19x.h
+++ b/keyboards/kbdfans/kbd19x/kbd19x.h
@@ -32,37 +32,26 @@ inline void kbd19x_nmlk_led_off(void) { writePinLow(LED_NUM_LOCK_PIN); }
// readability
#define XXX KC_NO
-/* This is a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
+/*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┬───┐
+ * │00 ││01 │02 │03 │04 ││60 │61 │62 │63 ││05 │06 │07 │08 ││72 │ │09 │0A │0B │0C │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───────┐
+ * │10 │11 │12 │13 │14 │64 │65 │66 │67 │15 │16 │17 │18 │70 │71 │ │19 │1A │1B │1C │ │71 │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┼───┤ └─┬─────┤ ┌───┐
+ * │20 │21 │22 │23 │24 │68 │69 │6a │6b │25 │26 │27 │28 │73 │ │29 │2A │2B │2C │ │ │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┼───┤ ┌──┴┐38 │ ISO Enter │2C │ 2u Plus
+ * LShift │30 │31 │32 │33 │34 │6c │75 │76 │77 │35 │36 │37 │38 │ │39 │3A │3B │3C │ │73 │ │ │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤ └───┴────┘ ├───┤
+ * │40 │ │40 │41 │42 │43 │44 │78 │79 │7a │7b │45 │46 │47 │48 │┌───┐│49 │4A │4B │4C │ │ │
+ * └────────┘ ├────┼───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│74 │└───┼───┼───┼───┤ │4C │ 2u Enter
+ * │50 │51 │52 │59 │55 │56 │57 │┌───┼───┼───┐│5A │5B │5C │ │ │
+ * └────┴───┴────┴────────────────────────┴───┴───┴────┘│58 │53 │54 │└───┴───┴───┘ └───┘
+ * ┌─────┬─────┬───────────────────────────┬─────┬─────┐└───┴───┴───┘
+ * │50 │52 │59 │55 │57 │ WKL
+ * └─────┴─────┴───────────────────────────┴─────┴─────┘
*/
-// 2u backspace: XXX, k71
-// split backspace: k70, k71
-
-// 2u numpad +: k2c, XXX
-// split numpad +: k2c, k3c
-
-// 2u numpad enter: k4c, XXX
-// split numpad enter: k4c, k5c
-
-// 2.25u lshift: k40, XXX
-// split (1.25u, 1u) lshift: k40, k41
-
-// ANSI enter or ISO enter: k38
-// Key next to ISO enter: k72
-// backslash or NUHS: k73
-
-// left winkey: k50, k51, k52
-// left WKL: k50, XXX, k52
-
-// right winkey: k55, k56, k57
-// right WKL: k55, XXX, k57
-
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k60, k61, k62, k63, k05, k06, k07, k08, k72, k09, k0a, k0b, k0c, \
k10, k11, k12, k13, k14, k64, k65, k66, k67, k15, k16, k17, k18, k70, k71, k19, k1a, k1b, k1c, \
@@ -100,3 +89,22 @@ inline void kbd19x_nmlk_led_off(void) { writePinLow(LED_NUM_LOCK_PIN); }
{k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, k6b, k6c},\
{XXX, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, k7b, XXX},\
}
+
+#define LAYOUT_iso( \
+ k00, k01, k02, k03, k04, k60, k61, k62, k63, k05, k06, k07, k08, k72, k09, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k64, k65, k66, k67, k15, k16, k17, k18, k71, k19, k1a, k1b, k1c, \
+ k20, k21, k22, k23, k24, k68, k69, k6a, k6b, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k6c, k75, k76, k77, k35, k36, k37, k73, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k78, k79, k7a, k7b, k45, k46, k47, k48, k74, k49, k4a, k4b, k4c, \
+ k50, k51, k52, k59, k55, k56, k57, k58, k53, k54, k5a, k5b \
+)\
+{\
+ {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c},\
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c},\
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c},\
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX},\
+ {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c},\
+ {k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, XXX},\
+ {k60, k61, k62, k63, k64, k65, k66, k67, k68, k69, k6a, k6b, k6c},\
+ {XXX, k71, k72, k73, k74, k75, k76, k77, k78, k79, k7a, k7b, XXX},\
+}
diff --git a/keyboards/kbdfans/kbd19x/keymaps/default/config.h b/keyboards/kbdfans/kbd19x/keymaps/default/config.h
deleted file mode 100644
index 70028a525c..0000000000
--- a/keyboards/kbdfans/kbd19x/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2018 Jeff Shufelt <jshuf@puppyfish.com> @jshuf
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c b/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c
index e06948fcce..50e63041ea 100644
--- a/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd19x/keymaps/default/keymap.c
@@ -18,19 +18,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGDN, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
[1] = LAYOUT_ansi( /* Func */
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kbdfans/kbd19x/keymaps/default_iso/keymap.c b/keyboards/kbdfans/kbd19x/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..4382cafcb6
--- /dev/null
+++ b/keyboards/kbdfans/kbd19x/keymaps/default_iso/keymap.c
@@ -0,0 +1,36 @@
+/*
+Copyright 2018 Jeff Shufelt <jshuf@puppyfish.com> @jshuf
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT_iso( /* Func */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/kbdfans/kbd19x/keymaps/via/keymap.c b/keyboards/kbdfans/kbd19x/keymaps/via/keymap.c
index 138fe97f1b..0e9b2aa4bd 100644
--- a/keyboards/kbdfans/kbd19x/keymaps/via/keymap.c
+++ b/keyboards/kbdfans/kbd19x/keymaps/via/keymap.c
@@ -18,38 +18,38 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGDN, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
[1] = LAYOUT_ansi( /* Func */
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kbdfans/kbd19x/readme.md b/keyboards/kbdfans/kbd19x/readme.md
index da37474adc..910b2f1b89 100644
--- a/keyboards/kbdfans/kbd19x/readme.md
+++ b/keyboards/kbdfans/kbd19x/readme.md
@@ -8,14 +8,23 @@
The KBD19x is a compact-1800 keyboard kit produced by KBDfans, offering a number of layout options.
-**Reset Sequence:** Using this firmware sets `BOOTLOADER_ENABLE` to `lite`. While plugging in, hold the top left key, commonly programmed as `Esc` to put your board into bootloader mode.
-
* Keyboard Maintainer: [jshuf](https://github.com/jshuf), [MechMerlin](https://github.com/mechmerlin)
* Hardware Supported: KBD19x PCB
-* Hardware Availability: [KBDfans](https://kbdfans.cn)
+* Hardware Availability: [~~KBDfans~~](https://kbdfans.com/collections/95-kbd19x/products/kbdfans-kbd19x-pcb), [~~AliExpress~~](https://www.aliexpress.com/item/32835566884.html) (no longer available)
Make example for this keyboard (after setting up your build environment):
make kbdfans/kbd19x:default
+Flashing example for this keyboard:
+
+ make kbdfans/kbd19x:default:flash
+
+## Bootloader
+
+To reset the board into bootloader mode, do one of the following:
+
+* **Bootmagic reset**: Hold the `Esc` key while connecting the USB cable (also erases persistent settings)
+* **Keycode in keymap**: Press the key mapped to `RESET` if it is available (`Fn`+`Backspace` by default)
+
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kbdfans/kbd19x/rules.mk b/keyboards/kbdfans/kbd19x/rules.mk
index 1709fdacac..35fbff0af9 100644
--- a/keyboards/kbdfans/kbd19x/rules.mk
+++ b/keyboards/kbdfans/kbd19x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd4x/keymaps/default/config.h b/keyboards/kbdfans/kbd4x/keymaps/default/config.h
deleted file mode 100644
index 7f3bd7dd52..0000000000
--- a/keyboards/kbdfans/kbd4x/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 sevenseacat
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd4x/rules.mk b/keyboards/kbdfans/kbd4x/rules.mk
index 39d6609b69..95dd1634e0 100644
--- a/keyboards/kbdfans/kbd4x/rules.mk
+++ b/keyboards/kbdfans/kbd4x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd66/keymaps/ansi/config.h b/keyboards/kbdfans/kbd66/keymaps/ansi/config.h
deleted file mode 100644
index c7b3d6ecc3..0000000000
--- a/keyboards/kbdfans/kbd66/keymaps/ansi/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alex Peters
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kbdfans/kbd66/keymaps/default/config.h b/keyboards/kbdfans/kbd66/keymaps/default/config.h
deleted file mode 100644
index 6d42fc568a..0000000000
--- a/keyboards/kbdfans/kbd66/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Alex Peters
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd66/keymaps/iso/config.h b/keyboards/kbdfans/kbd66/keymaps/iso/config.h
deleted file mode 100644
index c7b3d6ecc3..0000000000
--- a/keyboards/kbdfans/kbd66/keymaps/iso/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alex Peters
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kbdfans/kbd66/rules.mk b/keyboards/kbdfans/kbd66/rules.mk
index f18d097b0d..58af754060 100644
--- a/keyboards/kbdfans/kbd66/rules.mk
+++ b/keyboards/kbdfans/kbd66/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/config.h b/keyboards/kbdfans/kbd67/hotswap/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c
index 4c645c7cd8..eac69d9b75 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/default/keymap.c
@@ -23,17 +23,17 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/kbdfans/kbd67/hotswap/rules.mk b/keyboards/kbdfans/kbd67/hotswap/rules.mk
index 0120a454be..6e75a1d6be 100644
--- a/keyboards/kbdfans/kbd67/hotswap/rules.mk
+++ b/keyboards/kbdfans/kbd67/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk b/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk
index 704af71c72..e41d8a41bb 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c
index 0109e924a7..155a898f63 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/default/keymap.c
@@ -3,15 +3,15 @@
#define _LAYER1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_65_ansi_blocker( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,\
- CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
+ CTL_T(KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
[_LAYER1] = LAYOUT_65_ansi_blocker( /* FN */
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,\
- CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,\
- KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,\
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
+ CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h
new file mode 100644
index 0000000000..9d842a7918
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Jonavin Eng
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+// TT set to two taps
+
+/* Handle GRAVESC combo keys */
+#define GRAVE_ESC_ALT_OVERRIDE
+ //Always send Escape if Alt is pressed
+#define GRAVE_ESC_CTRL_OVERRIDE
+ //Always send Escape if Control is pressed
+
+#define TAPPING_TERM 180
+
+#ifdef RGB_MATRIX_ENABLE
+ #ifdef RGB_MATRIX_STARTUP_MODE
+ #undef RGB_MATRIX_STARTUP_MODE
+ #endif
+ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
new file mode 100644
index 0000000000..1b85354be5
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
@@ -0,0 +1,137 @@
+/* Copyright 2021 Jonavin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "rgb_matrix_map.h"
+#include "jonavin.h"
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_65_ansi_blocker(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
+ TT(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_FN1] = LAYOUT_65_ansi_blocker(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_CALC,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RESET, KC_HOME,
+ KC_CAPS, RGB_SPI, RGB_SPD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_END,
+ KC_LSFT, RGB_NITE, _______, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, KC_MPLY, _______, KC_VOLU, KC_MUTE,
+ _______, KC_WINLCK, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [_LOWER] = LAYOUT_65_ansi_blocker(
+ KC_TILD, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______,
+ _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, _______, KC_HOME,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_END,
+ _______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, _______, _______,
+ _______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
+ ),
+};
+
+#ifdef RGB_MATRIX_ENABLE
+ // Capslock, Scroll lock and Numlock indicator
+ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF);
+ if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) {
+ rgb_matrix_set_color(LED_I, RGB_GREEN);
+ }
+
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF
+ rgb_matrix_set_color(LED_B, RGB_GREEN);
+ rgb_matrix_set_color(LED_N, RGB_GREEN);
+ rgb_matrix_set_color(LED_M, RGB_GREEN);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_B, RGB_GREEN);
+ rgb_matrix_set_color(LED_N, RGB_GREEN);
+ rgb_matrix_set_color(LED_M, RGB_GREEN);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(LED_CAPS, RGB_RED);
+ rgb_matrix_set_color(LED_Q, RGB_RED);
+ rgb_matrix_set_color(LED_A, RGB_RED);
+ }
+ if (keymap_config.no_gui) {
+ rgb_matrix_set_color(LED_LCTL, RGB_RED); //light up Win key when disabled
+ rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled
+ rgb_matrix_set_color(LED_LALT, RGB_RED); //light up Win key when disabled
+ }
+ switch(get_highest_layer(layer_state)){ // special handling per layer
+ case _FN1: // on Fn layer select what the encoder does when pressed
+ rgb_matrix_set_color(LED_FN, RGB_GOLD);
+ rgb_matrix_set_color(LED_RCTL, RGB_GOLD);
+
+ #ifdef IDLE_TIMEOUT_ENABLE
+ // Add RGB Timeout Indicator -- shows 0 to 139 using num row and qwerty row
+ uint16_t timeout_threshold = get_timeout_threshold();
+ if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_NUMROW[timeout_threshold], RGB_GOLD);
+ else if (timeout_threshold < 140) {
+ rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_GOLD);
+ rgb_matrix_set_color(LED_LIST_QWERTYROW[(timeout_threshold / 10)], RGB_GOLD);
+ } else { // >= 140 minutes, just show these 3 lights
+ rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_GOLD);
+ rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_GOLD);
+ rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_GOLD);
+ }
+ #endif // IDLE_TIMEOUT_ENABLE
+
+ break;
+ case _LOWER:
+ for (uint8_t i=0; i<ARRAYSIZE(LED_LIST_NUMPAD); i++) {
+ rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_BLUE);
+ }
+ for (uint8_t i=0; i<ARRAYSIZE(LED_LIST_WASD); i++) {
+ rgb_matrix_set_color(LED_LIST_WASD[i], RGB_BLUE);
+ }
+ break;
+ case _RAISE:
+ rgb_matrix_set_color(LED_SPC, RGB_GREEN);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void suspend_power_down_user(void) {
+ rgb_matrix_set_suspend_state(true);
+ }
+
+ void suspend_wakeup_init_user(void) {
+ rgb_matrix_set_suspend_state(false);
+ }
+#endif
+
+
+void keyboard_post_init_keymap(void) {
+ // keyboard_post_init_user() moved to userspace
+ #ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle
+ #endif
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/readme.md
new file mode 100644
index 0000000000..a28e945cd1
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/readme.md
@@ -0,0 +1,41 @@
+# jonavin's KBD 67 Lite keymap
+
+NOTE: This keymap uses features from qmk userspace in user/jonavin. I fyou copy this keymap you should also the user folder.
+
+- Add PrtScr, Scroll Lock, Break, NumLock to Fn layer
+- add double tap of Left Shift to toggle Caps Lock
+- Implement Win key lock using Fn+Win
+- Layer 2 mod on Caps Lock with double-tap to switch to this layer, double tap to switch back
+- Layer 2 provides arrows on WASD and additional nav keys + right hand numpad with 00; an be used for Alt Code entry
+- Layer 2 spacebar Backspace
+
+- LED/RGB Functionality
+ - RGB idle timeout (default 5 minutes)
+ - Can be changed in FN layer with < and >
+ - setting to zero disables timeout
+ - indicators in FN layer using RGB in number and qwerty rows to show the timeout in minutes
+ - LED address location map as enum definition in rgb_matrix_map.h
+ - LED group lists for arrows, numpad, qwerty row, num row LEDs
+ - default startup in single colour mode
+ - Capslock, Scroll Lock, and Num Lock (not set) indicator
+ - Fn key light up GOLD when Fn layer activate
+ - Win Key light up red when Win Lock mode enabled
+ - Layer 2 activation lights up Numpad area
+ - Fn + Z to turn off all RGB lights except rgb indicators; press again to toggle
+
+rules.mk OPTIONS - Active features from userspace
+STARTUP_NUMLOCK_ON = yes
+ - turns on NUMLOCK by default
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+ - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS
+
+IDLE_TIMEOUT_ENABLE = yes
+ - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
+
+INVERT_NUMLOCK_INDICATOR = yes
+ - inverts the Num lock indicator, LED is on when num lock is off
+
+## All layers diagram
+![image](https://user-images.githubusercontent.com/71780717/146864247-4ec05ef7-7936-45db-9db9-02fb17d3f7ed.png)
+
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rgb_matrix_map.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rgb_matrix_map.h
new file mode 100644
index 0000000000..66608ba6e6
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rgb_matrix_map.h
@@ -0,0 +1,109 @@
+/* Copyright 2021 Jonavin Eng
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef RGB_MATRIX_ENABLE
+
+ // Custom RGB Colours
+ #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps
+ #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours
+ #define RGB_PURPLELITE 0x80, 0x00, 0x80 // Purple colours
+
+ // RGB LED locations
+ enum led_location_map {
+ LED_ESC, // 0
+ LED_1, // 1
+ LED_2, // 2
+ LED_3, // 3
+ LED_4, // 4
+ LED_5, // 5
+ LED_6, // 6
+ LED_7, // 7
+ LED_8, // 8
+ LED_9, // 9
+ LED_0, // 10
+ LED_MINS, // 11
+ LED_EQL, // 12
+ LED_BSPC, // 13
+ LED_DEL, // 14
+ LED_TAB, // 15
+ LED_Q, // 16
+ LED_W, // 17
+ LED_E, // 18
+ LED_R, // 19
+ LED_T, // 20
+ LED_Y, // 21
+ LED_U, // 22
+ LED_I, // 23
+ LED_O, // 24
+ LED_P, // 25
+ LED_LBRC, // 26 [
+ LED_RBRC, // 27 ]
+ LED_BSLS, // 28 |
+ LED_PGUP, // 29
+ LED_CAPS, // 30
+ LED_A, // 31
+ LED_S, // 32
+ LED_D, // 33
+ LED_F, // 34
+ LED_G, // 35
+ LED_H, // 36
+ LED_J, // 37
+ LED_K, // 38
+ LED_L, // 39
+ LED_SCLN, // 40 ;
+ LED_QUOT, // 41 "
+ LED_ENT, // 42
+ LED_PGDN, // 43
+ LED_LSFT, // 44
+ LED_Z, // 45
+ LED_X, // 46
+ LED_C, // 47
+ LED_V, // 48
+ LED_B, // 49
+ LED_N, // 50
+ LED_M, // 51
+ LED_COMM, // 52 ,
+ LED_DOT, // 53 .
+ LED_SLSH, // 54 /
+ LED_RSFT, // 55
+ LED_UP, // 56
+ LED_END, // 57
+ LED_LCTL, // 58
+ LED_LWIN, // 59
+ LED_LALT, // 60
+ LED_SPC, // 61
+ LED_FN, // 62
+ LED_RCTL, // 63
+ LED_LEFT, // 64
+ LED_DOWN, // 65
+ LED_RIGHT // 66
+ };
+
+ const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D };
+
+ const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN };
+
+ const uint8_t LED_LIST_NUMROW[] = { LED_ESC, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL};
+ const uint8_t LED_LIST_QWERTYROW[] = { LED_TAB, LED_Q, LED_W, LED_E, LED_R, LED_T, LED_Y, LED_U, LED_I, LED_O, LED_P, LED_LBRC, LED_RBRC, LED_BSLS, LED_PGUP};
+
+ const uint8_t LED_LIST_NUMPAD[] = {
+ LED_7, LED_8, LED_9,
+ LED_U, LED_I, LED_O,
+ LED_J, LED_K, LED_L,
+ LED_M, LED_COMM, LED_DOT
+ };
+
+#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk
new file mode 100644
index 0000000000..91153c75a3
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk
@@ -0,0 +1,10 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+IDLE_TIMEOUT_ENABLE = yes
+STARTUP_NUMLOCK_ON = yes
+INVERT_NUMLOCK_INDICATOR = yes
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c
index 37d7fc0c3e..850a7132d1 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/via/keymap.c
@@ -2,28 +2,28 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi_blocker(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,\
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_65_ansi_blocker(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,\
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,\
- KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,\
- KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,\
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
[2] = LAYOUT_65_ansi_blocker(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_65_ansi_blocker(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h
index c297a02e88..dadc230626 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.h
@@ -22,5 +22,7 @@
#include "v2.h"
#elif defined(KEYBOARD_kbdfans_kbd67_mkiirgb_v3)
#include "v3.h"
+#elif defined(KEYBOARD_kbdfans_kbd67_mkiirgb_v4)
+ #include "v4.h"
#endif
#include "quantum.h"
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/readme.md
index 58338df0f6..5b71c27f0e 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/readme.md
+++ b/keyboards/kbdfans/kbd67/mkiirgb/readme.md
@@ -3,19 +3,20 @@
A customizable 65% RGB keyboard.
* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
-* Hardware Supported: KBD67 Mk.II RGB V1, V2, and V3
+* Hardware Supported: KBD67 Mk.II RGB V1, V2, V3 and V4
* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
-There are three versions of the KBD67 MKII RGB. Please use the appropriate firmware for your board.
+There are four versions of the KBD67 MKII RGB. Please use the appropriate firmware for your board.
* V1: STM32F303 (Arm), takes `.bin` files
* V2: ATmega32U4 (AVR), takes `.hex` files
-* V3: Atmega32U4 (AVR), takes `.bin` files
+* V3 and V4: Atmega32U4 (AVR), takes `.bin` files
Make example for this keyboard (after setting up your build environment):
- make kbdfans/kbd67/mkiirgb/v1:default # Arm (STM32F303)
- make kbdfans/kbd67/mkiirgb/v2:default # AVR (ATmega32U4)
- make kbdfans/kbd67/mkiirgb/v3:default # AVR (ATmega32U4)
-
+ make kbdfans/kbd67/mkiirgb/v1:default # Arm (STM32F303+IS31FL3731)
+ make kbdfans/kbd67/mkiirgb/v2:default # AVR (ATmega32U4+IS31FL3731)
+ make kbdfans/kbd67/mkiirgb/v3:default # AVR (ATmega32U4+IS31FL3741)
+ make kbdfans/kbd67/mkiirgb/v4:default # AVR (ATmega32U4+SK6812MINI)
+
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
index 85c3db9e29..399d60eda9 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
@@ -5,13 +5,16 @@ BOARD = QMK_PROTON_C
# Bootloader selection
BOOTLOADER = stm32-dfu
+# Build Options
+# change yes to no to disable
+#
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGB_MATRIX_ENABLE = yes # Use RGB matrix
RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk
index f3862be339..befcd25b4d 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk
index ad6af52f43..23fe83a50a 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
index 85806aff51..306c22615f 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/v3.c
@@ -93,35 +93,63 @@ const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{0, CS39_SW7, CS38_SW7, CS37_SW7}
};
+
+#define __ NO_LED
+#define CAPS_LOCK_LED_INDEX 30
+
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, NO_LED, 42, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 },
- { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, NO_LED, 63, 64, NO_LED, 65, 66 }
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, __, 42, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, 57 },
+ { 58, 59, 60, __, __, 61, __, __, 62, __, 63, 64, __, 65, 66 }
}, {
// LED Index to Physical Position
- {6,10},{20,10},{34,10},{48,10},{62,10},{76,10},{90,10},{104,10},{118,10},{132,10},{146,10},{160,10},{174,10}, {196,10},{217,10},
- {9,23}, {27,23},{41,23},{55,23},{69,23},{83,23},{97,23},{111,23},{125,23},{139,23},{153,23},{167,23},{181,23}, {199,23},{217,23},
- {11,36},{30,36},{44,36},{58,36},{72,36},{86,36},{101,36},{115,36},{129,36},{143,36},{157,36},{171,36}, {194,36},{217,36},
- {15,49}, {38,49},{52,49},{66,49},{80,49},{94,49},{108,49},{122,49},{136,49},{150,49},{164,49}, {184,49},{203,49},{217,49},
- {8,62},{25,62},{43,62}, {95,62}, {149,62},{166,62}, {189,62},{203,62},{217,62}
-
+ // based on: https://gist.github.com/vinorodrigues/07fd735683856b2a06c7c52b9b3878cb
+ {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {119, 0}, {134, 0}, {149, 0}, {164, 0}, {179, 0}, {202, 0}, {224, 0},
+ {4, 16}, {22, 16}, {37, 16}, {52, 16}, {67, 16}, {82, 16}, {97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {205, 16}, {224, 16},
+ {6, 32}, {26, 32}, {41, 32}, {56, 32}, {71, 32}, {86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {175, 32}, {200, 32}, {224, 32},
+ {9, 48}, {34, 48}, {49, 48}, {63, 48}, {78, 48}, {93, 48}, {108, 48}, {123, 48}, {138, 48}, {153, 48}, {168, 48}, {189, 48}, {209, 48}, {224, 48},
+ {2, 64}, {21, 64}, {39, 64}, {95, 64}, {151, 64}, {170, 64}, {194, 64}, {209, 64}, {224, 64}
}, {
// LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1
+ 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // caps lock is also an indicator so mask is `0x01 | 0x08`
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
} };
+#endif
+
+#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX)
+
+#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#else
+ #define CAPS_LOCK_MAX_BRIGHTNESS 0xFF
+#endif
+
+#ifdef RGB_MATRIX_VAL_STEP
+ #define CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+#else
+ #define CAPS_LOCK_VAL_STEP 8
+#endif
__attribute__ ((weak))
void rgb_matrix_indicators_user(void) {
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF);
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t b = rgb_matrix_get_val();
+ if (b < CAPS_LOCK_VAL_STEP) {
+ b = CAPS_LOCK_VAL_STEP;
+ } else if (b < (CAPS_LOCK_MAX_BRIGHTNESS - CAPS_LOCK_VAL_STEP)) {
+ b += CAPS_LOCK_VAL_STEP; // one step more than current brightness
+ } else {
+ b = CAPS_LOCK_MAX_BRIGHTNESS;
+ }
+ rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, b, b, b); // white, with the adjusted brightness
}
}
+
#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
new file mode 100644
index 0000000000..7de9281d40
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
@@ -0,0 +1,118 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B42
+#define PRODUCT_ID 0x1227
+#define DEVICE_VER 0x0004
+#define MANUFACTURER KBDFANS
+#define PRODUCT KBD67 MKII RGB V4
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { B1, F1, B2, B3, C6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, B0, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define USB_SUSPEND_WAKEUP_DELAY 5000
+
+#define RGB_DI_PIN C7
+#define RGBLED_NUM 68
+#define DRIVER_LED_TOTAL RGBLED_NUM
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// #define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md
new file mode 100644
index 0000000000..b603992f69
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md
@@ -0,0 +1,18 @@
+# KBD67MKIIRGBV4
+
+A customizable 80% keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBDFANS
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/kbd67/mkiirgb/v4:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down esc in the keyboard then replug
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v4/rules.mk
new file mode 100644
index 0000000000..bf2c1d1a6e
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = lufa-ms
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.c b/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.c
new file mode 100644
index 0000000000..3c4b81132f
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "v4.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+led_config_t g_led_config = {
+{
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,NO_LED, 43 },
+ { 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, NO_LED,45, 44 },
+ { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, NO_LED,65, 66 }
+}, {
+ {0,0},{15,0},{30,0},{45,0},{60,0},{75,0},{90,0},{105,0},{120,0},{135,0},{150,0},{165,0},{180,0},{203,0},{224,0},
+ {224,16},{206,16},{188,16},{173,16},{158,16},{143,16},{128,16},{113,16},{98,16},{83,16}, {68,16},{53,16},{38,16},{23,16},{4,16},
+ {6,32},{26,32},{41,32},{56,32},{71,32},{86,32},{101,32},{116,32},{131,32},{146,32},{161,32},{176,32},{201,32},{224,32},
+ {224,48},{210,48},{189,48},{169,48},{154,48},{139,48},{124,48},{109,48},{94,48},{79,48},{64,48},{49,48},{34,48},{9,48},
+ {2,64},{21,64},{39,64},{96,64},{152,64},{171,64},{195,64},{210,64},{224,64}
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
+} };
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+#endif
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.h b/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.h
new file mode 100644
index 0000000000..da507403d3
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/v4.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#define XXX KC_NO
+#include "quantum.h"
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, k2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, k2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, XXX, K4D, K4E } \
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
new file mode 100644
index 0000000000..8806624e24
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
@@ -0,0 +1,109 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B42
+#define PRODUCT_ID 0x0105
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KBDFANS
+#define PRODUCT KBD67MKIIRGB_ISO
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { B1, F1, B2, B3, C6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, B0, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define USB_SUSPEND_WAKEUP_DELAY 5000
+
+#define RGB_DI_PIN C7
+#define RGBLED_NUM 68
+#define DRIVER_LED_TOTAL RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// #define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json b/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json
new file mode 100644
index 0000000000..36ff2f1fe5
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "kbd67mkiirgb_iso",
+ "url": "",
+ "maintainer": "moyi4681",
+ "layouts": {
+ "LAYOUT_65_iso_blocker": {
+ "layout": [
+ {"label":"`\u00ac", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Home", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"Page Up", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Up", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"AltGr", "x":10, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":4, "w":1.25},
+ {"label":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..db85ab3df9
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_iso_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP,
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..df2bd587e6
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_iso_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP,
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [2] = LAYOUT_65_iso_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_65_iso_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.c b/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.c
new file mode 100644
index 0000000000..267fa57598
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "mkiirgb_iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = {
+{
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 42, 15 },
+ { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,NO_LED, 43 },
+ { 58, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, NO_LED,45, 44 },
+ { 59, 60, 61, 57, NO_LED, 62, NO_LED, NO_LED, NO_LED, 63, 64, 65, NO_LED,66, 67 }
+}, {
+ {0,0},{15,0},{30,0},{45,0},{60,0},{75,0},{90,0},{105,0},{120,0},{135,0},{150,0},{165,0},{180,0},{203,0},{224,0},
+ {224,16},{188,16},{173,16},{158,16},{143,16},{128,16},{113,16},{98,16},{83,16}, {68,16},{53,16},{38,16},{23,16},{4,16},
+ {6,32},{26,32},{41,32},{56,32},{71,32},{86,32},{101,32},{116,32},{131,32},{146,32},{161,32},{176,32},{191,32},{206,24},{224,32},
+ {224,48},{210,48},{189,48},{169,48},{154,48},{139,48},{124,48},{109,48},{94,48},{79,48},{64,48},{49,48},{34,48},{21,48},{2,48},
+ {2,64},{21,64},{39,64},{96,64},{152,64},{171,64},{195,64},{210,64},{224,64}
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
+} };
+
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(29, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
+
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.h b/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.h
new file mode 100644
index 0000000000..3c0e90abc8
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/mkiirgb_iso.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#define XXX KC_NO
+#include "quantum.h"
+
+#define LAYOUT_65_iso_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
+ K30, K43, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E }, \
+ { K40, K41, K42, K43, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, XXX, K4D, K4E } \
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md b/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md
new file mode 100644
index 0000000000..7673acc580
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md
@@ -0,0 +1,18 @@
+# KBD67 Mk.II RGB ISO (Hotswap)
+
+A customizable 65% RGB ISO keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBD67 Mk.II RGB ISO
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/kbd67/mkiirgb_iso:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down esc in the keyboard then replug
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET`
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk
new file mode 100644
index 0000000000..7e5b22ef73
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = lufa-ms
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LAYOUTS = 65_iso_blocker
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c
index 0f674c3ad8..635e1d0ddc 100644
--- a/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c
@@ -36,10 +36,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[0] = LAYOUT_65_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
/* Keymap Fn Layer
@@ -56,10 +56,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[1] = LAYOUT_65_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,KC_INS, \
- _______,_______, KC_UP,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP,_______, _______,_______, \
- _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,_______,_______,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT, _______,_______, \
- _______,_______,_______,_______,_______,_______,_______,_______, KC_END,KC_PGDN,KC_DOWN, _______,KC_PGUP,_______, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,KC_INS,
+ _______,_______, KC_UP,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP,_______, _______,_______,
+ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,_______,_______,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT, _______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______, KC_END,KC_PGDN,KC_DOWN, _______,KC_PGUP,_______,
_______, _______, _______, _______, _______,_______,_______,KC_HOME,KC_PGDN, KC_END),
};
diff --git a/keyboards/kbdfans/kbd67/rev1/rules.mk b/keyboards/kbdfans/kbd67/rev1/rules.mk
index 610532fe9f..fd456aa395 100644
--- a/keyboards/kbdfans/kbd67/rev1/rules.mk
+++ b/keyboards/kbdfans/kbd67/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/default/config.h b/keyboards/kbdfans/kbd67/rev2/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c
index 0f674c3ad8..635e1d0ddc 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/default/keymap.c
@@ -36,10 +36,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[0] = LAYOUT_65_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
/* Keymap Fn Layer
@@ -56,10 +56,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[1] = LAYOUT_65_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,KC_INS, \
- _______,_______, KC_UP,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP,_______, _______,_______, \
- _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,_______,_______,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT, _______,_______, \
- _______,_______,_______,_______,_______,_______,_______,_______, KC_END,KC_PGDN,KC_DOWN, _______,KC_PGUP,_______, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,KC_INS,
+ _______,_______, KC_UP,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS, KC_UP,_______, _______,_______,
+ _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______,_______,_______,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT, _______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______, KC_END,KC_PGDN,KC_DOWN, _______,KC_PGUP,_______,
_______, _______, _______, _______, _______,_______,_______,KC_HOME,KC_PGDN, KC_END),
};
diff --git a/keyboards/kbdfans/kbd67/rev2/rules.mk b/keyboards/kbdfans/kbd67/rev2/rules.mk
index 332aa9e9ef..82e2f738a6 100644
--- a/keyboards/kbdfans/kbd67/rev2/rules.mk
+++ b/keyboards/kbdfans/kbd67/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd6x/rules.mk b/keyboards/kbdfans/kbd6x/rules.mk
index 14adc28f7e..0a0f62cdc0 100644
--- a/keyboards/kbdfans/kbd6x/rules.mk
+++ b/keyboards/kbdfans/kbd6x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
index bf0781a779..87cab80f59 100644
--- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
@@ -56,6 +56,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
#define FN_CAPS LT(_FN,KC_CAPS)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
[_DV] = LAYOUT_75_ansi_wkl(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, MO(_SY),
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
@@ -64,6 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END,
KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+
[_QW] = LAYOUT_75_ansi_wkl(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, MO(_SY),
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
@@ -72,6 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, TD(LAG), KC_SPC, TD(RAG), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+
[_Q2] = LAYOUT_75_ansi_wkl(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -80,6 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LALT, _______, KC_RALT, _______, _______, _______, _______
),
+
[_FN] = LAYOUT_75_ansi_wkl(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, DM_REC1,
@@ -88,14 +92,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, M_UNDO, M_CUT, M_COPY, M_PASTE, G_BRCH, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, DM_PLY2,
_______, _______, _______, _______, _______, _______, _______, _______
),
+
[_SY] = LAYOUT_75_ansi_wkl(
- _______, TO(_DV), TO(_QW), _______, TG(_Q2), _______, _______, _______, RESET, EEP_RST, DEBUG, _______, VRSN, _______, _______, _______,
- _______, _______, M_MDSWP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
- _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______
+ TG(_SY), TO(_DV), TO(_QW), XXXXXXX, TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, EEP_RST, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, XXXXXXX,
+ XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
+
};
bool led_update_user(led_t led_state) {
diff --git a/keyboards/kbdfans/kbd75/rev1/rules.mk b/keyboards/kbdfans/kbd75/rev1/rules.mk
index 24f717ea97..e5d5d2c9a2 100644
--- a/keyboards/kbdfans/kbd75/rev1/rules.mk
+++ b/keyboards/kbdfans/kbd75/rev1/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kbdfans/kbd75/rev2/rules.mk b/keyboards/kbdfans/kbd75/rev2/rules.mk
index 24f717ea97..e5d5d2c9a2 100644
--- a/keyboards/kbdfans/kbd75/rev2/rules.mk
+++ b/keyboards/kbdfans/kbd75/rev2/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kbdfans/kbd75hs/rules.mk b/keyboards/kbdfans/kbd75hs/rules.mk
index 76adc51e1c..e67e8c0624 100644
--- a/keyboards/kbdfans/kbd75hs/rules.mk
+++ b/keyboards/kbdfans/kbd75hs/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd75rgb/config.h b/keyboards/kbdfans/kbd75rgb/config.h
new file mode 100644
index 0000000000..e49cf68b98
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/config.h
@@ -0,0 +1,92 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B42
+#define PRODUCT_ID 0x6063
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KBDFANS
+#define PRODUCT KBD75RGB
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { F0, F1, B0, B1, B2, C6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, E6, B3, B7, D0, D1, D2, D3, D5, D4, D6, D7}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define USB_SUSPEND_WAKEUP_DELAY 5000
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
+
+#define RGB_DI_PIN C7
+#define RGBLED_NUM 84
+#define DRIVER_LED_TOTAL RGBLED_NUM
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspendedz
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define RGB_MATRIX_HUE_STEP 8
+#define RGB_MATRIX_SAT_STEP 8
+#define RGB_MATRIX_VAL_STEP 8
+#define RGB_MATRIX_SPD_STEP 10
diff --git a/keyboards/kbdfans/kbd75rgb/kbd75rgb.c b/keyboards/kbdfans/kbd75rgb/kbd75rgb.c
new file mode 100644
index 0000000000..93bbbfc02c
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/kbd75rgb.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kbd75rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15},
+ { 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16},
+ { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45},
+ { 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 14, 47, 46},
+ { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, NO_LED,72, 73},
+ { 83, 82, 81, NO_LED, NO_LED, 80, NO_LED, NO_LED, 79, 78, 77, 76, NO_LED,75 ,74}
+}, {
+ {0, 0}, {14.9, 0}, {14.9*2, 0},{14.9*3, 0}, {14.9*4, 0}, {14.9*5, 0}, {14.9*6, 0}, {14.9*7, 0}, {14.9*8, 0}, {14.9*9, 0}, {14.9*10, 0}, {14.9*11, 0}, {14.9*12, 0}, {14.9*13, 0}, {14.9*14, 0}, {224, 0},
+ {224, 12.8}, {218, 12.8},{192, 12.8},{176, 12.8},{160, 12.8},{144, 12.8},{128, 12.8},{112, 12.8},{96, 12.8},{80, 12.8},{64, 12.8},{48, 12.8},{32, 12.8},{16, 12.8},{0, 12.8},
+ {0, 25.6},{16, 25.6}, {32, 25.6}, {48, 25.6}, {64, 25.6}, {80, 25.6}, {96, 25.6}, {112, 25.6}, {128, 25.6}, {144, 25.6}, {160, 25.6},{176, 25.6}, {192, 25.6}, {218, 25.6}, {224, 25.6},
+{224, 38.4},{200, 38.4},{176, 38.4},{160, 38.4},{144, 38.4},{128, 38.4},{112, 38.4},{96, 38.4},{80, 38.4},{64, 38.4},{48, 38.4},{32, 38.4},{16, 38.4},{0, 38.4},
+ {0, 51.2},{16, 51.2}, {32, 51.2}, {48, 51.2}, {64, 51.2}, {80, 51.2}, {96, 51.2}, {112, 51.2}, {128, 51.2}, {144, 51.2}, {160, 51.2}, {189, 51.2}, {218, 51.2}, {224, 51.2},
+{224, 64},{218, 64},{192, 64},{176, 64},{160, 64},{144, 64}, {80, 64}, {32, 64},{16, 64},{0, 64}
+}, {
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,1,4,1,1,1,4,4,4,
+4,4,4,4
+} };
+
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void)
+{
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK))
+ {
+ rgb_matrix_set_color(59, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
diff --git a/keyboards/kbdfans/kbd75rgb/kbd75rgb.h b/keyboards/kbdfans/kbd75rgb/kbd75rgb.h
new file mode 100644
index 0000000000..88ff6ef9f6
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/kbd75rgb.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#define XXX KC_NO
+#include "quantum.h"
+#define LAYOUT_75_ansi( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K312, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
+ K500, K501, K502, K505, K508, K509, K510, K511, K513, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, K509, K510, K511, KC_NO, K513, K514 } \
+}
diff --git a/keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c b/keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ce40dd3a21
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_75_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_75_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_75_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_75_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/kbdfans/kbd75rgb/keymaps/via/keymap.c b/keyboards/kbdfans/kbd75rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b7f0e4f36e
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 DZTECH <moyi4681@Live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_75_ansi (
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_HOME,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_75_ansi (
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_75_ansi (
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_75_ansi (
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/kbdfans/kbd75rgb/keymaps/via/rules.mk b/keyboards/kbdfans/kbd75rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd75rgb/readme.md b/keyboards/kbdfans/kbd75rgb/readme.md
new file mode 100644
index 0000000000..2dc002022f
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/readme.md
@@ -0,0 +1,23 @@
+# KBD75RGB
+
+A customizable 75% RGB keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBDFANS
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/kbd75rgb:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kbdfans/kbd75rgb/rules.mk b/keyboards/kbdfans/kbd75rgb/rules.mk
new file mode 100644
index 0000000000..477bc16bdc
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = lufa-ms
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = WS2812
+LTO_ENABLE = yes
+
+LAYOUTS = 75_ansi
diff --git a/keyboards/kbdfans/kbd8x/keymaps/default/keymap.c b/keyboards/kbdfans/kbd8x/keymaps/default/keymap.c
index b3294b0422..0f598725a5 100644
--- a/keyboards/kbdfans/kbd8x/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd8x/keymaps/default/keymap.c
@@ -18,19 +18,19 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/kbdfans/kbd8x/keymaps/default_backlighting/keymap.c b/keyboards/kbdfans/kbd8x/keymaps/default_backlighting/keymap.c
index 8e47e1d70a..11f7fd9eb2 100644
--- a/keyboards/kbdfans/kbd8x/keymaps/default_backlighting/keymap.c
+++ b/keyboards/kbdfans/kbd8x/keymaps/default_backlighting/keymap.c
@@ -18,18 +18,18 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, BL_TOGG, BL_INC, BL_DEC, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/kbdfans/kbd8x/rules.mk b/keyboards/kbdfans/kbd8x/rules.mk
index eb380eab35..55fef17f29 100644
--- a/keyboards/kbdfans/kbd8x/rules.mk
+++ b/keyboards/kbdfans/kbd8x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c
index 3213dabc9c..d9a5cd5d18 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/ansi_7/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c
index 3c7255a286..d55a2a9890 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/default/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/default_ansi/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/default_ansi/keymap.c
index 84f419ba04..63b29f5fd0 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/default_ansi/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/default_ansi/keymap.c
@@ -17,11 +17,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/default_iso/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/default_iso/keymap.c
index c33e92d06f..61053da874 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/default_iso/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/default_iso/keymap.c
@@ -17,11 +17,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_iso( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c
index cd7a23428e..c3352509ca 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_625/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ALGR, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_ALGR, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c
index 45e0cf0fe6..f9b75e4dda 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/iso_7/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NUHS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NO, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c b/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c
index 3a7b80ca4e..4e210af0c4 100644
--- a/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c
+++ b/keyboards/kbdfans/kbd8x_mk2/keymaps/tester/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_CAPS, KC_SLCK, BL_TOGG, BL_STEP, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_CAPS, KC_SLCK, BL_TOGG, BL_STEP, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/kbdfans/kbd8x_mk2/rules.mk b/keyboards/kbdfans/kbd8x_mk2/rules.mk
index 9a9eaad646..bbf19cd4b7 100644
--- a/keyboards/kbdfans/kbd8x_mk2/rules.mk
+++ b/keyboards/kbdfans/kbd8x_mk2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbdmini/rules.mk b/keyboards/kbdfans/kbdmini/rules.mk
index 0bcd9e7267..6f1f01eebe 100644
--- a/keyboards/kbdfans/kbdmini/rules.mk
+++ b/keyboards/kbdfans/kbdmini/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk
index 9912abbe9f..7c8b9e3670 100644
--- a/keyboards/kbdfans/kbdpad/mk1/rules.mk
+++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/kbdfans/kbdpad_mk2/config.h b/keyboards/kbdfans/kbdpad/mk2/config.h
index e64aaa3379..e64aaa3379 100644
--- a/keyboards/kbdfans/kbdpad_mk2/config.h
+++ b/keyboards/kbdfans/kbdpad/mk2/config.h
diff --git a/keyboards/kbdfans/kbdpad_mk2/info.json b/keyboards/kbdfans/kbdpad/mk2/info.json
index 2f61318575..2f61318575 100644
--- a/keyboards/kbdfans/kbdpad_mk2/info.json
+++ b/keyboards/kbdfans/kbdpad/mk2/info.json
diff --git a/keyboards/kbdfans/kbdpad/mk2/keymaps/default/keymap.c b/keyboards/kbdfans/kbdpad/mk2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3213eca482
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_6x4( /* Base */
+ KC_ESC, KC_LCTL, KC_LALT, KC_BSPC,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT
+ ),
+};
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/readme.md b/keyboards/kbdfans/kbdpad/mk2/keymaps/default/readme.md
index 71ff8e0025..71ff8e0025 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/default/readme.md
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/keymap.c
index 39ebb77ff8..39ebb77ff8 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/keymap.c
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/keymap.c
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/readme.md
index a574499c6b..a574499c6b 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/readme.md
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/rules.mk
index e5ddcae8d9..e5ddcae8d9 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/iracing_replay/rules.mk
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/iracing_replay/rules.mk
diff --git a/keyboards/kbdfans/kbdpad/mk2/keymaps/tester/keymap.c b/keyboards/kbdfans/kbdpad/mk2/keymaps/tester/keymap.c
new file mode 100644
index 0000000000..e0c56c167d
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/tester/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_6x4( /* Base */
+ BL_TOGG, BL_STEP, RGB_TOG, RGB_MOD,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT
+ ),
+};
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/readme.md b/keyboards/kbdfans/kbdpad/mk2/keymaps/tester/readme.md
index 3cd1e9b67b..3cd1e9b67b 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/tester/readme.md
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/via/keymap.c b/keyboards/kbdfans/kbdpad/mk2/keymaps/via/keymap.c
index 20c048c111..20c048c111 100644
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/via/keymap.c
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/via/keymap.c
diff --git a/keyboards/kbdfans/kbdpad/mk2/keymaps/via/rules.mk b/keyboards/kbdfans/kbdpad/mk2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/kbdpad/mk2/mk2.c b/keyboards/kbdfans/kbdpad/mk2/mk2.c
new file mode 100644
index 0000000000..2449724126
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/mk2.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mk2.h"
diff --git a/keyboards/kbdfans/kbdpad/mk2/mk2.h b/keyboards/kbdfans/kbdpad/mk2/mk2.h
new file mode 100644
index 0000000000..0dfa995fe2
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/mk2.h
@@ -0,0 +1,60 @@
+/* Copyright 2019 Ryota Goto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_ortho_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43, \
+ K50, K51, K52, K53 \
+) \
+{ \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, K43 }, \
+ { K50, K51, K52, K53 } \
+}
+
+#define LAYOUT_numpad_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, \
+ K50, K52, K53 \
+) \
+{ \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, KC_NO }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, KC_NO }, \
+ { K50, KC_NO, K52, K53 } \
+}
diff --git a/keyboards/kbdfans/kbdpad_mk2/readme.md b/keyboards/kbdfans/kbdpad/mk2/readme.md
index 7736019bb5..7736019bb5 100644
--- a/keyboards/kbdfans/kbdpad_mk2/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk2/readme.md
diff --git a/keyboards/kbdfans/kbdpad/mk2/rules.mk b/keyboards/kbdfans/kbdpad/mk2/rules.mk
new file mode 100644
index 0000000000..b21b4a2a60
--- /dev/null
+++ b/keyboards/kbdfans/kbdpad/mk2/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = ortho_6x4
diff --git a/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.c b/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.c
deleted file mode 100644
index 1d6e1642b9..0000000000
--- a/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Copyright 2019 Ryota Goto
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "kbdpad_mk2.h"
diff --git a/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.h b/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.h
deleted file mode 100644
index 328aeaac9b..0000000000
--- a/keyboards/kbdfans/kbdpad_mk2/kbdpad_mk2.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright 2019 Ryota Goto
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include "quantum.h"
-
-/* This a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
- */
-#define LAYOUT_ortho_6x4( \
- K00, K01, K02, K03, \
- K10, K11, K12, K13, \
- K20, K21, K22, K23, \
- K30, K31, K32, K33, \
- K40, K41, K42, K43, \
- K50, K51, K52, K53 \
-) \
-{ \
- { K00, K01, K02, K03 }, \
- { K10, K11, K12, K13 }, \
- { K20, K21, K22, K23 }, \
- { K30, K31, K32, K33 }, \
- { K40, K41, K42, K43 }, \
- { K50, K51, K52, K53 } \
-}
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c
deleted file mode 100644
index 767fceec37..0000000000
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/default/keymap.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2019 Ryota Goto
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ortho_6x4( /* Base */
- KC_ESC, KC_LCTL, KC_LALT, KC_BSPC, \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_P0, KC_PDOT, KC_PENT \
- ),
-};
diff --git a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c b/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c
deleted file mode 100644
index f4675ce564..0000000000
--- a/keyboards/kbdfans/kbdpad_mk2/keymaps/tester/keymap.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2019 Ryota Goto
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ortho_6x4( /* Base */
- BL_TOGG, BL_STEP, RGB_TOG, RGB_MOD, \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_P0, KC_PDOT, KC_PENT \
- ),
-};
diff --git a/keyboards/kbdfans/kbdpad_mk2/rules.mk b/keyboards/kbdfans/kbdpad_mk2/rules.mk
deleted file mode 100644
index 1b5b44b80d..0000000000
--- a/keyboards/kbdfans/kbdpad_mk2/rules.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# MCU name
-MCU = atmega32u2
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
-LAYOUTS = ortho_6x4
diff --git a/keyboards/kbdfans/maja/rules.mk b/keyboards/kbdfans/maja/rules.mk
index 2279a82333..07ffe11355 100755
--- a/keyboards/kbdfans/maja/rules.mk
+++ b/keyboards/kbdfans/maja/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/kbdfans/maja_soldered/rules.mk b/keyboards/kbdfans/maja_soldered/rules.mk
index 59fdeaebf4..9385d5e176 100755
--- a/keyboards/kbdfans/maja_soldered/rules.mk
+++ b/keyboards/kbdfans/maja_soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/kbdfans/odin/rgb/config.h b/keyboards/kbdfans/odin/rgb/config.h
new file mode 100644
index 0000000000..9e2a12fcca
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "config_common.h"
+
+#define VENDOR_ID 0x4B42
+#define PRODUCT_ID 0x0102
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KBDFANS
+#define PRODUCT ODIN_RGB
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 20
+
+#define MATRIX_ROW_PINS { A10, A9, A8, B14, B13, A2 }
+#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B12, A15, B3, B4, B5, B6, B7, B8, C13, C14, C15, A0}
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+#define RGBLED_NUM 110
+#define DRIVER_LED_TOTAL 110
+#define RGB_DI_PIN B15
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+
+#endif
diff --git a/keyboards/kbdfans/odin/rgb/info.json b/keyboards/kbdfans/odin/rgb/info.json
new file mode 100644
index 0000000000..d5c63b5700
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/info.json
@@ -0,0 +1,111 @@
+{
+ "keyboard_name": "ODIN_RGB",
+ "maintainer": "moyi4681",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 2, "y": 0 },
+ { "label": "F2", "x": 3, "y": 0 },
+ { "label": "F3", "x": 4, "y": 0 },
+ { "label": "F4", "x": 5, "y": 0 },
+ { "label": "F5", "x": 6.5, "y": 0 },
+ { "label": "F6", "x": 7.5, "y": 0 },
+ { "label": "F7", "x": 8.5, "y": 0 },
+ { "label": "F8", "x": 9.5, "y": 0 },
+ { "label": "F9", "x": 11, "y": 0 },
+ { "label": "F10", "x": 12, "y": 0 },
+ { "label": "F11", "x": 13, "y": 0 },
+ { "label": "F12", "x": 14, "y": 0 },
+ { "label": "PrtSc", "x": 15.25, "y": 0 },
+ { "x": 16.5, "y": 0 },
+ { "x": 17.5, "y": 0 },
+ { "x": 18.5, "y": 0 },
+ { "x": 19.5, "y": 0 },
+ { "label": "~", "x": 0, "y": 1.5 },
+ { "label": "!", "x": 1, "y": 1.5 },
+ { "label": "@", "x": 2, "y": 1.5 },
+ { "label": "#", "x": 3, "y": 1.5 },
+ { "label": "$", "x": 4, "y": 1.5 },
+ { "label": "%", "x": 5, "y": 1.5 },
+ { "label": "^", "x": 6, "y": 1.5 },
+ { "label": "&", "x": 7, "y": 1.5 },
+ { "label": "*", "x": 8, "y": 1.5 },
+ { "label": "(", "x": 9, "y": 1.5 },
+ { "label": ")", "x": 10, "y": 1.5 },
+ { "label": "_", "x": 11, "y": 1.5 },
+ { "label": "+", "x": 12, "y": 1.5 },
+ { "label": "Backspace", "w": 2, "x": 13, "y": 1.5 },
+ { "label": "Insert", "x": 15.25, "y": 1.5 },
+ { "label": "Num Lock", "x": 16.5, "y": 1.5 },
+ { "label": "/", "x": 17.5, "y": 1.5 },
+ { "label": "*", "x": 18.5, "y": 1.5 },
+ { "label": "-", "x": 19.5, "y": 1.5 },
+ { "label": "Tab", "w": 1.5, "x": 0, "y": 2.5 },
+ { "label": "Q", "x": 1.5, "y": 2.5 },
+ { "label": "W", "x": 2.5, "y": 2.5 },
+ { "label": "E", "x": 3.5, "y": 2.5 },
+ { "label": "R", "x": 4.5, "y": 2.5 },
+ { "label": "T", "x": 5.5, "y": 2.5 },
+ { "label": "Y", "x": 6.5, "y": 2.5 },
+ { "label": "U", "x": 7.5, "y": 2.5 },
+ { "label": "I", "x": 8.5, "y": 2.5 },
+ { "label": "O", "x": 9.5, "y": 2.5 },
+ { "label": "P", "x": 10.5, "y": 2.5 },
+ { "label": "{", "x": 11.5, "y": 2.5 },
+ { "label": "}", "x": 12.5, "y": 2.5 },
+ { "label": "|", "w": 1.5, "x": 13.5, "y": 2.5 },
+ { "label": "Delete", "x": 15.25, "y": 2.5 },
+ { "label": "7", "x": 16.5, "y": 2.5 },
+ { "label": "8", "x": 17.5, "y": 2.5 },
+ { "label": "9", "x": 18.5, "y": 2.5 },
+ { "h": 2, "label": "+", "x": 19.5, "y": 2.5 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0, "y": 3.5 },
+ { "label": "A", "x": 1.75, "y": 3.5 },
+ { "label": "S", "x": 2.75, "y": 3.5 },
+ { "label": "D", "x": 3.75, "y": 3.5 },
+ { "label": "F", "x": 4.75, "y": 3.5 },
+ { "label": "G", "x": 5.75, "y": 3.5 },
+ { "label": "H", "x": 6.75, "y": 3.5 },
+ { "label": "J", "x": 7.75, "y": 3.5 },
+ { "label": "K", "x": 8.75, "y": 3.5 },
+ { "label": "L", "x": 9.75, "y": 3.5 },
+ { "label": ":", "x": 10.75, "y": 3.5 },
+ { "label": "\"", "x": 11.75, "y": 3.5 },
+ { "label": "Enter", "w": 2.25, "x": 12.75, "y": 3.5 },
+ { "label": "4", "x": 16.5, "y": 3.5 },
+ { "label": "5", "x": 17.5, "y": 3.5 },
+ { "label": "6", "x": 18.5, "y": 3.5 },
+ { "label": "Shift", "w": 2.25, "x": 0, "y": 4.5 },
+ { "label": "Z", "x": 2.25, "y": 4.5 },
+ { "label": "X", "x": 3.25, "y": 4.5 },
+ { "label": "C", "x": 4.25, "y": 4.5 },
+ { "label": "V", "x": 5.25, "y": 4.5 },
+ { "label": "B", "x": 6.25, "y": 4.5 },
+ { "label": "N", "x": 7.25, "y": 4.5 },
+ { "label": "M", "x": 8.25, "y": 4.5 },
+ { "label": "<", "x": 9.25, "y": 4.5 },
+ { "label": ">", "x": 10.25, "y": 4.5 },
+ { "label": "?", "x": 11.25, "y": 4.5 },
+ { "label": "Shift", "w": 2.75, "x": 12.25, "y": 4.5 },
+ { "label": "\u2191", "x": 15.25, "y": 4.75 },
+ { "label": "1", "x": 16.5, "y": 4.5 },
+ { "label": "2", "x": 17.5, "y": 4.5 },
+ { "label": "3", "x": 18.5, "y": 4.5 },
+ { "h": 2, "label": "Enter", "x": 19.5, "y": 4.5 },
+ { "label": "Ctrl", "w": 1.25, "x": 0, "y": 5.5 },
+ { "label": "Win", "w": 1.25, "x": 1.25, "y": 5.5 },
+ { "label": "Alt", "w": 1.25, "x": 2.5, "y": 5.5 },
+ { "w": 7, "x": 3.75, "y": 5.5 },
+ { "label": "Alt", "w": 1.5, "x": 10.75, "y": 5.5 },
+ { "label": "Win", "w": 1.5, "x": 12.25, "y": 5.5 },
+ { "label": "\u2190", "x": 14.25, "y": 5.75 },
+ { "label": "\u2193", "x": 15.25, "y": 5.75 },
+ { "label": "\u2192", "x": 16.25, "y": 5.75 },
+ { "label": "0", "x": 17.5, "y": 5.5 },
+ { "label": ".", "x": 18.5, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c b/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..79541a8cf9
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+};
diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/config.h b/keyboards/kbdfans/odin/rgb/keymaps/via/config.h
new file mode 100644
index 0000000000..7a40c74d85
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c b/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..79f14fee6b
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+};
diff --git a/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk b/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kbdfans/odin/rgb/readme.md b/keyboards/kbdfans/odin/rgb/readme.md
new file mode 100644
index 0000000000..3530fcca40
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/readme.md
@@ -0,0 +1,21 @@
+# ODIN RGB
+
+A customizable HOTSWAP RGB keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBDFANS
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/odin/rgb:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
+* **Physical reset button**:press and hold the button on the back of the PCB, then plugin to PC
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kbdfans/odin/rgb/rgb.c b/keyboards/kbdfans/odin/rgb/rgb.c
new file mode 100644
index 0000000000..425597a7f6
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/rgb.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = {
+{
+ { 0, NO_LED, 1, 2, 3, 4, NO_LED, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, NO_LED, 22, 21, 20, 19, 18 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, NO_LED, 51, 52, 53, 54, 55 },
+ { 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, NO_LED, 63, NO_LED, NO_LED, 58, 57, 56, NO_LED },
+ { 76, NO_LED, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, NO_LED, 87, NO_LED, 88, 89, 90, 91, 92 },
+ { 103,102, 101, NO_LED, NO_LED, NO_LED, 100, NO_LED, NO_LED, NO_LED, NO_LED, 99, NO_LED, 98, 97, 96, 95, 94, 93, NO_LED }
+},
+{
+ { 12*0, 0 }, { 12*2, 0 }, { 12*3, 0 }, { 12*4, 0 }, { 12*5, 0 }, { 12*7, 0 }, { 12*8, 0 }, { 12*9, 0 }, { 12*10, 0 }, { 12*11, 0 }, { 12*12, 0 }, { 12*13, 0 }, { 12*14, 0 }, { 12*15, 0 }, { 12*16, 0 }, { 12*17, 0 }, { 12*18, 0 }, { 224, 0 },
+
+ { 224, 14 }, { 12*18, 14 }, { 12*17, 14 }, { 12*16, 14 },{ 12*15, 14 },{ 12*13, 14 }, { 12*12, 14 }, { 12*11, 14 }, { 12*10, 14 }, { 12*9, 14 },{ 12*8, 14},{ 12*7, 14}, { 12*6, 14 }, { 12*5, 14 }, { 12*4, 14 },{ 12*3, 14 },{ 12*2, 14 }, {12, 14}, { 12*0, 14 },
+
+ { 12*0, 26.8 }, {12, 26.8}, { 12*2, 26.8 }, { 12*3, 26.8 }, { 12*4, 26.8 }, { 12*5, 26.8 }, { 12*6, 26.8 }, { 12*7, 26.8}, { 12*8, 26.8}, { 12*9, 26.8 }, { 12*10, 26.8 }, { 12*11, 26.8 }, { 12*12, 26.8 }, { 12*13, 26.8 }, { 12*15, 26.8 }, { 12*16, 26.8 }, { 12*17, 26.8 }, { 12*18, 26.8 }, { 224, 33.2 },
+
+ { 12*18, 39.6 }, { 12*17, 39.6 },{ 12*16, 39.6 }, {224,0},{0,0},{0,64},{224,64 }, { 12*13, 39.6 }, { 12*11, 39.6 }, { 12*10, 39.6 }, { 12*9, 39.6 },{ 12*8, 39.6}, { 12*7, 39.6}, { 12*6, 39.6 }, { 12*5, 39.6 },{ 12*4, 39.6 },{ 12*3, 39.6 }, { 12*2, 39.6 }, {12, 39.6}, { 12*0, 39.6 },
+
+ { 12*0, 52 },{ 12*2, 52 }, { 12*3, 52 }, { 12*4, 52 }, { 12*5, 52 }, { 12*6, 52 }, { 12*7, 52}, { 12*8, 52}, { 12*9, 52 }, { 12*10, 52 }, { 12*11, 52 }, { 12*13, 52 }, { 12*15, 52 }, { 12*16, 52 }, { 12*17, 52 }, { 12*18, 52 }, { 224, 58 },
+
+ { 12*18, 64 }, { 12*17, 64 }, { 12*16, 64 }, { 12*15, 64 },{ 12*14, 64 }, { 12*13, 64 }, { 12*11, 64 }, { 12*6, 64 }, { 12*2, 64 }, {12, 64}, { 12*0, 64 }
+},
+{
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+4,4,4,4,4,4,4,4,4,4,4,4
+}};
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(75, 0xFF, 0xFF, 0xFF);
+ }
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(21, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
diff --git a/keyboards/kbdfans/odin/rgb/rgb.h b/keyboards/kbdfans/odin/rgb/rgb.h
new file mode 100644
index 0000000000..b23a93c9b3
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/rgb.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, k1I, k1J, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, k2I, k2J, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, k3H, k3I, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4F, k4G, k4H, k4I, k4J, \
+ k50, k51, k52, k56, k5B, k5D, k5E, k5F, k5G, k5H, k5I \
+) \
+{ \
+ {k00, KC_NO, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J }, \
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F, k1G, k1H, k1I, k1J }, \
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, k2G, k2H, k2I, k2J }, \
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, KC_NO, KC_NO, k3G, k3H, k3I, KC_NO}, \
+ {k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, KC_NO, k4D, KC_NO, k4F, k4G, k4H, k4I, k4J }, \
+ {k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, KC_NO, k5B, KC_NO, k5D, k5E, k5F, k5G, k5H, k5I, KC_NO} \
+}
diff --git a/keyboards/kbdfans/odin/rgb/rules.mk b/keyboards/kbdfans/odin/rgb/rules.mk
new file mode 100644
index 0000000000..212eb8ba08
--- /dev/null
+++ b/keyboards/kbdfans/odin/rgb/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/kbdfans/odin/soldered/config.h b/keyboards/kbdfans/odin/soldered/config.h
new file mode 100644
index 0000000000..74e87aee2e
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/config.h
@@ -0,0 +1,57 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "config_common.h"
+
+#define VENDOR_ID 0x4B42
+#define PRODUCT_ID 0x0101
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KBDFANS
+#define PRODUCT ODIN_SOLDERED
+
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 20
+
+#define MATRIX_ROW_PINS { A10, A9, A8, B14, B13, A2 }
+#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B12, A15, B3, B4, B5, B6, B7, B8, C13, C14, C15, A0}
+#define UNUSED_PINS
+
+#define LED_NUM_LOCK_PIN B9
+#define LED_CAPS_LOCK_PIN B10
+#define LED_PIN_ON_STATE 0
+
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 15
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define RGB_DI_PIN B15
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 4
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 8)
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 180
+#define RGBLIGHT_SLEEP
+#endif
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/kbdfans/odin/soldered/info.json b/keyboards/kbdfans/odin/soldered/info.json
new file mode 100644
index 0000000000..1e4da0d275
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/info.json
@@ -0,0 +1,118 @@
+{
+ "keyboard_name": "ODIN_SOLDERED",
+ "maintainer": "moyi4681",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 2, "y": 0 },
+ { "label": "F2", "x": 3, "y": 0 },
+ { "label": "F3", "x": 4, "y": 0 },
+ { "label": "F4", "x": 5, "y": 0 },
+ { "label": "F5", "x": 6.5, "y": 0 },
+ { "label": "F6", "x": 7.5, "y": 0 },
+ { "label": "F7", "x": 8.5, "y": 0 },
+ { "label": "F8", "x": 9.5, "y": 0 },
+ { "label": "F9", "x": 11, "y": 0 },
+ { "label": "F10", "x": 12, "y": 0 },
+ { "label": "F11", "x": 13, "y": 0 },
+ { "label": "F12", "x": 14, "y": 0 },
+ { "label": "PrtSc", "x": 15.25, "y": 0 },
+ { "x": 16.5, "y": 0 },
+ { "x": 17.5, "y": 0 },
+ { "x": 18.5, "y": 0 },
+ { "x": 19.5, "y": 0 },
+ { "label": "~", "x": 0, "y": 1.5 },
+ { "label": "!", "x": 1, "y": 1.5 },
+ { "label": "@", "x": 2, "y": 1.5 },
+ { "label": "#", "x": 3, "y": 1.5 },
+ { "label": "$", "x": 4, "y": 1.5 },
+ { "label": "%", "x": 5, "y": 1.5 },
+ { "label": "^", "x": 6, "y": 1.5 },
+ { "label": "&", "x": 7, "y": 1.5 },
+ { "label": "*", "x": 8, "y": 1.5 },
+ { "label": "(", "x": 9, "y": 1.5 },
+ { "label": ")", "x": 10, "y": 1.5 },
+ { "label": "_", "x": 11, "y": 1.5 },
+ { "label": "+", "x": 12, "y": 1.5 },
+ { "x": 13, "y": 1.5 },
+ { "label": "Backspace", "x": 14, "y": 1.5 },
+ { "label": "Insert", "x": 15.25, "y": 1.5 },
+ { "label": "Num Lock", "x": 16.5, "y": 1.5 },
+ { "label": "/", "x": 17.5, "y": 1.5 },
+ { "label": "*", "x": 18.5, "y": 1.5 },
+ { "label": "-", "x": 19.5, "y": 1.5 },
+ { "label": "Tab", "w": 1.5, "x": 0, "y": 2.5 },
+ { "label": "Q", "x": 1.5, "y": 2.5 },
+ { "label": "W", "x": 2.5, "y": 2.5 },
+ { "label": "E", "x": 3.5, "y": 2.5 },
+ { "label": "R", "x": 4.5, "y": 2.5 },
+ { "label": "T", "x": 5.5, "y": 2.5 },
+ { "label": "Y", "x": 6.5, "y": 2.5 },
+ { "label": "U", "x": 7.5, "y": 2.5 },
+ { "label": "I", "x": 8.5, "y": 2.5 },
+ { "label": "O", "x": 9.5, "y": 2.5 },
+ { "label": "P", "x": 10.5, "y": 2.5 },
+ { "label": "{", "x": 11.5, "y": 2.5 },
+ { "label": "}", "x": 12.5, "y": 2.5 },
+ { "label": "|", "w": 1.5, "x": 13.5, "y": 2.5 },
+ { "label": "Delete", "x": 15.25, "y": 2.5 },
+ { "label": "7", "x": 16.5, "y": 2.5 },
+ { "label": "8", "x": 17.5, "y": 2.5 },
+ { "label": "9", "x": 18.5, "y": 2.5 },
+ { "label": "+", "x": 19.5, "y": 2.5 },
+ { "label": "Caps Lock", "w": 1.75, "x": 0, "y": 3.5 },
+ { "label": "A", "x": 1.75, "y": 3.5 },
+ { "label": "S", "x": 2.75, "y": 3.5 },
+ { "label": "D", "x": 3.75, "y": 3.5 },
+ { "label": "F", "x": 4.75, "y": 3.5 },
+ { "label": "G", "x": 5.75, "y": 3.5 },
+ { "label": "H", "x": 6.75, "y": 3.5 },
+ { "label": "J", "x": 7.75, "y": 3.5 },
+ { "label": "K", "x": 8.75, "y": 3.5 },
+ { "label": "L", "x": 9.75, "y": 3.5 },
+ { "label": ":", "x": 10.75, "y": 3.5 },
+ { "label": "\"", "x": 11.75, "y": 3.5 },
+ { "label": "Enter", "w": 2.25, "x": 12.75, "y": 3.5 },
+ { "label": "4", "x": 16.5, "y": 3.5 },
+ { "label": "5", "x": 17.5, "y": 3.5 },
+ { "label": "6", "x": 18.5, "y": 3.5 },
+ { "x": 19.5, "y": 3.5 },
+ { "label": "Shift", "w": 1.25, "x": 0, "y": 4.5 },
+ { "x": 1.25, "y": 4.5 },
+ { "label": "Z", "x": 2.25, "y": 4.5 },
+ { "label": "X", "x": 3.25, "y": 4.5 },
+ { "label": "C", "x": 4.25, "y": 4.5 },
+ { "label": "V", "x": 5.25, "y": 4.5 },
+ { "label": "B", "x": 6.25, "y": 4.5 },
+ { "label": "N", "x": 7.25, "y": 4.5 },
+ { "label": "M", "x": 8.25, "y": 4.5 },
+ { "label": "<", "x": 9.25, "y": 4.5 },
+ { "label": ">", "x": 10.25, "y": 4.5 },
+ { "label": "?", "x": 11.25, "y": 4.5 },
+ { "label": "Shift", "w": 1.75, "x": 12.25, "y": 4.5 },
+ { "x": 14, "y": 4.5 },
+ { "label": "\u2191", "x": 15.25, "y": 4.75 },
+ { "label": "1", "x": 16.5, "y": 4.5 },
+ { "label": "2", "x": 17.5, "y": 4.5 },
+ { "label": "3", "x": 18.5, "y": 4.5 },
+ { "label": "Enter", "x": 19.5, "y": 4.5 },
+ { "label": "Ctrl", "w": 1.25, "x": 0, "y": 5.5 },
+ { "label": "Win", "w": 1.25, "x": 1.25, "y": 5.5 },
+ { "label": "Alt", "w": 1.25, "x": 2.5, "y": 5.5 },
+ { "w": 6.25, "x": 3.75, "y": 5.5 },
+ { "x": 10, "y": 5.5 },
+ { "x": 11, "y": 5.5 },
+ { "x": 12, "y": 5.5 },
+ { "x": 13, "y": 5.5 },
+ { "label": "\u2190", "x": 14.25, "y": 5.75 },
+ { "label": "\u2193", "x": 15.25, "y": 5.75 },
+ { "label": "\u2192", "x": 16.25, "y": 5.75 },
+ { "label": "0", "x": 17.5, "y": 5.5 },
+ { "label": ".", "x": 18.5, "y": 5.5 },
+ { "x": 19.5, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c b/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ec202aea25
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_END, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT
+ ),
+ [1] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PAUS, KC_SPC, KC_SPC, KC_SPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_INS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT),
+}; \ No newline at end of file
diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/config.h b/keyboards/kbdfans/odin/soldered/keymaps/via/config.h
new file mode 100644
index 0000000000..fc9fbf68cd
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* Copyright 2021 Dztech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2 \ No newline at end of file
diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c b/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ec202aea25
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 DZTECH <moyi4681@live.cn>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,KC_BSPC, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_END, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT
+ ),
+ [1] =LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PAUS, KC_SPC, KC_SPC, KC_SPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,KC_INS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT,KC_PENT),
+}; \ No newline at end of file
diff --git a/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk b/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbdfans/odin/soldered/readme.md b/keyboards/kbdfans/odin/soldered/readme.md
new file mode 100644
index 0000000000..1ffc34597f
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/readme.md
@@ -0,0 +1,21 @@
+# ODIN SOLDERED
+
+A customizable soldered keyboard.
+
+* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681)
+* Hardware Supported: KBDFANS
+* Hardware Availability: [kbdfans](https://kbdfans.myshopify.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/odin/soldered:default
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
+* **Physical reset button**:press and hold the button on the back of the PCB, then plugin to PC
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kbdfans/odin/soldered/rules.mk b/keyboards/kbdfans/odin/soldered/rules.mk
new file mode 100644
index 0000000000..aefc49d3c1
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/kbdfans/odin/soldered/soldered.c b/keyboards/kbdfans/odin/soldered/soldered.c
new file mode 100644
index 0000000000..ddf024efd3
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/soldered.c
@@ -0,0 +1,16 @@
+/* Copyright 2020 Geekboards ltd. (geekboards.ru / geekboards.de)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "soldered.h" \ No newline at end of file
diff --git a/keyboards/kbdfans/odin/soldered/soldered.h b/keyboards/kbdfans/odin/soldered/soldered.h
new file mode 100644
index 0000000000..3541eff77d
--- /dev/null
+++ b/keyboards/kbdfans/odin/soldered/soldered.h
@@ -0,0 +1,35 @@
+ /* Copyright 2021 DZTECH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2F, k2G, k2H, k2I, k2J, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, k3H, k3I, k3J, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4D, k4E, k4F, k4G, k4H, k4I, k4J, \
+ k50, k51, k52, k56, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J \
+) \
+{ \
+ {k00, KC_NO, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0I, k0J }, \
+ {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1I, k1J }, \
+ {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, k2G, k2H, k2I, k2J }, \
+ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, KC_NO, KC_NO, k3G, k3H, k3I, k3J }, \
+ {k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, KC_NO, k4D, k4E, k4F, k4G, k4H, k4I, k4J }, \
+ {k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, k5A, k5B, k5C, k5D, k5E, k5F, k5G, k5H, k5I, k5J } \
+}
diff --git a/keyboards/kbnordic/nordic60/keymaps/via/rules.mk b/keyboards/kbnordic/nordic60/keymaps/via/rules.mk
index 1e5b99807c..c4b503281b 100644
--- a/keyboards/kbnordic/nordic60/keymaps/via/rules.mk
+++ b/keyboards/kbnordic/nordic60/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+RGBLIGHT_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kbnordic/nordic60/rev_a/rules.mk b/keyboards/kbnordic/nordic60/rev_a/rules.mk
index 895a77853d..43eb792fc1 100644
--- a/keyboards/kbnordic/nordic60/rev_a/rules.mk
+++ b/keyboards/kbnordic/nordic60/rev_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c
index a72c96cfa6..1721861b9a 100644
--- a/keyboards/kc60/keymaps/noroadsleft/keymap.c
+++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_SY] = LAYOUT_60_ansi(
TG(_SY), TO(_DV), TO(_QW), TO(_CM), TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX,
- XXXXXXX, XXXXXXX, M_MDSWP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX
diff --git a/keyboards/kc60/rules.mk b/keyboards/kc60/rules.mk
index 89823d4349..1899614029 100644
--- a/keyboards/kc60/rules.mk
+++ b/keyboards/kc60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kc60se/rules.mk b/keyboards/kc60se/rules.mk
index 9f68499394..54d3028ce0 100644
--- a/keyboards/kc60se/rules.mk
+++ b/keyboards/kc60se/rules.mk
@@ -6,15 +6,13 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # default keymap does not map mouse
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
index c64f702b20..2028deb4f1 100644
--- a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
@@ -16,21 +16,16 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_FIRST,
- LAYER_SECOND,
-};
-
-#define LY_SECND MO(LAYER_SECOND)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
- [LAYER_FIRST] = LAYOUT(
- KC_MUTE, LY_SECND, BL_BRTG,
+ [LAYER_DEFAULT] = LAYOUT(
+ KC_MUTE, LY_FN1, BL_BRTG,
KC_F4, KC_F5, KC_F6,
KC_F1, KC_F2, KC_F3
),
- [LAYER_SECOND] = LAYOUT(
+ [LAYER_FUNCTION_1] = LAYOUT(
EEP_RST, _______, RESET,
KC_F10, KC_F11, KC_F12,
KC_F7, KC_F8, KC_F9
diff --git a/keyboards/keebio/bdn9/keymaps/default/keymap.c b/keyboards/keebio/bdn9/keymaps/default/keymap.c
index e33e94b536..1dc680a1f6 100644
--- a/keyboards/keebio/bdn9/keymaps/default/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/default/keymap.c
@@ -67,5 +67,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_PGUP);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/bdn9/keymaps/via/keymap.c b/keyboards/keebio/bdn9/keymaps/via/keymap.c
index 7c380a4fdd..655f3e5ed4 100644
--- a/keyboards/keebio/bdn9/keymaps/via/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/via/keymap.c
@@ -40,28 +40,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == _LEFT) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- else if (index == _MIDDLE) {
- if (clockwise) {
- tap_code(KC_DOWN);
- } else {
- tap_code(KC_UP);
- }
- }
- else if (index == _RIGHT) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/bdn9/rev1/rev1.c b/keyboards/keebio/bdn9/rev1/rev1.c
index 4b32b73a0b..b1b0afc608 100644
--- a/keyboards/keebio/bdn9/rev1/rev1.c
+++ b/keyboards/keebio/bdn9/rev1/rev1.c
@@ -16,3 +16,29 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ else if (index == 2) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/bdn9/rev1/rules.mk b/keyboards/keebio/bdn9/rev1/rules.mk
index f26e0e3422..05449ecfe8 100644
--- a/keyboards/keebio/bdn9/rev1/rules.mk
+++ b/keyboards/keebio/bdn9/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/bdn9/rev2/rev2.c b/keyboards/keebio/bdn9/rev2/rev2.c
index 689abd0b1d..9c2f5169f3 100644
--- a/keyboards/keebio/bdn9/rev2/rev2.c
+++ b/keyboards/keebio/bdn9/rev2/rev2.c
@@ -37,3 +37,29 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ else if (index == 2) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/bdn9/rev2/rules.mk b/keyboards/keebio/bdn9/rev2/rules.mk
index fd3968a4ec..b9272d860a 100644
--- a/keyboards/keebio/bdn9/rev2/rules.mk
+++ b/keyboards/keebio/bdn9/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/bfo9000/keymaps/default/keymap.c b/keyboards/keebio/bfo9000/keymaps/default/keymap.c
index 956e7b9efa..f37ea79c40 100644
--- a/keyboards/keebio/bfo9000/keymaps/default/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/default/keymap.c
@@ -4,12 +4,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_BASE] = LAYOUT( \
- KC_ESC, KC_VOLU, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_HOME, KC_VOLD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_END, KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_PGUP, KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, \
- KC_PGDN, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, XXXXXXX, \
- KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_ENT, KC_BSPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+[_BASE] = LAYOUT(
+ KC_ESC, KC_VOLU, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, KC_VOLD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_END, KC_TAB, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGUP, KC_CAPS, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT,
+ KC_PGDN, KC_UP, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, XXXXXXX,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_ENT, KC_BSPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/keebio/bfo9000/rules.mk b/keyboards/keebio/bfo9000/rules.mk
index 28adef551b..6ed299d0ed 100644
--- a/keyboards/keebio/bfo9000/rules.mk
+++ b/keyboards/keebio/bfo9000/rules.mk
@@ -5,19 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/choconum/rules.mk b/keyboards/keebio/choconum/rules.mk
index 087f572ba8..59fec7c94b 100644
--- a/keyboards/keebio/choconum/rules.mk
+++ b/keyboards/keebio/choconum/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/chocopad/keymaps/default/config.h b/keyboards/keebio/chocopad/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/keebio/chocopad/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/keebio/chocopad/keymaps/default/keymap.c b/keyboards/keebio/chocopad/keymaps/default/keymap.c
index 7b4b752c9c..457b84ecee 100644
--- a/keyboards/keebio/chocopad/keymaps/default/keymap.c
+++ b/keyboards/keebio/chocopad/keymaps/default/keymap.c
@@ -7,22 +7,22 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_ortho_4x4(
- KC_PGUP, KC_HOME, KC_UP, KC_END , \
- KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, \
- MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV, \
- MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT \
+ KC_PGUP, KC_HOME, KC_UP, KC_END ,
+ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT,
+ MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV,
+ MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT
),
[_FN1] = LAYOUT_ortho_4x4(
- KC_ESC, KC_P7, KC_P8, KC_P9, \
- KC_TAB, KC_P4, KC_P5, KC_P6, \
- KC_ENT, KC_P1, KC_P2, KC_P3, \
- _______, KC_P0, KC_P0, KC_DOT \
+ KC_ESC, KC_P7, KC_P8, KC_P9,
+ KC_TAB, KC_P4, KC_P5, KC_P6,
+ KC_ENT, KC_P1, KC_P2, KC_P3,
+ _______, KC_P0, KC_P0, KC_DOT
),
[_FN2] = LAYOUT_ortho_4x4(
- RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, \
- _______, _______, _______, RESET, \
- BL_STEP, _______, _______, _______ \
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ _______, _______, _______, RESET,
+ BL_STEP, _______, _______, _______
)
};
diff --git a/keyboards/keebio/chocopad/rules.mk b/keyboards/keebio/chocopad/rules.mk
index 624f876c14..4a14c7977c 100644
--- a/keyboards/keebio/chocopad/rules.mk
+++ b/keyboards/keebio/chocopad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/keebio/dilly/rules.mk b/keyboards/keebio/dilly/rules.mk
index 09a1a9f711..e4026f85cf 100644
--- a/keyboards/keebio/dilly/rules.mk
+++ b/keyboards/keebio/dilly/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/keebio/dsp40/keymaps/default/keymap.c b/keyboards/keebio/dsp40/keymaps/default/keymap.c
index f9bf6c27c5..a4f65f5f48 100755
--- a/keyboards/keebio/dsp40/keymaps/default/keymap.c
+++ b/keyboards/keebio/dsp40/keymaps/default/keymap.c
@@ -113,5 +113,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_VOLD);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/dsp40/keymaps/via/keymap.c b/keyboards/keebio/dsp40/keymaps/via/keymap.c
index 6575bbc8c6..f2f87663c5 100755
--- a/keyboards/keebio/dsp40/keymaps/via/keymap.c
+++ b/keyboards/keebio/dsp40/keymaps/via/keymap.c
@@ -63,14 +63,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/dsp40/rev1/rev1.c b/keyboards/keebio/dsp40/rev1/rev1.c
index 04c85b08d1..41187b90b6 100644
--- a/keyboards/keebio/dsp40/rev1/rev1.c
+++ b/keyboards/keebio/dsp40/rev1/rev1.c
@@ -24,3 +24,15 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/dsp40/rev1/rules.mk b/keyboards/keebio/dsp40/rev1/rules.mk
index 6208e6b386..1b86273b88 100644
--- a/keyboards/keebio/dsp40/rev1/rules.mk
+++ b/keyboards/keebio/dsp40/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/ergodicity/keymaps/default/config.h b/keyboards/keebio/ergodicity/keymaps/default/config.h
deleted file mode 100644
index 6079c0b0f3..0000000000
--- a/keyboards/keebio/ergodicity/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Keebio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/keebio/ergodicity/keymaps/default/keymap.c b/keyboards/keebio/ergodicity/keymaps/default/keymap.c
index b25562784b..0bb07cbb15 100644
--- a/keyboards/keebio/ergodicity/keymaps/default/keymap.c
+++ b/keyboards/keebio/ergodicity/keymaps/default/keymap.c
@@ -23,18 +23,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \
- KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL \
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL
),
[1] = LAYOUT(
- _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
- RGB_MOD, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- BL_STEP, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ RGB_MOD, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_STEP, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/keebio/ergodicity/rules.mk b/keyboards/keebio/ergodicity/rules.mk
index 74d3ee7830..719d324346 100644
--- a/keyboards/keebio/ergodicity/rules.mk
+++ b/keyboards/keebio/ergodicity/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/foldkb/keymaps/default/keymap.c b/keyboards/keebio/foldkb/keymaps/default/keymap.c
index 0a71ef4d2d..45bc1673e2 100644
--- a/keyboards/keebio/foldkb/keymaps/default/keymap.c
+++ b/keyboards/keebio/foldkb/keymaps/default/keymap.c
@@ -32,20 +32,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______
),
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/foldkb/keymaps/via/keymap.c b/keyboards/keebio/foldkb/keymaps/via/keymap.c
index d3e3a95bf6..85d6912760 100644
--- a/keyboards/keebio/foldkb/keymaps/via/keymap.c
+++ b/keyboards/keebio/foldkb/keymaps/via/keymap.c
@@ -46,20 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/foldkb/rev1/rev1.c b/keyboards/keebio/foldkb/rev1/rev1.c
index bab2674003..a0dfb31b52 100644
--- a/keyboards/keebio/foldkb/rev1/rev1.c
+++ b/keyboards/keebio/foldkb/rev1/rev1.c
@@ -24,3 +24,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/foldkb/rules.mk b/keyboards/keebio/foldkb/rules.mk
index 7fedb2e052..cfab94fa0f 100644
--- a/keyboards/keebio/foldkb/rules.mk
+++ b/keyboards/keebio/foldkb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/fourier/rules.mk b/keyboards/keebio/fourier/rules.mk
index 11b9936bfa..c1d341a7c8 100644
--- a/keyboards/keebio/fourier/rules.mk
+++ b/keyboards/keebio/fourier/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/iris/keymaps/default/keymap.c b/keyboards/keebio/iris/keymaps/default/keymap.c
index e3cd532694..169e5b50c7 100644
--- a/keyboards/keebio/iris/keymaps/default/keymap.c
+++ b/keyboards/keebio/iris/keymaps/default/keymap.c
@@ -127,5 +127,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_PGUP);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/iris/keymaps/drashna/config.h b/keyboards/keebio/iris/keymaps/drashna/config.h
index f68166c98f..cf67aa6984 100644
--- a/keyboards/keebio/iris/keymaps/drashna/config.h
+++ b/keyboards/keebio/iris/keymaps/drashna/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* Use I2C or Serial, not both */
-
-// #define USE_SERIAL
-#define USE_I2C
-
-/* Select hand configuration */
-
-// #define MASTER_LEFT
-// #define MASTER_RIGHT
#define EE_HANDS
#ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/keebio/iris/keymaps/drashna/rules.mk b/keyboards/keebio/iris/keymaps/drashna/rules.mk
index 41c67b573d..51b9a105d2 100644
--- a/keyboards/keebio/iris/keymaps/drashna/rules.mk
+++ b/keyboards/keebio/iris/keymaps/drashna/rules.mk
@@ -1,17 +1,20 @@
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-TAP_DANCE_ENABLE = no
-RGBLIGHT_ENABLE = yes
-AUDIO_ENABLE = no
-NKRO_ENABLE = yes
-BACKLIGHT_ENABLE = no
-SWAP_HANDS_ENABLE = no
-SPACE_CADET_ENABLE = no
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+TAP_DANCE_ENABLE = no
+AUDIO_ENABLE = no
+NKRO_ENABLE = yes
+BACKLIGHT_ENABLE = no
+SWAP_HANDS_ENABLE = no
+BOOTLOADER = qmk-dfu
-INDICATOR_LIGHTS = no
-RGBLIGHT_STARTUP_ANIMATION = no
+INDICATOR_LIGHTS = no
+RGBLIGHT_STARTUP_ANIMATION = no
+CUSTOM_UNICODE_ENABLE = no
+CUSTOM_SPLIT_TRANSPORT_SYNC = no
-BOOTLOADER = qmk-dfu
+ifneq ($(strip $(KEYBOARD)), keebio/iris/rev6)
+ RGBLIGHT_ENABLE = yes
+endif
diff --git a/keyboards/keebio/iris/keymaps/khang/colors.h b/keyboards/keebio/iris/keymaps/khang/colors.h
new file mode 100644
index 0000000000..245e76a8c2
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/colors.h
@@ -0,0 +1,67 @@
+/* Copyright 2021 Nguyen Vu Khang <brew4k@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define MINIMAL_BASEx(hue,sat) \
+ rgblight_sethsv_range(hue, sat, 0, 0, 12); \
+ rgblight_sethsv_range(hue, sat, 100, 5, 7)
+
+#define MINIMAL_BASE(hue, sat) \
+ {0, 12, hue, sat, 0}, \
+ {5, 2, hue, sat, 100}
+
+#define MINIMAL(hue, sat) \
+ {0, 12, hue, sat, 0}, \
+ {3, 1, hue, sat, 100}, \
+ {8, 1, hue, sat, 100}
+
+const int yellow = 30;
+const int green = 99;
+const int red = 252;
+const int base_sat = 120;
+
+const rgblight_segment_t PROGMEM _BL_rgblayer[] = RGBLIGHT_LAYER_SEGMENTS(
+ MINIMAL_BASE(yellow,250)
+);
+const rgblight_segment_t PROGMEM _FN_rgblayer[] = RGBLIGHT_LAYER_SEGMENTS(
+ MINIMAL(green,255)
+);
+const rgblight_segment_t PROGMEM _SL_rgblayer[] = RGBLIGHT_LAYER_SEGMENTS(
+ MINIMAL(red,255)
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ _BL_rgblayer,
+ _FN_rgblayer,
+ _SL_rgblayer
+);
+
+void keyboard_post_init_user(void) {
+ MINIMAL_BASEx(yellow,200);
+ rgblight_layers = my_rgb_layers;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _BL));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _SL));
+ return state;
+}
diff --git a/keyboards/keebio/iris/keymaps/khang/config.h b/keyboards/keebio/iris/keymaps/khang/config.h
new file mode 100644
index 0000000000..28a3d269c6
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/config.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Nguyen Vu Khang <brew4k@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define EE_HANDS
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_MAX_LAYERS 5
+#undef RGBLIGHT_ANIMATIONS
+#undef RGBLIGHT_EFFECT_ALTERNATING
+#undef RGBLIGHT_EFFECT_BREATHING
+#undef RGBLIGHT_EFFECT_CHRISTMAS
+#undef RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_RAINBOW_MOOD
+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#undef RGBLIGHT_EFFECT_RGB_TEST
+#undef RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_TWINKLE
+#undef MOUSEKEY_ENABLE
diff --git a/keyboards/keebio/iris/keymaps/khang/extrakeys.h b/keyboards/keebio/iris/keymaps/khang/extrakeys.h
new file mode 100644
index 0000000000..a9056f8bcf
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/extrakeys.h
@@ -0,0 +1,81 @@
+/* Copyright 2021 Nguyen Vu Khang <brew4k@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+enum my_keycodes {
+ ______ = SAFE_RANGE,
+ HYPR1, HYPR2, HYPR3, HYPR4, HYPR5, HYPR6, HYPR7, HYPR8, HYPR9, HYPR0,
+ HYPRL,
+ HYPRM,
+ HYPRP,
+ HYPRQ,
+ HYPRS,
+ HYPRT,
+ KC_STAB
+};
+
+#undef _______
+#define ______ KC_NO
+
+#define HYPR1 HYPR(KC_1)
+#define HYPR2 HYPR(KC_2)
+#define HYPR3 HYPR(KC_3)
+#define HYPR4 HYPR(KC_4)
+#define HYPR5 HYPR(KC_5)
+#define HYPR6 HYPR(KC_6)
+#define HYPR7 HYPR(KC_7)
+#define HYPR8 HYPR(KC_8)
+#define HYPR9 HYPR(KC_9)
+#define HYPR0 HYPR(KC_0)
+
+#define HYPRL HYPR(KC_L)
+#define HYPRM HYPR(KC_M)
+#define HYPRP HYPR(KC_P)
+#define HYPRQ HYPR(KC_Q)
+#define HYPRS HYPR(KC_S)
+#define HYPRT HYPR(KC_T)
+
+#define KC_STAB LSFT(KC_TAB)
+
+uint8_t mod_state;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ mod_state = get_mods();
+ switch (keycode) {
+ case KC_BSPC: {
+ static bool delkey_registered;
+ if (record->event.pressed) { // on key-down of Backspace
+ if (mod_state & MOD_MASK_CTRL) {
+ // Ctrl + Backspace -> Forward Delete
+ del_mods(MOD_MASK_CTRL);
+ register_code(KC_DEL);
+ delkey_registered = true;
+ set_mods(mod_state);
+ return false;
+ }
+ } else { // on release of Backspace
+ if (delkey_registered) {
+ unregister_code(KC_DEL);
+ delkey_registered = false;
+ return false;
+ }
+ }
+ return true;
+ };
+ break;
+ }
+ return true;
+};
diff --git a/keyboards/keebio/iris/keymaps/khang/keymap.c b/keyboards/keebio/iris/keymaps/khang/keymap.c
new file mode 100644
index 0000000000..71c36c8ff9
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/keymap.c
@@ -0,0 +1,71 @@
+#include QMK_KEYBOARD_H
+
+enum keyboard_layers {
+ _BL = 0,
+ _FN,
+ _SL,
+ _BF,
+ _UP
+};
+
+#include "colors.h"
+#include "extrakeys.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BL] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN ,KC_QUOT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B ,KC_MINS , KC_PLUS , KC_N , KC_M ,KC_COMM , KC_DOT ,KC_SLSH ,MO(_FN) ,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_LGUI ,KC_LCTL , KC_ENT , KC_SPC ,MO(_UP) ,KC_RALT
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_UP] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_TILD ,KC_EXLM , KC_AT ,KC_HASH , KC_DLR ,KC_PERC , ______ , ______ , ______ ,KC_MINS , KC_EQL , KC_NO ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ ,KC_LBRC ,KC_RBRC , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ ______ , ______ , ______ , ______ , ______ , ______ , KC_LEFT ,KC_DOWN , KC_UP ,KC_RGHT , ______ , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ ,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_LGUI ,KC_LCTL , ______ , ______ , KC_NO , ______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ ______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_STAB , ______ , ______ , ______ , ______ , HYPRT , ______ , ______ , ______ , ______ , ______ , KC_F12 ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ ______ , ______ , HYPRS , ______ , ______ , ______ , ______ , ______ ,KC_BRID ,KC_BRIU , ______ , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ MO(_SL) , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , HYPRM ,KC_VOLD ,KC_VOLU , ______ , KC_NO ,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ ______ , ______ , ______ , KC_MPLY ,KC_MPRV ,KC_MNXT
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_SL] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ ______ , HYPR1 , HYPR2 , HYPR3 , HYPR4 , HYPR5 , HYPR6 , HYPR7 , HYPR8 , HYPR9 , HYPR0 , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ ______ , HYPRQ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , HYPRP , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ ,HYPRL , ______ , ______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , KC_NO ,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ ______ , ______ , ______ , RESET , ______ , ______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+};
diff --git a/keyboards/keebio/iris/keymaps/khang/readme.md b/keyboards/keebio/iris/keymaps/khang/readme.md
new file mode 100644
index 0000000000..c372ba54b2
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/readme.md
@@ -0,0 +1,7 @@
+# Khang's Iris Keymap
+
+- QWERTY at heart
+- Space on right thumb
+- Enter on left thumb
+- Right-Shift as Fn
+- Minimal (disabled everything unused to save space)
diff --git a/keyboards/keebio/iris/keymaps/khang/rules.mk b/keyboards/keebio/iris/keymaps/khang/rules.mk
new file mode 100644
index 0000000000..316ec60f76
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/khang/rules.mk
@@ -0,0 +1,3 @@
+ENCODER_ENABLE = no
+MOUSEKEY_ENABLE = no
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/keebio/iris/keymaps/mnil/keymap.c b/keyboards/keebio/iris/keymaps/mnil/keymap.c
index 7c7dc1a40d..973122f0c4 100644
--- a/keyboards/keebio/iris/keymaps/mnil/keymap.c
+++ b/keyboards/keebio/iris/keymaps/mnil/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_TRNS,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, KC_TRNS, KC_TRNS, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS,
+ KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, KC_TRNS, KC_TRNS, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_TRNS,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
diff --git a/keyboards/keebio/iris/keymaps/via/keymap.c b/keyboards/keebio/iris/keymaps/via/keymap.c
index f6183f1f7d..0a71bad92b 100644
--- a/keyboards/keebio/iris/keymaps/via/keymap.c
+++ b/keyboards/keebio/iris/keymaps/via/keymap.c
@@ -65,21 +65,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- else if (index == 1) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/iris/rev1/rules.mk b/keyboards/keebio/iris/rev1/rules.mk
index 2257c698e0..4b17f9c833 100644
--- a/keyboards/keebio/iris/rev1/rules.mk
+++ b/keyboards/keebio/iris/rev1/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/iris/rev1_led/rules.mk b/keyboards/keebio/iris/rev1_led/rules.mk
index 2257c698e0..4b17f9c833 100644
--- a/keyboards/keebio/iris/rev1_led/rules.mk
+++ b/keyboards/keebio/iris/rev1_led/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/iris/rev2/rules.mk b/keyboards/keebio/iris/rev2/rules.mk
index bd4ea0b9f8..314daabe3f 100644
--- a/keyboards/keebio/iris/rev2/rules.mk
+++ b/keyboards/keebio/iris/rev2/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/iris/rev3/rev3.c b/keyboards/keebio/iris/rev3/rev3.c
index b97b097b78..e874b9beae 100644
--- a/keyboards/keebio/iris/rev3/rev3.c
+++ b/keyboards/keebio/iris/rev3/rev3.c
@@ -35,3 +35,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/iris/rev3/rules.mk b/keyboards/keebio/iris/rev3/rules.mk
index 72b2e8c3bc..b3b724cc1b 100644
--- a/keyboards/keebio/iris/rev3/rules.mk
+++ b/keyboards/keebio/iris/rev3/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
ENCODER_ENABLE = yes
diff --git a/keyboards/keebio/iris/rev4/rev4.c b/keyboards/keebio/iris/rev4/rev4.c
index de2ba26db3..36ef461cd0 100644
--- a/keyboards/keebio/iris/rev4/rev4.c
+++ b/keyboards/keebio/iris/rev4/rev4.c
@@ -16,3 +16,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/iris/rev4/rules.mk b/keyboards/keebio/iris/rev4/rules.mk
index 7361737d44..b1ee82a527 100644
--- a/keyboards/keebio/iris/rev4/rules.mk
+++ b/keyboards/keebio/iris/rev4/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
ENCODER_ENABLE = yes
diff --git a/keyboards/keebio/iris/rev5/rev5.c b/keyboards/keebio/iris/rev5/rev5.c
index a4191719c0..2a89c6923b 100644
--- a/keyboards/keebio/iris/rev5/rev5.c
+++ b/keyboards/keebio/iris/rev5/rev5.c
@@ -12,3 +12,21 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rev5.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/iris/rev5/rules.mk b/keyboards/keebio/iris/rev5/rules.mk
index 9b5f989ed1..4425ef2f9b 100644
--- a/keyboards/keebio/iris/rev5/rules.mk
+++ b/keyboards/keebio/iris/rev5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/iris/rev6/config.h b/keyboards/keebio/iris/rev6/config.h
index e821012a7d..e26dc5fa50 100644
--- a/keyboards/keebio/iris/rev6/config.h
+++ b/keyboards/keebio/iris/rev6/config.h
@@ -36,10 +36,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS_RIGHT { D4, D6, D7, C7, F1, F4 }
#define SPLIT_HAND_PIN D5
-#define ENCODERS_PAD_A { B2 }
-#define ENCODERS_PAD_B { B3 }
-#define ENCODERS_PAD_A_RIGHT { B2 }
-#define ENCODERS_PAD_B_RIGHT { B3 }
+#define ENCODERS_PAD_A { B3 }
+#define ENCODERS_PAD_B { B2 }
+#define ENCODERS_PAD_A_RIGHT { B3 }
+#define ENCODERS_PAD_B_RIGHT { B2 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -81,11 +81,48 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
// RGB Matrix
# ifdef RGB_MATRIX_ENABLE
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGB_MATRIX_SPLIT { 34, 34 }
# define RGB_DISABLE_WHEN_USB_SUSPENDED
-//# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_KEYPRESSES
# endif
#endif
diff --git a/keyboards/keebio/iris/rev6/rev6.c b/keyboards/keebio/iris/rev6/rev6.c
index ff9f9d25a1..152df0b2f9 100644
--- a/keyboards/keebio/iris/rev6/rev6.c
+++ b/keyboards/keebio/iris/rev6/rev6.c
@@ -63,3 +63,21 @@ led_config_t g_led_config = { {
} };
#endif
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/iris/rev6/rules.mk b/keyboards/keebio/iris/rev6/rules.mk
index 866d76a3e0..87f19b5fc1 100644
--- a/keyboards/keebio/iris/rev6/rules.mk
+++ b/keyboards/keebio/iris/rev6/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/kbo5000/keymaps/default/keymap.c b/keyboards/keebio/kbo5000/keymaps/default/keymap.c
index 0261d11915..d2881206d6 100644
--- a/keyboards/keebio/kbo5000/keymaps/default/keymap.c
+++ b/keyboards/keebio/kbo5000/keymaps/default/keymap.c
@@ -55,5 +55,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/kbo5000/keymaps/via/keymap.c b/keyboards/keebio/kbo5000/keymaps/via/keymap.c
index 11075faf6f..a7fd62dddb 100644
--- a/keyboards/keebio/kbo5000/keymaps/via/keymap.c
+++ b/keyboards/keebio/kbo5000/keymaps/via/keymap.c
@@ -34,26 +34,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == LEFT_HALF_ENC) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- } else if (index == RIGHT_HALF_ENC1) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == RIGHT_HALF_ENC2) {
- if (clockwise) {
- tap_code(KC_DOWN);
- } else {
- tap_code(KC_UP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/kbo5000/rev1/rev1.c b/keyboards/keebio/kbo5000/rev1/rev1.c
index fafad9b6ab..757a8be2a1 100644
--- a/keyboards/keebio/kbo5000/rev1/rev1.c
+++ b/keyboards/keebio/kbo5000/rev1/rev1.c
@@ -30,3 +30,27 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 2) {
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/kbo5000/rules.mk b/keyboards/keebio/kbo5000/rules.mk
index 1a1c97376b..5608cb6023 100644
--- a/keyboards/keebio/kbo5000/rules.mk
+++ b/keyboards/keebio/kbo5000/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LTO_ENABLE = yes
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/laplace/rules.mk b/keyboards/keebio/laplace/rules.mk
index c418fcfe30..619bf27b55 100644
--- a/keyboards/keebio/laplace/rules.mk
+++ b/keyboards/keebio/laplace/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/keebio/levinson/keymaps/default/keymap.c b/keyboards/keebio/levinson/keymaps/default/keymap.c
index 270a4ffb58..81f3e75b8d 100644
--- a/keyboards/keebio/levinson/keymaps/default/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/default/keymap.c
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -52,11 +52,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -88,11 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -106,11 +106,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/keebio/levinson/keymaps/numpad/keymap.c b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
index 32a1113c5d..da11ac35fe 100644
--- a/keyboards/keebio/levinson/keymaps/numpad/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
@@ -40,11 +40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Enter | + | - | = | MO(1)| | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[0] = LAYOUT_ortho_4x12( \
- KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_BSPACE, OSL(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_COMMA, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN, KC_NO, KC_A, KC_B, KC_C, KC_D, KC_NO, \
- KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP, KC_NO, KC_E, KC_F, KC_G, KC_H, KC_NO, \
- KC_KP_ENTER, KC_NO, KC_KP_PLUS, KC_KP_MINUS, KC_KP_EQUAL, MO(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \
+[0] = LAYOUT_ortho_4x12(
+ KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_BSPACE, OSL(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_COMMA, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN, KC_NO, KC_A, KC_B, KC_C, KC_D, KC_NO,
+ KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP, KC_NO, KC_E, KC_F, KC_G, KC_H, KC_NO,
+ KC_KP_ENTER, KC_NO, KC_KP_PLUS, KC_KP_MINUS, KC_KP_EQUAL, MO(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
/* Macro layer - the number keys are macros,
* other functions on remaining keys
@@ -58,11 +58,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | NumLock | RESET| | | Calc |
* `-----------------------------------------'
*/
-[1] = LAYOUT_ortho_4x12( \
- M0, M1, M4, M7, KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_LEFT, M2, M5, M8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_RIGHT, M3, M6, M8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_NUMLOCK, RESET, KC_NO, KC_NO, KC_CALC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \
+[1] = LAYOUT_ortho_4x12(
+ M0, M1, M4, M7, KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LEFT, M2, M5, M8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_RIGHT, M3, M6, M8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NUMLOCK, RESET, KC_NO, KC_NO, KC_CALC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};
diff --git a/keyboards/keebio/levinson/rules.mk b/keyboards/keebio/levinson/rules.mk
index 2becb53cb9..15b7fdfc3c 100644
--- a/keyboards/keebio/levinson/rules.mk
+++ b/keyboards/keebio/levinson/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_4x12
diff --git a/keyboards/keebio/nyquist/keymaps/default/keymap.c b/keyboards/keebio/nyquist/keymaps/default/keymap.c
index f93583d7c1..7b28dc9536 100644
--- a/keyboards/keebio/nyquist/keymaps/default/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/default/keymap.c
@@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -57,12 +57,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -78,12 +78,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -99,12 +99,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME,KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME,KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -120,12 +120,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -141,12 +141,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/keebio/nyquist/keymaps/tester/keymap.c b/keyboards/keebio/nyquist/keymaps/tester/keymap.c
index f1e1932710..ae692782fa 100644
--- a/keyboards/keebio/nyquist/keymaps/tester/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/tester/keymap.c
@@ -37,12 +37,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- BL_STEP, KC_Q, KC_W, KC_E, KC_R, KC_T, BL_STEP, KC_U, KC_I, KC_O, KC_P, KC_DEL, \
- RGB_MOD, KC_A, KC_S, KC_D, KC_F, KC_G, RGB_MOD, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ BL_STEP, KC_Q, KC_W, KC_E, KC_R, KC_T, BL_STEP, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ RGB_MOD, KC_A, KC_S, KC_D, KC_F, KC_G, RGB_MOD, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -58,12 +58,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -79,12 +79,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -100,12 +100,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -121,12 +121,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -142,12 +142,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/keebio/nyquist/rev1/rules.mk b/keyboards/keebio/nyquist/rev1/rules.mk
index a66fb8ae50..8b506a70bc 100644
--- a/keyboards/keebio/nyquist/rev1/rules.mk
+++ b/keyboards/keebio/nyquist/rev1/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_5x12 ortho_4x12
diff --git a/keyboards/keebio/nyquist/rev2/rules.mk b/keyboards/keebio/nyquist/rev2/rules.mk
index a1a79e240c..2e62709880 100644
--- a/keyboards/keebio/nyquist/rev2/rules.mk
+++ b/keyboards/keebio/nyquist/rev2/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_5x12 ortho_4x12
diff --git a/keyboards/keebio/nyquist/rev3/rules.mk b/keyboards/keebio/nyquist/rev3/rules.mk
index 7082185900..8d4d1bdcde 100644
--- a/keyboards/keebio/nyquist/rev3/rules.mk
+++ b/keyboards/keebio/nyquist/rev3/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_5x12 ortho_4x12
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
index d28a5083ac..3dd48623fa 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -16,12 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
-
-#define LY_FN MO(LAYER_FUNCTION)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -31,12 +26,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, LY_FN, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, LY_FN1, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FN1, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
- [LAYER_FUNCTION] = LAYOUT_65(
+ [LAYER_FUNCTION_1] = LAYOUT_65(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, RGB_HUI,
- KC_CAPS, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
+ KC_CAPS, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAD,
_______, KC_APP, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/readme.md b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
index 914aa84b6b..59a691654d 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/readme.md
+++ b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
@@ -12,6 +12,6 @@ ESDF cluster), and RGB controls in the function layer (on the arrow/nav keys).
## Function layer
-![Function layer layout](https://i.imgur.com/Fzshl0F.png)
+![Function layer layout](https://i.imgur.com/7oCdN86.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d))
diff --git a/keyboards/keebio/quefrency/keymaps/default/keymap.c b/keyboards/keebio/quefrency/keymaps/default/keymap.c
index 8b30a1174c..008cf5128d 100644
--- a/keyboards/keebio/quefrency/keymaps/default/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default/keymap.c
@@ -14,18 +14,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, \
- RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC,
+ RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/keebio/quefrency/keymaps/default65/keymap.c b/keyboards/keebio/quefrency/keymaps/default65/keymap.c
index 0e06391abe..481de2aa00 100644
--- a/keyboards/keebio/quefrency/keymaps/default65/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default65/keymap.c
@@ -15,18 +15,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_65(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_65(
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______, \
- RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______,
+ RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
@@ -46,5 +46,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_VOLD);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c b/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
index cd06c5199f..f452232b2d 100644
--- a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
@@ -15,18 +15,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_65_with_macro(
- KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_65_with_macro(
- _______, _______, KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______, \
- _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_BSPC, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
@@ -46,5 +46,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_VOLD);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c b/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c
new file mode 100644
index 0000000000..98f17f1870
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c
@@ -0,0 +1,80 @@
+ /* Copyright 2022 peott
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Only for actual custom keycodes (not just renaming existing tapdance etc...).
+//enum custom_keycodes {
+// QWERTY = SAFE_RANGE,
+//};
+
+// Layers by name.
+enum custom_layers {
+ _BASE,
+ _FN,
+ _NUM
+};
+
+// Keycodes for cleaner code
+#define L_CTRL LCTL_T(KC_MPRV)
+#define L_GUI LGUI_T(KC_MPLY)
+#define L_ALT LALT_T(KC_MNXT)
+// Layers defined by function
+#define LR_SPC LT(_FN,KC_SPC)
+#define LR_BKSP LT(_FN,KC_BSPC)
+#define LR_NUM LT(_NUM,KC_HOME)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_60_with_macro(
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_9, KC_MINS, KC_GRV, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, LR_NUM,
+ KC_F9, KC_F10, L_CTRL, L_GUI, L_ALT, KC_APP, LR_SPC, LR_BKSP, LR_BKSP, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+ [_FN] = LAYOUT_60_with_macro(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LSFT, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ ),
+ [_NUM] = LAYOUT_60_with_macro(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/quefrency/keymaps/via/keymap.c b/keyboards/keebio/quefrency/keymaps/via/keymap.c
index 213f7af325..5ac83ef57c 100644
--- a/keyboards/keebio/quefrency/keymaps/via/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/via/keymap.c
@@ -33,20 +33,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/quefrency/rev2/rev2.c b/keyboards/keebio/quefrency/rev2/rev2.c
index 69edfd415f..590c9850c2 100644
--- a/keyboards/keebio/quefrency/rev2/rev2.c
+++ b/keyboards/keebio/quefrency/rev2/rev2.c
@@ -30,3 +30,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/quefrency/rev3/rev3.c b/keyboards/keebio/quefrency/rev3/rev3.c
index 40771e2c68..0f8f964d92 100644
--- a/keyboards/keebio/quefrency/rev3/rev3.c
+++ b/keyboards/keebio/quefrency/rev3/rev3.c
@@ -46,3 +46,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/quefrency/rev4/rev4.c b/keyboards/keebio/quefrency/rev4/rev4.c
index a66d19166d..190135420f 100644
--- a/keyboards/keebio/quefrency/rev4/rev4.c
+++ b/keyboards/keebio/quefrency/rev4/rev4.c
@@ -15,3 +15,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "quefrency.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/quefrency/rules.mk b/keyboards/keebio/quefrency/rules.mk
index 483a85c75f..b65828319c 100644
--- a/keyboards/keebio/quefrency/rules.mk
+++ b/keyboards/keebio/quefrency/rules.mk
@@ -6,12 +6,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/rorschach/rules.mk b/keyboards/keebio/rorschach/rules.mk
index 0a2282fb3a..6e3d022b02 100644
--- a/keyboards/keebio/rorschach/rules.mk
+++ b/keyboards/keebio/rorschach/rules.mk
@@ -4,17 +4,18 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/sinc/keymaps/default/keymap.c b/keyboards/keebio/sinc/keymaps/default/keymap.c
index 650314295b..060bf5dc6c 100644
--- a/keyboards/keebio/sinc/keymaps/default/keymap.c
+++ b/keyboards/keebio/sinc/keymaps/default/keymap.c
@@ -33,5 +33,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_VOLD);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/sinc/keymaps/lickel/keymap.c b/keyboards/keebio/sinc/keymaps/lickel/keymap.c
new file mode 100644
index 0000000000..abdb33e936
--- /dev/null
+++ b/keyboards/keebio/sinc/keymaps/lickel/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2021 @ Adam Lickel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+#ifdef VIA_ENABLE
+ KC_MISSION_CONTROL = USER00,
+#else
+ KC_MISSION_CONTROL = SAFE_RANGE,
+#endif
+ KC_LAUNCHPAD
+};
+
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+// clang-format off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_80_with_macro(
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MPLY,
+ KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(1), KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_80_with_macro(
+ _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_80_with_macro(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_80_with_macro(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+// clang-format on
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ return false;
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return false;
+ } else {
+ return true;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/keebio/sinc/keymaps/lickel/readme.md b/keyboards/keebio/sinc/keymaps/lickel/readme.md
new file mode 100644
index 0000000000..a41c16de23
--- /dev/null
+++ b/keyboards/keebio/sinc/keymaps/lickel/readme.md
@@ -0,0 +1,18 @@
+# lickel's Sinc keymap
+
+- Via support is enabled by default
+- Function Row is optimized for macOS
+- RGB controls mimic the stock Keychron Q1 layout
+- F3 opens Mission Control and F4 opens Launchpad
+- Left macros are: F1->F10
+- Right macros are: Play, Home, Pg Up, Pg Dn, End, Right
+
+![Layout](https://i.imgur.com/uQnzMSe.png)
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/e0350d8914cac3166abcca6abfd093b7))
+
+## Changelog
+
+### 11/27/2021 - 1.0
+
+- Initial release
diff --git a/keyboards/keebio/sinc/keymaps/lickel/rules.mk b/keyboards/keebio/sinc/keymaps/lickel/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/keebio/sinc/keymaps/lickel/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/keebio/sinc/keymaps/via/keymap.c b/keyboards/keebio/sinc/keymaps/via/keymap.c
index 20cfdd79bb..225e9c07df 100644
--- a/keyboards/keebio/sinc/keymaps/via/keymap.c
+++ b/keyboards/keebio/sinc/keymaps/via/keymap.c
@@ -37,20 +37,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- } else if (index == 1) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/sinc/rev1/rev1.c b/keyboards/keebio/sinc/rev1/rev1.c
index 562a245344..906b9b7d58 100644
--- a/keyboards/keebio/sinc/rev1/rev1.c
+++ b/keyboards/keebio/sinc/rev1/rev1.c
@@ -22,3 +22,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/sinc/rev2/rev2.c b/keyboards/keebio/sinc/rev2/rev2.c
index aea877d83c..47bb1e9e68 100644
--- a/keyboards/keebio/sinc/rev2/rev2.c
+++ b/keyboards/keebio/sinc/rev2/rev2.c
@@ -38,3 +38,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/sinc/rules.mk b/keyboards/keebio/sinc/rules.mk
index f72b3e9c9e..fc8ab56049 100644
--- a/keyboards/keebio/sinc/rules.mk
+++ b/keyboards/keebio/sinc/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LTO_ENABLE = yes
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/stick/keymaps/default/keymap.c b/keyboards/keebio/stick/keymaps/default/keymap.c
index ea4ca3f54f..8e9b43a14a 100644
--- a/keyboards/keebio/stick/keymaps/default/keymap.c
+++ b/keyboards/keebio/stick/keymaps/default/keymap.c
@@ -39,5 +39,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
- return true;
+ return false;
}
diff --git a/keyboards/keebio/stick/keymaps/via/keymap.c b/keyboards/keebio/stick/keymaps/via/keymap.c
index 3f196dda69..752b2de054 100644
--- a/keyboards/keebio/stick/keymaps/via/keymap.c
+++ b/keyboards/keebio/stick/keymaps/via/keymap.c
@@ -35,21 +35,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- }
- else if (index == 1) {
- if (clockwise) {
- tap_code(KC_DOWN);
- } else {
- tap_code(KC_UP);
- }
- }
- return true;
-}
diff --git a/keyboards/keebio/stick/rules.mk b/keyboards/keebio/stick/rules.mk
index ba077c5fc7..996fef2ad1 100644
--- a/keyboards/keebio/stick/rules.mk
+++ b/keyboards/keebio/stick/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/stick/stick.c b/keyboards/keebio/stick/stick.c
index 050c4eff81..c2d25f8860 100644
--- a/keyboards/keebio/stick/stick.c
+++ b/keyboards/keebio/stick/stick.c
@@ -48,3 +48,21 @@ void eeconfig_init_kb(void) {
eeconfig_update_kb(0);
eeconfig_init_user();
}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebio/tragicforce68/rules.mk b/keyboards/keebio/tragicforce68/rules.mk
index 62c7cb8d29..f0bb77d0e1 100644
--- a/keyboards/keebio/tragicforce68/rules.mk
+++ b/keyboards/keebio/tragicforce68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/tukey/keymaps/default/config.h b/keyboards/keebio/tukey/keymaps/default/config.h
deleted file mode 100644
index 6079c0b0f3..0000000000
--- a/keyboards/keebio/tukey/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Keebio
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/keebio/tukey/rules.mk b/keyboards/keebio/tukey/rules.mk
index b9377da068..e4e00e6274 100644
--- a/keyboards/keebio/tukey/rules.mk
+++ b/keyboards/keebio/tukey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c b/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
index baf6637eaa..60f7b74bc0 100644
--- a/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
+++ b/keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
@@ -19,175 +19,30 @@
#include "ericgebhart.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // 4x10
+ [_DVORAK] = BASE_5x14(___NUMS___, ___DVORAK___),
+ [_QWERTY] = BASE_5x14(___NUMS___, ___QWERTY___),
+ [_COLEMAK] = BASE_5x14(___NUMS___, ___COLEMAK_DH___),
+ [_BEAKL] = BASE_5x14(___BKLNUMS___, ___BEAKL15___),
- [DVORAK] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_DVORAK_1___, KC_SLASH,
- TAB_BKTAB, ___12_DVORAK_2___, KC_MINUS,
- KC_LSFT, ___12_DVORAK_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
+ //[_DVORAK_BP] = BASE_5x14_bepo(___DVORAK_FR___),
+ //[_BEAKL_BP] = BASE_5x14_bepo(___BEAKL15_FR___),
- [QWERTY] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_QWERTY_1___, KC_SLASH,
- TAB_BKTAB, ___12_QWERTY_2___, KC_MINUS,
- KC_LSFT, ___12_QWERTY_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
+ // 4x12
+ //[_BEPO] = BASE_5x14_bepo6(___BEPO6_FR___),
- [COLEMAK] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_COLEMAK_1___, KC_SLASH,
- TAB_BKTAB, ___12_COLEMAK_2___, KC_MINUS,
- KC_LSFT, ___12_COLEMAK_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
+ // transient macro takes a 3x12 for args
+ [_SYMB] = TRANSIENT_5x14(___12___, ___SYMB_BEAKLA_3x12___),
+ //[_SYMB_BP] = TRANSIENT_5x14(___SYMB_BEAKLA_BP_3x12___),
- [WORKMAN] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_WORKMAN_1___, KC_SLASH,
- TAB_BKTAB, ___12_WORKMAN_2___, KC_MINUS,
- KC_LSFT, ___12_WORKMAN_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
+ [_TOPROWS] = TRANSIENT_5x14(___12___, ___TOPROWS_3x12___),
+ //[_TOPROWS_BP] = TRANSIENT_5x14(___TOPROWS_BP_3x12___),
- [NORMAN] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_NORMAN_1___, KC_SLASH,
- TAB_BKTAB, ___12_NORMAN_2___, KC_MINUS,
- KC_LSFT, ___12_NORMAN_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
+ [_KEYPAD] = TRANSIENT_5x14(___12___, ___KP_C_3x12___),
+ //[_KEYPAD_BP] = TRANSIENT_5x14(___KP_C_BP_3x12___),
- [DVORAK_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_DVORAK_B_1___, KC_SLASH,
- TAB_BKTAB, ___12_DVORAK_B_2___, KC_MINUS,
- KC_LSFT, ___12_DVORAK_B_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM_FR___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
-
- [BEPO] = LAYOUT_ortho_5x14_wrapper(
- KC_GRV, ___12_DVORAK_B_1___, KC_SLASH,
- TAB_BKTAB, ___12_DVORAK_B_2___, KC_MINUS,
- KC_LSFT, ___12_DVORAK_B_3___, KC_RSFT,
- ___ORTHO_14_BOTTOM_BP___,
- ___ORTHO_14_THUMBS_BOTTOM___
- ),
-
- [XMONAD] = LAYOUT_ortho_5x14_wrapper(
- ___, ___12_DVORAK_1___, ___,
- ___, ___12_DVORAK_2___, ___,
- ___, ___12_DVORAK_3___, ___,
- ___14___,
- ___14___
- ),
-
- [XMONAD_FR] = LAYOUT_ortho_5x14_wrapper(
- ___, ___12_DVORAK_B_1___, ___,
- ___, ___12_DVORAK_B_2___, ___,
- ___, ___12_DVORAK_B_3___, ___,
- ___14___,
- ___14___
- ),
-
-
- // SYMBOLS
- [SYMB] = LAYOUT_ortho_5x14_wrapper(
- ___14_SYMB_1___,
- ___14_SYMB_2___,
- ___14_SYMB_3___,
- ___14_SYMB_4___,
- ___14___
- ),
-
- [KEYPAD] = LAYOUT_ortho_5x14_wrapper(
- ___14_KP_1___,
- ___14_KP_2___,
- ___14_KP_3___,
- ___14_KP_4___,
- ___14___
- ),
-
- [KEYPAD_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
- ___14_KP_B_1___,
- ___14_KP_B_2___,
- ___14_KP_B_3___,
- ___14_KP_B_4___,
- ___14___
- ),
-
- [SYMB_ON_BEPO] = LAYOUT_ortho_5x14_wrapper(
- ___14_SYMB_B_1___,
- ___14_SYMB_B_2___,
- ___14_SYMB_B_3___,
- ___14_SYMB_B_4___,
- ___14___
- ),
-
- // MEDIA AND MOUSE
- [MDIA] = LAYOUT_ortho_5x14_wrapper(
- ___14_MDIA_1___,
- ___14_MDIA_2___,
- ___14_MDIA_3___,
- ___14_MDIA_4___,
- ___14___
- ),
-
- [LAYERS] = LAYOUT_ortho_5x14_wrapper(
- ___14_LAYERS_1___,
- ___14_LAYERS_2___,
- ___14_LAYERS_3___,
- ___14___,
- ___14___
- ),
-
- [_RGB] = LAYOUT_ortho_5x14_wrapper(
- ___14_RGB_1___,
- ___14_RGB_2___,
- ___14_RGB_3___,
- ___14___,
- ___14___
- ),
+ // Navigation and control
+ [_NAV] = TRANSIENT_5x14(___12___, ___NAV_3x12___),
+ [_LAYERS] = TRANSIENT_5x14(___12___, ___LAYERS_3x12___),
+ //[_RGB] = TRANSIENT_5x14(___12___, ___RGB_3x12___),
};
-
-/* bool process_record_user(uint16_t keycode, keyrecord_t *record) { */
-/* switch (keycode) { */
-/* case QWERTY: */
-/* if (record->event.pressed) { */
-/* set_single_persistent_default_layer(_QWERTY); */
-/* } */
-/* return false; */
-/* break; */
-/* case LOWER: */
-/* if (record->event.pressed) { */
-/* layer_on(_LOWER); */
-/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
-/* } else { */
-/* layer_off(_LOWER); */
-/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
-/* } */
-/* return false; */
-/* break; */
-/* case RAISE: */
-/* if (record->event.pressed) { */
-/* layer_on(_RAISE); */
-/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
-/* } else { */
-/* layer_off(_RAISE); */
-/* update_tri_layer(_LOWER, _RAISE, _ADJUST); */
-/* } */
-/* return false; */
-/* break; */
-/* case ADJUST: */
-/* if (record->event.pressed) { */
-/* layer_on(_ADJUST); */
-/* } else { */
-/* layer_off(_ADJUST); */
-/* } */
-/* return false; */
-/* break; */
-/* } */
-/* return true; */
-/* } */
diff --git a/keyboards/keebio/viterbi/rules.mk b/keyboards/keebio/viterbi/rules.mk
index a9db70c30c..c3ad2ad7e6 100644
--- a/keyboards/keebio/viterbi/rules.mk
+++ b/keyboards/keebio/viterbi/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/keebio/wavelet/keymaps/default/keymap.c b/keyboards/keebio/wavelet/keymaps/default/keymap.c
index 270a4ffb58..81f3e75b8d 100644
--- a/keyboards/keebio/wavelet/keymaps/default/keymap.c
+++ b/keyboards/keebio/wavelet/keymaps/default/keymap.c
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -52,11 +52,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -88,11 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -106,11 +106,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -124,11 +124,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/keebio/wavelet/rules.mk b/keyboards/keebio/wavelet/rules.mk
index 9a44b8f416..e81f64c388 100644
--- a/keyboards/keebio/wavelet/rules.mk
+++ b/keyboards/keebio/wavelet/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12
# Disable unsupported hardware
diff --git a/keyboards/keebio/wtf60/rules.mk b/keyboards/keebio/wtf60/rules.mk
index f92841df1c..e0c48f2ded 100644
--- a/keyboards/keebio/wtf60/rules.mk
+++ b/keyboards/keebio/wtf60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebsforall/coarse60/rules.mk b/keyboards/keebsforall/coarse60/rules.mk
index 803f9f9e5e..3c7ef02d4b 100644
--- a/keyboards/keebsforall/coarse60/rules.mk
+++ b/keyboards/keebsforall/coarse60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebsforall/freebird60/rules.mk b/keyboards/keebsforall/freebird60/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/keebsforall/freebird60/rules.mk
+++ b/keyboards/keebsforall/freebird60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebsforall/freebirdnp/lite/config.h b/keyboards/keebsforall/freebirdnp/lite/config.h
new file mode 100644
index 0000000000..317132eff3
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2021 ELliot Powell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6B66
+#define PRODUCT_ID 0x1013
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KeebsForAll
+#define PRODUCT Freebird Numpad Lite
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { B7, B6, B5, B4, B3 }
+#define MATRIX_COL_PINS { C7, B2, B1, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/keebsforall/freebirdnp/lite/info.json b/keyboards/keebsforall/freebirdnp/lite/info.json
new file mode 100644
index 0000000000..1553264e08
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/info.json
@@ -0,0 +1,204 @@
+{
+ "keyboard_name": "FreebirdNP Lite",
+ "url": "https://keebsforall.com/products/fb-numpad-lite",
+ "maintainer": "e11i0t23",
+ "manufacturer": "KeebsForAll",
+ "layouts": {
+ "LAYOUT_numpad_5x4": {
+ "layout": [
+ {
+ "label": "Num Lock",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "/",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "*",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "8",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "9",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "4",
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "5",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "6",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "+",
+ "x": 3,
+ "y": 1,
+ "h": 2
+ },
+ {
+ "label": "1",
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "2",
+ "x": 1,
+ "y": 3
+ },
+ {
+ "label": "3",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "0",
+ "x": 0,
+ "y": 4,
+ "w": 2
+ },
+ {
+ "label": ".",
+ "x": 2,
+ "y": 4
+ },
+ {
+ "label": "Enter",
+ "x": 3,
+ "y": 3,
+ "h": 2
+ }
+ ]
+ },
+ "LAYOUT_ortho_5x4": {
+ "layout": [
+ {
+ "label": "Num Lock",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "/",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "*",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "-",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "8",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "9",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "+",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "4",
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "5",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "6",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "+",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "1",
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "2",
+ "x": 1,
+ "y": 3
+ },
+ {
+ "label": "3",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "Enter",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "0",
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "00",
+ "x": 1,
+ "y": 4
+ },
+ {
+ "label": ".",
+ "x": 2,
+ "y": 4
+ },
+ {
+ "label": "Enter",
+ "x": 3,
+ "y": 4
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebsforall/freebirdnp/lite/keymaps/default/keymap.c b/keyboards/keebsforall/freebirdnp/lite/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3d7f4026f8
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_numpad_5x4(
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT ),
+
+[1] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, KC_NO, KC_RGHT, KC_TRNS,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, KC_TRNS),
+};
diff --git a/keyboards/keebsforall/freebirdnp/lite/keymaps/via/keymap.c b/keyboards/keebsforall/freebirdnp/lite/keymaps/via/keymap.c
new file mode 100644
index 0000000000..712b01dcfa
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_ortho_5x4( /* Base */
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_ortho_5x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_ortho_5x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_ortho_5x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/keebsforall/freebirdnp/lite/keymaps/via/rules.mk b/keyboards/keebsforall/freebirdnp/lite/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keebsforall/freebirdnp/lite/lite.c b/keyboards/keebsforall/freebirdnp/lite/lite.c
new file mode 100644
index 0000000000..4d424c17da
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/lite.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "lite.h"
diff --git a/keyboards/keebsforall/freebirdnp/lite/lite.h b/keyboards/keebsforall/freebirdnp/lite/lite.h
new file mode 100644
index 0000000000..7f8cbdeeb0
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/lite.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_numpad_5x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K13, \
+ K30, K31, K32, \
+ K40, K42, K33 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, XXX }, \
+ { K30, K31, K32, K33 }, \
+ { K40, XXX, K42, XXX } \
+}
+
+#define LAYOUT_ortho_5x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, K43 } \
+}
diff --git a/keyboards/keebsforall/freebirdnp/lite/readme.md b/keyboards/keebsforall/freebirdnp/lite/readme.md
new file mode 100644
index 0000000000..e0d0dda059
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/readme.md
@@ -0,0 +1,19 @@
+# Freebird Numpad Lite
+
+A basic numpad build to support the freebird range of products by keebsforall
+
+* Keyboard Maintainer: [e11i0t23](https://github.com/e11i0t23)
+* Hardware Supported: FreebirdNP Lite
+* Hardware Availability: [KeebsForAll](https://keebsforall.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebsforall/freebirdnp/lite:default
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
diff --git a/keyboards/keebsforall/freebirdnp/lite/rules.mk b/keyboards/keebsforall/freebirdnp/lite/rules.mk
new file mode 100644
index 0000000000..9f2621eeb3
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/lite/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = numpad_5x4 ortho_5x4
diff --git a/keyboards/keebsforall/freebirdnp/pro/config.h b/keyboards/keebsforall/freebirdnp/pro/config.h
new file mode 100644
index 0000000000..53ced8ac03
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/config.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2021 Elliot Powell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6B66
+#define PRODUCT_ID 0x1014
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KeebsForAll
+#define PRODUCT Freebird Numpad
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+#define ENCODERS_PAD_A { D4 }
+#define ENCODERS_PAD_B { D5 }
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D3, B7, B6, B5, B4, B3 }
+#define MATRIX_COL_PINS { C7, B2, B1, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/keebsforall/freebirdnp/pro/info.json b/keyboards/keebsforall/freebirdnp/pro/info.json
new file mode 100644
index 0000000000..ed2a6e0b41
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/info.json
@@ -0,0 +1,71 @@
+{
+ "keyboard_name": "FreebirdNP Pro",
+ "url": "https://keebsforall.com/products/fb-numpad-pro",
+ "maintainer": "e11i0t23",
+ "manufacturer": "KeebsForAll",
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"F3", "x":2, "y":0},
+ {"label":"MUTE", "x":3, "y":0},
+
+ {"label":"Num Lock", "x":0, "y":1},
+ {"label":"/", "x":1, "y":1},
+ {"label":"*", "x":2, "y":1},
+ {"label":"-", "x":3, "y":1},
+
+ {"label":"7", "x":0, "y":2},
+ {"label":"8", "x":1, "y":2},
+ {"label":"9", "x":2, "y":2},
+
+ {"label":"4", "x":0, "y":3},
+ {"label":"5", "x":1, "y":3},
+ {"label":"6", "x":2, "y":3},
+ {"label":"+", "x":3, "y":2, "h":2},
+
+ {"label":"1", "x":0, "y":4},
+ {"label":"2", "x":1, "y":4},
+ {"label":"3", "x":2, "y":4},
+
+ {"label":"0", "x":0, "y":5, "w":2},
+ {"label":".", "x":2, "y":5},
+ {"label":"Enter", "x":3, "y":4, "h":2}
+ ]
+ },
+ "LAYOUT_ortho_6x4": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"F3", "x":2, "y":0},
+ {"label":"MUTE", "x":3, "y":0},
+
+ {"label":"Num Lock", "x":0, "y":1},
+ {"label":"/", "x":1, "y":1},
+ {"label":"*", "x":2, "y":1},
+ {"label":"-", "x":3, "y":1},
+
+ {"label":"7", "x":0, "y":2},
+ {"label":"8", "x":1, "y":2},
+ {"label":"9", "x":2, "y":2},
+ {"label":"+", "x":3, "y":2},
+
+ {"label":"4", "x":0, "y":3},
+ {"label":"5", "x":1, "y":3},
+ {"label":"6", "x":2, "y":3},
+ {"label":"+", "x":3, "y":3},
+
+ {"label":"1", "x":0, "y":4},
+ {"label":"2", "x":1, "y":4},
+ {"label":"3", "x":2, "y":4},
+ {"label":"Enter", "x":3, "y":4},
+
+ {"label":"0", "x":0, "y":5},
+ {"label":"00", "x":1, "y":5},
+ {"label":".", "x":2, "y":5},
+ {"label":"Enter", "x":3, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebsforall/freebirdnp/pro/keymaps/default/keymap.c b/keyboards/keebsforall/freebirdnp/pro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..db6b1faf53
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_numpad_6x4(
+ KC_F1, KC_F2, KC_F3, KC_MUTE,
+ TG(1), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT ),
+
+[1] = LAYOUT_numpad_6x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, KC_NO, KC_RGHT, KC_TRNS,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, KC_TRNS),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebsforall/freebirdnp/pro/keymaps/via/keymap.c b/keyboards/keebsforall/freebirdnp/pro/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e08edb6182
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_ortho_6x4( /* Base */
+ KC_F1, KC_F2, KC_F3, KC_MUTE,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_ortho_6x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_ortho_6x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_ortho_6x4( /* Empty for Dynamic keymap */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/keebsforall/freebirdnp/pro/keymaps/via/rules.mk b/keyboards/keebsforall/freebirdnp/pro/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keebsforall/freebirdnp/pro/pro.c b/keyboards/keebsforall/freebirdnp/pro/pro.c
new file mode 100644
index 0000000000..dcc72d39b4
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/pro.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "pro.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/keebsforall/freebirdnp/pro/pro.h b/keyboards/keebsforall/freebirdnp/pro/pro.h
new file mode 100644
index 0000000000..41b241bee1
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/pro.h
@@ -0,0 +1,52 @@
+/* Copyright 2021 Elliot Powell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_numpad_6x4( \
+ KF0, KF1, KF2, KF3, \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K13, \
+ K30, K31, K32, \
+ K40, K42, K33 \
+) { \
+ { KF0, KF1, KF2, KF3 }, \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, XXX }, \
+ { K30, K31, K32, K33 }, \
+ { K40, XXX, K42, XXX } \
+}
+
+#define LAYOUT_ortho_6x4( \
+ KF0, KF1, KF2, KF3, \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, K43 \
+) { \
+ { KF0, KF1, KF2, KF3 }, \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, K43 } \
+}
diff --git a/keyboards/keebsforall/freebirdnp/pro/readme.md b/keyboards/keebsforall/freebirdnp/pro/readme.md
new file mode 100644
index 0000000000..3b06a72d11
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/readme.md
@@ -0,0 +1,21 @@
+# Freebird Numpad Pro
+
+A basic numpad build to support the freebird range of products by keebsforall
+
+Pro Model features an Frow and Encoder
+
+* Keyboard Maintainer: [e11i0t23](https://github.com/e11i0t23)
+* Hardware Supported: FreebirdNP Pro
+* Hardware Availability: [KeebsForAll](https://keebsforall.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebsforall/freebirdnp/pro:default
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
diff --git a/keyboards/keebsforall/freebirdnp/pro/rules.mk b/keyboards/keebsforall/freebirdnp/pro/rules.mk
new file mode 100644
index 0000000000..fae02c7844
--- /dev/null
+++ b/keyboards/keebsforall/freebirdnp/pro/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+
+LAYOUTS = numpad_6x4 ortho_6x4
diff --git a/keyboards/keebsforall/freebirdtkl/freebirdtkl.h b/keyboards/keebsforall/freebirdtkl/freebirdtkl.h
index d091109d05..0064172732 100644
--- a/keyboards/keebsforall/freebirdtkl/freebirdtkl.h
+++ b/keyboards/keebsforall/freebirdtkl/freebirdtkl.h
@@ -20,31 +20,27 @@
#define kxx KC_NO
-/* This is a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
+/*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │ │0e │0f │0g │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d │ │1e │1f │1g │ │1d │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └───────┘
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │2g │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌──────────┐
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4d │ │4f │ │4b │ 2.75u RShift
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘
+ * │50 │52 │53 │55 │58 │59 │5a │5b │ │5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │50 │52 │53 │55 │59 │5a │5b │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
*/
-#define LAYOUT_all( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3d, k1e, k1f, k1g, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
- k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \
- k50, k52, k53, k55, k58, k59, k5a, k5b, k5e, k5f, k5g \
-) { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, kxx, kxx, kxx }, \
- { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, k4d, kxx, k4f, kxx }, \
- { k50, kxx, k52, k53, kxx, k55, kxx, kxx, k58, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \
-}
-#define LAYOUT_ansi( \
+#define LAYOUT_tkl_f13_ansi( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
@@ -60,7 +56,39 @@
{ k50, kxx, k52, k53, kxx, k55, kxx, kxx, k58, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \
}
-#define LAYOUT_tsangan( \
+#define LAYOUT_tkl_f13_ansi_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3d, k1e, k1f, k1g, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4d, k4f, \
+ k50, k52, k53, k55, k58, k59, k5a, k5b, k5e, k5f, k5g \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, kxx, kxx, kxx }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, k4d, kxx, k4f, kxx }, \
+ { k50, kxx, k52, k53, kxx, k55, kxx, kxx, k58, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \
+}
+
+#define LAYOUT_tkl_f13_ansi_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4f, \
+ k50, k52, k53, k55, k59, k5a, k5b, k5e, k5f, k5g \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, kxx, kxx, kxx, kxx }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, kxx, kxx, kxx, k4f, kxx }, \
+ { k50, kxx, k52, k53, kxx, k55, kxx, kxx, kxx, k59, k5a, k5b, kxx, kxx, k5e, k5f, k5g } \
+}
+
+#define LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k3d, k1e, k1f, k1g, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
diff --git a/keyboards/keebsforall/freebirdtkl/info.json b/keyboards/keebsforall/freebirdtkl/info.json
index aedf8777af..0c21d22393 100644
--- a/keyboards/keebsforall/freebirdtkl/info.json
+++ b/keyboards/keebsforall/freebirdtkl/info.json
@@ -2,15 +2,401 @@
"keyboard_name": "FreebirdTKL",
"url": "https://keebsforall.com",
"maintainer": "KnoblesseOblige",
+ "layout_aliases": {
+ "LAYOUT_ansi": "LAYOUT_tkl_f13_ansi",
+ "LAYOUT_tsangan": "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift",
+ "LAYOUT_all": "LAYOUT_tkl_f13_ansi_split_bs_rshift"
+ },
"layouts": {
- "LAYOUT_ansi": {
- "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25, "w":2}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":2.75}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,2", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25, "w":1.25}, {"label":"5,9", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,10", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,11", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}]
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1.25, "y":0},
+ {"label":"0,2", "x":2.25, "y":0},
+ {"label":"0,3", "x":3.25, "y":0},
+ {"label":"0,4", "x":4.25, "y":0},
+ {"label":"0,5", "x":5.5, "y":0},
+ {"label":"0,6", "x":6.5, "y":0},
+ {"label":"0,7", "x":7.5, "y":0},
+ {"label":"0,8", "x":8.5, "y":0},
+ {"label":"0,9", "x":9.75, "y":0},
+ {"label":"0,10", "x":10.75, "y":0},
+ {"label":"0,11", "x":11.75, "y":0},
+ {"label":"0,12", "x":12.75, "y":0},
+ {"label":"0,13", "x":14, "y":0},
+ {"label":"0,14", "x":15.25, "y":0},
+ {"label":"0,15", "x":16.25, "y":0},
+ {"label":"0,16", "x":17.25, "y":0},
+
+ {"label":"1,0", "x":0, "y":1.25},
+ {"label":"1,1", "x":1, "y":1.25},
+ {"label":"1,2", "x":2, "y":1.25},
+ {"label":"1,3", "x":3, "y":1.25},
+ {"label":"1,4", "x":4, "y":1.25},
+ {"label":"1,5", "x":5, "y":1.25},
+ {"label":"1,6", "x":6, "y":1.25},
+ {"label":"1,7", "x":7, "y":1.25},
+ {"label":"1,8", "x":8, "y":1.25},
+ {"label":"1,9", "x":9, "y":1.25},
+ {"label":"1,10", "x":10, "y":1.25},
+ {"label":"1,11", "x":11, "y":1.25},
+ {"label":"1,12", "x":12, "y":1.25},
+ {"label":"1,13", "x":13, "y":1.25, "w":2},
+ {"label":"1,14", "x":15.25, "y":1.25},
+ {"label":"1,15", "x":16.25, "y":1.25},
+ {"label":"1,16", "x":17.25, "y":1.25},
+
+ {"label":"2,0", "x":0, "y":2.25, "w":1.5},
+ {"label":"2,1", "x":1.5, "y":2.25},
+ {"label":"2,2", "x":2.5, "y":2.25},
+ {"label":"2,3", "x":3.5, "y":2.25},
+ {"label":"2,4", "x":4.5, "y":2.25},
+ {"label":"2,5", "x":5.5, "y":2.25},
+ {"label":"2,6", "x":6.5, "y":2.25},
+ {"label":"2,7", "x":7.5, "y":2.25},
+ {"label":"2,8", "x":8.5, "y":2.25},
+ {"label":"2,9", "x":9.5, "y":2.25},
+ {"label":"2,10", "x":10.5, "y":2.25},
+ {"label":"2,11", "x":11.5, "y":2.25},
+ {"label":"2,12", "x":12.5, "y":2.25},
+ {"label":"2,13", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"2,14", "x":15.25, "y":2.25},
+ {"label":"2,15", "x":16.25, "y":2.25},
+ {"label":"2,16", "x":17.25, "y":2.25},
+
+ {"label":"3,0", "x":0, "y":3.25, "w":1.75},
+ {"label":"3,1", "x":1.75, "y":3.25},
+ {"label":"3,2", "x":2.75, "y":3.25},
+ {"label":"3,3", "x":3.75, "y":3.25},
+ {"label":"3,4", "x":4.75, "y":3.25},
+ {"label":"3,5", "x":5.75, "y":3.25},
+ {"label":"3,6", "x":6.75, "y":3.25},
+ {"label":"3,7", "x":7.75, "y":3.25},
+ {"label":"3,8", "x":8.75, "y":3.25},
+ {"label":"3,9", "x":9.75, "y":3.25},
+ {"label":"3,10", "x":10.75, "y":3.25},
+ {"label":"3,11", "x":11.75, "y":3.25},
+ {"label":"3,12", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"4,0", "x":0, "y":4.25, "w":2.25},
+ {"label":"4,1", "x":2.25, "y":4.25},
+ {"label":"4,2", "x":3.25, "y":4.25},
+ {"label":"4,3", "x":4.25, "y":4.25},
+ {"label":"4,4", "x":5.25, "y":4.25},
+ {"label":"4,5", "x":6.25, "y":4.25},
+ {"label":"4,6", "x":7.25, "y":4.25},
+ {"label":"4,7", "x":8.25, "y":4.25},
+ {"label":"4,8", "x":9.25, "y":4.25},
+ {"label":"4,9", "x":10.25, "y":4.25},
+ {"label":"4,10", "x":11.25, "y":4.25},
+ {"label":"4,11", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"4,15", "x":16.25, "y":4.25},
+
+ {"label":"5,0", "x":0, "y":5.25, "w":1.25},
+ {"label":"5,2", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"5,3", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"5,5", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"5,8", "x":10, "y":5.25, "w":1.25},
+ {"label":"5,9", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"5,10", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"5,11", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"5,14", "x":15.25, "y":5.25},
+ {"label":"5,15", "x":16.25, "y":5.25},
+ {"label":"5,16", "x":17.25, "y":5.25}
+ ]
},
- "LAYOUT_tsangan": {
- "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"3,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,13", "x":14, "y":4.25}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.5}, {"label":"5,2", "x":1.5, "y":5.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.5}, {"label":"5,5", "x":4, "y":5.25, "w":7}, {"label":"5,9", "x":11, "y":5.25, "w":1.5}, {"label":"5,10", "x":12.5, "y":5.25}, {"label":"5,11", "x":13.5, "y":5.25, "w":1.5}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}]
+ "LAYOUT_tkl_f13_ansi_split_bs_rshift": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1.25, "y":0},
+ {"label":"0,2", "x":2.25, "y":0},
+ {"label":"0,3", "x":3.25, "y":0},
+ {"label":"0,4", "x":4.25, "y":0},
+ {"label":"0,5", "x":5.5, "y":0},
+ {"label":"0,6", "x":6.5, "y":0},
+ {"label":"0,7", "x":7.5, "y":0},
+ {"label":"0,8", "x":8.5, "y":0},
+ {"label":"0,9", "x":9.75, "y":0},
+ {"label":"0,10", "x":10.75, "y":0},
+ {"label":"0,11", "x":11.75, "y":0},
+ {"label":"0,12", "x":12.75, "y":0},
+ {"label":"0,13", "x":14, "y":0},
+ {"label":"0,14", "x":15.25, "y":0},
+ {"label":"0,15", "x":16.25, "y":0},
+ {"label":"0,16", "x":17.25, "y":0},
+
+ {"label":"1,0", "x":0, "y":1.25},
+ {"label":"1,1", "x":1, "y":1.25},
+ {"label":"1,2", "x":2, "y":1.25},
+ {"label":"1,3", "x":3, "y":1.25},
+ {"label":"1,4", "x":4, "y":1.25},
+ {"label":"1,5", "x":5, "y":1.25},
+ {"label":"1,6", "x":6, "y":1.25},
+ {"label":"1,7", "x":7, "y":1.25},
+ {"label":"1,8", "x":8, "y":1.25},
+ {"label":"1,9", "x":9, "y":1.25},
+ {"label":"1,10", "x":10, "y":1.25},
+ {"label":"1,11", "x":11, "y":1.25},
+ {"label":"1,12", "x":12, "y":1.25},
+ {"label":"1,13", "x":13, "y":1.25},
+ {"label":"3,13", "x":14, "y":1.25},
+ {"label":"1,14", "x":15.25, "y":1.25},
+ {"label":"1,15", "x":16.25, "y":1.25},
+ {"label":"1,16", "x":17.25, "y":1.25},
+
+ {"label":"2,0", "x":0, "y":2.25, "w":1.5},
+ {"label":"2,1", "x":1.5, "y":2.25},
+ {"label":"2,2", "x":2.5, "y":2.25},
+ {"label":"2,3", "x":3.5, "y":2.25},
+ {"label":"2,4", "x":4.5, "y":2.25},
+ {"label":"2,5", "x":5.5, "y":2.25},
+ {"label":"2,6", "x":6.5, "y":2.25},
+ {"label":"2,7", "x":7.5, "y":2.25},
+ {"label":"2,8", "x":8.5, "y":2.25},
+ {"label":"2,9", "x":9.5, "y":2.25},
+ {"label":"2,10", "x":10.5, "y":2.25},
+ {"label":"2,11", "x":11.5, "y":2.25},
+ {"label":"2,12", "x":12.5, "y":2.25},
+ {"label":"2,13", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"2,14", "x":15.25, "y":2.25},
+ {"label":"2,15", "x":16.25, "y":2.25},
+ {"label":"2,16", "x":17.25, "y":2.25},
+
+ {"label":"3,0", "x":0, "y":3.25, "w":1.75},
+ {"label":"3,1", "x":1.75, "y":3.25},
+ {"label":"3,2", "x":2.75, "y":3.25},
+ {"label":"3,3", "x":3.75, "y":3.25},
+ {"label":"3,4", "x":4.75, "y":3.25},
+ {"label":"3,5", "x":5.75, "y":3.25},
+ {"label":"3,6", "x":6.75, "y":3.25},
+ {"label":"3,7", "x":7.75, "y":3.25},
+ {"label":"3,8", "x":8.75, "y":3.25},
+ {"label":"3,9", "x":9.75, "y":3.25},
+ {"label":"3,10", "x":10.75, "y":3.25},
+ {"label":"3,11", "x":11.75, "y":3.25},
+ {"label":"3,12", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"4,0", "x":0, "y":4.25, "w":2.25},
+ {"label":"4,1", "x":2.25, "y":4.25},
+ {"label":"4,2", "x":3.25, "y":4.25},
+ {"label":"4,3", "x":4.25, "y":4.25},
+ {"label":"4,4", "x":5.25, "y":4.25},
+ {"label":"4,5", "x":6.25, "y":4.25},
+ {"label":"4,6", "x":7.25, "y":4.25},
+ {"label":"4,7", "x":8.25, "y":4.25},
+ {"label":"4,8", "x":9.25, "y":4.25},
+ {"label":"4,9", "x":10.25, "y":4.25},
+ {"label":"4,10", "x":11.25, "y":4.25},
+ {"label":"4,11", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"4,13", "x":14, "y":4.25},
+ {"label":"4,15", "x":16.25, "y":4.25},
+
+ {"label":"5,0", "x":0, "y":5.25, "w":1.25},
+ {"label":"5,2", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"5,3", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"5,5", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"5,8", "x":10, "y":5.25, "w":1.25},
+ {"label":"5,9", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"5,10", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"5,11", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"5,14", "x":15.25, "y":5.25},
+ {"label":"5,15", "x":16.25, "y":5.25},
+ {"label":"5,16", "x":17.25, "y":5.25}
+ ]
},
- "LAYOUT_all": {
- "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.25, "y":0}, {"label":"0,2", "x":2.25, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,4", "x":4.25, "y":0}, {"label":"0,5", "x":5.5, "y":0}, {"label":"0,6", "x":6.5, "y":0}, {"label":"0,7", "x":7.5, "y":0}, {"label":"0,8", "x":8.5, "y":0}, {"label":"0,9", "x":9.75, "y":0}, {"label":"0,10", "x":10.75, "y":0}, {"label":"0,11", "x":11.75, "y":0}, {"label":"0,12", "x":12.75, "y":0}, {"label":"0,13", "x":14, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"0,15", "x":16.25, "y":0}, {"label":"0,16", "x":17.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":7, "y":1.25}, {"label":"1,8", "x":8, "y":1.25}, {"label":"1,9", "x":9, "y":1.25}, {"label":"1,10", "x":10, "y":1.25}, {"label":"1,11", "x":11, "y":1.25}, {"label":"1,12", "x":12, "y":1.25}, {"label":"1,13", "x":13, "y":1.25}, {"label":"3,13", "x":14, "y":1.25}, {"label":"1,14", "x":15.25, "y":1.25}, {"label":"1,15", "x":16.25, "y":1.25}, {"label":"1,16", "x":17.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":6.5, "y":2.25}, {"label":"2,7", "x":7.5, "y":2.25}, {"label":"2,8", "x":8.5, "y":2.25}, {"label":"2,9", "x":9.5, "y":2.25}, {"label":"2,10", "x":10.5, "y":2.25}, {"label":"2,11", "x":11.5, "y":2.25}, {"label":"2,12", "x":12.5, "y":2.25}, {"label":"2,13", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,14", "x":15.25, "y":2.25}, {"label":"2,15", "x":16.25, "y":2.25}, {"label":"2,16", "x":17.25, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":6.75, "y":3.25}, {"label":"3,7", "x":7.75, "y":3.25}, {"label":"3,8", "x":8.75, "y":3.25}, {"label":"3,9", "x":9.75, "y":3.25}, {"label":"3,10", "x":10.75, "y":3.25}, {"label":"3,11", "x":11.75, "y":3.25}, {"label":"3,12", "x":12.75, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,1", "x":2.25, "y":4.25}, {"label":"4,2", "x":3.25, "y":4.25}, {"label":"4,3", "x":4.25, "y":4.25}, {"label":"4,4", "x":5.25, "y":4.25}, {"label":"4,5", "x":6.25, "y":4.25}, {"label":"4,6", "x":7.25, "y":4.25}, {"label":"4,7", "x":8.25, "y":4.25}, {"label":"4,8", "x":9.25, "y":4.25}, {"label":"4,9", "x":10.25, "y":4.25}, {"label":"4,10", "x":11.25, "y":4.25}, {"label":"4,11", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,13", "x":14, "y":4.25}, {"label":"4,15", "x":16.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,2", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,3", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25, "w":1.25}, {"label":"5,9", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,10", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,11", "x":13.75, "y":5.25, "w":1.25}, {"label":"5,14", "x":15.25, "y":5.25}, {"label":"5,15", "x":16.25, "y":5.25}, {"label":"5,16", "x":17.25, "y":5.25}]
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1.25, "y":0},
+ {"label":"0,2", "x":2.25, "y":0},
+ {"label":"0,3", "x":3.25, "y":0},
+ {"label":"0,4", "x":4.25, "y":0},
+ {"label":"0,5", "x":5.5, "y":0},
+ {"label":"0,6", "x":6.5, "y":0},
+ {"label":"0,7", "x":7.5, "y":0},
+ {"label":"0,8", "x":8.5, "y":0},
+ {"label":"0,9", "x":9.75, "y":0},
+ {"label":"0,10", "x":10.75, "y":0},
+ {"label":"0,11", "x":11.75, "y":0},
+ {"label":"0,12", "x":12.75, "y":0},
+ {"label":"0,13", "x":14, "y":0},
+ {"label":"0,14", "x":15.25, "y":0},
+ {"label":"0,15", "x":16.25, "y":0},
+ {"label":"0,16", "x":17.25, "y":0},
+
+ {"label":"1,0", "x":0, "y":1.25},
+ {"label":"1,1", "x":1, "y":1.25},
+ {"label":"1,2", "x":2, "y":1.25},
+ {"label":"1,3", "x":3, "y":1.25},
+ {"label":"1,4", "x":4, "y":1.25},
+ {"label":"1,5", "x":5, "y":1.25},
+ {"label":"1,6", "x":6, "y":1.25},
+ {"label":"1,7", "x":7, "y":1.25},
+ {"label":"1,8", "x":8, "y":1.25},
+ {"label":"1,9", "x":9, "y":1.25},
+ {"label":"1,10", "x":10, "y":1.25},
+ {"label":"1,11", "x":11, "y":1.25},
+ {"label":"1,12", "x":12, "y":1.25},
+ {"label":"1,13", "x":13, "y":1.25, "w":2},
+ {"label":"1,14", "x":15.25, "y":1.25},
+ {"label":"1,15", "x":16.25, "y":1.25},
+ {"label":"1,16", "x":17.25, "y":1.25},
+
+ {"label":"2,0", "x":0, "y":2.25, "w":1.5},
+ {"label":"2,1", "x":1.5, "y":2.25},
+ {"label":"2,2", "x":2.5, "y":2.25},
+ {"label":"2,3", "x":3.5, "y":2.25},
+ {"label":"2,4", "x":4.5, "y":2.25},
+ {"label":"2,5", "x":5.5, "y":2.25},
+ {"label":"2,6", "x":6.5, "y":2.25},
+ {"label":"2,7", "x":7.5, "y":2.25},
+ {"label":"2,8", "x":8.5, "y":2.25},
+ {"label":"2,9", "x":9.5, "y":2.25},
+ {"label":"2,10", "x":10.5, "y":2.25},
+ {"label":"2,11", "x":11.5, "y":2.25},
+ {"label":"2,12", "x":12.5, "y":2.25},
+ {"label":"2,13", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"2,14", "x":15.25, "y":2.25},
+ {"label":"2,15", "x":16.25, "y":2.25},
+ {"label":"2,16", "x":17.25, "y":2.25},
+
+ {"label":"3,0", "x":0, "y":3.25, "w":1.75},
+ {"label":"3,1", "x":1.75, "y":3.25},
+ {"label":"3,2", "x":2.75, "y":3.25},
+ {"label":"3,3", "x":3.75, "y":3.25},
+ {"label":"3,4", "x":4.75, "y":3.25},
+ {"label":"3,5", "x":5.75, "y":3.25},
+ {"label":"3,6", "x":6.75, "y":3.25},
+ {"label":"3,7", "x":7.75, "y":3.25},
+ {"label":"3,8", "x":8.75, "y":3.25},
+ {"label":"3,9", "x":9.75, "y":3.25},
+ {"label":"3,10", "x":10.75, "y":3.25},
+ {"label":"3,11", "x":11.75, "y":3.25},
+ {"label":"3,12", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"4,0", "x":0, "y":4.25, "w":2.25},
+ {"label":"4,1", "x":2.25, "y":4.25},
+ {"label":"4,2", "x":3.25, "y":4.25},
+ {"label":"4,3", "x":4.25, "y":4.25},
+ {"label":"4,4", "x":5.25, "y":4.25},
+ {"label":"4,5", "x":6.25, "y":4.25},
+ {"label":"4,6", "x":7.25, "y":4.25},
+ {"label":"4,7", "x":8.25, "y":4.25},
+ {"label":"4,8", "x":9.25, "y":4.25},
+ {"label":"4,9", "x":10.25, "y":4.25},
+ {"label":"4,10", "x":11.25, "y":4.25},
+ {"label":"4,11", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"4,15", "x":16.25, "y":4.25},
+
+ {"label":"5,0", "x":0, "y":5.25, "w":1.5},
+ {"label":"5,2", "x":1.5, "y":5.25},
+ {"label":"5,3", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"5,5", "x":4, "y":5.25, "w":7},
+ {"label":"5,9", "x":11, "y":5.25, "w":1.5},
+ {"label":"5,10", "x":12.5, "y":5.25},
+ {"label":"5,11", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"5,14", "x":15.25, "y":5.25},
+ {"label":"5,15", "x":16.25, "y":5.25},
+ {"label":"5,16", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label":"0,0", "x":0, "y":0},
+ {"label":"0,1", "x":1.25, "y":0},
+ {"label":"0,2", "x":2.25, "y":0},
+ {"label":"0,3", "x":3.25, "y":0},
+ {"label":"0,4", "x":4.25, "y":0},
+ {"label":"0,5", "x":5.5, "y":0},
+ {"label":"0,6", "x":6.5, "y":0},
+ {"label":"0,7", "x":7.5, "y":0},
+ {"label":"0,8", "x":8.5, "y":0},
+ {"label":"0,9", "x":9.75, "y":0},
+ {"label":"0,10", "x":10.75, "y":0},
+ {"label":"0,11", "x":11.75, "y":0},
+ {"label":"0,12", "x":12.75, "y":0},
+ {"label":"0,13", "x":14, "y":0},
+ {"label":"0,14", "x":15.25, "y":0},
+ {"label":"0,15", "x":16.25, "y":0},
+ {"label":"0,16", "x":17.25, "y":0},
+
+ {"label":"1,0", "x":0, "y":1.25},
+ {"label":"1,1", "x":1, "y":1.25},
+ {"label":"1,2", "x":2, "y":1.25},
+ {"label":"1,3", "x":3, "y":1.25},
+ {"label":"1,4", "x":4, "y":1.25},
+ {"label":"1,5", "x":5, "y":1.25},
+ {"label":"1,6", "x":6, "y":1.25},
+ {"label":"1,7", "x":7, "y":1.25},
+ {"label":"1,8", "x":8, "y":1.25},
+ {"label":"1,9", "x":9, "y":1.25},
+ {"label":"1,10", "x":10, "y":1.25},
+ {"label":"1,11", "x":11, "y":1.25},
+ {"label":"1,12", "x":12, "y":1.25},
+ {"label":"1,13", "x":13, "y":1.25},
+ {"label":"3,13", "x":14, "y":1.25},
+ {"label":"1,14", "x":15.25, "y":1.25},
+ {"label":"1,15", "x":16.25, "y":1.25},
+ {"label":"1,16", "x":17.25, "y":1.25},
+
+ {"label":"2,0", "x":0, "y":2.25, "w":1.5},
+ {"label":"2,1", "x":1.5, "y":2.25},
+ {"label":"2,2", "x":2.5, "y":2.25},
+ {"label":"2,3", "x":3.5, "y":2.25},
+ {"label":"2,4", "x":4.5, "y":2.25},
+ {"label":"2,5", "x":5.5, "y":2.25},
+ {"label":"2,6", "x":6.5, "y":2.25},
+ {"label":"2,7", "x":7.5, "y":2.25},
+ {"label":"2,8", "x":8.5, "y":2.25},
+ {"label":"2,9", "x":9.5, "y":2.25},
+ {"label":"2,10", "x":10.5, "y":2.25},
+ {"label":"2,11", "x":11.5, "y":2.25},
+ {"label":"2,12", "x":12.5, "y":2.25},
+ {"label":"2,13", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"2,14", "x":15.25, "y":2.25},
+ {"label":"2,15", "x":16.25, "y":2.25},
+ {"label":"2,16", "x":17.25, "y":2.25},
+
+ {"label":"3,0", "x":0, "y":3.25, "w":1.75},
+ {"label":"3,1", "x":1.75, "y":3.25},
+ {"label":"3,2", "x":2.75, "y":3.25},
+ {"label":"3,3", "x":3.75, "y":3.25},
+ {"label":"3,4", "x":4.75, "y":3.25},
+ {"label":"3,5", "x":5.75, "y":3.25},
+ {"label":"3,6", "x":6.75, "y":3.25},
+ {"label":"3,7", "x":7.75, "y":3.25},
+ {"label":"3,8", "x":8.75, "y":3.25},
+ {"label":"3,9", "x":9.75, "y":3.25},
+ {"label":"3,10", "x":10.75, "y":3.25},
+ {"label":"3,11", "x":11.75, "y":3.25},
+ {"label":"3,12", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"4,0", "x":0, "y":4.25, "w":2.25},
+ {"label":"4,1", "x":2.25, "y":4.25},
+ {"label":"4,2", "x":3.25, "y":4.25},
+ {"label":"4,3", "x":4.25, "y":4.25},
+ {"label":"4,4", "x":5.25, "y":4.25},
+ {"label":"4,5", "x":6.25, "y":4.25},
+ {"label":"4,6", "x":7.25, "y":4.25},
+ {"label":"4,7", "x":8.25, "y":4.25},
+ {"label":"4,8", "x":9.25, "y":4.25},
+ {"label":"4,9", "x":10.25, "y":4.25},
+ {"label":"4,10", "x":11.25, "y":4.25},
+ {"label":"4,11", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"4,13", "x":14, "y":4.25},
+ {"label":"4,15", "x":16.25, "y":4.25},
+
+ {"label":"5,0", "x":0, "y":5.25, "w":1.5},
+ {"label":"5,2", "x":1.5, "y":5.25},
+ {"label":"5,3", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"5,5", "x":4, "y":5.25, "w":7},
+ {"label":"5,9", "x":11, "y":5.25, "w":1.5},
+ {"label":"5,10", "x":12.5, "y":5.25},
+ {"label":"5,11", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"5,14", "x":15.25, "y":5.25},
+ {"label":"5,15", "x":16.25, "y":5.25},
+ {"label":"5,16", "x":17.25, "y":5.25}
+ ]
}
}
}
diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c
index dbeb08e123..16c3b4cdc9 100644
--- a/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c
+++ b/keyboards/keebsforall/freebirdtkl/keymaps/default/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ [0] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c
index 6cae507d56..e96540e3ef 100644
--- a/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c
+++ b/keyboards/keebsforall/freebirdtkl/keymaps/via/keymap.c
@@ -17,36 +17,36 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ [0] = LAYOUT_tkl_f13_ansi_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_MENU, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ [1] = LAYOUT_tkl_f13_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [2] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ [2] = LAYOUT_tkl_f13_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [3] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ [3] = LAYOUT_tkl_f13_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c b/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c
index 884c8c47b8..90f343f8d7 100644
--- a/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c
+++ b/keyboards/keebsforall/freebirdtkl/keymaps/wkl/keymap.c
@@ -17,12 +17,12 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_tsangan(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ [0] = LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/keebsforall/freebirdtkl/rules.mk b/keyboards/keebsforall/freebirdtkl/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/keebsforall/freebirdtkl/rules.mk
+++ b/keyboards/keebsforall/freebirdtkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
new file mode 100644
index 0000000000..54e6ee4ac2
--- /dev/null
+++ b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
@@ -0,0 +1,176 @@
+/* Copyright 2020 Yiancar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "drivers/issi/is31fl3733.h"
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_65_ansi( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_65_ansi( /* FN */
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+
+static uint16_t ledTimer;
+
+uint8_t R = 0; /* First led*/
+uint8_t G = 0; /* Second led*/
+uint8_t B = 0; /* Third led*/
+
+/* Boot animation parameters */
+
+uint8_t bootFirst=3; /* Number of increment slides. */
+uint8_t bootSec=3; /* Number of full blink. */
+
+/* Breathing animation parameters */
+
+const uint16_t travelTime = 1000; /* Time the leds take to go from off to on or on to off. */
+const uint16_t fadeStep = 5; /* Steps for the fade in and out, 0-255 by steps of 10. */
+const uint16_t fadeTime = 20; /* Time between each fade step. */
+const uint8_t maxBrightness=255; /* keep them multipliers of fade Step between 0 and 255. */
+const uint8_t minBrightness=0;
+
+uint16_t previousTime = 0;
+uint16_t time = 0;
+
+bool bootAnimation(void){
+ if (bootFirst>0 || bootSec>0){
+ if(bootFirst!=0){
+ if (timer_elapsed(ledTimer) > 150){
+ G = 255;
+ R = 0;
+ B = 0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ }
+ if (timer_elapsed(ledTimer) > 300){
+ G = 255;
+ R = 255;
+ B = 0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ }
+ if (timer_elapsed(ledTimer) > 400){
+ G = 255;
+ R = 255;
+ B = 255;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ }
+ if (timer_elapsed(ledTimer) > 500){
+ G = 0;
+ R = 0;
+ B = 0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ ledTimer = timer_read();
+ bootFirst--;
+ }
+ }
+ if (bootFirst==0 && bootSec!=0){
+ if (timer_elapsed(ledTimer) > 200) {
+ G = 255;
+ R = 255;
+ B = 255;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ }
+ if (timer_elapsed(ledTimer) > 400){
+ G = 0;
+ R = 0;
+ B = 0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ ledTimer = timer_read();
+ bootSec--;
+ }
+ }
+ return false;
+ }
+ return true;
+}
+
+
+void breathing(void) {
+ if(timer_elapsed(ledTimer)<travelTime){
+ time = timer_elapsed(ledTimer);
+ if((time - previousTime) > fadeTime && R<maxBrightness){
+ G+=fadeStep;
+ R+=fadeStep;
+ B+=fadeStep;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ previousTime = time;
+ }
+ }
+ else if(timer_elapsed(ledTimer)<(travelTime * 2)){
+ time = timer_elapsed(ledTimer);
+ if((time - previousTime) > fadeTime && R>minBrightness){
+ G-=fadeStep;
+ R-=fadeStep;
+ B-=fadeStep;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ previousTime = time;
+ }
+ }
+ else {
+ R=0;
+ G=0;
+ B=0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ previousTime = 0;
+ time = 0;
+ ledTimer=timer_read();
+ }
+}
+
+/* this avoids turning off the led each matrix_scan_user() call */
+bool capsState;
+bool prevCapsState;
+
+void matrix_scan_user(void){
+ if(bootAnimation()){
+ capsState = host_keyboard_led_state().caps_lock;
+ if (capsState) {
+ breathing();
+ prevCapsState = capsState;
+ }
+ else if(!capsState && capsState != prevCapsState){
+ G = 0;
+ R = 0;
+ B = 0;
+ IS31FL3733_set_color( 6+64-1, R, G, B );
+ prevCapsState = capsState;
+ }
+ }
+}
diff --git a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/readme.md b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/readme.md
new file mode 100644
index 0000000000..5910222a46
--- /dev/null
+++ b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/readme.md
@@ -0,0 +1,9 @@
+# The jesusvallejo keymap for ANSI Keebwerk Mega. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/RcuLofrl.png)
+
+![Layer 1](https://i.imgur.com/NJOORcdl.png)
+
+- Default layer is normal ANSI 65%.
+- Leds slide and blink bootup animation.
+- Leds fade Caps Lock animation.
diff --git a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/rules.mk b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keebwerk/mega/ansi/rules.mk b/keyboards/keebwerk/mega/ansi/rules.mk
index c45a6bec11..53de2cd2d6 100755
--- a/keyboards/keebwerk/mega/ansi/rules.mk
+++ b/keyboards/keebwerk/mega/ansi/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c
new file mode 100644
index 0000000000..0623f7556c
--- /dev/null
+++ b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c
@@ -0,0 +1,154 @@
+/* Copyright 2020 Duckle, 2021 Jesús Vallejo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include QMK_KEYBOARD_H
+#include "analog.h"
+#include "qmk_midi.h"
+
+/*
+This keymap works with midi2vol: linux version https://github.com/jesusvallejo/Midi2Vol-Linux
+and windows version https://github.com/jesusvallejo/Midi2Vol
+
+Enables the user to change the volume on the host computer if running midi2vol software.
+
+Example to extend usability is provided check VLC in: enum custom_keycodes {} and bool process_record_user(uint16_t keycode, keyrecord_t *record) {}
+Remember to give allways the new volume control a hex value not used by other volume control,
+and add it to the midi2vol software.
+Check respective midi2vol readme on how to do so.In linux change config.json,in windows you can use configuration option.
+
+A compiled version of this keymap is provided in here: https://github.com/jesusvallejo/nanokeymaps/
+
+*/
+
+uint8_t midi2vol = 0x3E;
+
+/* Defines names for use in layer keycodes and the keymap */
+
+enum custom_layers {
+ _MEDIA, /* Controls Pause, Mute , Forward ... */
+ _NAV, /* Nav arrows, Enter, Space*/
+ _VOLUME /* Changes midi2vol int to interface with midi2vol program: Chrome Volume, General Volume */
+ _DISCORD, /* FXX unsused keys to interface with Discord: Mute , Silence */
+ _LIGHTS, /* Edits underglow and retroilumination */
+ _EDIT, /* Cut, Copy ,Paste */
+ _RESET, /* Layer to set nano in bootloader mode */
+ _TOOGLE, /* Momentary layer to switch between layers */
+};
+
+
+
+/* Defines the keycodes used by our macros in process_record_user */
+enum custom_keycodes { /* In order to add more volume controls, add here a custom keycode, ex: VLC */
+ DEFAULT= SAFE_RANGE,SPOTIFY,DISCORD,CHROME/*,VLC*/
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_MEDIA] = LAYOUT(
+ MO(_TOOGLE),
+ KC_MPLY, KC_MNXT, KC_COPY,
+ KC_MUTE, KC_MPRV, KC_PASTE, KC_ENTER
+ ),
+ [_NAV] = LAYOUT(
+ MO(_TOOGLE),
+ KC_SPC, KC_UP, KC_BSPACE,
+ KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENTER
+ ),
+ [_VOLUME] = LAYOUT(
+ MO(_TOOGLE),
+ SPOTIFY, DISCORD, CHROME,
+ KC_NO, KC_NO, KC_NO, DEFAULT
+ ),
+ [_DISCORD] = LAYOUT(
+ MO(_TOOGLE),
+ KC_F18, KC_F19, KC_F20,
+ KC_F21, KC_F22, KC_F23, KC_F24
+ ),
+ [_LIGHTS] = LAYOUT(
+ MO(_TOOGLE),
+ RGB_TOG, RGB_MOD, RGB_VAI,
+ RGB_SAI, BL_BRTG, BL_STEP, KC_LSFT
+ ),
+ [_EDIT] = LAYOUT(
+ MO(_TOOGLE),
+ KC_MENU, KC_CUT, KC_COPY,
+ KC_FIND, KC_UNDO, KC_PASTE, KC_MPLY
+ ),
+ [_RESET] = LAYOUT(
+ MO(_TOOGLE),
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, RESET
+ ),
+ [_TOOGLE] = LAYOUT(
+ MO(_TOOGLE),
+ TO(_MEDIA), TO(_NAV), TO(_VOLUME),
+ TO(_DISCORD), TO(_LIGHTS), TO(_EDIT), TO(_RESET)
+ )
+};
+/* In order to add more volume controls, add here code to detect custom keycode, ex: VLC */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case DEFAULT:
+ if (record->event.pressed) {
+ /* when keycode DEFAULT is pressed */
+ midi2vol= 0x3E;
+ } else {
+ /* when keycode DEFAULT is released */
+ }
+ break;
+ case SPOTIFY:
+ if (record->event.pressed) {
+ midi2vol= 0x3F;
+ }
+ break;
+ case DISCORD:
+ if (record->event.pressed) {
+
+ midi2vol= 0x40;
+ }
+ break;
+ case CHROME:
+ if (record->event.pressed) {
+
+ midi2vol= 0x41;
+ }
+ break;
+ /*
+ case VLC:
+ if (record->event.pressed) {
+ midi2vol= 0x42;
+ }
+ break;
+ */
+ }
+ return true;
+}
+
+uint8_t divisor = 0;
+
+
+void slider(void) {
+ if (divisor++) { /* only run the slider function 1/256 times it's called */
+ return;
+ }
+ midi_send_cc(&midi_device, 2, midi2vol, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
+}
+
+void matrix_scan_user(void) {
+ slider();
+}
diff --git a/keyboards/keebwerk/nano_slider/keymaps/midi2vol/readme.md b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/readme.md
new file mode 100644
index 0000000000..869baef07f
--- /dev/null
+++ b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/readme.md
@@ -0,0 +1,2 @@
+# The Midi2Vol keymap for nano_slider
+This keymap has the code for the nano_slider to work with [Midi2Vol](https://github.com/jesusvallejo/Midi2Vol).
diff --git a/keyboards/keebwerk/nano_slider/rules.mk b/keyboards/keebwerk/nano_slider/rules.mk
index 0f31b1cc6f..5412232d0f 100644
--- a/keyboards/keebwerk/nano_slider/rules.mk
+++ b/keyboards/keebwerk/nano_slider/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
MIDI_ENABLE = yes # MIDI support
diff --git a/keyboards/keebzdotnet/fme/rules.mk b/keyboards/keebzdotnet/fme/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/keebzdotnet/fme/rules.mk
+++ b/keyboards/keebzdotnet/fme/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keebzdotnet/wazowski/rules.mk b/keyboards/keebzdotnet/wazowski/rules.mk
index 9ef8d0c0c2..2098a160c0 100644
--- a/keyboards/keebzdotnet/wazowski/rules.mk
+++ b/keyboards/keebzdotnet/wazowski/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kelowna/rgb64/rules.mk b/keyboards/kelowna/rgb64/rules.mk
index 0741eb95c1..4e81168041 100644
--- a/keyboards/kelowna/rgb64/rules.mk
+++ b/keyboards/kelowna/rgb64/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keybage/radpad/rules.mk b/keyboards/keybage/radpad/rules.mk
index 05b2184ac1..b961abe473 100644
--- a/keyboards/keybage/radpad/rules.mk
+++ b/keyboards/keybage/radpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keybee/keybee65/config.h b/keyboards/keybee/keybee65/config.h
index 25c7b50837..a6666b5d23 100644
--- a/keyboards/keybee/keybee65/config.h
+++ b/keyboards/keybee/keybee65/config.h
@@ -56,6 +56,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B0
// The number of LEDs connected
#define DRIVER_LED_TOTAL 80
+// Limit the Brithness of the LEDs
+#define RGBLIGHT_LIMIT_VAL 96
+#define RGB_VAL_STEP 12
#define RGB_MATRIX_KEYPRESSES
#define RGB_DISABLE_WHEN_USB_SUSPENDED
diff --git a/keyboards/keybee/keybee65/keymaps/default/keymap.c b/keyboards/keybee/keybee65/keymaps/default/keymap.c
index 13d1ba1f9d..a1df29ef92 100644
--- a/keyboards/keybee/keybee65/keymaps/default/keymap.c
+++ b/keyboards/keybee/keybee65/keymaps/default/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 <me@homedrop.org>
+Copyright 2020 <contact@vwolf.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
diff --git a/keyboards/keybee/keybee65/keymaps/via/keymap.c b/keyboards/keybee/keybee65/keymaps/via/keymap.c
index 811e13ef55..12faf6f196 100644
--- a/keyboards/keybee/keybee65/keymaps/via/keymap.c
+++ b/keyboards/keybee/keybee65/keymaps/via/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 <me@homedrop.org>
+Copyright 2020 <contact@vwolf.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
diff --git a/keyboards/keybee/keybee65/rules.mk b/keyboards/keybee/keybee65/rules.mk
index 7953580c3e..b99f8cb6af 100644
--- a/keyboards/keybee/keybee65/rules.mk
+++ b/keyboards/keybee/keybee65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keyboardio/atreus/rules.mk b/keyboards/keyboardio/atreus/rules.mk
index 669da566b7..abe9fface8 100644
--- a/keyboards/keyboardio/atreus/rules.mk
+++ b/keyboards/keyboardio/atreus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keyboardio/model01/keymaps/default/config.h b/keyboards/keyboardio/model01/keymaps/default/config.h
deleted file mode 100644
index 8ab9d8b025..0000000000
--- a/keyboards/keyboardio/model01/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 James Laird-Wah
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* place overrides here */
diff --git a/keyboards/keyboardio/model01/rules.mk b/keyboards/keyboardio/model01/rules.mk
index 2ede72a22e..7b99346d02 100644
--- a/keyboards/keyboardio/model01/rules.mk
+++ b/keyboards/keyboardio/model01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
CUSTOM_MATRIX = yes
QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/keycapsss/kimiko/rules.mk b/keyboards/keycapsss/kimiko/rules.mk
index 4095fbd16f..db4776a801 100644
--- a/keyboards/keycapsss/kimiko/rules.mk
+++ b/keyboards/keycapsss/kimiko/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keycapsss/o4l_5x12/rules.mk b/keyboards/keycapsss/o4l_5x12/rules.mk
index ecc88a18e7..bb3c258c4b 100644
--- a/keyboards/keycapsss/o4l_5x12/rules.mk
+++ b/keyboards/keycapsss/o4l_5x12/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/default/config.h b/keyboards/keycapsss/plaid_pad/keymaps/default/config.h
deleted file mode 100644
index fb4c0f5e25..0000000000
--- a/keyboards/keycapsss/plaid_pad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 Ben Roesner (keycapsss.com)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/keycapsss/plaid_pad/rules.mk b/keyboards/keycapsss/plaid_pad/rules.mk
index 69b66129f3..af2b13adf3 100644
--- a/keyboards/keycapsss/plaid_pad/rules.mk
+++ b/keyboards/keycapsss/plaid_pad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
index 149280161f..de69b9e929 100644
--- a/keyboards/keychron/q1/config.h
+++ b/keyboards/keychron/q1/config.h
@@ -16,7 +16,6 @@
#pragma once
-
/* USB Device descriptor parameter */
#define VENDOR_ID 0x3434
#define MANUFACTURER Keychron
@@ -46,6 +45,14 @@
/* NKRO */
#define FORCE_NKRO
+/* Disable RGB lighting when PC is in suspend */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Allow VIA to edit lighting */
+#ifdef VIA_ENABLE
+#define VIA_QMK_RGBLIGHT_ENABLE
+#endif
+
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
@@ -94,3 +101,8 @@
#define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Allow VIA to edit lighting */
+#ifdef VIA_ENABLE
+#define VIA_QMK_RGBLIGHT_ENABLE
+#endif
diff --git a/keyboards/keychron/q1/q1.h b/keyboards/keychron/q1/q1.h
index eb9a7d69a7..cf6d196213 100644
--- a/keyboards/keychron/q1/q1.h
+++ b/keyboards/keychron/q1/q1.h
@@ -18,9 +18,10 @@
#include "quantum.h"
-
#if defined(KEYBOARD_keychron_q1_rev_0100)
# include "rev_0100.h"
+#elif defined(KEYBOARD_keychron_q1_rev_0101)
+# include "rev_0101.h"
#elif defined(KEYBOARD_keychron_q1_rev_0102)
# include "rev_0102.h"
-#endif \ No newline at end of file
+#endif
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
index e000dd7dd7..d1f71e9da6 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
@@ -16,49 +16,74 @@
#include QMK_KEYBOARD_H
-
enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [MAC_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-[MAC_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[WIN_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [WIN_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
-}; \ No newline at end of file
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
index e000dd7dd7..1e6316782d 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -24,41 +23,85 @@ enum layers{
WIN_FN
};
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
-[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[MAC_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [MAC_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-[WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[WIN_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [WIN_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
-}; \ No newline at end of file
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0100/rules.mk b/keyboards/keychron/q1/rev_0100/rules.mk
index 450ca2e66a..6a512a8faa 100644
--- a/keyboards/keychron/q1/rev_0100/rules.mk
+++ b/keyboards/keychron/q1/rev_0100/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keychron/q1/rev_0101/config.h b/keyboards/keychron/q1/rev_0101/config.h
new file mode 100644
index 0000000000..c127a3630a
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0101
+#define DEVICE_VER 0x0100
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 23
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Encoder used pins */
+#define ENCODERS_PAD_A { E6 }
+#define ENCODERS_PAD_B { B7 }
+
+/* Specifies the number of pulses the encoder registers between each detent */
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/keychron/q1/rev_0101/info.json b/keyboards/keychron/q1/rev_0101/info.json
new file mode 100644
index 0000000000..75fb2d04e8
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/info.json
@@ -0,0 +1,191 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"Mute", "x":15.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Page Up", "x":15.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Page Down", "x":15.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"Home", "x":15.25, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25},
+ {"label":"Fn", "x":11, "y":5.25},
+ {"label":"Ctrl", "x":12, "y":5.25},
+ {"label":"Left", "x":13.25, "y":5.5},
+ {"label":"Down", "x":14.25, "y":5.5},
+ {"label":"Right", "x":15.25, "y":5.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.5},
+ {"label":"F1", "x":1.25, "y":0.5},
+ {"label":"F2", "x":2.25, "y":0.5},
+ {"label":"F3", "x":3.25, "y":0.5},
+ {"label":"F4", "x":4.25, "y":0.5},
+ {"label":"F5", "x":5.5, "y":0.5},
+ {"label":"F6", "x":6.5, "y":0.5},
+ {"label":"F7", "x":7.5, "y":0.5},
+ {"label":"F8", "x":8.5, "y":0.5},
+ {"label":"F9", "x":9.75, "y":0.5},
+ {"label":"F10", "x":10.75, "y":0.5},
+ {"label":"F11", "x":11.75, "y":0.5},
+ {"label":"F12", "x":12.75, "y":0.5},
+ {"label":"Delete", "x":14, "y":0.5},
+ {"label":"CCW", "x":15.15, "y":0, "w":0.6, "h":0.5},
+ {"label":"Mute", "x":15.25, "y":0.5},
+ {"label":"CW", "x":15.75, "y":0, "w":0.6, "h":0.5},
+
+ {"label":"`~", "x":0, "y":1.75},
+ {"label":"1!", "x":1, "y":1.75},
+ {"label":"2@", "x":2, "y":1.75},
+ {"label":"3#", "x":3, "y":1.75},
+ {"label":"4$", "x":4, "y":1.75},
+ {"label":"5%", "x":5, "y":1.75},
+ {"label":"6^", "x":6, "y":1.75},
+ {"label":"7&", "x":7, "y":1.75},
+ {"label":"8*", "x":8, "y":1.75},
+ {"label":"9(", "x":9, "y":1.75},
+ {"label":"0)", "x":10, "y":1.75},
+ {"label":"-_", "x":11, "y":1.75},
+ {"label":"=+", "x":12, "y":1.75},
+ {"label":"Backspace", "x":13, "y":1.75, "w":2},
+ {"label":"Page Up", "x":15.25, "y":1.75},
+
+ {"label":"Tab", "x":0, "y":2.75, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.75},
+ {"label":"W", "x":2.5, "y":2.75},
+ {"label":"E", "x":3.5, "y":2.75},
+ {"label":"R", "x":4.5, "y":2.75},
+ {"label":"T", "x":5.5, "y":2.75},
+ {"label":"Y", "x":6.5, "y":2.75},
+ {"label":"U", "x":7.5, "y":2.75},
+ {"label":"I", "x":8.5, "y":2.75},
+ {"label":"O", "x":9.5, "y":2.75},
+ {"label":"P", "x":10.5, "y":2.75},
+ {"label":"[{", "x":11.5, "y":2.75},
+ {"label":"]}", "x":12.5, "y":2.75},
+ {"label":"\\|", "x":13.5, "y":2.75, "w":1.5},
+ {"label":"Page Down", "x":15.25, "y":2.75},
+
+ {"label":"Caps Lock", "x":0, "y":3.75, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.75},
+ {"label":"S", "x":2.75, "y":3.75},
+ {"label":"D", "x":3.75, "y":3.75},
+ {"label":"F", "x":4.75, "y":3.75},
+ {"label":"G", "x":5.75, "y":3.75},
+ {"label":"H", "x":6.75, "y":3.75},
+ {"label":"J", "x":7.75, "y":3.75},
+ {"label":"K", "x":8.75, "y":3.75},
+ {"label":"L", "x":9.75, "y":3.75},
+ {"label":";:", "x":10.75, "y":3.75},
+ {"label":"'\"", "x":11.75, "y":3.75},
+ {"label":"Enter", "x":12.75, "y":3.75, "w":2.25},
+ {"label":"Home", "x":15.25, "y":3.75},
+
+ {"label":"Shift", "x":0, "y":4.75, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.75},
+ {"label":"X", "x":3.25, "y":4.75},
+ {"label":"C", "x":4.25, "y":4.75},
+ {"label":"V", "x":5.25, "y":4.75},
+ {"label":"B", "x":6.25, "y":4.75},
+ {"label":"N", "x":7.25, "y":4.75},
+ {"label":"M", "x":8.25, "y":4.75},
+ {"label":",<", "x":9.25, "y":4.75},
+ {"label":".>", "x":10.25, "y":4.75},
+ {"label":"/?", "x":11.25, "y":4.75},
+ {"label":"Shift", "x":12.25, "y":4.75, "w":1.75},
+ {"label":"Up", "x":14.25, "y":5},
+
+ {"label":"Ctrl", "x":0, "y":5.75, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.75, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.75, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.75, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.75},
+ {"label":"Fn", "x":11, "y":5.75},
+ {"label":"Ctrl", "x":12, "y":5.75},
+ {"label":"Left", "x":13.25, "y":6},
+ {"label":"Down", "x":14.25, "y":6},
+ {"label":"Right", "x":15.25, "y":6}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c
new file mode 100644
index 0000000000..92806bf9fe
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c
@@ -0,0 +1,90 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ad053648e5
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c
@@ -0,0 +1,131 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD
+};
+
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+#define KC_TASK G(KC_TAB)
+#define KC_FLXP G(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_all(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [WIN_BASE] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_all(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+
+#define ENCODERS 1
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{ 8, 5 }};
+static keypos_t encoder_ccw[ENCODERS] = {{ 7, 5 }};
+
+void encoder_action_unregister(void) {
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
+};
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0101/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0101/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0101/readme.md b/keyboards/keychron/q1/rev_0101/readme.md
new file mode 100644
index 0000000000..b89c9ad7ad
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/readme.md
@@ -0,0 +1,4 @@
+# The ANSI variant of the Keychron Q1
+- Enable EC11 rotary encoder
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume
+- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q1/rev_0101/rev_0101.c b/keyboards/keychron/q1/rev_0101/rev_0101.c
new file mode 100644
index 0000000000..dd7f69529e
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/rev_0101.c
@@ -0,0 +1,156 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {0, I_5, G_5, H_5},
+ {0, I_6, G_6, H_6},
+ {0, I_7, G_7, H_7},
+ {0, I_8, G_8, H_8},
+ {0, I_9, G_9, H_9},
+ {0, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_14, G_14, H_14},
+ {0, I_16, G_16, H_16},
+
+ {0, L_1, J_1, K_1},
+ {0, L_2, J_2, K_2},
+ {0, L_3, J_3, K_3},
+ {0, L_4, J_4, K_4},
+ {0, L_5, J_5, K_5},
+ {0, L_6, J_6, K_6},
+ {0, L_7, J_7, K_7},
+ {0, L_8, J_8, K_8},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_14, J_14, K_14},
+ {0, L_16, J_16, K_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+ { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+ { 72, 73, 74, NO_LED, NO_LED, NO_LED, 75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 }
+ },
+ {
+ {0, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
+ {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
+ {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26},
+ {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39},
+ {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ }
+};
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/keychron/q1/rev_0101/rev_0101.h b/keyboards/keychron/q1/rev_0101/rev_0101.h
new file mode 100644
index 0000000000..e4e8205b71
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/rev_0101.h
@@ -0,0 +1,52 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define xxx KC_NO
+
+#define LAYOUT_all( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K57, K0E, K58, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \
+ ) { \
+ { K00, xxx, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, xxx, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, xxx, xxx, xxx, K56, K57, K58, xxx, K5A, K5B, K5C, K5D, K5E } \
+ }
+#define LAYOUT_ansi_82( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \
+ ) { \
+ { K00, xxx, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, xxx, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B, K5C, K5D, K5E } \
+ }
diff --git a/keyboards/keychron/q1/rev_0101/rules.mk b/keyboards/keychron/q1/rev_0101/rules.mk
new file mode 100644
index 0000000000..8d2be4eb5d
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0101/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3733 \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
index b4a7d64427..3d0a9e5c6f 100644
--- a/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -24,41 +23,67 @@ enum layers{
WIN_FN
};
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[MAC_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[WIN_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ };
-}; \ No newline at end of file
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md
new file mode 100644
index 0000000000..3cfae17543
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md
@@ -0,0 +1,16 @@
+# kubahorak's Keychron Q1 keymap
+
+This ISO layout got heavily inspired by gtg465x's ANSI keymap (rev_0100).
+
+Features:
+- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default.
+- RGB lighting turns off when the computer sleeps
+- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
+- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
+
+## Changelog
+
+### 2021-10-17 - 1.0.0
+
+- Initial release
+
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h
new file mode 100644
index 0000000000..55dbb74d4a
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Jakub Horak (@kubahorak)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* from rev_0100/keymaps/gtg465x */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
+# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
+# define FN_LAYER_TRANSPARENT_KEYS_OFF
+#endif
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c
new file mode 100644
index 0000000000..479988dfa9
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c
@@ -0,0 +1,66 @@
+/* Copyright 2021 Jakub Horak (@kubahorak)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_user.h"
+#ifdef RGB_MATRIX_ENABLE
+# include "rgb_matrix_user.h"
+#endif
+
+// clang-format off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [3] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+// clang-format on
+
+void matrix_init_user(void) {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init_user();
+#endif
+}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h
new file mode 100644
index 0000000000..728114d556
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// clang-format off
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+// clang-format on
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c
new file mode 100644
index 0000000000..8650f30df1
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c
@@ -0,0 +1,75 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "rgb_matrix_user.h"
+#include "keymap_user.h"
+
+keypos_t led_index_key_position[DRIVER_LED_TOTAL];
+
+void rgb_matrix_init_user(void) {
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ uint8_t led_index = g_led_config.matrix_co[row][col];
+ if (led_index != NO_LED) {
+ led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
+ }
+ }
+ }
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t current_layer = get_highest_layer(layer_state);
+ switch (current_layer) {
+ case MAC_BASE:
+ case WIN_BASE:
+#ifdef CAPS_LOCK_INDICATOR_COLOR
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
+ }
+#endif
+ break;
+ case MAC_FN:
+ case WIN_FN:
+#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
+#endif
+ break;
+ }
+}
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
+ for (uint8_t i = led_min; i < led_max; i++) {
+ uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
+ if ((*is_keycode)(keycode)) {
+ rgb_matrix_set_color(i, red, green, blue);
+ }
+ }
+}
+
+bool is_caps_lock_indicator(uint16_t keycode) {
+ switch (keycode) {
+#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
+ case KC_A ... KC_Z:
+#endif
+ case KC_CAPS:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h
new file mode 100644
index 0000000000..dead454167
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+void rgb_matrix_init_user(void);
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
+
+bool is_caps_lock_indicator(uint16_t keycode);
+bool is_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk
new file mode 100644
index 0000000000..af720e37ee
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += rgb_matrix_user.c
+endif \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
index b4a7d64427..d1652e65da 100644
--- a/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -24,41 +23,85 @@ enum layers{
WIN_FN
};
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
-[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[MAC_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-[WIN_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
-}; \ No newline at end of file
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h
new file mode 100644
index 0000000000..8120a9352a
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h
@@ -0,0 +1,69 @@
+/* Copyright 2021 @ Victor-Gabriel Savu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// disable all default effects
+#undef ENABLE_RGB_MATRIX_BREATHING
+#undef ENABLE_RGB_MATRIX_CYCLE_ALL
+#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#undef ENABLE_RGB_MATRIX_SPLASH
+#undef ENABLE_RGB_MATRIX_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+// Allow fancy RGB
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+// Simple RGB
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Reactive RGB
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP
+
+#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
+
+// Unicode for Linux
+#define UNICODE_SELECTED_MODES UC_LNX
+#define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
+
+// Leader config
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 500
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c
new file mode 100644
index 0000000000..1f56295fa9
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c
@@ -0,0 +1,152 @@
+/* Copyright 2021 @ Victor-Gabriel Savu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+enum unicode_names {
+ GRIN,
+ SAD,
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [GRIN] = 0x1F600, // 😀
+ [SAD] = 0x1F61E, // 😞
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, X(SAD),
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, X(GRIN),
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_LEAD, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_CALC, KC_FLXP, RGB_VAD, RGB_VAI, KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END)
+
+};
+
+static bool wiggle_mouse;
+static uint16_t wiggle_timer;
+static uint16_t next_wiggle;
+
+
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+ SEQ_ONE_KEY(KC_LEAD) {
+ tap_code(KC_CAPS);
+ }
+
+ SEQ_FOUR_KEYS(KC_I, KC_D, KC_L, KC_E) {
+ wiggle_mouse = !wiggle_mouse;
+ wiggle_timer = timer_read();
+ }
+
+ SEQ_TWO_KEYS(KC_O, KC_K) {
+ send_unicode_string("👍");
+ }
+
+ SEQ_THREE_KEYS(KC_S, KC_A, KC_D) {
+ send_unicode_string("😞");
+ }
+
+ SEQ_FIVE_KEYS(KC_C, KC_H, KC_E, KC_C, KC_K) {
+ send_unicode_string("✅");
+ }
+
+ SEQ_FIVE_KEYS(KC_C, KC_R, KC_O, KC_S, KC_S) {
+ send_unicode_string("❎");
+ }
+
+ SEQ_FIVE_KEYS(KC_T, KC_H, KC_A, KC_N, KC_K) {
+ send_unicode_string("🙏");
+ }
+
+ SEQ_FIVE_KEYS(KC_S, KC_M, KC_I, KC_L, KC_E) {
+ send_unicode_string("😊");
+ }
+
+ SEQ_FIVE_KEYS(KC_P, KC_A, KC_R, KC_T, KC_Y) {
+ send_unicode_string("🎉");
+ }
+
+ SEQ_FOUR_KEYS(KC_E, KC_Y, KC_E, KC_S) {
+ send_unicode_string("(ಠ_ಠ)");
+ }
+
+ SEQ_FIVE_KEYS(KC_M, KC_A, KC_G, KC_I, KC_C) {
+ send_unicode_string("(ಠ_ಠ) 🪄 ⠁⭒*.✫.*⭒⠁");
+ }
+
+ SEQ_FIVE_KEYS(KC_T, KC_A, KC_B, KC_L, KC_E) {
+ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
+ }
+
+ SEQ_FIVE_KEYS(KC_S, KC_H, KC_R, KC_U, KC_G) {
+ send_unicode_string("¯\\_(ツ)_/¯");
+ }
+ }
+
+ if (wiggle_mouse && timer_elapsed(wiggle_timer) > next_wiggle) {
+ wiggle_timer = timer_read();
+
+ uint8_t rval = TCNT0 + TCNT1 + TCNT3 + TCNT4;
+ next_wiggle = rval % 1000;
+
+ if (rval & 1) tap_code(KC_MS_UP);
+ if (rval & 2) tap_code(KC_MS_DOWN);
+ if (rval & 4) tap_code(KC_MS_LEFT);
+ if (rval & 8) tap_code(KC_MS_RIGHT);
+ }
+}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md
new file mode 100644
index 0000000000..c96130816e
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md
@@ -0,0 +1,4 @@
+# victorsavu3's Keychron Q1 keymap (ISO)
+
+Very similar to the default layout. Enables reactive and framebuffer RGB, but disables most effects enabled by keychron.
+Uses Caps Lock as a leader key for emojis and to enable a random mouse wiggler to prevent the system from going to sleep.
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk
new file mode 100644
index 0000000000..853c414ec7
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = yes
+UNICODEMAP_ENABLE = yes
+LEADER_ENABLE = yes
diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.c b/keyboards/keychron/q1/rev_0102/rev_0102.c
index e8a2c85ae3..f1468d1094 100644
--- a/keyboards/keychron/q1/rev_0102/rev_0102.c
+++ b/keyboards/keychron/q1/rev_0102/rev_0102.c
@@ -16,7 +16,7 @@
#include "quantum.h"
-
+#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
@@ -141,3 +141,4 @@ led_config_t g_led_config = {
}
};
+#endif
diff --git a/keyboards/keychron/q1/rev_0102/rules.mk b/keyboards/keychron/q1/rev_0102/rules.mk
index 978cae719e..cae73214ae 100644
--- a/keyboards/keychron/q1/rev_0102/rules.mk
+++ b/keyboards/keychron/q1/rev_0102/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keychron/q2/chconf.h b/keyboards/keychron/q2/chconf.h
new file mode 100644
index 0000000000..cbbae31079
--- /dev/null
+++ b/keyboards/keychron/q2/chconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h
new file mode 100644
index 0000000000..d019bcee15
--- /dev/null
+++ b/keyboards/keychron/q2/config.h
@@ -0,0 +1,121 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3434
+#define MANUFACTURER Keychron
+#define PRODUCT Keychron Q2
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, H3 }
+
+#define MATRIX_UNSELECT_DRIVE_HIGH
+
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 0b1110100
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+
+/* Disable DIP switch in matrix data */
+#define MATRIX_MASKED
+
+/* NKRO */
+#define FORCE_NKRO
+
+/* turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Use 5 dynamic keymap layers */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+/* We have 2KB EEPROM size on STM32L432 */
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047
+
+/* EEPROM Driver Configuration */
+#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100010
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Allow VIA to edit lighting */
+#ifdef VIA_ENABLE
+# define VIA_QMK_RGBLIGHT_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/halconf.h b/keyboards/keychron/q2/halconf.h
new file mode 100644
index 0000000000..41bddcb279
--- /dev/null
+++ b/keyboards/keychron/q2/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/keychron/q2/mcuconf.h b/keyboards/keychron/q2/mcuconf.h
new file mode 100644
index 0000000000..0ca8c64850
--- /dev/null
+++ b/keyboards/keychron/q2/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/q2/q2.c b/keyboards/keychron/q2/q2.c
new file mode 100644
index 0000000000..03d1ee7db5
--- /dev/null
+++ b/keyboards/keychron/q2/q2.c
@@ -0,0 +1,33 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "q2.h"
+
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
+bool dip_switch_update_kb(uint8_t index, bool active) {
+ if (!dip_switch_update_user(index, active)) { return false;}
+ if (index == 0) {
+ default_layer_set(1UL << (active ? 1 : 0));
+ }
+ return true;
+}
diff --git a/keyboards/keychron/q2/q2.h b/keyboards/keychron/q2/q2.h
new file mode 100644
index 0000000000..22bd1afe8e
--- /dev/null
+++ b/keyboards/keychron/q2/q2.h
@@ -0,0 +1,29 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_keychron_q2_rev_0110)
+# include "rev_0110.h"
+#elif defined(KEYBOARD_keychron_q2_rev_0111)
+# include "rev_0111.h"
+#elif defined(KEYBOARD_keychron_q2_rev_0112)
+# include "rev_0112.h"
+#elif defined(KEYBOARD_keychron_q2_rev_0113)
+# include "rev_0113.h"
+#endif
diff --git a/keyboards/keychron/q2/readme.md b/keyboards/keychron/q2/readme.md
new file mode 100644
index 0000000000..bdceb98d48
--- /dev/null
+++ b/keyboards/keychron/q2/readme.md
@@ -0,0 +1,19 @@
+# Keychron Q2
+
+A customizable 65% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron Q2
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/q2/rev_0110:default
+
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+
+ make keychron/q2/rev_0110:default:flash
+
+**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/keychron/q2/rev_0110/config.h b/keyboards/keychron/q2/rev_0110/config.h
new file mode 100644
index 0000000000..e41857d9b2
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0110
+#define DEVICE_VER 0x0100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 34
+#define DRIVER_2_LED_TOTAL 33
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/keychron/q2/rev_0110/info.json b/keyboards/keychron/q2/rev_0110/info.json
new file mode 100644
index 0000000000..fb34a2427a
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Keychron Q2",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "layouts": {
+ "LAYOUT_ansi_67": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.25},
+ {"label":"1!", "x":1, "y":0.25},
+ {"label":"2@", "x":2, "y":0.25},
+ {"label":"3#", "x":3, "y":0.25},
+ {"label":"4$", "x":4, "y":0.25},
+ {"label":"5%", "x":5, "y":0.25},
+ {"label":"6^", "x":6, "y":0.25},
+ {"label":"7&", "x":7, "y":0.25},
+ {"label":"8*", "x":8, "y":0.25},
+ {"label":"9(", "x":9, "y":0.25},
+ {"label":"0)", "x":10, "y":0.25},
+ {"label":"-_", "x":11, "y":0.25},
+ {"label":"=+", "x":12, "y":0.25},
+ {"label":"Backspace", "x":13, "y":0.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.25},
+ {"label":"W", "x":2.5, "y":1.25},
+ {"label":"E", "x":3.5, "y":1.25},
+ {"label":"R", "x":4.5, "y":1.25},
+ {"label":"T", "x":5.5, "y":1.25},
+ {"label":"Y", "x":6.5, "y":1.25},
+ {"label":"U", "x":7.5, "y":1.25},
+ {"label":"I", "x":8.5, "y":1.25},
+ {"label":"O", "x":9.5, "y":1.25},
+ {"label":"P", "x":10.5, "y":1.25},
+ {"label":"[{", "x":11.5, "y":1.25},
+ {"label":"]}", "x":12.5, "y":1.25},
+ {"label":"\\|", "x":13.5, "y":1.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":1.25},
+
+ {"label":"Caps Lock", "x":0, "y":2.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.25},
+ {"label":"S", "x":2.75, "y":2.25},
+ {"label":"D", "x":3.75, "y":2.25},
+ {"label":"F", "x":4.75, "y":2.25},
+ {"label":"G", "x":5.75, "y":2.25},
+ {"label":"H", "x":6.75, "y":2.25},
+ {"label":"J", "x":7.75, "y":2.25},
+ {"label":"K", "x":8.75, "y":2.25},
+ {"label":"L", "x":9.75, "y":2.25},
+ {"label":";:", "x":10.75, "y":2.25},
+ {"label":"'\"", "x":11.75, "y":2.25},
+ {"label":"Enter", "x":12.75, "y":2.25, "w":2.25},
+ {"label":"Home", "x":15.25, "y":2.25},
+
+ {"label":"Shift", "x":0, "y":3.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3.25},
+ {"label":"X", "x":3.25, "y":3.25},
+ {"label":"C", "x":4.25, "y":3.25},
+ {"label":"V", "x":5.25, "y":3.25},
+ {"label":"B", "x":6.25, "y":3.25},
+ {"label":"N", "x":7.25, "y":3.25},
+ {"label":"M", "x":8.25, "y":3.25},
+ {"label":",<", "x":9.25, "y":3.25},
+ {"label":".>", "x":10.25, "y":3.25},
+ {"label":"/?", "x":11.25, "y":3.25},
+ {"label":"Shift", "x":12.25, "y":3.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":3.5},
+
+ {"label":"Ctrl", "x":0, "y":4.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.25},
+ {"label":"Fn1", "x":11, "y":4.25},
+ {"label":"Fn2", "x":12, "y":4.25},
+ {"label":"Left", "x":13.25, "y":4.5},
+ {"label":"Down", "x":14.25, "y":4.5},
+ {"label":"Right", "x":15.25, "y":4.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0110/keymaps/default/keymap.c b/keyboards/keychron/q2/rev_0110/keymaps/default/keymap.c
new file mode 100644
index 0000000000..429157eef2
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_ansi_67(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0110/keymaps/via/keymap.c b/keyboards/keychron/q2/rev_0110/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b23c92e95e
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/keymaps/via/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_ansi_67(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0110/keymaps/via/rules.mk b/keyboards/keychron/q2/rev_0110/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q2/rev_0110/readme.md b/keyboards/keychron/q2/rev_0110/readme.md
new file mode 100644
index 0000000000..d3134cedb5
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/rev_0110/rev_0110.c b/keyboards/keychron/q2/rev_0110/rev_0110.c
new file mode 100644
index 0000000000..fe52490177
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/rev_0110.c
@@ -0,0 +1,123 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+/* Refer to CKLED manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_2, A_2, B_2},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_14, G_14, H_14},
+ {1, I_16, G_16, H_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16},
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
+ { 44, NO_LED, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, NO_LED, 55, 56 },
+ { 57, 58, 59, NO_LED, NO_LED, NO_LED, 60, NO_LED, NO_LED, NO_LED, 61, 62, 63, 64, 66 },
+ },
+ {
+ {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {224, 0},
+ {0,16}, {15,16}, {30,16}, {45,16}, {60,16}, {75,16}, {90,16}, {105,16}, {120,16}, {135,16}, {150,16}, {165,16}, {180,16}, {195,16}, {224,16},
+ {0,32}, {15,32}, {30,32}, {45,32}, {60,32}, {75,32}, {90,32}, {105,32}, {120,32}, {135,32}, {150,32}, {165,32}, {195,32}, {224,32},
+ {0,48}, {30,48}, {45,48}, {60,48}, {75,48}, {90,48}, {105,48}, {120,48}, {135,48}, {150,48}, {165,48}, {180,48}, {210,48},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+#endif
diff --git a/keyboards/keychron/q2/rev_0110/rev_0110.h b/keyboards/keychron/q2/rev_0110/rev_0110.h
new file mode 100644
index 0000000000..669a79d310
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/rev_0110.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_ansi_67( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E,\
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
diff --git a/keyboards/keychron/q2/rev_0110/rules.mk b/keyboards/keychron/q2/rev_0110/rules.mk
new file mode 100644
index 0000000000..957680ab11
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0110/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32L433
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+EEPROM_DRIVER = i2c
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q2/rev_0111/config.h b/keyboards/keychron/q2/rev_0111/config.h
new file mode 100644
index 0000000000..76cd5d0e78
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/config.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0111
+#define DEVICE_VER 0x0100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 34
+#define DRIVER_2_LED_TOTAL 33
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Encoder used pins */
+#define ENCODERS_PAD_A { A10 }
+#define ENCODERS_PAD_B { B5 }
+
+/* Specifies the number of pulses the encoder registers between each detent */
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/keychron/q2/rev_0111/info.json b/keyboards/keychron/q2/rev_0111/info.json
new file mode 100644
index 0000000000..f6ce1d9b27
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/info.json
@@ -0,0 +1,159 @@
+{
+ "keyboard_name": "Keychron Q2",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "layouts": {
+ "LAYOUT_ansi_67": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.25},
+ {"label":"1!", "x":1, "y":0.25},
+ {"label":"2@", "x":2, "y":0.25},
+ {"label":"3#", "x":3, "y":0.25},
+ {"label":"4$", "x":4, "y":0.25},
+ {"label":"5%", "x":5, "y":0.25},
+ {"label":"6^", "x":6, "y":0.25},
+ {"label":"7&", "x":7, "y":0.25},
+ {"label":"8*", "x":8, "y":0.25},
+ {"label":"9(", "x":9, "y":0.25},
+ {"label":"0)", "x":10, "y":0.25},
+ {"label":"-_", "x":11, "y":0.25},
+ {"label":"=+", "x":12, "y":0.25},
+ {"label":"Backspace", "x":13, "y":0.25, "w":2},
+ {"label":"Mute", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.25},
+ {"label":"W", "x":2.5, "y":1.25},
+ {"label":"E", "x":3.5, "y":1.25},
+ {"label":"R", "x":4.5, "y":1.25},
+ {"label":"T", "x":5.5, "y":1.25},
+ {"label":"Y", "x":6.5, "y":1.25},
+ {"label":"U", "x":7.5, "y":1.25},
+ {"label":"I", "x":8.5, "y":1.25},
+ {"label":"O", "x":9.5, "y":1.25},
+ {"label":"P", "x":10.5, "y":1.25},
+ {"label":"[{", "x":11.5, "y":1.25},
+ {"label":"]}", "x":12.5, "y":1.25},
+ {"label":"\\|", "x":13.5, "y":1.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":1.25},
+
+ {"label":"Caps Lock", "x":0, "y":2.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.25},
+ {"label":"S", "x":2.75, "y":2.25},
+ {"label":"D", "x":3.75, "y":2.25},
+ {"label":"F", "x":4.75, "y":2.25},
+ {"label":"G", "x":5.75, "y":2.25},
+ {"label":"H", "x":6.75, "y":2.25},
+ {"label":"J", "x":7.75, "y":2.25},
+ {"label":"K", "x":8.75, "y":2.25},
+ {"label":"L", "x":9.75, "y":2.25},
+ {"label":";:", "x":10.75, "y":2.25},
+ {"label":"'\"", "x":11.75, "y":2.25},
+ {"label":"Enter", "x":12.75, "y":2.25, "w":2.25},
+ {"label":"Home", "x":15.25, "y":2.25},
+
+ {"label":"Shift", "x":0, "y":3.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3.25},
+ {"label":"X", "x":3.25, "y":3.25},
+ {"label":"C", "x":4.25, "y":3.25},
+ {"label":"V", "x":5.25, "y":3.25},
+ {"label":"B", "x":6.25, "y":3.25},
+ {"label":"N", "x":7.25, "y":3.25},
+ {"label":"M", "x":8.25, "y":3.25},
+ {"label":",<", "x":9.25, "y":3.25},
+ {"label":".>", "x":10.25, "y":3.25},
+ {"label":"/?", "x":11.25, "y":3.25},
+ {"label":"Shift", "x":12.25, "y":3.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":3.5},
+
+ {"label":"Ctrl", "x":0, "y":4.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.25},
+ {"label":"Fn1", "x":11, "y":4.25},
+ {"label":"Fn2", "x":12, "y":4.25},
+ {"label":"Left", "x":13.25, "y":4.5},
+ {"label":"Down", "x":14.25, "y":4.5},
+ {"label":"Right", "x":15.25, "y":4.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.75},
+ {"label":"1!", "x":1, "y":0.75},
+ {"label":"2@", "x":2, "y":0.75},
+ {"label":"3#", "x":3, "y":0.75},
+ {"label":"4$", "x":4, "y":0.75},
+ {"label":"5%", "x":5, "y":0.75},
+ {"label":"6^", "x":6, "y":0.75},
+ {"label":"7&", "x":7, "y":0.75},
+ {"label":"8*", "x":8, "y":0.75},
+ {"label":"9(", "x":9, "y":0.75},
+ {"label":"0)", "x":10, "y":0.75},
+ {"label":"-_", "x":11, "y":0.75},
+ {"label":"=+", "x":12, "y":0.75},
+ {"label":"Backspace", "x":13, "y":0.75, "w":2},
+ {"label":"CCW", "x":15.15, "y":0, "w":0.6, "h":0.5},
+ {"label":"Mute", "x":15.25, "y":0.5},
+ {"label":"CW", "x":15.75, "y":0, "w":0.6, "h":0.5},
+
+ {"label":"Tab", "x":0, "y":1.75, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.75},
+ {"label":"W", "x":2.5, "y":1.75},
+ {"label":"E", "x":3.5, "y":1.75},
+ {"label":"R", "x":4.5, "y":1.75},
+ {"label":"T", "x":5.5, "y":1.75},
+ {"label":"Y", "x":6.5, "y":1.75},
+ {"label":"U", "x":7.5, "y":1.75},
+ {"label":"I", "x":8.5, "y":1.75},
+ {"label":"O", "x":9.5, "y":1.75},
+ {"label":"P", "x":10.5, "y":1.75},
+ {"label":"[{", "x":11.5, "y":1.75},
+ {"label":"]}", "x":12.5, "y":1.75},
+ {"label":"\\|", "x":13.5, "y":1.75, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":1.75},
+
+ {"label":"Caps Lock", "x":0, "y":2.75, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.75},
+ {"label":"S", "x":2.75, "y":2.75},
+ {"label":"D", "x":3.75, "y":2.75},
+ {"label":"F", "x":4.75, "y":2.75},
+ {"label":"G", "x":5.75, "y":2.75},
+ {"label":"H", "x":6.75, "y":2.75},
+ {"label":"J", "x":7.75, "y":2.75},
+ {"label":"K", "x":8.75, "y":2.75},
+ {"label":"L", "x":9.75, "y":2.75},
+ {"label":";:", "x":10.75, "y":2.75},
+ {"label":"'\"", "x":11.75, "y":2.75},
+ {"label":"Enter", "x":12.75, "y":2.75, "w":2.25},
+ {"label":"Home", "x":15.25, "y":2.75},
+
+ {"label":"Shift", "x":0, "y":3.75, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3.75},
+ {"label":"X", "x":3.25, "y":3.75},
+ {"label":"C", "x":4.25, "y":3.75},
+ {"label":"V", "x":5.25, "y":3.75},
+ {"label":"B", "x":6.25, "y":3.75},
+ {"label":"N", "x":7.25, "y":3.75},
+ {"label":"M", "x":8.25, "y":3.75},
+ {"label":",<", "x":9.25, "y":3.75},
+ {"label":".>", "x":10.25, "y":3.75},
+ {"label":"/?", "x":11.25, "y":3.75},
+ {"label":"Shift", "x":12.25, "y":3.75, "w":1.75},
+ {"label":"Up", "x":14.25, "y":4},
+
+ {"label":"Ctrl", "x":0, "y":4.75, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.75, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.75, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.75, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.75},
+ {"label":"Fn1", "x":11, "y":4.75},
+ {"label":"Fn2", "x":12, "y":4.75},
+ {"label":"Left", "x":13.25, "y":5},
+ {"label":"Down", "x":14.25, "y":5},
+ {"label":"Right", "x":15.25, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0111/keymaps/default/keymap.c b/keyboards/keychron/q2/rev_0111/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f5a0667601
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_ansi_67(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_ansi_67(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0111/keymaps/via/keymap.c b/keyboards/keychron/q2/rev_0111/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a22143eb02
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/keymaps/via/keymap.c
@@ -0,0 +1,154 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_all(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_all(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_all(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+
+#define ENCODERS 1
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{ 8, 4 }};
+static keypos_t encoder_ccw[ENCODERS] = {{ 7, 4 }};
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void encoder_action_unregister(void) {
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
+};
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0111/keymaps/via/rules.mk b/keyboards/keychron/q2/rev_0111/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q2/rev_0111/readme.md b/keyboards/keychron/q2/rev_0111/readme.md
new file mode 100644
index 0000000000..2bb5d3bca8
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q2 and support encoder
+
+- Enable EC11 rotary encoder
+- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
+- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/rev_0111/rev_0111.c b/keyboards/keychron/q2/rev_0111/rev_0111.c
new file mode 100644
index 0000000000..cbadafc458
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/rev_0111.c
@@ -0,0 +1,137 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+/* Refer to CKLED manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_2, A_2, B_2},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_14, G_14, H_14},
+ {1, I_16, G_16, H_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16},
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
+ { 44, NO_LED, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, NO_LED, 55, 56 },
+ { 57, 58, 59, NO_LED, NO_LED, NO_LED, 60, NO_LED, NO_LED, NO_LED, 61, 62, 63, 64, 66 },
+ },
+ {
+ {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {224, 0},
+ {0,16}, {15,16}, {30,16}, {45,16}, {60,16}, {75,16}, {90,16}, {105,16}, {120,16}, {135,16}, {150,16}, {165,16}, {180,16}, {195,16}, {224,16},
+ {0,32}, {15,32}, {30,32}, {45,32}, {60,32}, {75,32}, {90,32}, {105,32}, {120,32}, {135,32}, {150,32}, {165,32}, {195,32}, {224,32},
+ {0,48}, {30,48}, {45,48}, {60,48}, {75,48}, {90,48}, {105,48}, {120,48}, {135,48}, {150,48}, {165,48}, {180,48}, {210,48},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/keychron/q2/rev_0111/rev_0111.h b/keyboards/keychron/q2/rev_0111/rev_0111.h
new file mode 100644
index 0000000000..5033db61fc
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/rev_0111.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K47, K0E, K48, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E,\
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, K47, K48, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
+#define LAYOUT_ansi_67( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E,\
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
diff --git a/keyboards/keychron/q2/rev_0111/rules.mk b/keyboards/keychron/q2/rev_0111/rules.mk
new file mode 100644
index 0000000000..3b931ef9fe
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0111/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32L433
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+EEPROM_DRIVER = i2c
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q2/rev_0112/config.h b/keyboards/keychron/q2/rev_0112/config.h
new file mode 100644
index 0000000000..70a60fd026
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0112
+#define DEVICE_VER 0x0100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 34
+#define DRIVER_2_LED_TOTAL 34
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/keychron/q2/rev_0112/info.json b/keyboards/keychron/q2/rev_0112/info.json
new file mode 100644
index 0000000000..5f0d4ab249
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Keychron Q2",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "layouts": {
+ "LAYOUT_iso_68": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.25},
+ {"label":"1!", "x":1, "y":0.25},
+ {"label":"2\"", "x":2, "y":0.25},
+ {"label":"3\u00a3", "x":3, "y":0.25},
+ {"label":"4$", "x":4, "y":0.25},
+ {"label":"5%", "x":5, "y":0.25},
+ {"label":"6^", "x":6, "y":0.25},
+ {"label":"7&", "x":7, "y":0.25},
+ {"label":"8*", "x":8, "y":0.25},
+ {"label":"9(", "x":9, "y":0.25},
+ {"label":"0)", "x":10, "y":0.25},
+ {"label":"-_", "x":11, "y":0.25},
+ {"label":"=+", "x":12, "y":0.25},
+ {"label":"Backspace", "x":13, "y":0.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.25},
+ {"label":"W", "x":2.5, "y":1.25},
+ {"label":"E", "x":3.5, "y":1.25},
+ {"label":"R", "x":4.5, "y":1.25},
+ {"label":"T", "x":5.5, "y":1.25},
+ {"label":"Y", "x":6.5, "y":1.25},
+ {"label":"U", "x":7.5, "y":1.25},
+ {"label":"I", "x":8.5, "y":1.25},
+ {"label":"O", "x":9.5, "y":1.25},
+ {"label":"P", "x":10.5, "y":1.25},
+ {"label":"[{", "x":11.5, "y":1.25},
+ {"label":"]}", "x":12.5, "y":1.25},
+ {"label":"Delete", "x":15.25, "y":1.25},
+
+ {"label":"Caps Lock", "x":0, "y":2.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.25},
+ {"label":"S", "x":2.75, "y":2.25},
+ {"label":"D", "x":3.75, "y":2.25},
+ {"label":"F", "x":4.75, "y":2.25},
+ {"label":"G", "x":5.75, "y":2.25},
+ {"label":"H", "x":6.75, "y":2.25},
+ {"label":"J", "x":7.75, "y":2.25},
+ {"label":"K", "x":8.75, "y":2.25},
+ {"label":"L", "x":9.75, "y":2.25},
+ {"label":";:", "x":10.75, "y":2.25},
+ {"label":"'@", "x":11.75, "y":2.25},
+ {"label":"#~", "x":12.75, "y":2.25},
+ {"label":"Enter", "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"label":"Home", "x":15.25, "y":2.25},
+
+ {"label":"Shift", "x":0, "y":3.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3.25},
+ {"label":"Z", "x":2.25, "y":3.25},
+ {"label":"X", "x":3.25, "y":3.25},
+ {"label":"C", "x":4.25, "y":3.25},
+ {"label":"V", "x":5.25, "y":3.25},
+ {"label":"B", "x":6.25, "y":3.25},
+ {"label":"N", "x":7.25, "y":3.25},
+ {"label":"M", "x":8.25, "y":3.25},
+ {"label":",<", "x":9.25, "y":3.25},
+ {"label":".>", "x":10.25, "y":3.25},
+ {"label":"/?", "x":11.25, "y":3.25},
+ {"label":"Shift", "x":12.25, "y":3.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":3.5},
+
+ {"label":"Ctrl", "x":0, "y":4.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.25},
+ {"label":"Fn1", "x":11, "y":4.25},
+ {"label":"Fn2", "x":12, "y":4.25},
+ {"label":"Left", "x":13.25, "y":4.5},
+ {"label":"Down", "x":14.25, "y":4.5},
+ {"label":"Right", "x":15.25, "y":4.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0112/keymaps/default/keymap.c b/keyboards/keychron/q2/rev_0112/keymaps/default/keymap.c
new file mode 100644
index 0000000000..75667b44c8
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_F3, KC_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_iso_68(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0112/keymaps/via/keymap.c b/keyboards/keychron/q2/rev_0112/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0a91857f1e
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/keymaps/via/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_F3, KC_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_iso_68(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0112/keymaps/via/rules.mk b/keyboards/keychron/q2/rev_0112/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q2/rev_0112/readme.md b/keyboards/keychron/q2/rev_0112/readme.md
new file mode 100644
index 0000000000..29404e03ca
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/rev_0112/rev_0112.c b/keyboards/keychron/q2/rev_0112/rev_0112.c
new file mode 100644
index 0000000000..b994679725
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/rev_0112.c
@@ -0,0 +1,124 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_2, A_2, B_2},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_14, G_14, H_14},
+ {0, F_14, D_14, E_14},
+ {1, I_16, G_16, H_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
+ { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 41, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 },
+ { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 67 }
+ },
+ {
+ {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {224, 0},
+ {0,16}, {15,16}, {30,16}, {45,16}, {60,16}, {75,16}, {90,16}, {105,16}, {120,16}, {135,16}, {150,16}, {165,16}, {180,16}, {224,16},
+ {0,32}, {15,32}, {30,32}, {45,32}, {60,32}, {75,32}, {90,32}, {105,32}, {120,32}, {135,32}, {150,32}, {165,32}, {180,32}, {195,16}, {224,32},
+ {0,48}, {15,48}, {30,48}, {45,48}, {60,48}, {75,48}, {90,48}, {105,48}, {120,48}, {135,48}, {150,48}, {165,48}, {180,48}, {210,48},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ }
+};
+#endif
diff --git a/keyboards/keychron/q2/rev_0112/rev_0112.h b/keyboards/keychron/q2/rev_0112/rev_0112.h
new file mode 100644
index 0000000000..2ab66fb847
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/rev_0112.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_iso_68( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K1D, K2E,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
+
diff --git a/keyboards/keychron/q2/rev_0112/rules.mk b/keyboards/keychron/q2/rev_0112/rules.mk
new file mode 100644
index 0000000000..957680ab11
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0112/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32L433
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+EEPROM_DRIVER = i2c
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q2/rev_0113/config.h b/keyboards/keychron/q2/rev_0113/config.h
new file mode 100644
index 0000000000..92b9c2e364
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/config.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0113
+#define DEVICE_VER 0x0100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 34
+#define DRIVER_2_LED_TOTAL 34
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Encoder used pins */
+#define ENCODERS_PAD_A { A10 }
+#define ENCODERS_PAD_B { B5 }
+
+/* Specifies the number of pulses the encoder registers between each detent */
+#define ENCODER_RESOLUTION 2
diff --git a/keyboards/keychron/q2/rev_0113/info.json b/keyboards/keychron/q2/rev_0113/info.json
new file mode 100644
index 0000000000..151f42455d
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/info.json
@@ -0,0 +1,161 @@
+{
+ "keyboard_name": "Keychron Q2",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "layouts": {
+ "LAYOUT_iso_68": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.25},
+ {"label":"1!", "x":1, "y":0.25},
+ {"label":"2\"", "x":2, "y":0.25},
+ {"label":"3\u00a3", "x":3, "y":0.25},
+ {"label":"4$", "x":4, "y":0.25},
+ {"label":"5%", "x":5, "y":0.25},
+ {"label":"6^", "x":6, "y":0.25},
+ {"label":"7&", "x":7, "y":0.25},
+ {"label":"8*", "x":8, "y":0.25},
+ {"label":"9(", "x":9, "y":0.25},
+ {"label":"0)", "x":10, "y":0.25},
+ {"label":"-_", "x":11, "y":0.25},
+ {"label":"=+", "x":12, "y":0.25},
+ {"label":"Backspace", "x":13, "y":0.25, "w":2},
+ {"label":"Mute", "x":15.25, "y":0},
+
+ {"label":"Tab", "x":0, "y":1.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.25},
+ {"label":"W", "x":2.5, "y":1.25},
+ {"label":"E", "x":3.5, "y":1.25},
+ {"label":"R", "x":4.5, "y":1.25},
+ {"label":"T", "x":5.5, "y":1.25},
+ {"label":"Y", "x":6.5, "y":1.25},
+ {"label":"U", "x":7.5, "y":1.25},
+ {"label":"I", "x":8.5, "y":1.25},
+ {"label":"O", "x":9.5, "y":1.25},
+ {"label":"P", "x":10.5, "y":1.25},
+ {"label":"[{", "x":11.5, "y":1.25},
+ {"label":"]}", "x":12.5, "y":1.25},
+ {"label":"Delete", "x":15.25, "y":1.25},
+
+ {"label":"Caps Lock", "x":0, "y":2.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.25},
+ {"label":"S", "x":2.75, "y":2.25},
+ {"label":"D", "x":3.75, "y":2.25},
+ {"label":"F", "x":4.75, "y":2.25},
+ {"label":"G", "x":5.75, "y":2.25},
+ {"label":"H", "x":6.75, "y":2.25},
+ {"label":"J", "x":7.75, "y":2.25},
+ {"label":"K", "x":8.75, "y":2.25},
+ {"label":"L", "x":9.75, "y":2.25},
+ {"label":";:", "x":10.75, "y":2.25},
+ {"label":"'@", "x":11.75, "y":2.25},
+ {"label":"#~", "x":12.75, "y":2.25},
+ {"label":"Enter", "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"label":"Home", "x":15.25, "y":2.25},
+
+ {"label":"Shift", "x":0, "y":3.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3.25},
+ {"label":"Z", "x":2.25, "y":3.25},
+ {"label":"X", "x":3.25, "y":3.25},
+ {"label":"C", "x":4.25, "y":3.25},
+ {"label":"V", "x":5.25, "y":3.25},
+ {"label":"B", "x":6.25, "y":3.25},
+ {"label":"N", "x":7.25, "y":3.25},
+ {"label":"M", "x":8.25, "y":3.25},
+ {"label":",<", "x":9.25, "y":3.25},
+ {"label":".>", "x":10.25, "y":3.25},
+ {"label":"/?", "x":11.25, "y":3.25},
+ {"label":"Shift", "x":12.25, "y":3.25, "w":1.75},
+ {"label":"Up", "x":14.25, "y":3.5},
+
+ {"label":"Ctrl", "x":0, "y":4.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.25},
+ {"label":"Fn1", "x":11, "y":4.25},
+ {"label":"Fn2", "x":12, "y":4.25},
+ {"label":"Left", "x":13.25, "y":4.5},
+ {"label":"Down", "x":14.25, "y":4.5},
+ {"label":"Right", "x":15.25, "y":4.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0.75},
+ {"label":"1!", "x":1, "y":0.75},
+ {"label":"2\"", "x":2, "y":0.75},
+ {"label":"3\u00a3", "x":3, "y":0.75},
+ {"label":"4$", "x":4, "y":0.75},
+ {"label":"5%", "x":5, "y":0.75},
+ {"label":"6^", "x":6, "y":0.75},
+ {"label":"7&", "x":7, "y":0.75},
+ {"label":"8*", "x":8, "y":0.75},
+ {"label":"9(", "x":9, "y":0.75},
+ {"label":"0)", "x":10, "y":0.75},
+ {"label":"-_", "x":11, "y":0.75},
+ {"label":"=+", "x":12, "y":0.75},
+ {"label":"Backspace", "x":13, "y":0.75, "w":2},
+ {"label":"CCW", "x":15.15, "y":0, "w":0.6, "h":0.5},
+ {"label":"Mute", "x":15.25, "y":0.5},
+ {"label":"CW", "x":15.75, "y":0, "w":0.6, "h":0.5},
+
+ {"label":"Tab", "x":0, "y":1.75, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1.75},
+ {"label":"W", "x":2.5, "y":1.75},
+ {"label":"E", "x":3.5, "y":1.75},
+ {"label":"R", "x":4.5, "y":1.75},
+ {"label":"T", "x":5.5, "y":1.75},
+ {"label":"Y", "x":6.5, "y":1.75},
+ {"label":"U", "x":7.5, "y":1.75},
+ {"label":"I", "x":8.5, "y":1.75},
+ {"label":"O", "x":9.5, "y":1.75},
+ {"label":"P", "x":10.5, "y":1.75},
+ {"label":"[{", "x":11.5, "y":1.75},
+ {"label":"]}", "x":12.5, "y":1.75},
+ {"label":"Delete", "x":15.25, "y":1.75},
+
+ {"label":"Caps Lock", "x":0, "y":2.75, "w":1.75},
+ {"label":"A", "x":1.75, "y":2.75},
+ {"label":"S", "x":2.75, "y":2.75},
+ {"label":"D", "x":3.75, "y":2.75},
+ {"label":"F", "x":4.75, "y":2.75},
+ {"label":"G", "x":5.75, "y":2.75},
+ {"label":"H", "x":6.75, "y":2.75},
+ {"label":"J", "x":7.75, "y":2.75},
+ {"label":"K", "x":8.75, "y":2.75},
+ {"label":"L", "x":9.75, "y":2.75},
+ {"label":";:", "x":10.75, "y":2.75},
+ {"label":"'@", "x":11.75, "y":2.75},
+ {"label":"#~", "x":12.75, "y":2.75},
+ {"label":"Enter", "x":13.75, "y":1.75, "w":1.25, "h":2},
+ {"label":"Home", "x":15.25, "y":2.75},
+
+ {"label":"Shift", "x":0, "y":3.75, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3.75},
+ {"label":"Z", "x":2.25, "y":3.75},
+ {"label":"X", "x":3.25, "y":3.75},
+ {"label":"C", "x":4.25, "y":3.75},
+ {"label":"V", "x":5.25, "y":3.75},
+ {"label":"B", "x":6.25, "y":3.75},
+ {"label":"N", "x":7.25, "y":3.75},
+ {"label":"M", "x":8.25, "y":3.75},
+ {"label":",<", "x":9.25, "y":3.75},
+ {"label":".>", "x":10.25, "y":3.75},
+ {"label":"/?", "x":11.25, "y":3.75},
+ {"label":"Shift", "x":12.25, "y":3.75, "w":1.75},
+ {"label":"Up", "x":14.25, "y":4},
+
+ {"label":"Ctrl", "x":0, "y":4.75, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4.75, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4.75, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4.75, "w":6.25},
+ {"label":"Alt", "x":10, "y":4.75},
+ {"label":"Fn1", "x":11, "y":4.75},
+ {"label":"Fn2", "x":12, "y":4.75},
+ {"label":"Left", "x":13.25, "y":5},
+ {"label":"Down", "x":14.25, "y":5},
+ {"label":"Right", "x":15.25, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0113/keymaps/default/keymap.c b/keyboards/keychron/q2/rev_0113/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e3e6cf7376
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = SAFE_RANGE,
+ KC_LAUNCHPAD
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_F3, KC_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_iso_68(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_iso_68(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0113/keymaps/via/keymap.c b/keyboards/keychron/q2/rev_0113/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4e3b431bdf
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/keymaps/via/keymap.c
@@ -0,0 +1,154 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ WIN_BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+ KC_TASK,
+ KC_FLXP
+};
+
+#define KC_WAVE S(KC_GRV)
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_F3, KC_F4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = LAYOUT_all(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN2] = LAYOUT_all(
+ KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [_FN3] = LAYOUT_all(
+ KC_WAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+
+#define ENCODERS 1
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{ 8, 4 }};
+static keypos_t encoder_ccw[ENCODERS] = {{ 7, 4 }};
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void encoder_action_unregister(void) {
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
+};
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MISSION_CONTROL:
+ if (record->event.pressed) {
+ host_consumer_send(0x29F);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LAUNCHPAD:
+ if (record->event.pressed) {
+ host_consumer_send(0x2A0);
+ } else {
+ host_consumer_send(0);
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_TAB);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FLXP:
+ if (record->event.pressed) {
+ register_code(KC_LWIN);
+ register_code(KC_E);
+ } else {
+ unregister_code(KC_LWIN);
+ unregister_code(KC_E);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/keychron/q2/rev_0113/keymaps/via/rules.mk b/keyboards/keychron/q2/rev_0113/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bee21da528
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q2/rev_0113/readme.md b/keyboards/keychron/q2/rev_0113/readme.md
new file mode 100644
index 0000000000..1d808cbb73
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q2 and support encoder
+
+- Enable EC11 rotary encoder
+- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
+- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/rev_0113/rev_0113.c b/keyboards/keychron/q2/rev_0113/rev_0113.c
new file mode 100644
index 0000000000..e1d66976dd
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/rev_0113.c
@@ -0,0 +1,138 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_2, A_2, B_2},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {0, C_6, A_6, B_6},
+ {0, C_7, A_7, B_7},
+ {0, C_8, A_8, B_8},
+ {0, C_9, A_9, B_9},
+ {0, C_10, A_10, B_10},
+ {0, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_16, A_16, B_16},
+
+ {0, F_1, D_1, E_1},
+ {0, F_2, D_2, E_2},
+ {0, F_3, D_3, E_3},
+ {0, F_4, D_4, E_4},
+ {0, F_5, D_5, E_5},
+ {0, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {0, I_2, G_2, H_2},
+ {0, I_3, G_3, H_3},
+ {0, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_14, G_14, H_14},
+ {0, F_14, D_14, E_14},
+ {1, I_16, G_16, H_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
+ { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 41, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56, 57 },
+ { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 67 }
+ },
+ {
+ {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {224, 0},
+ {0,16}, {15,16}, {30,16}, {45,16}, {60,16}, {75,16}, {90,16}, {105,16}, {120,16}, {135,16}, {150,16}, {165,16}, {180,16}, {224,16},
+ {0,32}, {15,32}, {30,32}, {45,32}, {60,32}, {75,32}, {90,32}, {105,32}, {120,32}, {135,32}, {150,32}, {165,32}, {180,32}, {195,16}, {224,32},
+ {0,48}, {15,48}, {30,48}, {45,48}, {60,48}, {75,48}, {90,48}, {105,48}, {120,48}, {135,48}, {150,48}, {165,48}, {180,48}, {210,48},
+ {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}
+ },
+ {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ }
+};
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/keychron/q2/rev_0113/rev_0113.h b/keyboards/keychron/q2/rev_0113/rev_0113.h
new file mode 100644
index 0000000000..3b0b2d3377
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/rev_0113.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K47, K0E, K48,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K1D, K2E,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, K47, K48, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
+#define LAYOUT_iso_68( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E,\
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K1D, K2E,\
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K2C, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, } \
+}
diff --git a/keyboards/keychron/q2/rev_0113/rules.mk b/keyboards/keychron/q2/rev_0113/rules.mk
new file mode 100644
index 0000000000..3b931ef9fe
--- /dev/null
+++ b/keyboards/keychron/q2/rev_0113/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32L433
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+EEPROM_DRIVER = i2c
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keyhive/maypad/keymaps/default/config.h b/keyboards/keyhive/maypad/keymaps/default/config.h
deleted file mode 100644
index 867ac3066f..0000000000
--- a/keyboards/keyhive/maypad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 codybender
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/keyhive/maypad/rules.mk b/keyboards/keyhive/maypad/rules.mk
index d3f521e4d9..dac8a75963 100644
--- a/keyboards/keyhive/maypad/rules.mk
+++ b/keyboards/keyhive/maypad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keyprez/bison/rules.mk b/keyboards/keyprez/bison/rules.mk
index 6c618dc256..710c90186d 100644
--- a/keyboards/keyprez/bison/rules.mk
+++ b/keyboards/keyprez/bison/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keyprez/corgi/rules.mk b/keyboards/keyprez/corgi/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/keyprez/corgi/rules.mk
+++ b/keyboards/keyprez/corgi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/keyprez/rhino/rules.mk b/keyboards/keyprez/rhino/rules.mk
index bd2c664b52..9a6162bb47 100644
--- a/keyboards/keyprez/rhino/rules.mk
+++ b/keyboards/keyprez/rhino/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/keyprez/unicorn/config.h b/keyboards/keyprez/unicorn/config.h
new file mode 100644
index 0000000000..fcfc6fe926
--- /dev/null
+++ b/keyboards/keyprez/unicorn/config.h
@@ -0,0 +1,148 @@
+// Copyright 2022 Keyprez (https://github.com/keyprez)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6B7A
+#define PRODUCT_ID 0x7563
+#define DEVICE_VER 0x0001
+#define MANUFACTURER keyprez
+#define PRODUCT unicorn
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MASTER_RIGHT
+#define MATRIX_ROW_PINS { F4, D3, F6, F7, B1, B3 }
+#define MATRIX_COL_PINS { F5, B2, B5, D7, B4, B6, E6, D4 }
+#define MATRIX_ROW_PINS_RIGHT { F4, B2, F6, F7, B1, B3 }
+#define MATRIX_COL_PINS_RIGHT { F5, D3, B5, D7, B4, B6, E6, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D4 }
+#define ENCODER_RESOLUTIONS { 4 }
+#define ENCODERS_PAD_A_RIGHT { D2 }
+#define ENCODERS_PAD_B_RIGHT { D4 }
+#define ENCODER_RESOLUTIONS_RIGHT {4}
diff --git a/keyboards/keyprez/unicorn/info.json b/keyboards/keyprez/unicorn/info.json
new file mode 100644
index 0000000000..ff14396f2a
--- /dev/null
+++ b/keyboards/keyprez/unicorn/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "Unicorn",
+ "url": "",
+ "maintainer": "Keyprez",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"|\u00a7", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4\u00a4", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6&", "x":6, "y":0},
+ {"label":"7/", "x":8, "y":0},
+ {"label":"8(", "x":9, "y":0},
+ {"label":"9)", "x":10, "y":0},
+ {"label":"0=", "x":11, "y":0},
+ {"label":"+?", "x":12, "y":0},
+ {"label":"\\`", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0, "w":2},
+ {"label":"Home", "x":16, "y":0},
+ {"label":"Rotary", "x":17, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":7.5, "y":1},
+ {"label":"U", "x":8.5, "y":1},
+ {"label":"I", "x":9.5, "y":1},
+ {"label":"O", "x":10.5, "y":1},
+ {"label":"P", "x":11.5, "y":1},
+ {"label":"\u00c5", "x":12.5, "y":1},
+ {"label":"\u00a8\u005e", "x":13.5, "y":1},
+ {"label":"End", "x":16, "y":1},
+ {"label":"Delete", "x":17, "y":1},
+
+ {"label":"Esc", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":7.75, "y":2},
+ {"label":"J", "x":8.75, "y":2},
+ {"label":"K", "x":9.75, "y":2},
+ {"label":"L", "x":10.75, "y":2},
+ {"label":"\u00d8", "x":11.75, "y":2},
+ {"label":"\u00c6", "x":12.75, "y":2},
+ {"label":"'*", "x":13.75, "y":2},
+ {"label":"Enter", "x":14.75, "y":1, "w":1.25, "h":2},
+ {"label":"PgUp", "x":16, "y":2},
+ {"label":"Insert", "x":17, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"<>", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":8.25, "y":3},
+ {"label":"M", "x":9.25, "y":3},
+ {"label":",;", "x":10.25, "y":3},
+ {"label":".:", "x":11.25, "y":3},
+ {"label":"-_", "x":12.25, "y":3},
+ {"label":"Shift", "x":13.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":15, "y":3},
+ {"label":"PgDn", "x":16, "y":3},
+ {"label":"Copy", "x":17, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":8.25, "y":4, "w":2.75},
+ {"label":"AltGr", "x":11, "y":4},
+ {"label":"Mod", "x":12, "y":4},
+ {"label":"Ctrl", "x":13, "y":4},
+ {"label":"\u2190", "x":14, "y":4},
+ {"label":"\u2193", "x":15, "y":4},
+ {"label":"\u2192", "x":16, "y":4},
+ {"label":"Paste", "x":17, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keyprez/unicorn/keymaps/default/keymap.c b/keyboards/keyprez/unicorn/keymaps/default/keymap.c
new file mode 100644
index 0000000000..14a22167f4
--- /dev/null
+++ b/keyboards/keyprez/unicorn/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+// Copyright 2022 Keyprez (https://github.com/keyprez)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+#define FN MO(_FN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, KC_INSERT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_COPY,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PASTE
+ ),
+
+ [_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/keyprez/unicorn/keymaps/default/readme.md b/keyboards/keyprez/unicorn/keymaps/default/readme.md
new file mode 100644
index 0000000000..f3e626cc76
--- /dev/null
+++ b/keyboards/keyprez/unicorn/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for unicorn
diff --git a/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c b/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c
new file mode 100644
index 0000000000..f66e5670b0
--- /dev/null
+++ b/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c
@@ -0,0 +1,33 @@
+// Copyright 2022 Keyprez (https://github.com/keyprez)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN,
+ _CMD
+};
+
+#define FN MO(_FN)
+#define CMD MO(_CMD)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, KC_INSERT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_COPY,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, FN, KC_SPC, KC_RALT, FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PASTE
+ ),
+
+ [_FN] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC
+ ),
+};
+
diff --git a/keyboards/keyprez/unicorn/keymaps/jorge/readme.md b/keyboards/keyprez/unicorn/keymaps/jorge/readme.md
new file mode 100644
index 0000000000..f3e626cc76
--- /dev/null
+++ b/keyboards/keyprez/unicorn/keymaps/jorge/readme.md
@@ -0,0 +1 @@
+# The default keymap for unicorn
diff --git a/keyboards/keyprez/unicorn/readme.md b/keyboards/keyprez/unicorn/readme.md
new file mode 100644
index 0000000000..2db5de362d
--- /dev/null
+++ b/keyboards/keyprez/unicorn/readme.md
@@ -0,0 +1,25 @@
+# Unicorn
+
+Unicorn is a split 65% keyboard with an extra column on the right side.
+It has support for optional hot swap sockets and a rotary encoder on the right side.
+
+* Keyboard Maintainer: [Keyprez](https://github.com/keyprez)
+* Hardware Supported: *Pro micro compatible controllers*
+* Hardware Availability: *TBA*
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keyprez/unicorn:default
+
+Flashing example for this keyboard:
+
+ make keyprez/unicorns:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the Enter key while holding down the right fn key
diff --git a/keyboards/keyprez/unicorn/rules.mk b/keyboards/keyprez/unicorn/rules.mk
new file mode 100644
index 0000000000..b529cf6456
--- /dev/null
+++ b/keyboards/keyprez/unicorn/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/keyprez/unicorn/unicorn.c b/keyboards/keyprez/unicorn/unicorn.c
new file mode 100644
index 0000000000..0ddd49658b
--- /dev/null
+++ b/keyboards/keyprez/unicorn/unicorn.c
@@ -0,0 +1,18 @@
+// Copyright 2022 Keyprez (https://github.com/keyprez)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "unicorn.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/keyprez/unicorn/unicorn.h b/keyboards/keyprez/unicorn/unicorn.h
new file mode 100644
index 0000000000..5eb036f50a
--- /dev/null
+++ b/keyboards/keyprez/unicorn/unicorn.h
@@ -0,0 +1,36 @@
+// Copyright 2022 Keyprez (https://github.com/keyprez)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
+ LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
+ LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, RC10, \
+ LD1, LD2, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD5, RD6, RD7, RD8, RD9, \
+ LE1, LE2, LE3, LE5, LE6, RE1, RE2, RE3, RE4, RE5, RE6, RE7, RE8 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6, LA7, KC_NO }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO, KC_NO }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO, KC_NO }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6, LD7, KC_NO }, \
+ { LE1, LE2, LE3, KC_NO, LE5, LE6, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8 }, \
+ { RD1, RD2, RD3, RD4, RD5, RD6, RD7, RD8 }, \
+ { RE1, RE2, RE3, RE4, RE5, RE6, RE7, RE8 }, \
+ { KC_NO, KC_NO, RA9, RB9, RB8, RC10, RC9, RD9 } \
+ }
diff --git a/keyboards/keysofkings/twokey/config.h b/keyboards/keysofkings/twokey/config.h
index 9b77fa73e2..29612187f8 100755
--- a/keyboards/keysofkings/twokey/config.h
+++ b/keyboards/keysofkings/twokey/config.h
@@ -35,10 +35,9 @@
#define UNUSED_PINS
-#define ENCODERS_PAD_A { E6 }
-#define ENCODERS_PAD_B { D7 }
+#define ENCODERS_PAD_A { D7 }
+#define ENCODERS_PAD_B { E6 }
#define ENCODER_RESOLUTION 1
-#define ENCODER_DIRECTION_FLIP
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keysofkings/twokey/rules.mk b/keyboards/keysofkings/twokey/rules.mk
index 349d9cda2d..9c634bc376 100755
--- a/keyboards/keysofkings/twokey/rules.mk
+++ b/keyboards/keysofkings/twokey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/keyten/kt60_m/config.h b/keyboards/keyten/kt60_m/config.h
new file mode 100644
index 0000000000..74378e7d23
--- /dev/null
+++ b/keyboards/keyten/kt60_m/config.h
@@ -0,0 +1,51 @@
+/*
+Copyright 2022 Ivan Gromov (@key10iq)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xEB69
+#define PRODUCT_ID 0x6001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER keyten
+#define PRODUCT kt60-M
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { C7, C6, B6, F7, F6 }
+#define MATRIX_COL_PINS { B7, F0, F1, F4, F5, D1, D2, D3, D5, D4, D6, D7, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5 \ No newline at end of file
diff --git a/keyboards/keyten/kt60_m/info.json b/keyboards/keyten/kt60_m/info.json
new file mode 100644
index 0000000000..7aa30e6251
--- /dev/null
+++ b/keyboards/keyten/kt60_m/info.json
@@ -0,0 +1,81 @@
+{
+ "keyboard_name": "kt60-M",
+ "url": "",
+ "maintainer": "key10iq",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60_tsangan_hhkb"
+ },
+ "layouts": {
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5}
+ ]
+ }
+
+ }
+}
diff --git a/keyboards/keyten/kt60_m/keymaps/default/keymap.c b/keyboards/keyten/kt60_m/keymaps/default/keymap.c
new file mode 100644
index 0000000000..594dceb624
--- /dev/null
+++ b/keyboards/keyten/kt60_m/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _MAIN,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_MAIN] = LAYOUT_60_tsangan_hhkb(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [_FN] = LAYOUT_60_tsangan_hhkb(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keyten/kt60_m/keymaps/default/readme.md b/keyboards/keyten/kt60_m/keymaps/default/readme.md
new file mode 100644
index 0000000000..821228e1c7
--- /dev/null
+++ b/keyboards/keyten/kt60_m/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for kt60-M
diff --git a/keyboards/keyten/kt60_m/keymaps/via/keymap.c b/keyboards/keyten/kt60_m/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3a9335f1d0
--- /dev/null
+++ b/keyboards/keyten/kt60_m/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_tsangan_hhkb(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_60_tsangan_hhkb(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT_60_tsangan_hhkb(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT_60_tsangan_hhkb(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keyten/kt60_m/keymaps/via/readme.md b/keyboards/keyten/kt60_m/keymaps/via/readme.md
new file mode 100644
index 0000000000..4d8109bbde
--- /dev/null
+++ b/keyboards/keyten/kt60_m/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for kt60-M
diff --git a/keyboards/keyten/kt60_m/keymaps/via/rules.mk b/keyboards/keyten/kt60_m/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/keyten/kt60_m/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keyten/kt60_m/kt60_m.c b/keyboards/keyten/kt60_m/kt60_m.c
new file mode 100644
index 0000000000..7d4f7614c8
--- /dev/null
+++ b/keyboards/keyten/kt60_m/kt60_m.c
@@ -0,0 +1,18 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "kt60_m.h" \ No newline at end of file
diff --git a/keyboards/keyten/kt60_m/kt60_m.h b/keyboards/keyten/kt60_m/kt60_m.h
new file mode 100644
index 0000000000..1298537543
--- /dev/null
+++ b/keyboards/keyten/kt60_m/kt60_m.h
@@ -0,0 +1,48 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* LAYOUT_60_tsangan_hhkb
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3c │3d │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
+ * │40 │41 │42 │46 │4a │4c │4d │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+#define LAYOUT_60_tsangan_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3c, k3d, \
+ k40, k41, k42, k46, k4a, k4c, k4d \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, XXX, k3c, k3d }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, XXX, k4c, k4d } \
+}
diff --git a/keyboards/keyten/kt60_m/readme.md b/keyboards/keyten/kt60_m/readme.md
new file mode 100644
index 0000000000..32ca32c4b5
--- /dev/null
+++ b/keyboards/keyten/kt60_m/readme.md
@@ -0,0 +1,27 @@
+# keyten kt60-M
+
+60% MX PCB with a minimum number of required layouts.
+
+![kt60-M image](https://i.imgur.com/ZAdGKmQl.jpg)
+
+* Keyboard Maintainer: [keyten](https://github.com/key10iq)
+* Hardware Supported: keyten kt60-M
+* Hardware Availability: [GB](https://www.reddit.com/r/mechmarket/comments/s4jvsc/gb_kt60m_60_universal_pcb_with_a_minimum_number)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keyten/kt60_m:default
+
+Flashing example for this keyboard:
+
+ make keyten/kt60_m:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* Keycode in layout: Press the key mapped to RESET if it is available
+* Physical reset button: Press the button on the back of the PCB
diff --git a/keyboards/keyten/kt60_m/rules.mk b/keyboards/keyten/kt60_m/rules.mk
new file mode 100644
index 0000000000..c9cf2aa9b0
--- /dev/null
+++ b/keyboards/keyten/kt60_m/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
+
+LAYOUTS = 60_tsangan_hhkb
diff --git a/keyboards/kikkou/config.h b/keyboards/kikkou/config.h
new file mode 100644
index 0000000000..deedfd8382
--- /dev/null
+++ b/keyboards/kikkou/config.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2021 Matthew Dias
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6D65
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mechwerkes
+#define PRODUCT Kikkou
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, E6 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/kikkou/info.json b/keyboards/kikkou/info.json
new file mode 100644
index 0000000000..33b20030e3
--- /dev/null
+++ b/keyboards/kikkou/info.json
@@ -0,0 +1,13 @@
+{
+ "keyboard_name": "Kikkou",
+ "url": "",
+ "maintainer": "Mechwerkes",
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"0,4", "x":4, "y":0}, {"label":"0,5", "x":5, "y":0}, {"label":"0,6", "x":6, "y":0}, {"label":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"0,10", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,12", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0, "w":2}, {"label":"0,14", "x":15, "y":0}, {"label":"1,0", "x":0, "y":1, "w":1.5}, {"label":"1,1", "x":1.5, "y":1}, {"label":"1,2", "x":2.5, "y":1}, {"label":"1,3", "x":3.5, "y":1}, {"label":"1,4", "x":4.5, "y":1}, {"label":"1,5", "x":5.5, "y":1}, {"label":"1,6", "x":6.5, "y":1}, {"label":"1,7", "x":7.5, "y":1}, {"label":"1,8", "x":8.5, "y":1}, {"label":"1,9", "x":9.5, "y":1}, {"label":"1,10", "x":10.5, "y":1}, {"label":"1,11", "x":11.5, "y":1}, {"label":"1,12", "x":12.5, "y":1}, {"label":"1,13", "x":13.5, "y":1, "w":1.5}, {"label":"1,14", "x":15, "y":1}, {"label":"2,0", "x":0, "y":2, "w":1.75}, {"label":"2,1", "x":1.75, "y":2}, {"label":"2,2", "x":2.75, "y":2}, {"label":"2,3", "x":3.75, "y":2}, {"label":"2,4", "x":4.75, "y":2}, {"label":"2,5", "x":5.75, "y":2}, {"label":"2,6", "x":6.75, "y":2}, {"label":"2,7", "x":7.75, "y":2}, {"label":"2,8", "x":8.75, "y":2}, {"label":"2,9", "x":9.75, "y":2}, {"label":"2,10", "x":10.75, "y":2}, {"label":"2,11", "x":11.75, "y":2}, {"label":"2,13", "x":12.75, "y":2, "w":2.25}, {"label":"2,14", "x":15, "y":2}, {"label":"3,0", "x":0, "y":3, "w":2.25}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3, "w":1.75}, {"label":"3,13", "x":14, "y":3}, {"label":"3,14", "x":15, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.25}, {"label":"4,1", "x":1.25, "y":4, "w":1.25}, {"label":"4,2", "x":2.5, "y":4, "w":1.25}, {"label":"4,6", "x":3.75, "y":4, "w":6.25}, {"label":"4,10", "x":10, "y":4, "w":1.25}, {"label":"4,11", "x":11.25, "y":4, "w":1.25}, {"label":"4,12", "x":13, "y":4}, {"label":"4,13", "x":14, "y":4}, {"label":"4,14", "x":15, "y":4}]
+ },
+ "LAYOUT_65_ansi_blocker_tsangan": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,3", "x":3, "y":0}, {"label":"0,4", "x":4, "y":0}, {"label":"0,5", "x":5, "y":0}, {"label":"0,6", "x":6, "y":0}, {"label":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"0,10", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,12", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0, "w":2}, {"label":"0,14", "x":15, "y":0}, {"label":"1,0", "x":0, "y":1, "w":1.5}, {"label":"1,1", "x":1.5, "y":1}, {"label":"1,2", "x":2.5, "y":1}, {"label":"1,3", "x":3.5, "y":1}, {"label":"1,4", "x":4.5, "y":1}, {"label":"1,5", "x":5.5, "y":1}, {"label":"1,6", "x":6.5, "y":1}, {"label":"1,7", "x":7.5, "y":1}, {"label":"1,8", "x":8.5, "y":1}, {"label":"1,9", "x":9.5, "y":1}, {"label":"1,10", "x":10.5, "y":1}, {"label":"1,11", "x":11.5, "y":1}, {"label":"1,12", "x":12.5, "y":1}, {"label":"1,13", "x":13.5, "y":1, "w":1.5}, {"label":"1,14", "x":15, "y":1}, {"label":"2,0", "x":0, "y":2, "w":1.75}, {"label":"2,1", "x":1.75, "y":2}, {"label":"2,2", "x":2.75, "y":2}, {"label":"2,3", "x":3.75, "y":2}, {"label":"2,4", "x":4.75, "y":2}, {"label":"2,5", "x":5.75, "y":2}, {"label":"2,6", "x":6.75, "y":2}, {"label":"2,7", "x":7.75, "y":2}, {"label":"2,8", "x":8.75, "y":2}, {"label":"2,9", "x":9.75, "y":2}, {"label":"2,10", "x":10.75, "y":2}, {"label":"2,11", "x":11.75, "y":2}, {"label":"2,13", "x":12.75, "y":2, "w":2.25}, {"label":"2,14", "x":15, "y":2}, {"label":"3,0", "x":0, "y":3, "w":2.25}, {"label":"3,2", "x":2.25, "y":3}, {"label":"3,3", "x":3.25, "y":3}, {"label":"3,4", "x":4.25, "y":3}, {"label":"3,5", "x":5.25, "y":3}, {"label":"3,6", "x":6.25, "y":3}, {"label":"3,7", "x":7.25, "y":3}, {"label":"3,8", "x":8.25, "y":3}, {"label":"3,9", "x":9.25, "y":3}, {"label":"3,10", "x":10.25, "y":3}, {"label":"3,11", "x":11.25, "y":3}, {"label":"3,12", "x":12.25, "y":3, "w":1.75}, {"label":"3,13", "x":14, "y":3}, {"label":"3,14", "x":15, "y":3}, {"label":"4,0", "x":0, "y":4, "w":1.5}, {"label":"4,1", "x":1.5, "y":4}, {"label":"4,2", "x":2.5, "y":4, "w":1.5}, {"label":"4,6", "x":4, "y":4, "w":7}, {"label":"4,11", "x":11, "y":4, "w":1.5}, {"label":"4,12", "x":13, "y":4}, {"label":"4,13", "x":14, "y":4}, {"label":"4,14", "x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/kikkou/keymaps/default/keymap.c b/keyboards/kikkou/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d7ac433753
--- /dev/null
+++ b/keyboards/kikkou/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 Matthew Dias
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/kikkou/keymaps/via/keymap.c b/keyboards/kikkou/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d7ac433753
--- /dev/null
+++ b/keyboards/kikkou/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 Matthew Dias
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/kikkou/keymaps/via/rules.mk b/keyboards/kikkou/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kikkou/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kikkou/kikkou.c b/keyboards/kikkou/kikkou.c
new file mode 100644
index 0000000000..704934ace2
--- /dev/null
+++ b/keyboards/kikkou/kikkou.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Matthew Dias
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "kikkou.h"
diff --git a/keyboards/kikkou/kikkou.h b/keyboards/kikkou/kikkou.h
new file mode 100644
index 0000000000..7a65880839
--- /dev/null
+++ b/keyboards/kikkou/kikkou.h
@@ -0,0 +1,50 @@
+/*
+Copyright 2021 Matthew Dias
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_65_ansi_blocker_tsangan( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/kikkou/rules.mk b/keyboards/kikkou/rules.mk
new file mode 100644
index 0000000000..f9417ae2bf
--- /dev/null
+++ b/keyboards/kikkou/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/kikoslab/ellora65/config.h b/keyboards/kikoslab/ellora65/config.h
new file mode 100644
index 0000000000..e3f7452f41
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x04D8
+#define PRODUCT_ID 0xE88F
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Kikos Lab
+#define PRODUCT Ellora65
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { B7, B2, F1, F4, D6, D7, D5, D4, D3, D2 }
+#define MATRIX_COL_PINS { F5, F6, F7, C6, B6, B5, B4, B3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODERS_PAD_A { B0 }
+#define ENCODERS_PAD_B { B1 }
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/*RGB TINGS*/
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 12
+
+/* bootmagic row col assignment */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/kikoslab/ellora65/ellora65.c b/keyboards/kikoslab/ellora65/ellora65.c
new file mode 100644
index 0000000000..8ef707c2d8
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/ellora65.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "ellora65.h"
diff --git a/keyboards/kikoslab/ellora65/ellora65.h b/keyboards/kikoslab/ellora65/ellora65.h
new file mode 100644
index 0000000000..2662f5a7a6
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/ellora65.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 Swiftrax <swiftrax@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ K000, K100, K001, K101, K002, K102, K003, K103, K004, K104, K005, K105, K006, K106, K007, K107,\
+ K200, K300, K201, K301, K202, K302, K203, K303, K204, K304, K205, K305, K206, K306, K207 ,\
+ K400, K500, K401, K501, K402, K502, K403, K503, K404, K504, K405, K505, K406, K506, K407, K507,\
+ K600, K700, K601, K701, K602, K702, K603, K703, K604, K704, K605, K705, K606, K706, K607, K707,\
+ K800, K900, K801, K901, K802, K803, K804, K905, K806, K906, K807, K907 \
+){ \
+ {K000, K001, K002, K003, K004, K005, K006, K007},\
+ {K100, K101, K102, K103, K104, K105, K106, K107},\
+ {K200, K201, K202, K203, K204, K205, K206, K207},\
+ {K300, K301, K302, K303, K304, K305, K306, XXX},\
+ {K400, K401, K402, K403, K404, K405, K406, K407},\
+ {K500, K501, K502, K503, K504, K505, K506, K507},\
+ {K600, K601, K602, K603, K604, K605, K606, K607},\
+ {K700, K701, K702, K703, K704, K705, K706, K707},\
+ {K800, K801, K802, K803, K804, XXX, K806, K807},\
+ {K900, K901, XXX, XXX, XXX, K905, K906, K907} \
+}
diff --git a/keyboards/kikoslab/ellora65/info.json b/keyboards/kikoslab/ellora65/info.json
new file mode 100644
index 0000000000..64c3f7eaa5
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Ellora65",
+ "url": "https://github.com/swiftrax",
+ "maintainer": "swiftrax",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":1.25, "y":0}, {"label":"1,0", "x":2.5, "y":0.25}, {"label":"0,1", "x":3.5, "y":0.25}, {"label":"1,1", "x":4.5, "y":0.25}, {"label":"0,2", "x":5.5, "y":0.25}, {"label":"1,2", "x":6.5, "y":0.25}, {"label":"0,3", "x":7.5, "y":0.25}, {"label":"1,3", "x":8.5, "y":0.25}, {"label":"0,4", "x":9.5, "y":0.25}, {"label":"1,4", "x":10.5, "y":0.25}, {"label":"0,5", "x":11.5, "y":0.25}, {"label":"1,5", "x":12.5, "y":0.25}, {"label":"0,6", "x":13.5, "y":0.25}, {"label":"1,6", "x":14.5, "y":0.25}, {"label":"0,7", "x":15.5, "y":0.25}, {"label":"1,7", "x":16.5, "y":0.25}, {"label":"2,0", "x":1.25, "y":1.25}, {"label":"3,0", "x":2.5, "y":1.25, "w":1.5}, {"label":"2,1", "x":4, "y":1.25}, {"label":"3,1", "x":5, "y":1.25}, {"label":"2,2", "x":6, "y":1.25}, {"label":"3,2", "x":7, "y":1.25}, {"label":"2,3", "x":8, "y":1.25}, {"label":"3,3", "x":9, "y":1.25}, {"label":"2,4", "x":10, "y":1.25}, {"label":"3,4", "x":11, "y":1.25}, {"label":"2,5", "x":12, "y":1.25}, {"label":"3,5", "x":13, "y":1.25}, {"label":"2,6", "x":14, "y":1.25}, {"label":"3,6", "x":15, "y":1.25}, {"label":"2,7", "x":16, "y":1.25, "w":1.5}, {"label":"4,0", "x":1.25, "y":2.25}, {"label":"5,0", "x":2.5, "y":2.25, "w":1.75}, {"label":"4,1", "x":4.25, "y":2.25}, {"label":"5,1", "x":5.25, "y":2.25}, {"label":"4,2", "x":6.25, "y":2.25}, {"label":"5,2", "x":7.25, "y":2.25}, {"label":"4,3", "x":8.25, "y":2.25}, {"label":"5,3", "x":9.25, "y":2.25}, {"label":"4,4", "x":10.25, "y":2.25}, {"label":"5,4", "x":11.25, "y":2.25}, {"label":"4,5", "x":12.25, "y":2.25}, {"label":"5,5", "x":13.25, "y":2.25}, {"label":"4,6", "x":14.25, "y":2.25}, {"label":"5,6", "x":15.25, "y":2.25}, {"label":"4,7", "x":16.25, "y":2.25, "w":1.25}, {"label":"5,7", "x":17.5, "y":2.25}, {"label":"6,0", "x":1.25, "y":3.25}, {"label":"7,0", "x":2.5, "y":3.25, "w":1.25}, {"label":"6,1", "x":3.75, "y":3.25}, {"label":"7,1", "x":4.75, "y":3.25}, {"label":"6,2", "x":5.75, "y":3.25}, {"label":"7,2", "x":6.75, "y":3.25}, {"label":"6,3", "x":7.75, "y":3.25}, {"label":"7,3", "x":8.75, "y":3.25}, {"label":"6,4", "x":9.75, "y":3.25}, {"label":"7,4", "x":10.75, "y":3.25}, {"label":"6,5", "x":11.75, "y":3.25}, {"label":"7,5", "x":12.75, "y":3.25}, {"label":"6,6", "x":13.75, "y":3.25}, {"label":"7,6", "x":14.75, "y":3.25, "w":1.75}, {"label":"6,7", "x":16.5, "y":3.25}, {"label":"7,7", "x":17.5, "y":3.25}, {"label":"8,0", "x":1.25, "y":4.25}, {"label":"9,0", "x":2.5, "y":4.25, "w":1.25}, {"label":"8,1", "x":3.75, "y":4.25, "w":1.25}, {"label":"9,1", "x":5, "y":4.25, "w":1.25}, {"label":"8,2", "x":6.25, "y":4.25, "w":2.75}, {"label":"8,3", "x":9, "y":4.25, "w":1.25}, {"label":"8,4", "x":10.25, "y":4.25, "w":2.25}, {"label":"9,5", "x":12.5, "y":4.25}, {"label":"8,6", "x":13.5, "y":4.25, "w":1.5}, {"label":"9,6", "x":15.5, "y":4.25}, {"label":"8,7", "x":16.5, "y":4.25}, {"label":"9,7", "x":17.5, "y":4.25}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/kikoslab/ellora65/keymaps/default/keymap.c b/keyboards/kikoslab/ellora65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e904026b8e
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/keymaps/default/keymap.c
@@ -0,0 +1,242 @@
+/*
+Copyright 2021 Kiko <kikosdesignlab@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+enum _layer {
+ _MA,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_MA] = LAYOUT_all(
+ KC_MUTE, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC,
+ KC_F13 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F14 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_INS,
+ KC_F15 , KC_LSFT, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_DEL,
+ KC_F16 , KC_LCTL, KC_LGUI, KC_LALT, MO(_FN) , KC_SPC , MO(_FN) , MO(_FN), MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_all(
+ KC_DEL , KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_TRNS,
+ KC_F17 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F18 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F19 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F20 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+
+ return false;
+}
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_90;
+}
+
+/* KEYBOARD PET START */
+
+/* settings */
+#define MIN_WALK_SPEED 10
+#define MIN_RUN_SPEED 40
+
+/* advanced settings */
+#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+#define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
+
+/* timers */
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+
+/* current frame */
+uint8_t current_frame = 0;
+
+/* status variables */
+int current_wpm = 0;
+led_t led_usb_state;
+
+bool isSneaking = false;
+bool isJumping = false;
+bool showedJump = true;
+
+/* logic */
+static void render_luna(int LUNA_X, int LUNA_Y) {
+ /* Sit */
+ static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'sit2', 32x22px */
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+
+ /* Walk */
+ static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'walk2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Run */
+ static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'run2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Bark */
+ static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */
+ {
+ 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'bark2', 32x22px */
+ {
+ 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Sneak */
+ static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'sneak2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* animation */
+ void animate_luna(void) {
+ /* jump */
+ if (isJumping || !showedJump) {
+ /* clear */
+ oled_set_cursor(LUNA_X, LUNA_Y + 2);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X, LUNA_Y - 1);
+
+ showedJump = true;
+ } else {
+ /* clear */
+ oled_set_cursor(LUNA_X, LUNA_Y - 1);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X, LUNA_Y);
+ }
+
+ /* switch frame */
+ current_frame = (current_frame + 1) % 2;
+
+ /* current status */
+ if (led_usb_state.caps_lock) {
+ oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (isSneaking) {
+ oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (current_wpm <= MIN_WALK_SPEED) {
+ oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (current_wpm <= MIN_RUN_SPEED) {
+ oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else {
+ oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
+ }
+ }
+
+ /* animation timer */
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animate_luna();
+ }
+
+ /* this fixes the screen on and off bug */
+ if (current_wpm > 0) {
+ oled_on();
+ anim_sleep = timer_read32();
+ } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ }
+}
+
+
+/* KEYBOARD PET END */
+
+static void print_status_narrow(void) {
+ render_luna(0, 13);
+}
+
+
+bool oled_task_user(void) {
+ /* KEYBOARD PET VARIABLES START */
+
+ current_wpm = get_current_wpm();
+ led_usb_state = host_keyboard_led_state();
+
+ /* KEYBOARD PET VARIABLES END */
+
+ print_status_narrow();
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+
+ /* KEYBOARD PET STATUS START */
+
+ case KC_LCTL:
+ case KC_RCTL:
+ if (record->event.pressed) {
+ isSneaking = true;
+ } else {
+ isSneaking = false;
+ }
+ break;
+ case KC_SPC:
+ if (record->event.pressed) {
+ isJumping = true;
+ showedJump = false;
+ } else {
+ isJumping = false;
+ }
+ break;
+
+ /* KEYBOARD PET STATUS END */
+ }
+ return true;
+
+}
+
+#endif
diff --git a/keyboards/kikoslab/ellora65/keymaps/default/rules.mk b/keyboards/kikoslab/ellora65/keymaps/default/rules.mk
new file mode 100644
index 0000000000..bbe99c4238
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+OLED_ENABLE = yes
+WPM_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kikoslab/ellora65/keymaps/via/keymap.c b/keyboards/kikoslab/ellora65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..fbe101d3d1
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/keymaps/via/keymap.c
@@ -0,0 +1,252 @@
+/*
+Copyright 2021 Kiko <kikosdesignlab@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MUTE, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC,
+ KC_F13 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F14 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_ENT , KC_INS,
+ KC_F15 , KC_LSFT, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_DEL,
+ KC_F16 , KC_LCTL, KC_LGUI, KC_LALT, MO(1) , KC_SPC , MO(1) , MO(1) , MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_DEL , KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_TRNS,
+ KC_F17 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F18 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F19 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F20 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS,
+ KC_F17 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F18 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F19 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F20 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS,
+ KC_F17 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F18 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F19 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F20 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+
+ return false;
+}
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_90;
+}
+
+/* KEYBOARD PET START */
+
+/* settings */
+#define MIN_WALK_SPEED 10
+#define MIN_RUN_SPEED 40
+
+/* advanced settings */
+#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+#define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
+
+/* timers */
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+
+/* current frame */
+uint8_t current_frame = 0;
+
+/* status variables */
+int current_wpm = 0;
+led_t led_usb_state;
+
+bool isSneaking = false;
+bool isJumping = false;
+bool showedJump = true;
+
+/* logic */
+static void render_luna(int LUNA_X, int LUNA_Y) {
+ /* Sit */
+ static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'sit2', 32x22px */
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+
+ /* Walk */
+ static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'walk2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Run */
+ static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'run2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Bark */
+ static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */
+ {
+ 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'bark2', 32x22px */
+ {
+ 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* Sneak */
+ static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ /* 'sneak2', 32x22px */
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }};
+
+ /* animation */
+ void animate_luna(void) {
+ /* jump */
+ if (isJumping || !showedJump) {
+ /* clear */
+ oled_set_cursor(LUNA_X, LUNA_Y + 2);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X, LUNA_Y - 1);
+
+ showedJump = true;
+ } else {
+ /* clear */
+ oled_set_cursor(LUNA_X, LUNA_Y - 1);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X, LUNA_Y);
+ }
+
+ /* switch frame */
+ current_frame = (current_frame + 1) % 2;
+
+ /* current status */
+ if (led_usb_state.caps_lock) {
+ oled_write_raw_P(bark[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (isSneaking) {
+ oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (current_wpm <= MIN_WALK_SPEED) {
+ oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if (current_wpm <= MIN_RUN_SPEED) {
+ oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else {
+ oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
+ }
+ }
+
+ /* animation timer */
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animate_luna();
+ }
+
+ /* this fixes the screen on and off bug */
+ if (current_wpm > 0) {
+ oled_on();
+ anim_sleep = timer_read32();
+ } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ }
+}
+
+
+/* KEYBOARD PET END */
+
+static void print_status_narrow(void) {
+ render_luna(0, 13);
+}
+
+
+bool oled_task_user(void) {
+ /* KEYBOARD PET VARIABLES START */
+
+ current_wpm = get_current_wpm();
+ led_usb_state = host_keyboard_led_state();
+
+ /* KEYBOARD PET VARIABLES END */
+
+ print_status_narrow();
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+
+ /* KEYBOARD PET STATUS START */
+
+ case KC_LCTL:
+ case KC_RCTL:
+ if (record->event.pressed) {
+ isSneaking = true;
+ } else {
+ isSneaking = false;
+ }
+ break;
+ case KC_SPC:
+ if (record->event.pressed) {
+ isJumping = true;
+ showedJump = false;
+ } else {
+ isJumping = false;
+ }
+ break;
+
+ /* KEYBOARD PET STATUS END */
+ }
+ return true;
+
+}
+
+#endif
diff --git a/keyboards/kikoslab/ellora65/keymaps/via/rules.mk b/keyboards/kikoslab/ellora65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..fe4a69869e
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kikoslab/ellora65/readme.md b/keyboards/kikoslab/ellora65/readme.md
new file mode 100644
index 0000000000..419c5418ec
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/readme.md
@@ -0,0 +1,21 @@
+# Ellora65
+
+65% With Macro Column, Encoder, and OLED
+
+* Keyboard Maintainer: Kiko
+* Hardware Supported: KL-65 PCB
+* Hardware Availability: https://www.kikoslab.com
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (1,0) in the matrix (escape key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kikoslab/ellora65:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kikoslab/ellora65/rules.mk b/keyboards/kikoslab/ellora65/rules.mk
new file mode 100644
index 0000000000..7fe30a833f
--- /dev/null
+++ b/keyboards/kikoslab/ellora65/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kikoslab/kl90/rules.mk b/keyboards/kikoslab/kl90/rules.mk
index b28e4ce97c..bec60734c0 100644
--- a/keyboards/kikoslab/kl90/rules.mk
+++ b/keyboards/kikoslab/kl90/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kindakeyboards/conone65/rules.mk b/keyboards/kindakeyboards/conone65/rules.mk
index 2cbe7eb385..81344cbcbf 100644
--- a/keyboards/kindakeyboards/conone65/rules.mk
+++ b/keyboards/kindakeyboards/conone65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kinesis/keymaps/default/config.h b/keyboards/kinesis/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/kinesis/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kinesis/keymaps/default/rules.mk b/keyboards/kinesis/keymaps/default/rules.mk
index 418f54602d..adb07adf7d 100644
--- a/keyboards/kinesis/keymaps/default/rules.mk
+++ b/keyboards/kinesis/keymaps/default/rules.mk
@@ -1,15 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kinesis/keymaps/default_pretty/config.h b/keyboards/kinesis/keymaps/default_pretty/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/kinesis/keymaps/default_pretty/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kinesis/keymaps/default_pretty/rules.mk b/keyboards/kinesis/keymaps/default_pretty/rules.mk
index 418f54602d..adb07adf7d 100644
--- a/keyboards/kinesis/keymaps/default_pretty/rules.mk
+++ b/keyboards/kinesis/keymaps/default_pretty/rules.mk
@@ -1,15 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kinesis/keymaps/dvorak/config.h b/keyboards/kinesis/keymaps/dvorak/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/kinesis/keymaps/dvorak/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kinesis/keymaps/ericgebhart/keymap.c b/keyboards/kinesis/keymaps/ericgebhart/keymap.c
new file mode 100644
index 0000000000..731e257b05
--- /dev/null
+++ b/keyboards/kinesis/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,53 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "keymap_bepo.h"
+#include "ericgebhart.h"
+
+#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__)
+
+#define Kinesis_base(...) Base_4x6_4_6(__VA_ARGS__)
+#define Kinesis_bepo_base(...) Base_bepo_4x6_4_6(__VA_ARGS__)
+#define Kinesis_bepo_base6(...) Base_bepo6_4x6_4_6(__VA_ARGS__)
+#define Kinesis_transient(...) Transient6_4x6_4_6(__VA_ARGS__)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Qwerty Base layers
+ [_DVORAK] = Kinesis_base(___NUMS___, ___DVORAK___),
+ [_QWERTY] = Kinesis_base(___NUMS___, ___QWERTY___),
+ [_COLEMAK] = Kinesis_base(___NUMS___, ___COLEMAK_DH___),
+ [_BEAKL] = Kinesis_base(___BKLNUMS___, ___BEAKL15___),
+ // Bepo Base layers
+ [_DVORAK_BP] = Kinesis_bepo_base(___NUMS_BP___, ___DVORAK_FR___),
+ [_BEAKL_BP] = Kinesis_bepo_base(___BKLNUMS_BP___, ___BEAKL15_FR___),
+
+ [_BEPO] = Kinesis_bepo_base6(___BEPO6___),
+
+ // transient layers.
+ // Switch to using a transient layer macro
+ [_SYMB] = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
+ [_SYMB_BP] = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
+
+ [_TOPROWS] = Kinesis_transient(___12___, ___TOPROWS_3x12___),
+ [_TOPROWS_BP] = Kinesis_transient(___12___, ___TOPROWS_BP_3x12___),
+
+ [_NAV] = Kinesis_transient(___12___, ___NAV_3x12___),
+ [_LAYERS] = Kinesis_transient(___12___, ___LAYERS_3x12___),
+ [_ADJUST] = Kinesis_transient(___12___, ___ADJUST_3x12___),
+ //[_RGB] = Kinesis_transient(___12___, ___RGB_3x12___),
+};
diff --git a/keyboards/kinesis/keymaps/ericgebhart/readme.md b/keyboards/kinesis/keymaps/ericgebhart/readme.md
new file mode 100644
index 0000000000..3a47968596
--- /dev/null
+++ b/keyboards/kinesis/keymaps/ericgebhart/readme.md
@@ -0,0 +1,5 @@
+Overview
+========
+
+These are my keymaps. There isn't much here. Go take a look at my Userspace readme.
+That's where all the code is.
diff --git a/keyboards/kinesis/keymaps/ericgebhart/rules.mk b/keyboards/kinesis/keymaps/ericgebhart/rules.mk
new file mode 100644
index 0000000000..61115e927a
--- /dev/null
+++ b/keyboards/kinesis/keymaps/ericgebhart/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output
+UNICODE_ENABLE = no # Unicode
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
diff --git a/keyboards/kinesis/nguyenvietyen/rules.mk b/keyboards/kinesis/nguyenvietyen/rules.mk
index 855c7072a5..65018bc3cc 100644
--- a/keyboards/kinesis/nguyenvietyen/rules.mk
+++ b/keyboards/kinesis/nguyenvietyen/rules.mk
@@ -11,7 +11,7 @@ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
COMMAND_ENABLE = yes
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
SLEEP_LED_ENABLE = yes
CUSTOM_MATRIX = lite
SRC += matrix.c
diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk
index 4bfe9bc0fd..129e08635d 100644
--- a/keyboards/kinesis/rules.mk
+++ b/keyboards/kinesis/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kineticlabs/emu/hotswap/rules.mk b/keyboards/kineticlabs/emu/hotswap/rules.mk
index fdb8097023..cde201abdc 100644
--- a/keyboards/kineticlabs/emu/hotswap/rules.mk
+++ b/keyboards/kineticlabs/emu/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kineticlabs/emu/soldered/rules.mk b/keyboards/kineticlabs/emu/soldered/rules.mk
index fdb8097023..cde201abdc 100644
--- a/keyboards/kineticlabs/emu/soldered/rules.mk
+++ b/keyboards/kineticlabs/emu/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kingly_keys/ave/ortho/rules.mk b/keyboards/kingly_keys/ave/ortho/rules.mk
index c28edc9134..19d0131a73 100644
--- a/keyboards/kingly_keys/ave/ortho/rules.mk
+++ b/keyboards/kingly_keys/ave/ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kingly_keys/ave/staggered/rules.mk b/keyboards/kingly_keys/ave/staggered/rules.mk
index c28edc9134..19d0131a73 100644
--- a/keyboards/kingly_keys/ave/staggered/rules.mk
+++ b/keyboards/kingly_keys/ave/staggered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kingly_keys/little_foot/rules.mk b/keyboards/kingly_keys/little_foot/rules.mk
index cec5dfeebd..4792d1c794 100644
--- a/keyboards/kingly_keys/little_foot/rules.mk
+++ b/keyboards/kingly_keys/little_foot/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kingly_keys/romac/keymaps/default/keymap.c b/keyboards/kingly_keys/romac/keymaps/default/keymap.c
index 44263453d0..f48b5d366a 100644
--- a/keyboards/kingly_keys/romac/keymaps/default/keymap.c
+++ b/keyboards/kingly_keys/romac/keymaps/default/keymap.c
@@ -22,16 +22,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_7, KC_8, KC_9, \
- KC_4, KC_5, KC_6, \
- KC_1, KC_2, KC_3, \
- MO(1), KC_0, KC_DOT \
+ KC_7, KC_8, KC_9,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3,
+ MO(1), KC_0, KC_DOT
),
[_FN1] = LAYOUT(
- KC_TRNS, KC_HOME, KC_PGUP, \
- KC_TRNS, KC_END, KC_PGDN, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_ENT \
+ KC_TRNS, KC_HOME, KC_PGUP,
+ KC_TRNS, KC_END, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_ENT
)
};
diff --git a/keyboards/kingly_keys/romac/keymaps/via/keymap.c b/keyboards/kingly_keys/romac/keymaps/via/keymap.c
index 833336b531..8fc3978f4c 100644
--- a/keyboards/kingly_keys/romac/keymaps/via/keymap.c
+++ b/keyboards/kingly_keys/romac/keymaps/via/keymap.c
@@ -18,27 +18,27 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_KP_7, KC_KP_8, KC_KP_9, \
- KC_KP_4, KC_KP_5, KC_KP_6, \
- KC_KP_1, KC_KP_2, KC_KP_3, \
- MO(1), KC_KP_0, KC_KP_DOT \
+ KC_KP_7, KC_KP_8, KC_KP_9,
+ KC_KP_4, KC_KP_5, KC_KP_6,
+ KC_KP_1, KC_KP_2, KC_KP_3,
+ MO(1), KC_KP_0, KC_KP_DOT
),
[1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/kingly_keys/romac/rules.mk b/keyboards/kingly_keys/romac/rules.mk
index 35998c3695..40d08b7731 100644
--- a/keyboards/kingly_keys/romac/rules.mk
+++ b/keyboards/kingly_keys/romac/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/kingly_keys/romac_plus/rules.mk b/keyboards/kingly_keys/romac_plus/rules.mk
index a51db09413..ccd2ba6ecf 100644
--- a/keyboards/kingly_keys/romac_plus/rules.mk
+++ b/keyboards/kingly_keys/romac_plus/rules.mk
@@ -10,10 +10,7 @@ BOOTLOADER = caterina
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kingly_keys/ropro/rules.mk b/keyboards/kingly_keys/ropro/rules.mk
index 5392807b8c..9b76d2abd6 100644
--- a/keyboards/kingly_keys/ropro/rules.mk
+++ b/keyboards/kingly_keys/ropro/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
diff --git a/keyboards/kingly_keys/smd_milk/rules.mk b/keyboards/kingly_keys/smd_milk/rules.mk
index ad483452b8..469e098ba5 100644
--- a/keyboards/kingly_keys/smd_milk/rules.mk
+++ b/keyboards/kingly_keys/smd_milk/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/kingly_keys/soap/rules.mk b/keyboards/kingly_keys/soap/rules.mk
index da53cdc791..78d3736672 100644
--- a/keyboards/kingly_keys/soap/rules.mk
+++ b/keyboards/kingly_keys/soap/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
diff --git a/keyboards/kira75/keymaps/default/config.h b/keyboards/kira75/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/kira75/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kira75/keymaps/default/keymap.c b/keyboards/kira75/keymaps/default/keymap.c
index b98de1d395..b8458ab463 100644
--- a/keyboards/kira75/keymaps/default/keymap.c
+++ b/keyboards/kira75/keymaps/default/keymap.c
@@ -17,11 +17,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_INS, \
- KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_INS,
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
};
diff --git a/keyboards/kira75/rules.mk b/keyboards/kira75/rules.mk
index 6d2a677b16..532462bca2 100644
--- a/keyboards/kira75/rules.mk
+++ b/keyboards/kira75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kira80/rules.mk b/keyboards/kira80/rules.mk
index c1207e4b74..a5756a7845 100644
--- a/keyboards/kira80/rules.mk
+++ b/keyboards/kira80/rules.mk
@@ -12,6 +12,5 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/kiwikeebs/macro/rules.mk b/keyboards/kiwikeebs/macro/rules.mk
index 563e7df2f8..c4a39c910f 100644
--- a/keyboards/kiwikeebs/macro/rules.mk
+++ b/keyboards/kiwikeebs/macro/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kiwikeebs/macro_v2/rules.mk b/keyboards/kiwikeebs/macro_v2/rules.mk
index d0f092d210..5f58c5684b 100644
--- a/keyboards/kiwikeebs/macro_v2/rules.mk
+++ b/keyboards/kiwikeebs/macro_v2/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kiwikey/borderland/borderland.c b/keyboards/kiwikey/borderland/borderland.c
new file mode 100644
index 0000000000..660e8026fc
--- /dev/null
+++ b/keyboards/kiwikey/borderland/borderland.c
@@ -0,0 +1,18 @@
+// Copyright 2021 KiwiKey (@KiwiKey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "borderland.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/kiwikey/borderland/borderland.h b/keyboards/kiwikey/borderland/borderland.h
new file mode 100644
index 0000000000..85449a16b5
--- /dev/null
+++ b/keyboards/kiwikey/borderland/borderland.h
@@ -0,0 +1,29 @@
+// Copyright 2021 KiwiKey (@KiwiKey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k1E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k2E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k3E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k44, k45, k47, k49, k4C, k4D, k4E \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
+ { k40, KC_NO, k42, KC_NO, k44, k45, KC_NO, k47, KC_NO, k49, KC_NO, KC_NO, k4C, k4D, k4E } \
+}
diff --git a/keyboards/kiwikey/borderland/config.h b/keyboards/kiwikey/borderland/config.h
new file mode 100644
index 0000000000..02a33926aa
--- /dev/null
+++ b/keyboards/kiwikey/borderland/config.h
@@ -0,0 +1,126 @@
+// Copyright 2021 KiwiKey (@KiwiKey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B57 // KW - KiwiKey
+#define PRODUCT_ID 0x424C // BL - Borderland
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KiwiKey
+#define PRODUCT Borderland
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B7, B5, B4, D7, D6, B3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F6 }
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10
+
+#define RGB_DI_PIN B2
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 18
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/kiwikey/borderland/info.json b/keyboards/kiwikey/borderland/info.json
new file mode 100644
index 0000000000..c92df0521d
--- /dev/null
+++ b/keyboards/kiwikey/borderland/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Borderland",
+ "url": "https://kiwikey.vn/borderland/",
+ "maintainer": "KiwiKey",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+ {"x":16, "y":0},
+ {"x":17.3, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1},
+ {"x":14.5, "y":1},
+ {"x":15.5, "y":1, "w":1.5},
+ {"x":17.3, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":2},
+ {"x":14.75, "y":2, "w":2.25},
+ {"x":17.3, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3},
+ {"x":13.25, "y":3},
+ {"x":14.25, "y":3, "w":1.75},
+ {"x":16.3, "y":3.25},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":3.25, "y":4, "w":1.5},
+ {"x":4.75, "y":4, "w":2},
+ {"x":6.75, "y":4, "w":1.25},
+ {"x":8.75, "y":4, "w":2.75},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":15.3, "y":4.25},
+ {"x":16.3, "y":4.25},
+ {"x":17.3, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kiwikey/borderland/keymaps/default/keymap.c b/keyboards/kiwikey/borderland/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9723158b4c
--- /dev/null
+++ b/keyboards/kiwikey/borderland/keymaps/default/keymap.c
@@ -0,0 +1,22 @@
+// Copyright 2021 KiwiKey (@KiwiKey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/kiwikey/borderland/keymaps/default/readme.md b/keyboards/kiwikey/borderland/keymaps/default/readme.md
new file mode 100644
index 0000000000..44d758912c
--- /dev/null
+++ b/keyboards/kiwikey/borderland/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Borderland
diff --git a/keyboards/kiwikey/borderland/keymaps/via/keymap.c b/keyboards/kiwikey/borderland/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b787933457
--- /dev/null
+++ b/keyboards/kiwikey/borderland/keymaps/via/keymap.c
@@ -0,0 +1,37 @@
+// Copyright 2021 KiwiKey (@KiwiKey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/kiwikey/borderland/keymaps/via/readme.md b/keyboards/kiwikey/borderland/keymaps/via/readme.md
new file mode 100644
index 0000000000..ff14495c6b
--- /dev/null
+++ b/keyboards/kiwikey/borderland/keymaps/via/readme.md
@@ -0,0 +1 @@
+# VIA keymap for Borderland
diff --git a/keyboards/kiwikey/borderland/keymaps/via/rules.mk b/keyboards/kiwikey/borderland/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kiwikey/borderland/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kiwikey/borderland/readme.md b/keyboards/kiwikey/borderland/readme.md
new file mode 100644
index 0000000000..98f76e0f13
--- /dev/null
+++ b/keyboards/kiwikey/borderland/readme.md
@@ -0,0 +1,27 @@
+# Borderland
+
+![Borderland](https://i.imgur.com/3aMyUJb.jpg)
+
+Another keyboard with well-known Arisu layout, comes with USB Type-C connection and Rotary Encoder. More information can be found at https://kiwikey.vn/borderland/
+
+* Keyboard Maintainer: [KiwiKey](https://github.com/kiwikey)
+* Hardware Supported: Borderland PCB rev1
+* Hardware Availability: [KiwiKey Website](https://kiwikey.vn/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kiwikey/borderland:default
+
+Flashing example for this keyboard:
+
+ make kiwikey/borderland:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET`, in default keymap it is `Fn+R`
diff --git a/keyboards/kiwikey/borderland/rules.mk b/keyboards/kiwikey/borderland/rules.mk
new file mode 100644
index 0000000000..c362ae9a8b
--- /dev/null
+++ b/keyboards/kiwikey/borderland/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+NO_USB_STARTUP_CHECK = yes
diff --git a/keyboards/kiwikey/kawii9/rules.mk b/keyboards/kiwikey/kawii9/rules.mk
index 299206df1e..f57e786cbc 100644
--- a/keyboards/kiwikey/kawii9/rules.mk
+++ b/keyboards/kiwikey/kawii9/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kiwikey/wanderland/rules.mk b/keyboards/kiwikey/wanderland/rules.mk
index 1a2408fb70..3b061c1108 100644
--- a/keyboards/kiwikey/wanderland/rules.mk
+++ b/keyboards/kiwikey/wanderland/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kmac/keymaps/default/config.h b/keyboards/kmac/keymaps/default/config.h
deleted file mode 100644
index 14b43132a7..0000000000
--- a/keyboards/kmac/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi/config.h b/keyboards/kmac/keymaps/default_tkl_ansi/config.h
deleted file mode 100644
index 14b43132a7..0000000000
--- a/keyboards/kmac/keymaps/default_tkl_ansi/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/config.h b/keyboards/kmac/keymaps/default_tkl_ansi_wkl/config.h
deleted file mode 100644
index 14b43132a7..0000000000
--- a/keyboards/kmac/keymaps/default_tkl_ansi_wkl/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kmac/rules.mk b/keyboards/kmac/rules.mk
index 6a980556b9..2eb2e6d5e2 100644
--- a/keyboards/kmac/rules.mk
+++ b/keyboards/kmac/rules.mk
@@ -16,10 +16,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kmac_pad/rules.mk b/keyboards/kmac_pad/rules.mk
index 90547999b3..2f6f8e9927 100644
--- a/keyboards/kmac_pad/rules.mk
+++ b/keyboards/kmac_pad/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kmini/keymaps/default/keymap.c b/keyboards/kmini/keymaps/default/keymap.c
index 3feaff5bfa..50a1cfbc50 100755
--- a/keyboards/kmini/keymaps/default/keymap.c
+++ b/keyboards/kmini/keymaps/default/keymap.c
@@ -24,18 +24,18 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
- _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kmini/rules.mk b/keyboards/kmini/rules.mk
index 4680be20bd..4a1f9693e4 100755
--- a/keyboards/kmini/rules.mk
+++ b/keyboards/kmini/rules.mk
@@ -16,10 +16,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/knobgoblin/rules.mk b/keyboards/knobgoblin/rules.mk
index 823324e78c..25a4759790 100644
--- a/keyboards/knobgoblin/rules.mk
+++ b/keyboards/knobgoblin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/knops/mini/keymaps/default/config.h b/keyboards/knops/mini/keymaps/default/config.h
deleted file mode 100644
index 6775ba671e..0000000000
--- a/keyboards/knops/mini/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Pawnerd
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/knops/mini/keymaps/knops/config.h b/keyboards/knops/mini/keymaps/knops/config.h
deleted file mode 100644
index 999d8876c2..0000000000
--- a/keyboards/knops/mini/keymaps/knops/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Pawnerd
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/knops/mini/rules.mk b/keyboards/knops/mini/rules.mk
index 0a1934706c..7fa21ec4c5 100644
--- a/keyboards/knops/mini/rules.mk
+++ b/keyboards/knops/mini/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kona_classic/keymaps/ansi/config.h b/keyboards/kona_classic/keymaps/ansi/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/ansi/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/ansi/keymap.c b/keyboards/kona_classic/keymaps/ansi/keymap.c
index 5aa483d284..8cf9d049b9 100644
--- a/keyboards/kona_classic/keymaps/ansi/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_ansi(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL
),
[_FN] = LAYOUT_ansi(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/ansi/rules.mk b/keyboards/kona_classic/keymaps/ansi/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/ansi/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/config.h b/keyboards/kona_classic/keymaps/ansi_arrows/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/ansi_arrows/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
index d3fcde5b28..ac0ebf02a9 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_ansi_arrows(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_ansi_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/config.h b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
index 950203be5f..1163931076 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_ansi_arrows(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_ansi_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/ansi_split/config.h b/keyboards/kona_classic/keymaps/ansi_split/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/ansi_split/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/ansi_split/keymap.c b/keyboards/kona_classic/keymaps/ansi_split/keymap.c
index 1091521357..4687b72ae7 100644
--- a/keyboards/kona_classic/keymaps/ansi_split/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_split/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_ansi_split(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL
),
[_FN] = LAYOUT_ansi_split(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/ansi_split/rules.mk b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/ansi_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/config.h b/keyboards/kona_classic/keymaps/ansi_split_arrows/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
index 60c8b15361..b53caf9ea3 100644
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_ansi_split_arrows(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_ansi_split_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/default/config.h b/keyboards/kona_classic/keymaps/default/config.h
deleted file mode 100644
index 09b8f1bc73..0000000000
--- a/keyboards/kona_classic/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kona_classic/keymaps/default/keymap.c b/keyboards/kona_classic/keymaps/default/keymap.c
index 60c2b91bc4..2b4949869f 100644
--- a/keyboards/kona_classic/keymaps/default/keymap.c
+++ b/keyboards/kona_classic/keymaps/default/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_all(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_F5, KC_F6, MO(_FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F7, KC_F8, KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_ENT, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F5, KC_F6, MO(_FN), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F7, KC_F8, KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_ENT, KC_RGUI, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_all(
- RGB_TOG, RGB_MOD, KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/default/rules.mk b/keyboards/kona_classic/keymaps/default/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/default/rules.mk
+++ b/keyboards/kona_classic/keymaps/default/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/iso/config.h b/keyboards/kona_classic/keymaps/iso/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/iso/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/iso/keymap.c b/keyboards/kona_classic/keymaps/iso/keymap.c
index c4c9f41f34..797d1cb188 100644
--- a/keyboards/kona_classic/keymaps/iso/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_iso(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, \
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL
),
[_FN] = LAYOUT_iso(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/iso/rules.mk b/keyboards/kona_classic/keymaps/iso/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/iso/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/config.h b/keyboards/kona_classic/keymaps/iso_arrows/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/iso_arrows/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
index 072785bf88..c117f58faa 100644
--- a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_iso_arrows(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, \
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_iso_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_arrows/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/iso_split/config.h b/keyboards/kona_classic/keymaps/iso_split/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/iso_split/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/iso_split/keymap.c b/keyboards/kona_classic/keymaps/iso_split/keymap.c
index a0830fc8d6..4ec69984d1 100644
--- a/keyboards/kona_classic/keymaps/iso_split/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_split/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_iso_split(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, \
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_LALT, KC_RGUI, MO(_FN), KC_RCTL
),
[_FN] = LAYOUT_iso_split(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/iso_split/rules.mk b/keyboards/kona_classic/keymaps/iso_split/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/iso_split/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/config.h b/keyboards/kona_classic/keymaps/iso_split_arrows/config.h
deleted file mode 100644
index a3828f7d5d..0000000000
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
index 29ce3375f6..e6bd3f58e3 100644
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
@@ -29,18 +29,18 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT] = LAYOUT_iso_split_arrows(
- KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, \
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN), \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, SFT_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(_FN),
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_iso_split_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
index 27cf4affcd..d12ec0f542 100644
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
+++ b/keyboards/kona_classic/keymaps/iso_split_arrows/rules.mk
@@ -1,31 +1,9 @@
-# Copyright 2013 Jun Wako <wakojun@gmail.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-# QMK Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
diff --git a/keyboards/kona_classic/rules.mk b/keyboards/kona_classic/rules.mk
index f03e4cf375..9b2c210d42 100644
--- a/keyboards/kona_classic/rules.mk
+++ b/keyboards/kona_classic/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kopibeng/mnk88/info.json b/keyboards/kopibeng/mnk88/info.json
index 60973689fb..2ee4da8050 100644
--- a/keyboards/kopibeng/mnk88/info.json
+++ b/keyboards/kopibeng/mnk88/info.json
@@ -103,7 +103,7 @@
{"label":"K4G", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_ansi_f13": {
+ "LAYOUT_tkl_f13_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
@@ -200,7 +200,7 @@
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_ansi_tsangan_f13": {
+ "LAYOUT_tkl_f13_ansi_tsangan": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
@@ -296,7 +296,7 @@
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_iso_f13": {
+ "LAYOUT_tkl_f13_iso": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
@@ -394,7 +394,7 @@
{"label":"\u2192", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_iso_tsangan_f13": {
+ "LAYOUT_tkl_f13_iso_tsangan": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1.25, "y":0},
diff --git a/keyboards/kopibeng/mnk88/mnk88.h b/keyboards/kopibeng/mnk88/mnk88.h
index 5bec9d1634..fd6803ce0c 100644
--- a/keyboards/kopibeng/mnk88/mnk88.h
+++ b/keyboards/kopibeng/mnk88/mnk88.h
@@ -56,7 +56,7 @@
{K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \
}
-#define LAYOUT_tkl_ansi_f13( \
+#define LAYOUT_tkl_f13_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3C, K2D, K2E, K2F, K2G, \
@@ -72,7 +72,7 @@
{K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \
}
-#define LAYOUT_tkl_ansi_tsangan_f13( \
+#define LAYOUT_tkl_f13_ansi_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3C, K2D, K2E, K2F, K2G, \
@@ -88,7 +88,7 @@
{K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, ___} \
}
-#define LAYOUT_tkl_iso_f13( \
+#define LAYOUT_tkl_f13_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3C, K2E, K2F, K2G, \
@@ -104,7 +104,7 @@
{K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, ___} \
}
-#define LAYOUT_tkl_iso_tsangan_f13( \
+#define LAYOUT_tkl_f13_iso_tsangan( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3C, K2E, K2F, K2G, \
diff --git a/keyboards/kopibeng/mnk88/rules.mk b/keyboards/kopibeng/mnk88/rules.mk
index cdfcbb418e..14dd406514 100644
--- a/keyboards/kopibeng/mnk88/rules.mk
+++ b/keyboards/kopibeng/mnk88/rules.mk
@@ -12,14 +12,13 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = no # Enable Encoder
# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = tkl_f13_ansi tkl_f13_ansi_tsangan tkl_f13_iso tkl_f13_iso_tsangan
diff --git a/keyboards/kopibeng/xt65/rules.mk b/keyboards/kopibeng/xt65/rules.mk
index d6b0bdad95..63a57dcadb 100644
--- a/keyboards/kopibeng/xt65/rules.mk
+++ b/keyboards/kopibeng/xt65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kopibeng/xt8x/rules.mk b/keyboards/kopibeng/xt8x/rules.mk
index 13f7b68bdc..5cb386a402 100644
--- a/keyboards/kopibeng/xt8x/rules.mk
+++ b/keyboards/kopibeng/xt8x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm16a/keymaps/default/config.h b/keyboards/kprepublic/bm16a/keymaps/default/config.h
deleted file mode 100644
index 08c234aee2..0000000000
--- a/keyboards/kprepublic/bm16a/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kprepublic/bm16a/keymaps/default/keymap.c b/keyboards/kprepublic/bm16a/keymaps/default/keymap.c
index a0b06ee92a..1020fe3804 100644
--- a/keyboards/kprepublic/bm16a/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm16a/keymaps/default/keymap.c
@@ -30,22 +30,22 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_ortho_4x4(
- KC_PGUP, KC_HOME, KC_UP, KC_END , \
- KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, \
- MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV, \
- MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT \
+ KC_PGUP, KC_HOME, KC_UP, KC_END ,
+ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT,
+ MO(_FN2), KC_VOLU, KC_MPLY, KC_MPRV,
+ MO(_FN1), KC_VOLD, KC_MUTE, KC_MNXT
),
[_FN1] = LAYOUT_ortho_4x4(
- KC_ESC, KC_P7, KC_P8, KC_P9, \
- KC_TAB, KC_P4, KC_P5, KC_P6, \
- KC_ENT, KC_P1, KC_P2, KC_P3, \
- _______, KC_P0, KC_P0, KC_DOT \
+ KC_ESC, KC_P7, KC_P8, KC_P9,
+ KC_TAB, KC_P4, KC_P5, KC_P6,
+ KC_ENT, KC_P1, KC_P2, KC_P3,
+ _______, KC_P0, KC_P0, KC_DOT
),
[_FN2] = LAYOUT_ortho_4x4(
- RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, \
- _______, _______, _______, RESET, \
- BL_STEP, _______, QMKBEST, QMKURL \
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ _______, _______, _______, RESET,
+ BL_STEP, _______, QMKBEST, QMKURL
)
};
diff --git a/keyboards/kprepublic/bm16a/rules.mk b/keyboards/kprepublic/bm16a/rules.mk
index 603dcc54f3..325564a154 100644
--- a/keyboards/kprepublic/bm16a/rules.mk
+++ b/keyboards/kprepublic/bm16a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm16s/keymaps/default/keymap.c b/keyboards/kprepublic/bm16s/keymaps/default/keymap.c
index 9dd697a0d9..ed324e37ff 100755
--- a/keyboards/kprepublic/bm16s/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm16s/keymaps/default/keymap.c
@@ -2,15 +2,15 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x4(
- KC_KP_7, KC_KP_8, KC_KP_9, MO(1), \
- KC_KP_4, KC_KP_5, KC_KP_6, KC_PMNS, \
- KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, \
- KC_KP_0, KC_PDOT, KC_PCMM, KC_PENT \
+ KC_KP_7, KC_KP_8, KC_KP_9, MO(1),
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_PMNS,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS,
+ KC_KP_0, KC_PDOT, KC_PCMM, KC_PENT
),
[1] = LAYOUT_ortho_4x4(
- RESET, BL_STEP, _______, KC_VOLU, \
- BL_TOGG, BL_DEC, BL_INC, KC_VOLD, \
- RGB_TOG, RGB_MOD, RGB_HUI, KC_MUTE, \
- RGB_SAI, RGB_SAD, RGB_HUD, _______ \
+ RESET, BL_STEP, _______, KC_VOLU,
+ BL_TOGG, BL_DEC, BL_INC, KC_VOLD,
+ RGB_TOG, RGB_MOD, RGB_HUI, KC_MUTE,
+ RGB_SAI, RGB_SAD, RGB_HUD, _______
),
}; \ No newline at end of file
diff --git a/keyboards/kprepublic/bm16s/keymaps/media/keymap.c b/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
index 082879320a..a2a9b72db9 100755
--- a/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
+++ b/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
@@ -6,15 +6,15 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x4(
- KC_BRIU, _______, _______, KC_VOLU, \
- KC_BRID, _______, _______, KC_VOLD, \
- _______, _______, _______, KC_MUTE, \
- KC_MPRV, KC_MPLY, KC_MNXT, MO(1) \
+ KC_BRIU, _______, _______, KC_VOLU,
+ KC_BRID, _______, _______, KC_VOLD,
+ _______, _______, _______, KC_MUTE,
+ KC_MPRV, KC_MPLY, KC_MNXT, MO(1)
),
[1] = LAYOUT_ortho_4x4(
- RESET, _______, _______, _______, \
- RGB_SPD, RGB_BRU, RGB_SPI, _______, \
- RGB_RMOD, RGB_BRD, RGB_MOD, _______, \
- RGB_TOG, _______, _______, _______ \
+ RESET, _______, _______, _______,
+ RGB_SPD, RGB_BRU, RGB_SPI, _______,
+ RGB_RMOD, RGB_BRD, RGB_MOD, _______,
+ RGB_TOG, _______, _______, _______
),
}; \ No newline at end of file
diff --git a/keyboards/kprepublic/bm16s/rules.mk b/keyboards/kprepublic/bm16s/rules.mk
index f1be2bad13..9f6dae5604 100755
--- a/keyboards/kprepublic/bm16s/rules.mk
+++ b/keyboards/kprepublic/bm16s/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/kprepublic/bm40hsrgb/rules.mk b/keyboards/kprepublic/bm40hsrgb/rules.mk
index 8f49a45d23..1731ebde8c 100755
--- a/keyboards/kprepublic/bm40hsrgb/rules.mk
+++ b/keyboards/kprepublic/bm40hsrgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/kprepublic/bm43a/keymaps/default/config.h b/keyboards/kprepublic/bm43a/keymaps/default/config.h
deleted file mode 100644
index 60dd02a9d0..0000000000
--- a/keyboards/kprepublic/bm43a/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 mechmerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/kprepublic/bm43a/rules.mk b/keyboards/kprepublic/bm43a/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/kprepublic/bm43a/rules.mk
+++ b/keyboards/kprepublic/bm43a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm43hsrgb/rules.mk b/keyboards/kprepublic/bm43hsrgb/rules.mk
index bd1d0e5ef7..30dc2eaefe 100755
--- a/keyboards/kprepublic/bm43hsrgb/rules.mk
+++ b/keyboards/kprepublic/bm43hsrgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm60hsrgb/readme.md b/keyboards/kprepublic/bm60hsrgb/readme.md
index bbb6ba45a1..1f0f13ae28 100644
--- a/keyboards/kprepublic/bm60hsrgb/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb/readme.md
@@ -2,12 +2,15 @@
A 60% hotswap inswitch RGB keyboard from KP Republic.
-* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
* Hardware Supported: BM60HSRGB
* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c)
Make example for this keyboard (after setting up your build environment):
- make kprepublic/bm60hsrgb/rev1:default
+ for rev1: make kprepublic/bm60hsrgb/rev1:default
+ for rev2: make kprepublic/bm60hsrgb/rev2:default
+
+To see which revision you have, look at the PCB. If it says bm60v2 on it, it's rev2. Otherwise it's rev1
+
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/keymap.c
index e8be1cccf6..e8be1cccf6 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/readme.md
index d45609f3d7..d45609f3d7 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/default/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/default/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c
index c43365356e..c43365356e 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/readme.md b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/readme.md
index aa2009e1e8..aa2009e1e8 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/jbradforddillon/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/keymap.c
index da2f6e8ced..da2f6e8ced 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb/keymaps/via/readme.md b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/readme.md
index 9335f2cab0..9335f2cab0 100644
--- a/keyboards/kprepublic/bm60hsrgb/keymaps/via/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/readme.md b/keyboards/kprepublic/bm60hsrgb/rev1/readme.md
new file mode 100644
index 0000000000..bdc0380129
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/readme.md
@@ -0,0 +1,13 @@
+# BM60HSRGB
+
+A 60% hotswap inswitch RGB keyboard from KP Republic.
+
+* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+* Hardware Supported: BM60HSRGB/rev1
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb/rev1:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk
index 7202056f31..9dfa04902e 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/config.h b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
new file mode 100644
index 0000000000..e25f0ad489
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
@@ -0,0 +1,139 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B50
+#define PRODUCT_ID 0x1121
+#define DEVICE_VER 0x0002
+#define MANUFACTURER KP Republic
+#define PRODUCT BM60V2
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, D2, D3, D5, F6 }
+#define MATRIX_COL_PINS { B2, B3, B7, B0, B1, F7, D4, D6, D7, B4, B5, B6, C6, C7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+#define USB_POLLING_INTERVAL_MS 1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 3
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+//rgb light setting
+#define RGBLIGHT_LIMIT_VAL 150
+#define RGBLED_NUM 6
+#define RGB_DI_PIN F0
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+#define DRIVER_ADDR_1 0b1010000
+
+#define RGB_MATRIX_KEYPRESSES
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 63
+//#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+
+#if defined(RGB_MATRIX_ENABLE) && defined(RGBLIGHT_ENABLE)
+ #define RGB_MATRIX_DISABLE_KEYCODES
+#endif
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+
+#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL
+
+// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
+// don't use those LEDs in RGB Matrix in that case.
+#ifdef RGBLIGHT_ENABLE
+# define WS2812_LED_TOTAL 0
+#else
+# define WS2812_LED_TOTAL 6
+#endif
+
+#define DRIVER_LED_TOTAL (ISSI_LED_TOTAL + WS2812_LED_TOTAL)
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
+
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/info.json b/keyboards/kprepublic/bm60hsrgb/rev2/info.json
new file mode 100644
index 0000000000..7cbd7fb4f7
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/info.json
@@ -0,0 +1,78 @@
+{
+ "keyboard_name": "bm60v2",
+ "url": "",
+ "maintainer": "bdtc123",
+ "layouts": {
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a46be1786e
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 bdtc123
+ * Copyright 2022 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi_arrow(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_60_ansi_arrow(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..55db68139e
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 bdtc123
+ * Copyright 2022 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi_arrow(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_60_ansi_arrow(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_60_ansi_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_ansi_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/readme.md b/keyboards/kprepublic/bm60hsrgb/rev2/readme.md
new file mode 100644
index 0000000000..14d33b058e
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/readme.md
@@ -0,0 +1,13 @@
+# BM60HSRGB
+
+A 60% hotswap inswitch RGB keyboard from KP Republic.
+
+* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123)
+* Hardware Supported: BM60HSRGB/rev2
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb/rev2:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
new file mode 100644
index 0000000000..4fe8480691
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
@@ -0,0 +1,200 @@
+/* Copyright 2021 bdtc123
+ * Copyright 2021 sigprof
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+# include "i2c_master.h"
+# include "is31fl3733.h"
+# include "ws2812.h"
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ { 0, B_1, A_1, C_1 },
+ { 0, B_2, A_2, C_2 },
+ { 0, B_3, A_3, C_3 },
+ { 0, B_4, A_4, C_4 },
+ { 0, B_5, A_5, C_5 },
+ { 0, B_6, A_6, C_6 },
+ { 0, B_7, A_7, C_7 },
+ { 0, B_8, A_8, C_8 },
+ { 0, B_9, A_9, C_9 },
+ { 0, B_10, A_10, C_10 },
+ { 0, B_11, A_11, C_11 },
+ { 0, B_12, A_12, C_12 },
+ { 0, B_13, A_13, C_13 },
+ { 0, B_14, A_14, C_14 },
+
+ { 0, E_1, D_1, F_1 },
+ { 0, E_2, D_2, F_2 },
+ { 0, E_3, D_3, F_3 },
+ { 0, E_4, D_4, F_4 },
+ { 0, E_5, D_5, F_5 },
+ { 0, E_6, D_6, F_6 },
+ { 0, E_7, D_7, F_7 },
+ { 0, E_8, D_8, F_8 },
+ { 0, E_9, D_9, F_9 },
+ { 0, E_10, D_10, F_10 },
+ { 0, E_11, D_11, F_11 },
+ { 0, E_12, D_12, F_12 },
+ { 0, E_13, D_13, F_13 },
+ { 0, E_14, D_14, F_14 },
+
+ { 0, H_1, G_1, I_1 },
+ { 0, H_2, G_2, I_2 },
+ { 0, H_3, G_3, I_3 },
+ { 0, H_4, G_4, I_4 },
+ { 0, H_5, G_5, I_5 },
+ { 0, H_6, G_6, I_6 },
+ { 0, H_7, G_7, I_7 },
+ { 0, H_8, G_8, I_8 },
+ { 0, H_9, G_9, I_9 },
+ { 0, H_10, G_10, I_10 },
+ { 0, H_11, G_11, I_11 },
+ { 0, H_12, G_12, I_12 },
+ { 0, H_14, G_14, I_14 },
+
+ { 0, K_1, J_1, L_1 },
+ { 0, K_2, J_2, L_2 },
+ { 0, K_3, J_3, L_3 },
+ { 0, K_4, J_4, L_4 },
+ { 0, K_5, J_5, L_5 },
+ { 0, K_6, J_6, L_6 },
+ { 0, K_7, J_7, L_7 },
+ { 0, K_8, J_8, L_8 },
+ { 0, K_9, J_9, L_9 },
+ { 0, K_10, J_10, L_10 },
+ { 0, K_12, J_12, L_12 },
+ { 0, K_13, J_13, L_13 },
+ { 0, K_14, J_14, L_14 },
+
+ { 0, H_16, G_16, I_16 },
+ { 0, H_15, G_15, I_15 },
+ { 0, H_13, G_13, I_13 },
+ { 0, E_15, D_15, F_15 },
+ { 0, K_15, J_15, L_15 },
+ { 0, K_11, J_11, L_11 },
+ { 0, K_16, J_16, L_16 },
+ { 0, B_16, A_16, C_16 },
+ { 0, E_16, D_16, F_16 }
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, NO_LED, 51, 52, 53 },
+ { 54, 55, 56, NO_LED, NO_LED, 57, NO_LED, NO_LED, NO_LED, 58, 59, 60, 61, 62 }
+ }, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
+ { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },
+ // Capslock, A, S, D, F, G, H, A, K, L, ;, ', Enter
+ { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 },
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
+ { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 },
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
+# if WS2812_LED_TOTAL > 0
+ ,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
+# endif
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ],
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ // Capslock, A, S, D, F, G, H, A, K, L, ;, ', Enter
+ 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, ?
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4,
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
+# if WS2812_LED_TOTAL > 0
+ ,2, 2, 2, 2, 2, 2
+# endif
+ }
+};
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+
+// clang-format on
+
+// ==========================================================================
+// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
+// ==========================================================================
+
+# if WS2812_LED_TOTAL > 0
+LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
+# endif
+
+static void rgb_matrix_driver_init(void) {
+ i2c_init();
+ IS31FL3733_init(DRIVER_ADDR_1, 0);
+ for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) {
+ bool enabled = true;
+ IS31FL3733_set_led_control_register(index, enabled, enabled, enabled);
+ }
+ IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0);
+}
+
+static void rgb_matrix_driver_flush(void) {
+ IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0);
+# if WS2812_LED_TOTAL > 0
+ ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# endif
+}
+
+static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < ISSI_LED_TOTAL) {
+ IS31FL3733_set_color(index, red, green, blue);
+ } else {
+# if WS2812_LED_TOTAL > 0
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue;
+# endif
+ }
+}
+
+static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ IS31FL3733_set_color_all(red, green, blue);
+# if WS2812_LED_TOTAL > 0
+ for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
+ rgb_matrix_ws2812_array[i].r = red;
+ rgb_matrix_ws2812_array[i].g = green;
+ rgb_matrix_ws2812_array[i].b = blue;
+ }
+# endif
+}
+
+// clang-format off
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = rgb_matrix_driver_init,
+ .flush = rgb_matrix_driver_flush,
+ .set_color = rgb_matrix_driver_set_color,
+ .set_color_all = rgb_matrix_driver_set_color_all,
+};
+// clang-format on
+
+#endif /* RGB_MATRIX_ENABLE */
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.h b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.h
new file mode 100644
index 0000000000..f8aeaca39e
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_60_ansi_arrow( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B, K3C, K3D }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D }, \
+}
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
new file mode 100644
index 0000000000..f307812917
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+NO_USB_STARTUP_CHECK = no
+LTO_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = custom
+WS2812_DRIVER_REQUIRED = yes
+
+COMMON_VPATH += $(DRIVER_PATH)/led/issi
+SRC += is31fl3733.c
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/readme.md
index 5cef32cbeb..19db51eead 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_iso/readme.md
@@ -4,16 +4,19 @@
A 60% ISO hotswap inswitch RGB keyboard.
-* Keyboard Maintainer: [markva](https://github.com/markva)
-* Hardware Supported: BM60 RGB ISO
+* Hardware Supported: BM60HSRGB_ISO
* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-iso-uk-eu-rgb-60-hot-swappable-pcb-qmk-firmware-rgb-underglow-type-c)
Make example for this keyboard (after setting up your build environment):
- make kprepublic/bm60hsrgb_iso/rev1:default
+ for rev1: make kprepublic/bm60hsrgb_iso/rev1:default
+ for rev2: make kprepublic/bm60hsrgb_iso/rev2:default
Flashing example for this keyboard:
- make kprepublic/bm60hsrgb_iso:default:flash
+ for rev1: make kprepublic/bm60hsrgb_iso/rev1:default:flash
+ for rev2: make kprepublic/bm60hsrgb_iso/rev2:default:flash
+
+To check which board revision you have, check the PCB. If it has BM60v2-ISO printed on it, it's rev2. Otherwise it's rev1.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/keymap.c
index 9eca076df9..9eca076df9 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/readme.md
index 1fd0185d42..1fd0185d42 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/default/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/default/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/config.h
index a1bb75eb4a..a1bb75eb4a 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/config.h
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/keymap.c
index 4e874b26df..4e874b26df 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/readme.md
index af5b29da19..af5b29da19 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/keymaps/iso_nordic_sleepmode/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/keymaps/iso_nordic_sleepmode/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/rev1/readme.md
new file mode 100644
index 0000000000..c18f2eb8cb
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/readme.md
@@ -0,0 +1,19 @@
+# BM60HSRGB_ISO/rev2
+
+![BM60HSRGB_ISO](https://i.imgur.com/i3gk2vql.jpg)
+
+A 60% ISO hotswap inswitch RGB keyboard.
+
+* Keyboard Maintainer: [markva](https://github.com/markva)
+* Hardware Supported: BM60HSRGB_ISO/rev1
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-iso-uk-eu-rgb-60-hot-swappable-pcb-qmk-firmware-rgb-underglow-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb_iso/rev1:default
+
+Flashing example for this keyboard:
+
+ make kprepublic/bm60hsrgb_iso/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk
index bf88ac85a6..33488b9d3a 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
new file mode 100644
index 0000000000..8286b447a8
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
@@ -0,0 +1,157 @@
+/* Copyright 2021 bdtc123
+ * Copyright 2021 sigprof
+ * Copyright 2021 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B50
+#define PRODUCT_ID 0x1123
+#define DEVICE_VER 0x0002
+#define MANUFACTURER KP REPUBLIC
+#define PRODUCT BM60V2_ISO
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, D2, D3, D5, F6 }
+#define MATRIX_COL_PINS { B2, B3, B7, B0, B1, F7, D4, D6, D7, B4, B5, B6, C6, C7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+#define USB_POLLING_INTERVAL_MS 1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 3
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+//rgb light setting
+#define RGBLIGHT_LIMIT_VAL 150
+#define RGBLED_NUM 6
+#define RGB_DI_PIN F0
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define DISABLE_RGB_MATRIX_RAINDROPS
+# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define DRIVER_ADDR_1 0b1010000
+# define DRIVER_COUNT 1
+# define DRIVER_1_LED_TOTAL 64
+
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+// Note: The RGB LED driver configuration is not inside #ifdef blocks, so that
+// the driver code would still compile even without RGBLIGHT_ENABLE and
+// RGB_MATRIX_ENABLE (usually this is not required, but with the custom
+// IS31FL3733+WS2812 driver setup used by this board the LED controller drivers
+// are compiled unconditionally).
+
+#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+
+// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
+// don't use those LEDs in RGB Matrix in that case.
+#ifdef RGBLIGHT_ENABLE
+# define WS2812_LED_TOTAL 0
+#else
+# define WS2812_LED_TOTAL RGBLED_NUM
+#endif
+
+#define DRIVER_LED_TOTAL (ISSI_LED_TOTAL + WS2812_LED_TOTAL)
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json
new file mode 100644
index 0000000000..8fd3f1786f
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json
@@ -0,0 +1,79 @@
+{
+ "keyboard_name": "bm60v2_ISO",
+ "url": "",
+ "maintainer": "kp republic",
+ "layouts": {
+ "LAYOUT_60_iso_arrow": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..93da46e31b
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 markva
+ * Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_iso_arrow(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_60_iso_arrow(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+};
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2bdfd2efe6
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2020 markva
+ * Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_iso_arrow(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_60_iso_arrow(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [2] = LAYOUT_60_iso_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_iso_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/readme.md b/keyboards/kprepublic/bm60hsrgb_iso/rev2/readme.md
new file mode 100644
index 0000000000..d25f538e7e
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/readme.md
@@ -0,0 +1,19 @@
+# BM60HSRGB_ISO/rev2
+
+![BM60HSRGB_ISO](https://i.imgur.com/i3gk2vql.jpg)
+
+A 60% ISO hotswap inswitch RGB keyboard.
+
+* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123)
+* Hardware Supported: BM60HSRGB_ISO/rev2
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-iso-uk-eu-rgb-60-hot-swappable-pcb-qmk-firmware-rgb-underglow-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb_iso/rev2:default
+
+Flashing example for this keyboard:
+
+ make kprepublic/bm60hsrgb_iso/rev2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
new file mode 100644
index 0000000000..4500ff37b9
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
@@ -0,0 +1,200 @@
+/* Copyright 2021 bdtc123
+ * Copyright 2021 sigprof
+ * Copyright 2021 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+# include "i2c_master.h"
+# include "is31fl3733.h"
+# include "ws2812.h"
+
+
+const PROGMEM is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ { 0, B_1, A_1, C_1 },
+ { 0, B_2, A_2, C_2 },
+ { 0, B_3, A_3, C_3 },
+ { 0, B_4, A_4, C_4 },
+ { 0, B_5, A_5, C_5 },
+ { 0, B_6, A_6, C_6 },
+ { 0, B_7, A_7, C_7 },
+ { 0, B_8, A_8, C_8 },
+ { 0, B_9, A_9, C_9 },
+ { 0, B_10, A_10, C_10 },
+ { 0, B_11, A_11, C_11 },
+ { 0, B_12, A_12, C_12 },
+ { 0, B_13, A_13, C_13 },
+ { 0, B_14, A_14, C_14 },
+
+ { 0, E_1, D_1, F_1 },
+ { 0, E_2, D_2, F_2 },
+ { 0, E_3, D_3, F_3 },
+ { 0, E_4, D_4, F_4 },
+ { 0, E_5, D_5, F_5 },
+ { 0, E_6, D_6, F_6 },
+ { 0, E_7, D_7, F_7 },
+ { 0, E_8, D_8, F_8 },
+ { 0, E_9, D_9, F_9 },
+ { 0, E_10, D_10, F_10 },
+ { 0, E_11, D_11, F_11 },
+ { 0, E_12, D_12, F_12 },
+ { 0, E_13, D_13, F_13 },
+ { 0, E_14, D_14, F_14 },
+
+ { 0, H_1, G_1, I_1 },
+ { 0, H_2, G_2, I_2 },
+ { 0, H_3, G_3, I_3 },
+ { 0, H_4, G_4, I_4 },
+ { 0, H_5, G_5, I_5 },
+ { 0, H_6, G_6, I_6 },
+ { 0, H_7, G_7, I_7 },
+ { 0, H_8, G_8, I_8 },
+ { 0, H_9, G_9, I_9 },
+ { 0, H_10, G_10, I_10 },
+ { 0, H_11, G_11, I_11 },
+ { 0, H_12, G_12, I_12 },
+ { 0, H_13, G_13, I_13 },
+
+ { 0, K_1, J_1, L_1 },
+ { 0, K_11, J_11, L_11 },
+ { 0, K_2, J_2, L_2 },
+ { 0, K_3, J_3, L_3 },
+ { 0, K_4, J_4, L_4 },
+ { 0, K_5, J_5, L_5 },
+ { 0, K_6, J_6, L_6 },
+ { 0, K_7, J_7, L_7 },
+ { 0, K_8, J_8, L_8 },
+ { 0, K_9, J_9, L_9 },
+ { 0, K_10, J_10, L_10 },
+ { 0, K_12, J_12, L_12 },
+ { 0, K_13, J_13, L_13 },
+ { 0, K_14, J_14, L_14 },
+
+ { 0, H_16, G_16, I_16 },
+ { 0, H_14, G_14, I_14 },
+ { 0, H_15, G_15, I_15 },
+ { 0, E_15, D_15, F_15 },
+ { 0, K_15, J_15, L_15 },
+ { 0, K_16, J_16, L_16 },
+ { 0, B_16, A_16, C_16 },
+ { 0, B_15, A_15, C_15 },
+ { 0, E_16, D_16, F_16 }
+};
+
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,NO_LED},
+ { 41, 58, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54 },
+ { 55, 56, 57,NO_LED,NO_LED, 58,NO_LED,NO_LED,NO_LED, 59, 60, 61, 62, 63 }
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
+ { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
+ { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 },
+ // LShift, <, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
+ { 3, 48 }, { 22, 48 }, { 33, 48 }, { 48, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 194, 48 }, { 213, 48 },
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
+# if WS2812_LED_TOTAL > 0
+ ,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
+# endif
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], Enter
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ',#
+ 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ // LShift,backslash, Z, X, C, V, B, N, M, ,, ., Shift, Up, /
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4,
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ 1, 1, 1, 4, 1, 1, 1, 1, 1
+# if WS2812_LED_TOTAL > 0
+ ,2, 2, 2, 2, 2, 2
+# endif
+} };
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+// clang-format on
+
+// ==========================================================================
+// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
+// ==========================================================================
+
+# if WS2812_LED_TOTAL > 0
+LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
+# endif
+
+static void rgb_matrix_driver_init(void) {
+ i2c_init();
+ IS31FL3733_init(DRIVER_ADDR_1, 0);
+ for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) {
+ bool enabled = true;
+ IS31FL3733_set_led_control_register(index, enabled, enabled, enabled);
+ }
+ IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0);
+}
+
+static void rgb_matrix_driver_flush(void) {
+ IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0);
+# if WS2812_LED_TOTAL > 0
+ ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# endif
+}
+
+static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < ISSI_LED_TOTAL) {
+ IS31FL3733_set_color(index, red, green, blue);
+ } else {
+# if WS2812_LED_TOTAL > 0
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue;
+# endif
+ }
+}
+
+static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ IS31FL3733_set_color_all(red, green, blue);
+# if WS2812_LED_TOTAL > 0
+ for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
+ rgb_matrix_ws2812_array[i].r = red;
+ rgb_matrix_ws2812_array[i].g = green;
+ rgb_matrix_ws2812_array[i].b = blue;
+ }
+# endif
+}
+
+// clang-format off
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = rgb_matrix_driver_init,
+ .flush = rgb_matrix_driver_flush,
+ .set_color = rgb_matrix_driver_set_color,
+ .set_color_all = rgb_matrix_driver_set_color_all,
+};
+// clang-format on
+
+#endif /* RGB_MATRIX_ENABLE */
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.h
new file mode 100644
index 0000000000..75e30bab52
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_60_iso_arrow( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, \
+ K30, K43, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, KC_NO, K3B, K3C, K3D }, \
+ { K40, K41, K42, K43, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D }, \
+}
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
new file mode 100644
index 0000000000..8ac7dd5a51
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
@@ -0,0 +1,31 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
+
+
+# RGB Matrix is required to support per-key LEDs connected to IS31FL3733.
+RGB_MATRIX_ENABLE = yes
+
+# The custom RGB Matrix driver combines IS31FL3733 and WS2812; things that are
+# normally done by common_features.mk for both of these drivers need to be done
+# here manually.
+RGB_MATRIX_DRIVER = custom
+COMMON_VPATH += $(DRIVER_PATH)/led/issi
+SRC += is31fl3733.c
+QUANTUM_LIB_SRC += i2c_master.c
+WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/readme.md
index ef29166df8..5c9a843d1c 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_poker/readme.md
@@ -2,12 +2,15 @@
A 60% hotswap inswitch RGB (north facing) keyboard from KP Republic.
-* Keyboard Maintainer: [ipetepete](https://github.com/ipetepete)
-* Hardware Supported: BM60HSRGB_Poker
+* Hardware Supported: BM60HSRGB_Poker/rev2
* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-poker-60-gh60-hot-swap-custom-mechanical-keyboard-pcb-program-qmk-underglow-type-c)
Make example for this keyboard (after setting up your build environment):
- make kprepublic/bm60hsrgb_poker/rev1:default
+ for rev1: make kprepublic/bm60hsrgb_poker/rev1:default
+ for rev2: make kprepublic/bm60hsrgb_poker/rev2:default
+
+To determine your board revision, check the PCB. For boards with bm60v2_poker printed on the PCB, use rev2. Otherwise, use rev1
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h
new file mode 100644
index 0000000000..b8dea6a76a
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/config.h
@@ -0,0 +1,6 @@
+// Copiright 2021 Carlo Sala (@carlosala)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define UNICODE_SELECTED_MODES UC_LNX
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/keymap.c
new file mode 100644
index 0000000000..6cd5741786
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/keymap.c
@@ -0,0 +1,25 @@
+// Copiright 2021 Carlo Sala (@carlosala)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ LT(2, KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_CAPS),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL),
+ [1] = LAYOUT_60_ansi(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, RGB_MOD, RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, LALT(KC_F4),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [2] = LAYOUT_60_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, UC(0x00B7), KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET)
+};
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/rules.mk
new file mode 100644
index 0000000000..fd581f26db
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/carlosala/rules.mk
@@ -0,0 +1,2 @@
+MOUSEKEY_ENABLE = no
+UNICODE_ENABLE = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c
index 5050b25a90..5050b25a90 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/david/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/default/keymap.c
index efd74ad134..efd74ad134 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/default/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c
index e59660242e..e59660242e 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/readme.md
index 7d381ff125..7d381ff125 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/readme.md
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/rules.mk
index 3a025ba3a3..3a025ba3a3 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/ipetepete/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/rules.mk
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/keymap.c
index 8f577b4593..8f577b4593 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/keymap.c
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/rev1/readme.md
new file mode 100644
index 0000000000..f21ef45da7
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/readme.md
@@ -0,0 +1,13 @@
+# BM60HSRGB_Poker 60% Mechanical Keyboard RGB PCB
+
+A 60% hotswap inswitch RGB (north facing) keyboard from KP Republic.
+
+* Keyboard Maintainer: [ipetepete](https://github.com/ipetepete)
+* Hardware Supported: BM60HSRGB_Poker/rev1
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-poker-60-gh60-hot-swap-custom-mechanical-keyboard-pcb-program-qmk-underglow-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb_poker/rev1:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk
index 4fb38c5a70..5b0aeb5b30 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
new file mode 100644
index 0000000000..b5efc1f596
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
@@ -0,0 +1,153 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B50
+#define PRODUCT_ID 0x1122
+#define DEVICE_VER 0x0002
+#define MANUFACTURER KP Republic
+#define PRODUCT BM60V2_poker
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, D2, D3, D5, F6 }
+#define MATRIX_COL_PINS { B2, B3, B7, B0, B1, F7, D4, D6, D7, B4, B5, B6, C6, C7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+#define USB_POLLING_INTERVAL_MS 1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+//rgb light setting
+#define RGBLIGHT_LIMIT_VAL 150
+#define RGBLED_NUM 6
+#define RGB_DI_PIN F0
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
+# define RGB_MATRIX_KEYPRESSES
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+
+
+
+
+
+// Note: The RGB LED driver configuration is not inside #ifdef blocks, so that
+// the driver code would still compile even without RGBLIGHT_ENABLE and
+// RGB_MATRIX_ENABLE (usually this is not required, but with the custom
+// IS31FL3733+WS2812 driver setup used by this board the LED controller drivers
+// are compiled unconditionally).
+
+// Configure the IS31FL3733 driver for per-key RGB LEDs
+#define DRIVER_COUNT 1
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_1_LED_TOTAL 61
+
+#define ISSI_LED_TOTAL DRIVER_1_LED_TOTAL
+
+// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
+// don't use those LEDs in RGB Matrix in that case.
+#ifdef RGBLIGHT_ENABLE
+# define WS2812_LED_TOTAL 0
+#else
+# define WS2812_LED_TOTAL RGBLED_NUM
+#endif
+
+#define DRIVER_LED_TOTAL (ISSI_LED_TOTAL + WS2812_LED_TOTAL)
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json
new file mode 100644
index 0000000000..914334e113
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json
@@ -0,0 +1,76 @@
+{
+ "keyboard_name": "bm60v2_poker",
+ "url": "",
+ "maintainer": "bdtc123",
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3,"w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4,"w":1.25},
+ {"x":11.25, "y":4,"w":1.25},
+ {"x":12.5, "y":4,"w":1.25},
+ {"x":13.75, "y":4,"w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b1c5c57ea4
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f74fa21de8
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/readme.md b/keyboards/kprepublic/bm60hsrgb_poker/rev2/readme.md
new file mode 100644
index 0000000000..18a074cdb0
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/readme.md
@@ -0,0 +1,13 @@
+# BM60 Poker 60% Mechanical Keyboard RGB PCB
+
+A 60% hotswap inswitch RGB (north facing) keyboard from KP Republic.
+
+* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123)
+* Hardware Supported: BM60HSRGB_Poker/rev2
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-poker-60-gh60-hot-swap-custom-mechanical-keyboard-pcb-program-qmk-underglow-type-c)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm60hsrgb_poker/rev2:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c
new file mode 100644
index 0000000000..32cfce362f
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c
@@ -0,0 +1,196 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+# include "i2c_master.h"
+# include "is31fl3733.h"
+# include "ws2812.h"
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ { 0, B_1, A_1, C_1 },
+ { 0, B_2, A_2, C_2 },
+ { 0, B_3, A_3, C_3 },
+ { 0, B_4, A_4, C_4 },
+ { 0, B_5, A_5, C_5 },
+ { 0, B_6, A_6, C_6 },
+ { 0, B_7, A_7, C_7 },
+ { 0, B_8, A_8, C_8 },
+ { 0, B_9, A_9, C_9 },
+ { 0, B_10, A_10, C_10 },
+ { 0, B_11, A_11, C_11 },
+ { 0, B_12, A_12, C_12 },
+ { 0, B_13, A_13, C_13 },
+ { 0, B_14, A_14, C_14 },
+
+ { 0, E_1, D_1, F_1 },
+ { 0, E_2, D_2, F_2 },
+ { 0, E_3, D_3, F_3 },
+ { 0, E_4, D_4, F_4 },
+ { 0, E_5, D_5, F_5 },
+ { 0, E_6, D_6, F_6 },
+ { 0, E_7, D_7, F_7 },
+ { 0, E_8, D_8, F_8 },
+ { 0, E_9, D_9, F_9 },
+ { 0, E_10, D_10, F_10 },
+ { 0, E_11, D_11, F_11 },
+ { 0, E_12, D_12, F_12 },
+ { 0, E_13, D_13, F_13 },
+ { 0, E_14, D_14, F_14 },
+
+ { 0, H_1, G_1, I_1 },
+ { 0, H_2, G_2, I_2 },
+ { 0, H_3, G_3, I_3 },
+ { 0, H_4, G_4, I_4 },
+ { 0, H_5, G_5, I_5 },
+ { 0, H_6, G_6, I_6 },
+ { 0, H_7, G_7, I_7 },
+ { 0, H_8, G_8, I_8 },
+ { 0, H_9, G_9, I_9 },
+ { 0, H_10, G_10, I_10 },
+ { 0, H_11, G_11, I_11 },
+ { 0, H_12, G_12, I_12 },
+ { 0, H_14, G_14, I_14 },
+
+ { 0, K_1, J_1, L_1 },
+ { 0, K_2, J_2, L_2 },
+ { 0, K_3, J_3, L_3 },
+ { 0, K_4, J_4, L_4 },
+ { 0, K_5, J_5, L_5 },
+ { 0, K_6, J_6, L_6 },
+ { 0, K_7, J_7, L_7 },
+ { 0, K_8, J_8, L_8 },
+ { 0, K_9, J_9, L_9 },
+ { 0, K_10, J_10, L_10 },
+ { 0, K_11, J_11, L_11 },
+ { 0, K_13, J_13, L_13 },
+
+ { 0, H_16, G_16, I_16 },
+ { 0, H_15, G_15, I_15 },
+ { 0, H_13, G_13, I_13 },
+ { 0, E_15, D_15, F_15 },
+ { 0, K_15, J_15, L_15 },
+ { 0, K_16, J_16, L_16 },
+ { 0, K_12, J_12, L_12 },
+ { 0, E_16, D_16, F_16 }
+};
+
+led_config_t g_led_config = {
+ {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, NO_LED, 40 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, NO_LED, NO_LED, 52 },
+ { 53, 54, 55, NO_LED, NO_LED, 56, NO_LED, NO_LED, NO_LED, 57, 58, 59, NO_LED, 60 }
+ }, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
+ { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
+ { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 },
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
+ { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 },
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 210, 64 }, { 225, 64 }
+# if WS2812_LED_TOTAL > 0
+ ,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
+# endif
+}, {
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
+ 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ 1, 1, 1, 4, 1, 1, 1, 1
+# if WS2812_LED_TOTAL > 0
+ ,2, 2, 2, 2, 2, 2
+# endif
+ }
+};
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF);
+ }
+}
+
+// clang-format on
+
+// ==========================================================================
+// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
+// ==========================================================================
+
+# if WS2812_LED_TOTAL > 0
+LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
+# endif
+
+static void rgb_matrix_driver_init(void) {
+ i2c_init();
+ IS31FL3733_init(DRIVER_ADDR_1, 0);
+ for (uint8_t index = 0; index < ISSI_LED_TOTAL; index++) {
+ bool enabled = true;
+ IS31FL3733_set_led_control_register(index, enabled, enabled, enabled);
+ }
+ IS31FL3733_update_led_control_registers(DRIVER_ADDR_1, 0);
+}
+
+static void rgb_matrix_driver_flush(void) {
+ IS31FL3733_update_pwm_buffers(DRIVER_ADDR_1, 0);
+# if WS2812_LED_TOTAL > 0
+ ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# endif
+}
+
+static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < ISSI_LED_TOTAL) {
+ IS31FL3733_set_color(index, red, green, blue);
+ } else {
+# if WS2812_LED_TOTAL > 0
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].r = red;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].g = green;
+ rgb_matrix_ws2812_array[index - ISSI_LED_TOTAL].b = blue;
+# endif
+ }
+}
+
+static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ IS31FL3733_set_color_all(red, green, blue);
+# if WS2812_LED_TOTAL > 0
+ for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
+ rgb_matrix_ws2812_array[i].r = red;
+ rgb_matrix_ws2812_array[i].g = green;
+ rgb_matrix_ws2812_array[i].b = blue;
+ }
+# endif
+}
+
+// clang-format off
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = rgb_matrix_driver_init,
+ .flush = rgb_matrix_driver_flush,
+ .set_color = rgb_matrix_driver_set_color,
+ .set_color_all = rgb_matrix_driver_set_color_all,
+};
+// clang-format on
+
+#endif /* RGB_MATRIX_ENABLE */
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.h
new file mode 100644
index 0000000000..6b4344586a
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, KC_NO, K3D }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D }, \
+}
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
new file mode 100644
index 0000000000..cd9c25149a
--- /dev/null
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
@@ -0,0 +1,31 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+LAYOUTS = 60_ansi
+LTO_ENABLE = yes
+
+# RGB Matrix is required to support per-key LEDs connected to IS31FL3733.
+RGB_MATRIX_ENABLE = yes
+
+# The custom RGB Matrix driver combines IS31FL3733 and WS2812; things that are
+# normally done by common_features.mk for both of these drivers need to be done
+# here manually.
+RGB_MATRIX_DRIVER = custom
+COMMON_VPATH += $(DRIVER_PATH)/led/issi
+SRC += is31fl3733.c
+QUANTUM_LIB_SRC += i2c_master.c
+WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk b/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk
index a0e7019715..afd19898de 100644
--- a/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk
+++ b/keyboards/kprepublic/bm65hsrgb/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c
index 134c271824..3d7f586d76 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c
+++ b/keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 ipetepete, 2021 deadolus
+/* Copyright 2020 ipetepete, 2021 deadolus, 2022 p4yne
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,37 +17,41 @@
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 , 14},
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14},
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
{ 30, NO_LED, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43},
{ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58},
{ 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 62, 63, NO_LED, 64, 65, 66, 67}
+
}, {
- // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
- { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 },{ 224, 0 },
- // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
- { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 },{ 224, 16},
- // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
- { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, { 224, 32 },
- // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
- { 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 195, 48 }, { 209, 48 }, { 224, 48 },
- // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
- { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 194, 64 }, { 209, 64 },{ 224, 64 },
- // UNDERGLOW
- { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 }
+ // LED Index to Physical Position
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 202, 0 }, { 224, 0 },
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], Enter, Pos1
+ { 7, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 206, 16 }, { 224, 16 },
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', , PageUp
+ { 11, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 176, 32 }, { 198, 32 }, { 224, 32 },
+ // LShift, <, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, PageDown
+ { 3, 48 }, { 18, 48 }, { 33, 48 }, { 48, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 190, 48 }, { 209, 48 }, { 224, 48 },
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ { 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 194, 64 }, { 209, 64 },{ 224, 64 },
+ // UNDERGLOW
+ { 216, 32 }, { 180, 32 }, { 144, 32 }, { 108, 32 }, { 72, 32 }, { 36, 32 }
}, {
- // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], ,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
- 1, 1, 1, 4, 1, 1, 1, 1, 1,
- // UNDERGLOW
- 2, 2, 2, 2, 2, 2
+ // LED Index to Flag
+ // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], Enter, Pos1
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // Capslock, A, S, D, F, G, H, J, K, L, ;, ', , PageUp
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ // LShift, <, Z, X, C, V, B, N, M, ,, ., /, RShift, Up, PageDown
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ // Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
+ 1, 1, 1, 4, 1, 1, 1, 1, 1,
+ // UNDERGLOW
+ 2, 2, 2, 2, 2, 2
} };
__attribute__ ((weak))
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/config.h b/keyboards/kprepublic/bm65hsrgb_iso/config.h
index 30b27dc26e..aafb43bb51 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/config.h
+++ b/keyboards/kprepublic/bm65hsrgb_iso/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 ipetepete, 2021 deadolus
+Copyright 2020 ipetepete, 2021 deadolus, 2022 p4yne
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -29,6 +29,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
+
+/* Force NKRO */
#define FORCE_NKRO
/*
@@ -105,8 +107,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_BAND_SAT
-# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
- /*== all animations enable ==*/
+/* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_SLEEP
+/*== all animations enable ==*/
# define RGBLIGHT_EFFECT_BREATHING
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rules.mk b/keyboards/kprepublic/bm65hsrgb_iso/rules.mk
index 929b2f939f..c3a6bf1d48 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/rules.mk
+++ b/keyboards/kprepublic/bm65hsrgb_iso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c b/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c
index b405a9f204..734d2ee677 100644
--- a/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c
+++ b/keyboards/kprepublic/bm68hsrgb/bm68hsrgb.c
@@ -41,4 +41,12 @@ led_config_t g_led_config = { {
1, 1, 1, 4, 1, 1, 1, 1, 1, 1, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
2, 2, 2, 2, 2, 2 // UNDERGLOW
} };
+
+//CAPS backlight
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(30, 0xFF, 0xFF, 0xFF);
+ }
+}
#endif
diff --git a/keyboards/kprepublic/bm68hsrgb/rules.mk b/keyboards/kprepublic/bm68hsrgb/rules.mk
index 910923efd1..92c37f393b 100644
--- a/keyboards/kprepublic/bm68hsrgb/rules.mk
+++ b/keyboards/kprepublic/bm68hsrgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm80hsrgb/config.h b/keyboards/kprepublic/bm80hsrgb/config.h
index b1a2ad23a1..f56daf948c 100644
--- a/keyboards/kprepublic/bm80hsrgb/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/config.h
@@ -100,7 +100,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/kprepublic/bm80hsrgb/rules.mk b/keyboards/kprepublic/bm80hsrgb/rules.mk
index 0db2759897..2fd87508e4 100644
--- a/keyboards/kprepublic/bm80hsrgb/rules.mk
+++ b/keyboards/kprepublic/bm80hsrgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.c b/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.c
new file mode 100644
index 0000000000..4aad7af0f1
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 peepeetee
+ * Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bm980hsrgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, NO_LED, 13 },
+ { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED, 65, 66 },
+ { 69, NO_LED, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82 },
+ { 86, 87, 88, 96, 97, 85, 89, 84, 83, 90, 91, 92, 93, 94, 95 },
+ { NO_LED, NO_LED, 34, 50, 51, 52, 16, 68, 67, 33, 15, 32, NO_LED, 14, NO_LED }
+
+
+}, {
+ // LED Index to Physical Position
+ { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 120, 0 }, { 135, 0 }, { 150, 0 }, { 165, 0 }, { 180, 0 }, { 195, 0 }, { 202, 0 }, { 212, 0 }, { 224, 0 },
+ { 0, 20 }, { 15, 20 }, { 30, 20 }, { 45, 20 }, { 60, 20 }, { 75, 20 }, { 90, 20 }, { 105, 20 }, { 120, 20 }, { 135, 20 }, { 150, 20 }, { 165, 20 }, { 180, 20 },{ 195, 20 }, { 202, 20 }, { 212, 20 },{ 220, 20 },{ 224, 20 },
+ { 8, 30 }, { 15, 30 }, { 30, 30 }, { 45, 30 }, { 60, 30 }, { 75, 30 }, { 90, 30 }, { 105, 30 }, { 120, 30 }, { 135, 30 }, { 150, 30 }, { 165, 30 }, { 180, 30 },{ 195, 30 }, { 202, 30 }, { 212, 30 },{ 220, 30 },{ 224, 30 },
+ { 9, 40 }, { 15, 40 }, { 30, 40 }, { 45, 40 }, { 60, 40 }, { 75, 40 }, { 90, 40 }, { 105, 40 }, { 120, 40 }, { 135, 40 }, { 150, 40 }, { 165, 40 }, { 180, 40 },{ 195, 40 }, { 202, 40 }, { 212, 40 },
+ { 12, 50 }, { 15, 50 }, { 30, 50 }, { 45, 50 }, { 60, 50 }, { 75, 50 }, { 90, 50 }, { 105, 50 }, { 120, 50 }, { 135, 50 }, { 150, 50 }, { 165, 50 }, { 180, 50 },{ 195, 50 }, { 202, 50 }, { 212, 50 },{ 224, 50 },
+ { 2, 60 }, { 17, 60 }, { 34, 60 }, { 77, 60 }, { 120, 60 }, { 135, 60 }, { 150, 60 }, { 165, 60 }, { 177, 60 }, { 182, 60 }, { 197, 60 }, { 212, 60 },
+
+}, {
+ // LED Index to Flag
+ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 9/*scroll lock*/, 1,1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 9/*caps lock*/, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4
+} };
+
+
+#endif
diff --git a/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.h b/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.h
new file mode 100644
index 0000000000..042f4ee4a5
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/bm980hsrgb.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K6D, K6A, K66, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K6B, K69, K62, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K63, K64, K65, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K68, K67, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K58, K57, K55, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5E, K53, K54 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E }, \
+ { KC_NO, KC_NO, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, KC_NO, K6D, KC_NO }, \
+}
diff --git a/keyboards/kprepublic/bm980hsrgb/config.h b/keyboards/kprepublic/bm980hsrgb/config.h
new file mode 100644
index 0000000000..e4499a0b05
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/config.h
@@ -0,0 +1,136 @@
+/*
+Copyright 2021 peepeetee
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B50 //KP
+#define PRODUCT_ID 0xEF61
+#define DEVICE_VER 0x0001
+#define MANUFACTURER KPrepublic
+#define PRODUCT bm980rgb
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, B6, B5, B4, F7, F6, D7 }
+#define MATRIX_COL_PINS { B1, B2, B3, B7, D0, D1, D2, D3, D5, E6, F0, F1, F4, F5, D6 }
+// #define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+
+
+#define LED_NUM_LOCK_PIN C6
+#define LED_CAPS_LOCK_PIN C7
+#define LED_SCROLL_LOCK_PIN E2
+
+#define LED_PIN_ON_STATE 0
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN B0
+
+// The number of LEDs connected
+#define DRIVER_LED_TOTAL 98
+//#ifdef RGB_DI_PIN
+# define RGBLED_NUM 98
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+//#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+// #define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/kprepublic/bm980hsrgb/info.json b/keyboards/kprepublic/bm980hsrgb/info.json
new file mode 100644
index 0000000000..459b98a089
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/info.json
@@ -0,0 +1,110 @@
+{
+ "keyboard_name": "BM980",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00 (D4,B1)", "x":0, "y":0},
+ {"label":"K01 (D4,B2)", "x":2, "y":0},
+ {"label":"K02 (D4,B3)", "x":3, "y":0},
+ {"label":"K03 (D4,B7)", "x":4, "y":0},
+ {"label":"K04 (D4,D0)", "x":5, "y":0},
+ {"label":"K05 (D4,D1)", "x":6.5, "y":0},
+ {"label":"K06 (D4,D2)", "x":7.5, "y":0},
+ {"label":"K07 (D4,D3)", "x":8.5, "y":0},
+ {"label":"K08 (D4,D5)", "x":9.5, "y":0},
+ {"label":"K09 (D4,E6)", "x":11, "y":0},
+ {"label":"K0A (D4,F0)", "x":12, "y":0},
+ {"label":"K0B (D4,F1)", "x":13, "y":0},
+ {"label":"K0C (D4,F4)", "x":14, "y":0},
+ {"label":"K0E (D4,D6)", "x":15.5, "y":0},
+ {"label":"K6D (D7,F5)", "x":16.5, "y":0},
+ {"label":"K6A (D7,F0)", "x":17.5, "y":0},
+ {"label":"K66 (D7,D2)", "x":18.5, "y":0},
+ {"label":"K10 (B6,B1)", "x":0, "y":1.5},
+ {"label":"K11 (B6,B2)", "x":1, "y":1.5},
+ {"label":"K12 (B6,B3)", "x":2, "y":1.5},
+ {"label":"K13 (B6,B7)", "x":3, "y":1.5},
+ {"label":"K14 (B6,D0)", "x":4, "y":1.5},
+ {"label":"K15 (B6,D1)", "x":5, "y":1.5},
+ {"label":"K16 (B6,D2)", "x":6, "y":1.5},
+ {"label":"K17 (B6,D3)", "x":7, "y":1.5},
+ {"label":"K18 (B6,D5)", "x":8, "y":1.5},
+ {"label":"K19 (B6,E6)", "x":9, "y":1.5},
+ {"label":"K1A (B6,F0)", "x":10, "y":1.5},
+ {"label":"K1B (B6,F1)", "x":11, "y":1.5},
+ {"label":"K1C (B6,F4)", "x":12, "y":1.5},
+ {"label":"K1D (B6,F5)", "x":13, "y":1.5, "w":2},
+ {"label":"K1E (B6,D6)", "x":15.5, "y":1.5},
+ {"label":"K6B (D7,F1)", "x":16.5, "y":1.5},
+ {"label":"K69 (D7,E6)", "x":17.5, "y":1.5},
+ {"label":"K62 (D7,B3)", "x":18.5, "y":1.5},
+ {"label":"K20 (B5,B1)", "x":0, "y":2.5, "w":1.5},
+ {"label":"K21 (B5,B2)", "x":1.5, "y":2.5},
+ {"label":"K22 (B5,B3)", "x":2.5, "y":2.5},
+ {"label":"K23 (B5,B7)", "x":3.5, "y":2.5},
+ {"label":"K24 (B5,D0)", "x":4.5, "y":2.5},
+ {"label":"K25 (B5,D1)", "x":5.5, "y":2.5},
+ {"label":"K26 (B5,D2)", "x":6.5, "y":2.5},
+ {"label":"K27 (B5,D3)", "x":7.5, "y":2.5},
+ {"label":"K28 (B5,D5)", "x":8.5, "y":2.5},
+ {"label":"K29 (B5,E6)", "x":9.5, "y":2.5},
+ {"label":"K2A (B5,F0)", "x":10.5, "y":2.5},
+ {"label":"K2B (B5,F1)", "x":11.5, "y":2.5},
+ {"label":"K2C (B5,F4)", "x":12.5, "y":2.5},
+ {"label":"K2D (B5,F5)", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"K2E (B5,D6)", "x":15.5, "y":2.5},
+ {"label":"K63 (D7,B7)", "x":16.5, "y":2.5},
+ {"label":"K64 (D7,D0)", "x":17.5, "y":2.5},
+ {"label":"K65 (D7,D1)", "x":18.5, "y":2.5, "h":2},
+ {"label":"K30 (B4,B1)", "x":0, "y":3.5, "w":1.75},
+ {"label":"K31 (B4,B2)", "x":1.75, "y":3.5},
+ {"label":"K32 (B4,B3)", "x":2.75, "y":3.5},
+ {"label":"K33 (B4,B7)", "x":3.75, "y":3.5},
+ {"label":"K34 (B4,D0)", "x":4.75, "y":3.5},
+ {"label":"K35 (B4,D1)", "x":5.75, "y":3.5},
+ {"label":"K36 (B4,D2)", "x":6.75, "y":3.5},
+ {"label":"K37 (B4,D3)", "x":7.75, "y":3.5},
+ {"label":"K38 (B4,D5)", "x":8.75, "y":3.5},
+ {"label":"K39 (B4,E6)", "x":9.75, "y":3.5},
+ {"label":"K3A (B4,F0)", "x":10.75, "y":3.5},
+ {"label":"K3B (B4,F1)", "x":11.75, "y":3.5},
+ {"label":"K3D (B4,F5)", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"K3E (B4,D6)", "x":15.5, "y":3.5},
+ {"label":"K68 (D7,D5)", "x":16.5, "y":3.5},
+ {"label":"K67 (D7,D3)", "x":17.5, "y":3.5},
+ {"label":"K40 (F7,B1)", "x":0, "y":4.5, "w":2.25},
+ {"label":"K42 (F7,B3)", "x":2.25, "y":4.5},
+ {"label":"K43 (F7,B7)", "x":3.25, "y":4.5},
+ {"label":"K44 (F7,D0)", "x":4.25, "y":4.5},
+ {"label":"K45 (F7,D1)", "x":5.25, "y":4.5},
+ {"label":"K46 (F7,D2)", "x":6.25, "y":4.5},
+ {"label":"K47 (F7,D3)", "x":7.25, "y":4.5},
+ {"label":"K48 (F7,D5)", "x":8.25, "y":4.5},
+ {"label":"K49 (F7,E6)", "x":9.25, "y":4.5},
+ {"label":"K4A (F7,F0)", "x":10.25, "y":4.5},
+ {"label":"K4B (F7,F1)", "x":11.25, "y":4.5},
+ {"label":"K4C (F7,F4)", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"K4D (F7,F5)", "x":14.25, "y":4.75},
+ {"label":"K4E (F7,D6)", "x":15.5, "y":4.5},
+ {"label":"K58 (F6,D5)", "x":16.5, "y":4.5},
+ {"label":"K57 (F6,D3)", "x":17.5, "y":4.5},
+ {"label":"K55 (F6,D1)", "x":18.5, "y":4.5, "h":2},
+ {"label":"K50 (F6,B1)", "x":0, "y":5.5, "w":1.25},
+ {"label":"K51 (F6,B2)", "x":1.25, "y":5.5,"w":1.25},
+ {"label":"K52 (F6,B3)", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"K56 (F6,D2)", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"K59 (F6,E6)", "x":10, "y":5.5},
+ {"label":"K5A (F6,F0)", "x":11, "y":5.5},
+ {"label":"K5B (F6,F1)", "x":12, "y":5.5},
+ {"label":"K5C (F6,F4)", "x":13.25, "y":5.75},
+ {"label":"K5D (F6,F5)", "x":14.25, "y":5.75},
+ {"label":"K5E (F6,D6)", "x":15.25, "y":5.75},
+ {"label":"K53 (F6,B7)", "x":16.5, "y":5.5},
+ {"label":"K54 (F6,D0)", "x":17.5, "y":5.5}
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm980hsrgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a9a2c818ee
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 peepeetee
+ * Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+
+ // [X] = LAYOUT(
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ // ),
+
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/default/readme.md b/keyboards/kprepublic/bm980hsrgb/keymaps/default/readme.md
new file mode 100644
index 0000000000..4b17a02810
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for bm980rgb
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c
new file mode 100644
index 0000000000..9d6c64b33f
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2021 peepeetee
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_HOME, KC_END, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+
+ [1] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+ // [X] = LAYOUT(
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ // ),
+};
+
+
+void rgb_matrix_indicators_user(void) {
+
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.num_lock) {
+ rgb_matrix_set_color(31, 0xFF, 0xFF, 0xFF);
+ //rgb_matrix_set_color(30, 0x0, 0x0, 0x0);
+
+ } else {
+ //rgb_matrix_set_color(30, 0x0, 0x0, 0x0);
+ }
+ //set_layer_color(get_highest_layer(layer_state));
+
+}
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm980hsrgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..822ac29012
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 peepeetee
+ * Copyright 2021 bdtc123
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+ // [X] = LAYOUT(
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ // ),
+
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/via/readme.md b/keyboards/kprepublic/bm980hsrgb/keymaps/via/readme.md
new file mode 100644
index 0000000000..a94481a786
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default via keymap for bm980rgb
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/via/rules.mk b/keyboards/kprepublic/bm980hsrgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kprepublic/bm980hsrgb/readme.md b/keyboards/kprepublic/bm980hsrgb/readme.md
new file mode 100644
index 0000000000..13e061e6d5
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/readme.md
@@ -0,0 +1,30 @@
+# BM980HSRGB
+
+![BM980HSRGB](https://i.imgur.com/k4NQGLxh.jpeg)
+
+A 1800, hotswap, in switch RGB keyboard from KPRepublic.
+
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
+* Hardware Supported: BM980HSRGB
+* Hardware Availability:
+ * https://kprepublic.com/products/bm980rgb-bm980-rgb-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c
+ * https://www.aliexpress.com/item/1005002509519466.html
+ * https://item.taobao.com/item.htm?id=645862298692
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm980hsrgb:default
+
+Flashing example for this keyboard:
+
+ make kprepublic/bm980hsrgb:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in one of 3 ways:
+
+* Short the two-pad footprint beneath the f12 key while the board is plugged in
+* Press the switch labled RST on the back of the PCB, near the MCU, while the board is plugged in
+* Hold the Esc key while connecting the USB cable (also erases persistent settings)
diff --git a/keyboards/kprepublic/bm980hsrgb/rules.mk b/keyboards/kprepublic/bm980hsrgb/rules.mk
new file mode 100644
index 0000000000..03f72adf54
--- /dev/null
+++ b/keyboards/kprepublic/bm980hsrgb/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/cospad/rules.mk b/keyboards/kprepublic/cospad/rules.mk
index d967da6c05..c3f218c5d8 100644
--- a/keyboards/kprepublic/cospad/rules.mk
+++ b/keyboards/kprepublic/cospad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md b/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md
index 8a7562d742..9362c10650 100644
--- a/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md
+++ b/keyboards/kprepublic/jj40/keymaps/ajp10304/readme.md
@@ -22,6 +22,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +82,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/keyboards/kprepublic/jj40/keymaps/default/keymap.c b/keyboards/kprepublic/jj40/keymaps/default/keymap.c
index f54eac20af..380be974db 100644
--- a/keyboards/kprepublic/jj40/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/jj40/keymaps/default/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_planck_mit( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_planck_mit(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_planck_mit( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_planck_mit(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -73,11 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_planck_mit( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_planck_mit(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -91,11 +91,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kprepublic/jj40/rules.mk b/keyboards/kprepublic/jj40/rules.mk
index 881829fb4c..3d333bd9a7 100644
--- a/keyboards/kprepublic/jj40/rules.mk
+++ b/keyboards/kprepublic/jj40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/kprepublic/jj4x4/rules.mk b/keyboards/kprepublic/jj4x4/rules.mk
index 751ed9dedb..8492194143 100644
--- a/keyboards/kprepublic/jj4x4/rules.mk
+++ b/keyboards/kprepublic/jj4x4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/kprepublic/jj50/info.json b/keyboards/kprepublic/jj50/info.json
index e492059e11..5d84efe246 100644
--- a/keyboards/kprepublic/jj50/info.json
+++ b/keyboards/kprepublic/jj50/info.json
@@ -1,10 +1,78 @@
{
- "keyboard_name": "JJ50",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT_ortho_5x12": {
- "layout": [{"label":"K011", "x":0, "y":0}, {"label":"K010", "x":1, "y":0}, {"label":"K009", "x":2, "y":0}, {"label":"K008", "x":3, "y":0}, {"label":"K004", "x":4, "y":0}, {"label":"K005", "x":5, "y":0}, {"label":"K006", "x":6, "y":0}, {"label":"K007", "x":7, "y":0}, {"label":"K003", "x":8, "y":0}, {"label":"K002", "x":9, "y":0}, {"label":"K201", "x":10, "y":0}, {"label":"K000", "x":11, "y":0}, {"label":"K111", "x":0, "y":1}, {"label":"K110", "x":1, "y":1}, {"label":"K109", "x":2, "y":1}, {"label":"K108", "x":3, "y":1}, {"label":"K104", "x":4, "y":1}, {"label":"K105", "x":5, "y":1}, {"label":"K106", "x":6, "y":1}, {"label":"K107", "x":7, "y":1}, {"label":"K103", "x":8, "y":1}, {"label":"K102", "x":9, "y":1}, {"label":"K001", "x":10, "y":1}, {"label":"K100", "x":11, "y":1}, {"label":"K211", "x":0, "y":2}, {"label":"K210", "x":1, "y":2}, {"label":"K209", "x":2, "y":2}, {"label":"K208", "x":3, "y":2}, {"label":"K204", "x":4, "y":2}, {"label":"K205", "x":5, "y":2}, {"label":"K206", "x":6, "y":2}, {"label":"K207", "x":7, "y":2}, {"label":"K203", "x":8, "y":2}, {"label":"K202", "x":9, "y":2}, {"label":"K101", "x":10, "y":2}, {"label":"K200", "x":11, "y":2}, {"label":"K311", "x":0, "y":3}, {"label":"K310", "x":1, "y":3}, {"label":"K309", "x":2, "y":3}, {"label":"K308", "x":3, "y":3}, {"label":"K304", "x":4, "y":3}, {"label":"K305", "x":5, "y":3}, {"label":"K306", "x":6, "y":3}, {"label":"K307", "x":7, "y":3}, {"label":"K303", "x":8, "y":3}, {"label":"K302", "x":9, "y":3}, {"label":"K301", "x":10, "y":3}, {"label":"K300", "x":11, "y":3}, {"label":"K411", "x":0, "y":4}, {"label":"K410", "x":1, "y":4}, {"label":"K409", "x":2, "y":4}, {"label":"K408", "x":3, "y":4}, {"label":"K404", "x":4, "y":4}, {"label":"K405", "x":5, "y":4}, {"label":"K406", "x":6, "y":4}, {"label":"K407", "x":7, "y":4}, {"label":"K403", "x":8, "y":4}, {"label":"K402", "x":9, "y":4}, {"label":"K401", "x":10, "y":4}, {"label":"K400", "x":11, "y":4}]
+ "keyboard_name": "JJ50",
+ "url": "",
+ "maintainer": "qmk",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_ortho_5x12"
+ },
+ "layouts": {
+ "LAYOUT_ortho_5x12": {
+ "layout": [
+ {"label":"K2B", "x":0, "y":0},
+ {"label":"K2A", "x":1, "y":0},
+ {"label":"K29", "x":2, "y":0},
+ {"label":"K28", "x":3, "y":0},
+ {"label":"K24", "x":4, "y":0},
+ {"label":"K25", "x":5, "y":0},
+ {"label":"K26", "x":6, "y":0},
+ {"label":"K27", "x":7, "y":0},
+ {"label":"K23", "x":8, "y":0},
+ {"label":"K22", "x":9, "y":0},
+ {"label":"K21", "x":10, "y":0},
+ {"label":"K20", "x":11, "y":0},
+
+ {"label":"K0B", "x":0, "y":1},
+ {"label":"K0A", "x":1, "y":1},
+ {"label":"K09", "x":2, "y":1},
+ {"label":"K08", "x":3, "y":1},
+ {"label":"K04", "x":4, "y":1},
+ {"label":"K05", "x":5, "y":1},
+ {"label":"K06", "x":6, "y":1},
+ {"label":"K07", "x":7, "y":1},
+ {"label":"K03", "x":8, "y":1},
+ {"label":"K02", "x":9, "y":1},
+ {"label":"K01", "x":10, "y":1},
+ {"label":"K00", "x":11, "y":1},
+
+ {"label":"K1B", "x":0, "y":2},
+ {"label":"K1A", "x":1, "y":2},
+ {"label":"K19", "x":2, "y":2},
+ {"label":"K18", "x":3, "y":2},
+ {"label":"K14", "x":4, "y":2},
+ {"label":"K15", "x":5, "y":2},
+ {"label":"K16", "x":6, "y":2},
+ {"label":"K17", "x":7, "y":2},
+ {"label":"K13", "x":8, "y":2},
+ {"label":"K12", "x":9, "y":2},
+ {"label":"K11", "x":10, "y":2},
+ {"label":"K10", "x":11, "y":2},
+
+ {"label":"K3B", "x":0, "y":3},
+ {"label":"K3A", "x":1, "y":3},
+ {"label":"K39", "x":2, "y":3},
+ {"label":"K38", "x":3, "y":3},
+ {"label":"K34", "x":4, "y":3},
+ {"label":"K35", "x":5, "y":3},
+ {"label":"K36", "x":6, "y":3},
+ {"label":"K37", "x":7, "y":3},
+ {"label":"K33", "x":8, "y":3},
+ {"label":"K32", "x":9, "y":3},
+ {"label":"K31", "x":10, "y":3},
+ {"label":"K30", "x":11, "y":3},
+
+ {"label":"K4B", "x":0, "y":4},
+ {"label":"K4A", "x":1, "y":4},
+ {"label":"K49", "x":2, "y":4},
+ {"label":"K48", "x":3, "y":4},
+ {"label":"K44", "x":4, "y":4},
+ {"label":"K45", "x":5, "y":4},
+ {"label":"K46", "x":6, "y":4},
+ {"label":"K47", "x":7, "y":4},
+ {"label":"K43", "x":8, "y":4},
+ {"label":"K42", "x":9, "y":4},
+ {"label":"K41", "x":10, "y":4},
+ {"label":"K40", "x":11, "y":4}
+ ]
+ }
}
- }
}
diff --git a/keyboards/kprepublic/jj50/jj50.h b/keyboards/kprepublic/jj50/jj50.h
index 59d5c64097..a3d42856c8 100644
--- a/keyboards/kprepublic/jj50/jj50.h
+++ b/keyboards/kprepublic/jj50/jj50.h
@@ -22,17 +22,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
#define LAYOUT_ortho_5x12( \
- K011, K010, K009, K008, K004, K005, K006, K007, K003, K002, K201, K000, \
- K111, K110, K109, K108, K104, K105, K106, K107, K103, K102, K001, K100, \
- K211, K210, K209, K208, K204, K205, K206, K207, K203, K202, K101, K200, \
- K311, K310, K309, K308, K304, K305, K306, K307, K303, K302, K301, K300, \
- K411, K410, K409, K408, K404, K405, K406, K407, K403, K402, K401, K400 \
+ K2B, K2A, K29, K28, K24, K25, K26, K27, K23, K22, K21, K20, \
+ K0B, K0A, K09, K08, K04, K05, K06, K07, K03, K02, K01, K00, \
+ K1B, K1A, K19, K18, K14, K15, K16, K17, K13, K12, K11, K10, \
+ K3B, K3A, K39, K38, K34, K35, K36, K37, K33, K32, K31, K30, \
+ K4B, K4A, K49, K48, K44, K45, K46, K47, K43, K42, K41, K40 \
) { \
- { K100, K001, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, }, \
- { K200, K101, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, }, \
- { K000, K201, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B } \
}
-
-#define LAYOUT LAYOUT_ortho_5x12
diff --git a/keyboards/kprepublic/jj50/rules.mk b/keyboards/kprepublic/jj50/rules.mk
index 7e1bf6c45e..faa1a619b9 100644
--- a/keyboards/kprepublic/jj50/rules.mk
+++ b/keyboards/kprepublic/jj50/rules.mk
@@ -4,17 +4,18 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
-WS2812_DRIVER = i2c # This driver powers the RGB Lighting and RGB Matrix features
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-LTO_ENABLE = yes # Enable link time optimization
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = i2c # This driver powers the RGB Lighting and RGB Matrix features
+LTO_ENABLE = yes # Enable link time optimization
LAYOUTS = ortho_5x12
diff --git a/keyboards/ktec/daisy/rules.mk b/keyboards/ktec/daisy/rules.mk
index 3fe754c12a..c483c98ee3 100644
--- a/keyboards/ktec/daisy/rules.mk
+++ b/keyboards/ktec/daisy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ktec/ergodone/rules.mk b/keyboards/ktec/ergodone/rules.mk
index f0478eb3a4..13e1044c98 100644
--- a/keyboards/ktec/ergodone/rules.mk
+++ b/keyboards/ktec/ergodone/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone
UNICODE_ENABLE = yes # Unicode
@@ -14,8 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
SWAP_HANDS_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no
diff --git a/keyboards/ktec/staryu/rules.mk b/keyboards/ktec/staryu/rules.mk
index b61eb43c32..73b1a47953 100755
--- a/keyboards/ktec/staryu/rules.mk
+++ b/keyboards/ktec/staryu/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u2
BOOTLOADER = lufa-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kudox/rules.mk b/keyboards/kudox/rules.mk
index fc6c624009..2b3d1be550 100644
--- a/keyboards/kudox/rules.mk
+++ b/keyboards/kudox/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/kudox_full/config.h b/keyboards/kudox_full/config.h
new file mode 100644
index 0000000000..82b8da8a41
--- /dev/null
+++ b/keyboards/kudox_full/config.h
@@ -0,0 +1,13 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#pragma once
+
+#include "config_common.h"
+
+#define USE_SERIAL
+
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+
diff --git a/keyboards/kudox_full/keymaps/default/keymap.c b/keyboards/kudox_full/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8d16262b59
--- /dev/null
+++ b/keyboards/kudox_full/keymaps/default/keymap.c
@@ -0,0 +1,86 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+// Shortcut to make keymap more readable
+#define LT_AESC LALT_T(KC_ESC)
+#define LT_ALN1 LALT_T(KC_LANG1)
+#define LT_ALN2 LALT_T(KC_LANG2)
+#define LT_GENT LGUI_T(KC_ENT)
+#define LT_GSPC LGUI_T(KC_SPC)
+#define LT_F1F LT(_FN1, KC_F)
+#define LT_F2J LT(_FN1, KC_J)
+#define LT_F2DL LT(_FN2, KC_DEL)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL ,KC_BSPC ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_GRV , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,LT_F1F ,KC_G, KC_H ,LT_F2J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_UP ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,KC_RSFT ,KC_UP ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ LT_AESC ,MO(_FN3),LT_F2DL ,LT_ALN2 ,LT_GENT ,KC_SPC , KC_DOWN ,LT_GSPC ,LT_ALN1 , KC_LEFT ,KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,KC_CIRC , KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,KC_UNDS ,KC_PLUS ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_HASH ,KC_ASTR ,KC_PLUS ,KC_TILD , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_LCBR ,KC_RCBR ,KC_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_COLN ,KC_DQT ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,KC_COMM ,KC_DOT ,KC_SLSH , KC_UNDS ,KC_LCBR ,KC_RCBR ,KC_LT ,KC_GT ,KC_QUES ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_HASH ,KC_ASTR ,KC_PLUS ,KC_TILD , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_SLSH ,KC_JYEN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,_______ ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,KC_COMM ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_SLSH ,KC_MINS ,KC_UNDS ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ RGB_M_X ,RGB_M_K ,RGB_M_SN,RGB_M_B ,RGB_M_R ,RGB_M_SW, RGB_M_SW,RGB_M_R ,RGB_M_B ,RGB_M_SN,RGB_M_K ,RGB_M_X ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,MO(_BASE),RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,MO(_BASE), _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox_full/keymaps/jis/keymap.c b/keyboards/kudox_full/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..5baa7d14d4
--- /dev/null
+++ b/keyboards/kudox_full/keymaps/jis/keymap.c
@@ -0,0 +1,84 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+#include"keymap_jp.h"
+
+
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+// Shortcut to make keymap more readable
+#define LT_AESC LALT_T(KC_ESC)
+#define LT_ALN1 LALT_T(JP_HENK)
+#define LT_ALN2 LALT_T(JP_MHEN)
+#define LT_GENT LGUI_T(KC_ENT)
+#define LT_GSPC LGUI_T(KC_SPC)
+#define LT_F1F LT(_FN1, KC_F)
+#define LT_F2J LT(_FN1, KC_J)
+#define LT_F2DL LT(_FN2, KC_DEL)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ JP_ZKHK ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,JP_MINS ,JP_CIRC ,JP_YEN ,KC_BSPC ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_ESC , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,JP_AT ,JP_LBRC ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,LT_F1F ,KC_G, KC_H ,LT_F2J ,KC_K ,KC_L ,JP_SCLN ,JP_COLN ,JP_RBRC ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_UP ,KC_N ,KC_M ,JP_COMM ,JP_DOT ,JP_SLSH ,JP_BSLS ,KC_RSFT ,KC_UP ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ LT_AESC ,MO(_FN3),LT_F2DL ,LT_ALN2 ,LT_GENT ,KC_SPC , KC_DOWN ,LT_GSPC ,LT_ALN1 , KC_LEFT ,KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,JP_EXLM ,JP_DQUO ,JP_HASH ,JP_DLR ,JP_PERC ,JP_AMPR , JP_AMPR ,JP_QUOT ,JP_LPRN ,JP_RPRN ,_______ ,JP_EQL ,JP_TILD ,JP_PIPE ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_DQUO ,JP_QUOT ,JP_HASH ,JP_ASTR ,JP_PLUS ,JP_CIRC , JP_LPRN ,JP_RPRN ,JP_PIPE ,JP_ASTR ,JP_TILD ,JP_GRV ,JP_LCBR ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_AT ,JP_COLN ,JP_GRV ,_______ ,JP_MINS , JP_LBRC ,JP_RBRC ,JP_DOT ,JP_SLSH ,JP_PLUS ,JP_ASTR ,JP_RCBR ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,JP_COMM ,JP_DOT ,JP_SLSH , JP_UNDS ,JP_LCBR ,JP_RCBR ,JP_LABK ,JP_RABK ,JP_QUES ,JP_UNDS ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_DEL ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_DQUO ,JP_QUOT ,JP_HASH ,JP_ASTR ,JP_PLUS ,JP_CIRC , JP_LPRN ,JP_RPRN ,JP_PIPE ,JP_ASTR ,JP_TILD ,JP_GRV ,JP_LCBR ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,JP_AT ,JP_COLN ,JP_GRV ,_______ ,JP_MINS , JP_LBRC ,_______ ,JP_DOT ,JP_SLSH ,JP_PLUS ,JP_ASTR ,JP_RCBR ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,JP_COMM ,JP_DOT ,JP_SLSH , _______ ,JP_LCBR ,JP_RCBR ,JP_SLSH ,JP_MINS ,JP_UNDS ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,MO(_BASE),RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,MO(_BASE), _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox_full/keymaps/via/keymap.c b/keyboards/kudox_full/keymaps/via/keymap.c
new file mode 100644
index 0000000000..707152affa
--- /dev/null
+++ b/keyboards/kudox_full/keymaps/via/keymap.c
@@ -0,0 +1,76 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL ,KC_BSPC ,KC_DEL ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_GRV , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC ,KC_RBRC ,KC_BSLS ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,LT(_FN1,KC_F),KC_G, KC_H ,LT(_FN1,KC_J),KC_K,KC_L ,KC_SCLN ,KC_QUOT ,KC_ENT ,KC_ENT ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_UP ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,KC_RSFT ,KC_UP ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ LALT_T(KC_ESC),MO(_FN3),LT(_FN2,KC_DEL),LALT_T(KC_LANG2),LGUI_T(KC_ENT),KC_SPC, KC_DOWN,LGUI_T(KC_SPC),LALT_T(KC_LANG1), KC_LEFT ,KC_DOWN ,KC_RIGHT
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN1] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,KC_CIRC , KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,KC_UNDS ,KC_PLUS ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_HASH ,KC_ASTR ,KC_PLUS ,KC_TILD , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_LCBR ,KC_RCBR ,KC_PIPE ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,KC_RBRC ,KC_DOT ,KC_SLSH ,KC_COLN ,KC_DQT ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,KC_COMM ,KC_DOT ,KC_SLSH , KC_UNDS ,KC_LCBR ,KC_RCBR ,KC_LT ,KC_GT ,KC_QUES ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN2] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_DQUO ,KC_QUOT ,KC_HASH ,KC_ASTR ,KC_PLUS ,KC_TILD , KC_LPRN ,KC_RPRN ,KC_PIPE ,KC_ASTR ,KC_TILD ,KC_CIRC ,KC_SLSH ,KC_JYEN ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_AT ,KC_COLN ,KC_GRV ,_______ ,KC_MINS , KC_LBRC ,_______ ,KC_DOT ,KC_SLSH ,KC_MINS ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ _______ ,_______ ,_______ ,KC_COMM ,KC_DOT ,KC_SLSH , _______ ,KC_LCBR ,KC_RCBR ,KC_SLSH ,KC_MINS ,KC_UNDS ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ , _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_FN3] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+ _______ ,RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD , RGB_HUI ,RGB_HUD ,RGB_SAI ,RGB_SAD ,RGB_VAI ,RGB_VAD ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ └────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┘ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┘
+ RGB_M_X ,RGB_M_K ,RGB_M_SN,RGB_M_B ,RGB_M_R ,RGB_M_SW, RGB_M_SW,RGB_M_R ,RGB_M_B ,RGB_M_SN,RGB_M_K ,RGB_M_X ,_______ ,_______ ,_______ ,
+ //├────────┼────────┼────────┼────────┼────────┼────────┐ ├────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,MO(_BASE),RGB_MOD ,RGB_TOG , RGB_TOG ,RGB_MOD ,MO(_BASE), _______ ,_______ ,_______
+ //└────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+
+};
diff --git a/keyboards/kudox_full/keymaps/via/rules.mk b/keyboards/kudox_full/keymaps/via/rules.mk
new file mode 100644
index 0000000000..21b1b8d0ce
--- /dev/null
+++ b/keyboards/kudox_full/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+UNICODE_ENABLE = no
diff --git a/keyboards/kudox_full/kudox_full.c b/keyboards/kudox_full/kudox_full.c
new file mode 100644
index 0000000000..d5ab31fc15
--- /dev/null
+++ b/keyboards/kudox_full/kudox_full.c
@@ -0,0 +1,41 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "kudox_full.h"
+
+#ifdef RGBLIGHT_ENABLE
+void eeconfig_init_kb(void) {
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL);
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ // Host Keyboard Layer Status
+ oled_write_ln_P(PSTR("Kudox Keyboard"), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("\n"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("\nLayer: Symbol"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("\nLayer: Function"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("\nLayer: Light"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("\nLayer: Undefined"), false);
+ }
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+ return true;
+}
+#endif
diff --git a/keyboards/kudox_full/kudox_full.h b/keyboards/kudox_full/kudox_full.h
new file mode 100644
index 0000000000..78a4dcb474
--- /dev/null
+++ b/keyboards/kudox_full/kudox_full.h
@@ -0,0 +1,10 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#pragma once
+
+#ifdef KEYBOARD_kudox_full_rev1
+ #include "rev1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/kudox_full/post_config.h b/keyboards/kudox_full/post_config.h
new file mode 100644
index 0000000000..eb26f369c3
--- /dev/null
+++ b/keyboards/kudox_full/post_config.h
@@ -0,0 +1,20 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#pragma once
+
+#ifndef MOUSEKEY_INTERVAL
+# define MOUSEKEY_INTERVAL 20
+#endif
+#ifndef MOUSEKEY_DELAY
+# define MOUSEKEY_DELAY 0
+#endif
+#ifndef MOUSEKEY_TIME_TO_MAX
+# define MOUSEKEY_TIME_TO_MAX 60
+#endif
+#ifndef MOUSEKEY_MAX_SPEED
+# define MOUSEKEY_MAX_SPEED 7
+#endif
+#ifndef MOUSEKEY_WHEEL_DELAY
+# define MOUSEKEY_WHEEL_DELAY 0
+#endif
diff --git a/keyboards/kudox_full/readme.md b/keyboards/kudox_full/readme.md
new file mode 100644
index 0000000000..185a1394d4
--- /dev/null
+++ b/keyboards/kudox_full/readme.md
@@ -0,0 +1,32 @@
+# The Kudox Full keyboard
+
+![Kudox logo](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox.png)
+
+![Kudox Full image2](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image2.jpg) | ![Kudox Full image1](https://raw.githubusercontent.com/kumaokobo/kudox-keyboard/master/img/kudox-full-image1.jpg)
+:----:|:-----:
+ front | angle
+
+- Keyboard Maintainer: [Kumao Kobo](https://github.com/kumaokobo)
+- Hardware Supported: Kudox Full PCB rev1.0 w/ Pro Micro
+- Assembly guide: [Kudox Full/README](https://github.com/kumaokobo/kudox-keyboard/blob/master/kudox-full/README.md)
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+## Building Firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kudox_full/rev1:default
+
+
+Flashing example for this keyboard:
+
+ make kudox_full/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/kudox_full/rev1/config.h b/keyboards/kudox_full/rev1/config.h
new file mode 100644
index 0000000000..46d680e442
--- /dev/null
+++ b/keyboards/kudox_full/rev1/config.h
@@ -0,0 +1,77 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xABBA
+#define PRODUCT_ID 0x9693
+#define DEVICE_VER 0x0100
+#define MANUFACTURER Kumao Kobo
+#define PRODUCT The Kudox Full Keyboard
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 9
+
+// wiring of each half
+#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D4 }
+// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5} //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 14 // Number of LEDs
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/kudox_full/rev1/info.json b/keyboards/kudox_full/rev1/info.json
new file mode 100644
index 0000000000..7dfbf7c4e9
--- /dev/null
+++ b/keyboards/kudox_full/rev1/info.json
@@ -0,0 +1,83 @@
+{
+ "url": "http://kumaokobo.com/",
+ "maintainer": "Kumao Kobo",
+ "keyboard_name": "Kudox Full Keyboard Rev1",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"6", "x":9, "y":0},
+ {"label":"7", "x":10, "y":0},
+ {"label":"8", "x":11, "y":0},
+ {"label":"9", "x":12, "y":0},
+ {"label":"0", "x":13, "y":0},
+ {"label":"-", "x":14, "y":0},
+ {"label":"=", "x":15, "y":0},
+ {"label":"\u2190", "x":16, "y":0},
+ {"label":"Del", "x":17, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"`", "x":6.5, "y":1},
+ {"label":"Y", "x":9.5, "y":1},
+ {"label":"U", "x":10.5, "y":1},
+ {"label":"I", "x":11.5, "y":1},
+ {"label":"O", "x":12.5, "y":1},
+ {"label":"P", "x":13.5, "y":1},
+ {"label":"[", "x":14.5, "y":1},
+ {"label":"]", "x":15.5, "y":1},
+ {"label":"\\", "x":16.5, "y":1, "w":1.5},
+ {"label":"Ctrl", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":9.75, "y":2},
+ {"label":"J", "x":10.75, "y":2},
+ {"label":"K", "x":11.75, "y":2},
+ {"label":"L", "x":12.75, "y":2},
+ {"label":";", "x":13.75, "y":2},
+ {"label":"'", "x":14.75, "y":2},
+ {"label":"Enter", "x":15.75, "y":2},
+ {"label":"Enter", "x":17, "y":2},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"\u2191", "x":9.25, "y":3},
+ {"label":"N", "x":10.25, "y":3},
+ {"label":"M", "x":11.25, "y":3},
+ {"label":",", "x":12.25, "y":3},
+ {"label":".", "x":13.25, "y":3},
+ {"label":"/", "x":14.25, "y":3},
+ {"label":"Shift", "x":15.25, "y":3},
+ {"label":"Shift", "x":16.25, "y":3},
+ {"label":"\u2191", "x":17.5, "y":3},
+ {"label":"Alt", "x":0, "y":4, "w":1.25},
+ {"label":"Layer3", "x":1.5, "y":4},
+ {"label":"Layer2", "x":2.5, "y":4},
+ {"label":"Alt", "x":3.5, "y":4, "w":1.25},
+ {"label":"GUI", "x":5, "y":4, "w":1.25},
+ {"label":" ", "x":6.25, "y":4},
+ {"label":"\u2193", "x":9, "y":4},
+ {"label":"GUI", "x":10, "y":4},
+ {"label":"Alt", "x":11, "y":4, "w":1.25},
+ {"label":"\u2190", "x":16, "y":4},
+ {"label":"\u2193", "x":17, "y":4},
+ {"label":"\u2192", "x":18, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kudox_full/rev1/rev1.c b/keyboards/kudox_full/rev1/rev1.c
new file mode 100644
index 0000000000..8dfb941ba2
--- /dev/null
+++ b/keyboards/kudox_full/rev1/rev1.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "rev1.h"
diff --git a/keyboards/kudox_full/rev1/rev1.h b/keyboards/kudox_full/rev1/rev1.h
new file mode 100644
index 0000000000..686941117e
--- /dev/null
+++ b/keyboards/kudox_full/rev1/rev1.h
@@ -0,0 +1,26 @@
+// Copyright 2021 Kumao Kobo (@kumaokobo)
+// SPDX-License-Identifier: GPL-2.0+
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R08, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R27, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, R37, R38, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R46, R47, R48 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, L06 }, \
+ { L10, L11, L12, L13, L14, L15, L16 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07, R08 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, R38 }, \
+ { R40, R41, R42, KC_NO, KC_NO, KC_NO, R46, R47, R48 } \
+}
diff --git a/keyboards/kudox_full/rev1/rules.mk b/keyboards/kudox_full/rev1/rules.mk
new file mode 100644
index 0000000000..dd68e9d3b0
--- /dev/null
+++ b/keyboards/kudox_full/rev1/rules.mk
@@ -0,0 +1 @@
+OLED_ENABLE = yes
diff --git a/keyboards/kudox_full/rules.mk b/keyboards/kudox_full/rules.mk
new file mode 100644
index 0000000000..5250547b66
--- /dev/null
+++ b/keyboards/kudox_full/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+UNICODE_ENABLE = yes # Unicode
+LTO_ENABLE = yes
+
+SPLIT_KEYBOARD = yes
+
+DEFAULT_FOLDER = kudox_full/rev1
diff --git a/keyboards/kudox_game/rules.mk b/keyboards/kudox_game/rules.mk
index 25d13a4500..97036eb2e2 100644
--- a/keyboards/kudox_game/rules.mk
+++ b/keyboards/kudox_game/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/kv/revt/keymaps/default/keymap.c b/keyboards/kv/revt/keymaps/default/keymap.c
index c1f9c6b5c0..4f94f197a8 100644
--- a/keyboards/kv/revt/keymaps/default/keymap.c
+++ b/keyboards/kv/revt/keymaps/default/keymap.c
@@ -32,12 +32,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*`----------------------------------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_default(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_KP_0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_KP_0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
/* Keymap Fn Layer
*.-----------------------------------------------------------------------------------------------------------------.
@@ -54,11 +54,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*'-----------------------------------------------------------------------------------------------------------------'
*/
[1] = LAYOUT_default(
- _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_VOLU, \
-_______, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_VOLD, \
-_______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, RESET, _______, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, \
-_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
+ _______, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_VOLU,
+_______, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPRV, KC_VOLD,
+_______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, RESET, _______, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
+_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/kv/revt/rules.mk b/keyboards/kv/revt/rules.mk
index abb8d96be0..05bfa36e0e 100644
--- a/keyboards/kv/revt/rules.mk
+++ b/keyboards/kv/revt/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kwub/bloop/rules.mk b/keyboards/kwub/bloop/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/kwub/bloop/rules.mk
+++ b/keyboards/kwub/bloop/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ky01/rules.mk b/keyboards/ky01/rules.mk
index 71e5c41e74..a2a5932cdc 100644
--- a/keyboards/ky01/rules.mk
+++ b/keyboards/ky01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/labyrinth75/keymaps/default/keymap.c b/keyboards/labyrinth75/keymaps/default/keymap.c
index 7ac93ae1c2..a2417d5e08 100644
--- a/keyboards/labyrinth75/keymaps/default/keymap.c
+++ b/keyboards/labyrinth75/keymaps/default/keymap.c
@@ -18,11 +18,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, \
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP, KC_END, \
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP, KC_END,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
};
diff --git a/keyboards/labyrinth75/keymaps/via/keymap.c b/keyboards/labyrinth75/keymaps/via/keymap.c
index a29c88e09d..3113901b95 100644
--- a/keyboards/labyrinth75/keymaps/via/keymap.c
+++ b/keyboards/labyrinth75/keymaps/via/keymap.c
@@ -26,30 +26,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT(
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, \
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______ \
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______
),
[2] = LAYOUT(
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______ \
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______
),
[3] = LAYOUT(
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______ \
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______
),
};
diff --git a/keyboards/labyrinth75/rules.mk b/keyboards/labyrinth75/rules.mk
index dd9202fdc7..f0f5b83f01 100644
--- a/keyboards/labyrinth75/rules.mk
+++ b/keyboards/labyrinth75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/laptreus/config.h b/keyboards/laptreus/config.h
deleted file mode 100644
index 0c13da4bd6..0000000000
--- a/keyboards/laptreus/config.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-Copyright 2019 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x1209 // pid.codes Vendor ID
-#define PRODUCT_ID 0xA1F1 // FIXME: Need to send PR to pid.codes to make this official
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Vosechu
-#define PRODUCT Laptreus
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 10
-
-#define MATRIX_ROW_PINS { F7, F6, F5, F1, F4 }
-#define MATRIX_COL_PINS { D6, B7, B6, D7, C6, D1, D0, D3, D2, F0 }
-#define UNUSED_PINS { }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-// #define BACKLIGHT_LEVELS 3
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-// #define NO_DEBUG
-
-/* disable print */
-// #define NO_PRINT
-
-/* disable action features */
-// #define NO_ACTION_LAYER
-// #define NO_ACTION_TAPPING
-// #define NO_ACTION_ONESHOT
-// #define NO_ACTION_MACRO
-// #define NO_ACTION_FUNCTION
diff --git a/keyboards/laptreus/info.json b/keyboards/laptreus/info.json
deleted file mode 100644
index f82cc8419d..0000000000
--- a/keyboards/laptreus/info.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "keyboard_name": "Laptreus",
- "url": "",
- "maintainer": "vosechu",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"x":0, "y":0.67},
- {"x":1, "y":0.67},
- {"x":2, "y":0.33},
- {"x":3, "y":0},
- {"x":4, "y":0.33},
- {"x":5, "y":0.33},
- {"x":8, "y":0.33},
- {"x":9, "y":0.33},
- {"x":10, "y":0},
- {"x":11, "y":0.33},
- {"x":12, "y":0.67},
- {"x":13, "y":0.67},
-
- {"x":0, "y":1.67},
- {"x":1, "y":1.67},
- {"x":2, "y":1.33},
- {"x":3, "y":1},
- {"x":4, "y":1.33},
- {"x":5, "y":1.33},
- {"x":8, "y":1.33},
- {"x":9, "y":1.33},
- {"x":10, "y":1},
- {"x":11, "y":1.33},
- {"x":12, "y":1.67},
- {"x":13, "y":1.67},
-
- {"x":0, "y":2.67},
- {"x":1, "y":2.67},
- {"x":2, "y":2.33},
- {"x":3, "y":2},
- {"x":4, "y":2.33},
- {"x":5, "y":2.33},
- {"x":8, "y":2.33},
- {"x":9, "y":2.33},
- {"x":10, "y":2},
- {"x":11, "y":2.33},
- {"x":12, "y":2.67},
- {"x":13, "y":2.67},
-
- {"x":0, "y":3.67},
- {"x":1, "y":3.67},
- {"x":2, "y":3.67},
- {"x":3, "y":3.67},
- {"x":4.5, "y":3.42},
- {"x":5.5, "y":3.67},
- {"x":7.5, "y":3.67},
- {"x":8.5, "y":3.42},
- {"x":10, "y":3.67},
- {"x":11, "y":3.67},
- {"x":12, "y":3.67},
- {"x":13, "y":3.67}
- ]
- }
- }
-}
diff --git a/keyboards/laptreus/keymaps/debug/keymap.c b/keyboards/laptreus/keymaps/debug/keymap.c
deleted file mode 100644
index 8ffb06fa25..0000000000
--- a/keyboards/laptreus/keymaps/debug/keymap.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* ============================= DEBUG LAYER ============================= */
- [0] = LAYOUT(
- KC_A, KC_1, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
- KC_A, KC_2, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
- KC_A, KC_3, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
- KC_A, KC_4, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L
- )
-};
diff --git a/keyboards/laptreus/keymaps/debug/readme.md b/keyboards/laptreus/keymaps/debug/readme.md
deleted file mode 100644
index fa4a27eda8..0000000000
--- a/keyboards/laptreus/keymaps/debug/readme.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Debug layout
-
-This layout is expressly for debugging to see if your keys are working.
-
-## Flashing
-
-**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
-
-To compile and flash to the board:
-
- make laptreus:debug:avrdude
-
-To just compile:
-
- make laptreus:debug
-
-Then use QMK toolbox to write the file
-
-# Testing
-
-Now that you've got the image flashed, do the following:
-
-* Open a new text document
-* Click each key in order and hit enter (with the other keyboard) between each line
-* For any keys that don't register, hit space (with the other keyboard) and continue on
-* You'll end up with something looking like this:
-
- a1bcdefghijkl
- a2bcdefghijkl
- a3bcdefghijkl
- a4bcdefghijkl
-
-But almost certainly it won't be perfect, so lets go through some scenarios:
-
-## Step 1: Get all the letters to output _something_
-
-For lines that look like this:
-
- a1bc efg ijkl
-
-* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
-* Option 2: Broken joint on hotswap - If the pin looks okay, try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out. If it does, reflow (aka, apply some flux to both pads and reheat) the solder joint.
-* Option 3: Diode is backwards - If connecting the two metal pins didn't work, double check that the diode is the right direction. This may also need to be reflowed.
-* Option 4: ??? - Hop in [the discord]() and let's chat!
-
-## Step 2: Correct double letters
-
-Once you have all the keys outputting _anything_, flash the default layout and do the same thing. If everything is working, your layout will look something like this:
-
- qwertyuiop
- asdfghjkl;'
- zxcvbnm,./
-
-**Note**: Don't worry about hitting the backspace or command keys
-
-### Duplicate letters
-
-For lines that look like this:
-
- qwertyyuiop (double y)
-
-* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
-* Option 2: Switch is broken - Try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out just once. If it does, the switch is broken and should be replaced. If you don't have another switch, you _may_ be able to unbend the leaf inside the switch, but it's really tricky.
-
-### Second letter sent (same row)
-
-For lines that look like this:
-
- qwertyyuiop (t sent t AND y)
-
-* Option 1: ??? - I can't imagine how this would happen with this layout, but let me know if it does!
-
-### Second letter sent (same column)
-
-For lines that look like this:
-
- qwertgyuiop (t sent t AND g)
- qwertgbyuiop (t sent t AND g AND b)
-
-* Option 1: Diodes are backwards - Some of the diodes on this column are backwards, you can use a diode tester to confirm the direction, or just check them with a magnifying glass and switch them if needed.
-* Option 2: ???
diff --git a/keyboards/laptreus/keymaps/default/keymap.c b/keyboards/laptreus/keymaps/default/keymap.c
deleted file mode 100644
index b0e1c9f023..0000000000
--- a/keyboards/laptreus/keymaps/default/keymap.c
+++ /dev/null
@@ -1,74 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum layer_names {
- _QWERTY = 0,
- _DVORAK,
- _LOWER,
- _RAISE,
- _LIFT
-};
-
-// Fillers to make layering more clear
-#define _LAYER_ KC_TRNS
-
-// Adding macros to make the keymaps below much easier to read.
-#define CTL_ESC CTL_T(KC_ESC)
-#define CTL_GRV CTL_T(KC_GRV)
-#define ALT_TAB ALT_T(KC_TAB)
-#define SFT_SPC SFT_T(KC_SPC)
-
-// Extended alpha key layers
-#define RSE_J LT(_RAISE, KC_J)
-#define LWR_F LT(_LOWER, KC_F)
-#define RSE_H LT(_RAISE, KC_H)
-#define LWR_U LT(_LOWER, KC_U)
-#define LFT_BK LT(_LIFT, KC_BSPC)
-#define LFT_ENT LT(_LIFT, KC_ENT)
-
-// Macro keys for some apps
-#define SLACKUP LALT(LSFT(KC_UP))
-#define SLACKDN LALT(LSFT(KC_DOWN))
-#define TAB_LFT LGUI(LSFT(KC_LBRC))
-#define TAB_RGT LGUI(LSFT(KC_RBRC))
-#define BWSR_BK LGUI(KC_LBRC)
-#define BWSR_FW LGUI(KC_RBRC)
-#define SCR_LFT HYPR(KC_LEFT)
-#define SCR_RGT HYPR(KC_RGHT)
-#define SCR_FUL HYPR(KC_F)
-
-// Layer toggles
-#define TO_QW TO(_QWERTY)
-#define TO_DV TO(_DVORAK)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT(
- KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
- KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
- KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
- KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
- ),
- [_DVORAK] = LAYOUT(
- KC_TAB , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSPC ,
- KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , KC_SLSH ,
- KC_LSFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
- KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
- ),
- [_LOWER] = LAYOUT(
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
- _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_DOT , _______ , _______
- ),
- [_RAISE] = LAYOUT(
- _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , KC_EQL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , KC_MINS , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSLS , KC_SLSH , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
- ),
- [_LIFT] = LAYOUT(
- _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
- _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO_QW , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO_DV , _______ ,
- _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
- )
-};
diff --git a/keyboards/laptreus/keymaps/default/readme.md b/keyboards/laptreus/keymaps/default/readme.md
deleted file mode 100644
index 0124ab9a9f..0000000000
--- a/keyboards/laptreus/keymaps/default/readme.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Default layout
-
-This is the default layout for the Laptreus
-
-## Layout
-
-Some special things:
-
-* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
-* Enter and Backspace also activate the Lift layer.
-* -- To get repeated backspace, hold BkLft and then press Shift
-
-### Qwerty
-
- ,-----------------------------------------------------------------------------------.
- | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- |------+------+------+------+------+-------------+------+------+------+------+------|
- | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
- |------+------+------+------+------+------|------+------+------+------+------+------|
- | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
- |------+------+------+------+------+------+------+------+------+------+------+------|
- | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
- `-----------------------------------------------------------------------------------'
-
-### Dvorak
-
- ,-----------------------------------------------------------------------------------.
- | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
- |------+------+------+------+------+-------------+------+------+------+------+------|
- | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | / |
- |------+------+------+------+------+------|------+------+------+------+------+------|
- | Shift| ; | Q | J | K | X | B | M | W | V | Z | Enter|
- |------+------+------+------+------+------+------+------+------+------+------+------|
- | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
- `-----------------------------------------------------------------------------------'
-
-### Raise
-
- ,-----------------------------------------------------------------------------------.
- | | < | > | { | } | | | | | | | |
- |------+------+------+------+------+-------------+------+------+------+------+------|
- | | ( | ) | [ | ] | | | | | | | |
- |------+------+------+------+------+------|------+------+------+------+------+------|
- | | | | | | | | | | | | |
- |------+------+------+------+------+------+------+------+------+------+------+------|
- | | | | | BkLft| Shift| Space|EntLft| | | | |
- `-----------------------------------------------------------------------------------'
-
-### Lower
-
- ,-----------------------------------------------------------------------------------.
- | | | | | | | | 7 | 8 | 9 | | |
- |------+------+------+------+------+-------------+------+------+------+------+------|
- | | | | | | | | 4 | 5 | 6 | | |
- |------+------+------+------+------+------|------+------+------+------+------+------|
- | | | | | | | | 1 | 2 | 3 | | |
- |------+------+------+------+------+------+------+------+------+------+------+------|
- | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
- `-----------------------------------------------------------------------------------'
-
-### Lift
-
- ,-----------------------------------------------------------------------------------.
- | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
- |------+------+------+------+------+-------------+------+------+------+------+------|
- | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
- |------+------+------+------+------+------|------+------+------+------+------+------|
- | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
- |------+------+------+------+------+------+------+------+------+------+------+------|
- | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
- `-----------------------------------------------------------------------------------'
-
-Special things:
-
-* Hist: Back button in your browser
-* Tab: Move one tab left/right in most mac apps
-* Slk: Go to the previous/next unread conversation in Slack
-* Scr: Make this app fill the left/right side of your monitor (or full screen)
-* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/laptreus/keymaps/vosechu/keymap.c b/keyboards/laptreus/keymaps/vosechu/keymap.c
deleted file mode 100644
index 8bb08a8732..0000000000
--- a/keyboards/laptreus/keymaps/vosechu/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include QMK_KEYBOARD_H
-
-#include "vosechu.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [DV] = LAYOUT(
- PAWFIVE , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , RESET ,
- KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , XXXXXXX ,
- XXXXXXX , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
- XXXXXXX , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_MINS , KC_EQL , KC_SLSH , KC_BSLS
- ),
- [QW] = LAYOUT(
- KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
- KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
- KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
- KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
- ),
- [LWR] = LAYOUT(
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
- _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_0 , KC_DOT , _______ , _______
- ),
- [RSE] = LAYOUT(
- _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
- _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
- ),
- [LFT] = LAYOUT(
- _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
- _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO(QW) , _______ ,
- _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO(DV) , _______ ,
- _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
- )
-};
diff --git a/keyboards/laptreus/laptreus.c b/keyboards/laptreus/laptreus.c
deleted file mode 100644
index 2e59ffd622..0000000000
--- a/keyboards/laptreus/laptreus.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "laptreus.h"
-
-void matrix_init_kb() {
- // auto detect output on init
- set_output(OUTPUT_AUTO);
-}
diff --git a/keyboards/laptreus/laptreus.h b/keyboards/laptreus/laptreus.h
deleted file mode 100644
index 2e7932e494..0000000000
--- a/keyboards/laptreus/laptreus.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-#include "outputselect.h"
-
-#define XXX KC_NO
-
-#define LAYOUT( \
- k40, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k49, \
- k41, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k48, \
- k42, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k47, \
- k43, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k46 \
-) { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
- { k40, k41, k42, k43, XXX, XXX, k46, k47, k48, k49 } \
-}
diff --git a/keyboards/laptreus/readme.md b/keyboards/laptreus/readme.md
deleted file mode 100644
index e27c206048..0000000000
--- a/keyboards/laptreus/readme.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Laptreus
-
-TODO: Insert cool photo
-
-Laptreus is a 40% bluetooth keyboard in the style of the Atreus, which is specifically designed to sit atop your laptop keyboard.
-
-Maintainer: [Chuck Lauer Vose](https://github.com/vosechu)
-MCU: Adafruit Feather 32u4 BLE
-Purchase link: GB coming soon
-Case link: GB coming soon
-Case design files: TODO
-
-## Flashing
-
-**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
-
-[Default layout documentation](https://github.com/qmk/qmk_firmware/tree/master/keyboards/laptreus/keymaps/default)
-
-To compile and flash to the board:
-
- make laptreus:default:avrdude
-
-To just compile:
-
- make laptreus:default
-
-Then use QMK toolbox to write the file
-
-## Changelog
-
-v1.2: Mostly working, but JST connector is a little too tight and the reset switch is not connected.
-
-## Build log
-
-TODO
diff --git a/keyboards/laptreus/rules.mk b/keyboards/laptreus/rules.mk
deleted file mode 100644
index b48040df35..0000000000
--- a/keyboards/laptreus/rules.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Processor frequency
-F_CPU = 8000000
-
-# Bootloader selection
-BOOTLOADER = caterina
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-KEY_LOCK_ENABLE = no
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-BLUETOOTH_ENABLE = yes
-BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/latin17rgb/rules.mk b/keyboards/latin17rgb/rules.mk
index 072503806a..f42933659f 100644
--- a/keyboards/latin17rgb/rules.mk
+++ b/keyboards/latin17rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/latin47ble/rules.mk b/keyboards/latin47ble/rules.mk
index b51e91329e..95044a18bd 100644
--- a/keyboards/latin47ble/rules.mk
+++ b/keyboards/latin47ble/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/latin60rgb/rules.mk b/keyboards/latin60rgb/rules.mk
index bd5ed434b8..fde06cb9fe 100644
--- a/keyboards/latin60rgb/rules.mk
+++ b/keyboards/latin60rgb/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/latin64ble/rules.mk b/keyboards/latin64ble/rules.mk
index ba3f750117..30f105ef49 100644
--- a/keyboards/latin64ble/rules.mk
+++ b/keyboards/latin64ble/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/latin6rgb/rules.mk b/keyboards/latin6rgb/rules.mk
index 6a328bae87..9837de97e1 100644
--- a/keyboards/latin6rgb/rules.mk
+++ b/keyboards/latin6rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/latinpad/rules.mk b/keyboards/latinpad/rules.mk
index 730bd9cd37..1570b33db4 100644
--- a/keyboards/latinpad/rules.mk
+++ b/keyboards/latinpad/rules.mk
@@ -6,13 +6,13 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/latinpadble/rules.mk b/keyboards/latinpadble/rules.mk
index eca33fc0a0..aac9dde15f 100644
--- a/keyboards/latinpadble/rules.mk
+++ b/keyboards/latinpadble/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lattice60/rules.mk b/keyboards/lattice60/rules.mk
index 069efe020e..8539f9f439 100644
--- a/keyboards/lattice60/rules.mk
+++ b/keyboards/lattice60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/launchpad/keymaps/default/keymap.c b/keyboards/launchpad/keymaps/default/keymap.c
index 560f7e8585..62dee131f8 100644
--- a/keyboards/launchpad/keymaps/default/keymap.c
+++ b/keyboards/launchpad/keymaps/default/keymap.c
@@ -27,11 +27,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | FUNC | 8 |
* `-------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_1, KC_2, \
- KC_3, KC_4, \
- KC_5, KC_6, \
- MO(_FUNC), KC_8 \
+[_QWERTY] = LAYOUT(
+ KC_1, KC_2,
+ KC_3, KC_4,
+ KC_5, KC_6,
+ MO(_FUNC), KC_8
),
/* Function
@@ -45,11 +45,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | C |
* `-------------'
*/
-[_FUNC] = LAYOUT( \
- KC_Q, CALTDEL, \
- KC_A, TSKMGR, \
- KC_Z, KC_X, \
- _______, KC_C \
+[_FUNC] = LAYOUT(
+ KC_Q, CALTDEL,
+ KC_A, TSKMGR,
+ KC_Z, KC_X,
+ _______, KC_C
)
};
diff --git a/keyboards/launchpad/keymaps/default_rgb/keymap.c b/keyboards/launchpad/keymaps/default_rgb/keymap.c
index 50fef532c0..529fa91f65 100644
--- a/keyboards/launchpad/keymaps/default_rgb/keymap.c
+++ b/keyboards/launchpad/keymaps/default_rgb/keymap.c
@@ -28,11 +28,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | FUNC | RGB |
* `-------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_1, KC_2, \
- KC_3, KC_4, \
- KC_5, KC_6, \
- MO(_FUNC), TG(_RGB) \
+ [_QWERTY] = LAYOUT(
+ KC_1, KC_2,
+ KC_3, KC_4,
+ KC_5, KC_6,
+ MO(_FUNC), TG(_RGB)
),
/* RGB
@@ -46,11 +46,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |RGBTOG| |
* `-------------'
*/
- [_RGB] = LAYOUT( \
- RGB_RMOD, RGB_MOD, \
- RGB_HUD, RGB_HUI, \
- RGB_SAD, RGB_SAI, \
- RGB_TOG, KC_TRNS \
+ [_RGB] = LAYOUT(
+ RGB_RMOD, RGB_MOD,
+ RGB_HUD, RGB_HUI,
+ RGB_SAD, RGB_SAI,
+ RGB_TOG, KC_TRNS
),
/* Function
@@ -64,11 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | C |
* `-------------'
*/
- [_FUNC] = LAYOUT( \
- KC_Q, CALTDEL, \
- KC_A, TSKMGR, \
- KC_Z, KC_X, \
- _______, KC_C \
+ [_FUNC] = LAYOUT(
+ KC_Q, CALTDEL,
+ KC_A, TSKMGR,
+ KC_Z, KC_X,
+ _______, KC_C
)
};
diff --git a/keyboards/launchpad/rules.mk b/keyboards/launchpad/rules.mk
index 00deb42bf1..3bfec56432 100644
--- a/keyboards/launchpad/rules.mk
+++ b/keyboards/launchpad/rules.mk
@@ -5,20 +5,16 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = launchpad/rev1
diff --git a/keyboards/lazydesigners/bolt/rules.mk b/keyboards/lazydesigners/bolt/rules.mk
index 02ae236709..3ff392a61f 100644
--- a/keyboards/lazydesigners/bolt/rules.mk
+++ b/keyboards/lazydesigners/bolt/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lazydesigners/cassette8/rules.mk b/keyboards/lazydesigners/cassette8/rules.mk
index 8d06f62d82..93eb9c4395 100755
--- a/keyboards/lazydesigners/cassette8/rules.mk
+++ b/keyboards/lazydesigners/cassette8/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lazydesigners/dimple/config.h b/keyboards/lazydesigners/dimple/config.h
index d5bab811ee..7ed6da4064 100644
--- a/keyboards/lazydesigners/dimple/config.h
+++ b/keyboards/lazydesigners/dimple/config.h
@@ -57,3 +57,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* #define RGBLIGHT_SAT_STEP 8 */
/* #define RGBLIGHT_VAL_STEP 8 */
#endif
+
diff --git a/keyboards/lazydesigners/dimple/dimple.c b/keyboards/lazydesigners/dimple/dimple.c
deleted file mode 100644
index 6bbb9a0477..0000000000
--- a/keyboards/lazydesigners/dimple/dimple.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2019 Erovia
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "dimple.h"
-
-void dimple_led_on() {
- writePinLow(E6);
-}
-
-void dimple_led_off() {
- writePinHigh(E6);
-}
-
-void keyboard_pre_init_kb(void) {
- // Initialize Caps Lock LED
- setPinOutput(E6);
- keyboard_pre_init_user();
-}
diff --git a/keyboards/lazydesigners/dimple/dimple.h b/keyboards/lazydesigners/dimple/dimple.h
deleted file mode 100644
index ba8a413ed6..0000000000
--- a/keyboards/lazydesigners/dimple/dimple.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright 2019 Erovia
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include "quantum.h"
-
-/*
- * ,---------------------------------------------------------------.
- * | | | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * | | | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * | | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * | | | | | | | | |
- * `-----------------------------------------------------'
- */
-
-#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
- K300, K302, K303, K304, K306, K307, K308, K309 \
-) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \
- { K300, KC_NO, K302, K303, K304, KC_NO, K306, K307, K308, K309, KC_NO, KC_NO } \
-}
-
-
-void dimple_led_on(void);
-void dimple_led_off(void);
diff --git a/keyboards/lazydesigners/dimple/keymaps/default/keymap.c b/keyboards/lazydesigners/dimple/keymaps/default/keymap.c
deleted file mode 100644
index d23c8e8a6e..0000000000
--- a/keyboards/lazydesigners/dimple/keymaps/default/keymap.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Copyright 2019 Erovia
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-enum custom_layers {
- _QWERTY,
- _LOWER,
- _RAISE,
- _ADJUST
-};
-
-// Act as Shift on hold and as CapsLock on tap
-#define SFT_CPS LSFT_T(KC_CAPS)
-// Left space on tap, LOWER on hold
-#define SPC_LOW LT(_LOWER, KC_SPC)
-// Left space on tap, UPPER on hold
-#define SPC_UPR LT(_RAISE, KC_SPC)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/*
- * ,---------------------------------------------------------------.
- * |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
- * |---------------------------------------------------------------|
- * | Tab | A | S | D | F | G | H | J | K | L | ' |Enter |
- * |---------------------------------------------------------------|
- * | Shift | Z | X | C | V | B | N | M | , | Up | . |
- * |---------------------------------------------------------------|
- * |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse |Left|Down|Rght|
- * `-----------------------------------------------------'
- */
-
- [_QWERTY] = LAYOUT(
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
- SFT_CPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_DOT,
- KC_LCTL, KC_LGUI, KC_LALT, SPC_LOW, SPC_UPR, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-
-/*
- * ,---------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
- * |---------------------------------------------------------------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
- * |---------------------------------------------------------------|
- * | | F7 | F8 | F9 |F10 |F11 |F12 | | ; |PgUp| / |
- * |---------------------------------------------------------------|
- * | | | | | |Home|PgDn|End |
- * `-----------------------------------------------------'
- */
-
- [_LOWER] = LAYOUT(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO,
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_SCLN, KC_PGUP, KC_SLSH,
- KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
- ),
-
-/*
- * ,---------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
- * |---------------------------------------------------------------|
- * | Ins | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |---------------------------------------------------------------|
- * | | F7 | F8 | F9 |F10 |F11 |F12 | | | | |
- * |---------------------------------------------------------------|
- * |VolD|Mute|VolU| | | | | |
- * `-----------------------------------------------------'
- */
-
- [_RAISE] = LAYOUT(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
- KC_INS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
- ),
-
-/*
- * ,---------------------------------------------------------------.
- * |EEPR|RST | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * | | | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * | | | | | | | | | | | |
- * |---------------------------------------------------------------|
- * |RGB-|RGB |RGB+| | | | | |
- * `-----------------------------------------------------'
- */
-
- [_ADJUST] = LAYOUT(
- EEP_RST, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
- ),
-};
-
-void led_set_user(uint8_t usb_led) {
-if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
- dimple_led_on();
- } else {
- dimple_led_off();
- }
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
- state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
- switch (get_highest_layer(state)) {
- case _LOWER:
- rgblight_sethsv_noeeprom(HSV_GREEN);
- break;
- case _RAISE:
- rgblight_sethsv_noeeprom(HSV_GOLD);
- break;
- case _ADJUST:
- rgblight_sethsv_noeeprom(HSV_RED);
- break;
- default:
- rgblight_sethsv_noeeprom(HSV_WHITE);
- break;
- }
- return state;
-}
diff --git a/keyboards/lazydesigners/dimple/ortho/info.json b/keyboards/lazydesigners/dimple/ortho/info.json
new file mode 100644
index 0000000000..dbe70f821f
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/info.json
@@ -0,0 +1,150 @@
+{
+ "keyboard_name": "Dimple",
+ "url": "http://lazydesigners.cn",
+ "maintainer": "Jacky@LAZYDESIGNERS",
+ "layouts": {
+ "LAYOUT_ortho_2u": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "w":1.25},
+ {"label":"Q", "x":1.25, "y":0},
+ {"label":"W", "x":2.25, "y":0},
+ {"label":"E", "x":3.25, "y":0},
+ {"label":"R", "x":4.25, "y":0},
+ {"label":"T", "x":5.25, "y":0},
+ {"label":"Y", "x":6.25, "y":0},
+ {"label":"U", "x":7.25, "y":0},
+ {"label":"I", "x":8.25, "y":0},
+ {"label":"O", "x":9.25, "y":0},
+ {"label":"P", "x":10.25, "y":0},
+ {"label":"BackSpace", "x":11.25, "y":0, "w":1.25},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25},
+ {"label":"Shift", "x":0, "y":2, "w":1.25},
+ {"label":"Z", "x":1.25, "y":2},
+ {"label":"X", "x":2.25, "y":2},
+ {"label":"C", "x":3.25, "y":2},
+ {"label":"V", "x":4.25, "y":2},
+ {"label":"B", "x":5.25, "y":2},
+ {"label":"N", "x":6.25, "y":2},
+ {"label":"M", "x":7.25, "y":2},
+ {"label":",", "x":8.25, "y":2},
+ {"label":".", "x":9.25, "y":2},
+ {"label":"Up", "x":10.25, "y":2},
+ {"label":"FN", "x":11.25, "y":2, "w":1.25},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Alt", "x":2.75, "y":3},
+ {"label":"Space", "x":3.75, "y":3, "w":2},
+ {"label":"FN", "x":5.75, "y":3},
+ {"label":"Space", "x":6.75, "y":3, "w":2},
+ {"label":"Left", "x":8.75, "y":3},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ },
+ "LAYOUT_ortho_3u": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "w":1.25},
+ {"label":"Q", "x":1.25, "y":0},
+ {"label":"W", "x":2.25, "y":0},
+ {"label":"E", "x":3.25, "y":0},
+ {"label":"R", "x":4.25, "y":0},
+ {"label":"T", "x":5.25, "y":0},
+ {"label":"Y", "x":6.25, "y":0},
+ {"label":"U", "x":7.25, "y":0},
+ {"label":"I", "x":8.25, "y":0},
+ {"label":"O", "x":9.25, "y":0},
+ {"label":"P", "x":10.25, "y":0},
+ {"label":"BackSpace", "x":11.25, "y":0, "w":1.25},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25},
+ {"label":"Shift", "x":0, "y":2, "w":1.25},
+ {"label":"Z", "x":1.25, "y":2},
+ {"label":"X", "x":2.25, "y":2},
+ {"label":"C", "x":3.25, "y":2},
+ {"label":"V", "x":4.25, "y":2},
+ {"label":"B", "x":5.25, "y":2},
+ {"label":"N", "x":6.25, "y":2},
+ {"label":"M", "x":7.25, "y":2},
+ {"label":",", "x":8.25, "y":2},
+ {"label":".", "x":9.25, "y":2},
+ {"label":"Up", "x":10.25, "y":2},
+ {"label":"FN", "x":11.25, "y":2, "w":1.25},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Alt", "x":2.75, "y":3},
+ {"label":"Raise", "x":3.75, "y":3},
+ {"label":"FN", "x":4.75, "y":3,"w":3},
+ {"label":"Lower", "x":7.75, "y":3},
+ {"label":"Left", "x":8.75, "y":3},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ },
+ "LAYOUT_ortho_7u": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "w":1.25},
+ {"label":"Q", "x":1.25, "y":0},
+ {"label":"W", "x":2.25, "y":0},
+ {"label":"E", "x":3.25, "y":0},
+ {"label":"R", "x":4.25, "y":0},
+ {"label":"T", "x":5.25, "y":0},
+ {"label":"Y", "x":6.25, "y":0},
+ {"label":"U", "x":7.25, "y":0},
+ {"label":"I", "x":8.25, "y":0},
+ {"label":"O", "x":9.25, "y":0},
+ {"label":"P", "x":10.25, "y":0},
+ {"label":"Back<br>Space", "x":11.25, "y":0, "w":1.25},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25},
+ {"label":"Shift", "x":0, "y":2, "w":1.25},
+ {"label":"Z", "x":1.25, "y":2},
+ {"label":"X", "x":2.25, "y":2},
+ {"label":"C", "x":3.25, "y":2},
+ {"label":"V", "x":4.25, "y":2},
+ {"label":"B", "x":5.25, "y":2},
+ {"label":"N", "x":6.25, "y":2},
+ {"label":"M", "x":7.25, "y":2},
+ {"label":",", "x":8.25, "y":2},
+ {"label":".", "x":9.25, "y":2},
+ {"label":"Up", "x":10.25, "y":2},
+ {"label":"FN", "x":11.25, "y":2, "w":1.25},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Space", "x":2.75, "y":3, "w":7},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lazydesigners/dimple/ortho/keymaps/default/keymap.c b/keyboards/lazydesigners/dimple/ortho/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6fd8f5875f
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define LT2_TAB LT(2, KC_TAB)
+#define LT1_SPC LT(1, KC_SPC)
+
+/*
+ * ,------------------------------------------------------------------.
+ * |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |------------------------------------------------------------------|
+ * |Tab/LT2| A | S | D | F | G | H | J | K | L | ' | |Enter|
+ * |------------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | Up | MO(2) |
+ * |------------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/LT1 | MO(2)| Spc |Left|Down|Rght|
+ * `---------------------------------------------------------'
+ */
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_2u(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT2_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(2),
+ KC_LCTL, KC_LGUI, KC_RALT, LT1_SPC, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ortho_2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT_ortho_2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
diff --git a/keyboards/lazydesigners/dimple/ortho/keymaps/via/keymap.c b/keyboards/lazydesigners/dimple/ortho/keymaps/via/keymap.c
new file mode 100644
index 0000000000..32b71b75df
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define LT2_TAB LT(2, KC_TAB)
+#define LT1_SPC LT(1, KC_SPC)
+
+/*
+ * ,------------------------------------------------------------------.
+ * |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |------------------------------------------------------------------|
+ * |Tab/LT2| A | S | D | F | G | H | J | K | L | ' | |Enter|
+ * |------------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | Up | MO(2) |
+ * |------------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/LT1 | MO(2)| Spc |Left|Down|Rght|
+ * `---------------------------------------------------------'
+ */
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_2u(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT2_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(2),
+ KC_LCTL, KC_LGUI, KC_RALT, LT1_SPC, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ortho_2u(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT_ortho_2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [3] = LAYOUT_ortho_2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
diff --git a/keyboards/lazydesigners/dimple/ortho/keymaps/via/rules.mk b/keyboards/lazydesigners/dimple/ortho/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/lazydesigners/dimple/ortho/ortho.c b/keyboards/lazydesigners/dimple/ortho/ortho.c
new file mode 100644
index 0000000000..da76fde176
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/ortho.c
@@ -0,0 +1,15 @@
+/*
+ Copyright 2021 LAZYDESIGNERS
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ortho.h"
diff --git a/keyboards/lazydesigners/dimple/ortho/ortho.h b/keyboards/lazydesigners/dimple/ortho/ortho.h
new file mode 100644
index 0000000000..592cf47de3
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/ortho.h
@@ -0,0 +1,91 @@
+/*
+ Copyright 2021 LAZYDESIGNERS
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ,-------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | 2U | | 2U | | | |
+ * `------------------------------------------------------'
+ */
+
+#define LAYOUT_ortho_2u( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
+
+/*
+ * ,-------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | 3U | | | | |
+ * `------------------------------------------------------'
+ */
+
+#define LAYOUT_ortho_3u( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
+
+/*
+ * ,-------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------------|
+ * | | | 7U | | |
+ * `------------------------------------------------------'
+ */
+
+#define LAYOUT_ortho_7u( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K300, K302, K305, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
+ { K300, KC_NO, K302, KC_NO, KC_NO, K305, KC_NO, KC_NO, K308, K309, KC_NO, KC_NO } \
+}
+
+
diff --git a/keyboards/lazydesigners/dimple/ortho/rules.mk b/keyboards/lazydesigners/dimple/ortho/rules.mk
new file mode 100644
index 0000000000..902a3d4bbc
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/ortho/rules.mk
@@ -0,0 +1,3 @@
+# Disable unsupported hardware
+BACKLIGHT_SUPPORTED = no
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/lazydesigners/dimple/readme.md b/keyboards/lazydesigners/dimple/readme.md
index 04b4b438d6..2e15cec2b9 100644
--- a/keyboards/lazydesigners/dimple/readme.md
+++ b/keyboards/lazydesigners/dimple/readme.md
@@ -4,13 +4,22 @@
A 40% custom keyboard designed and produced by [LazyDesigners](http://lazydesigners.cn).
-Keyboard Maintainer: [Erovia](https://github.com/Erovia)
-Hardware Supported: Dimple
-Hardware Availability: Check for GBs on [Geekhack](https://geekhack.org) and on [LazyDesigner's homepage.](http://lazydesigners.cn)
+* Keyboard Maintainer: [Erovia](https://github.com/Erovia) / [Jacky@LAZYDESIGNERS](https://github.com/jackytrabbit)
+* Hardware Supported: Dimple by LAZYDESIGNERS
+* Hardware Availability: Check on [LAZYDESIGNERS's homepage.](http://lazydesigners.cn)
+
+Detail versions:
+
+ 1. Dimple Round 1 in 2019 (Use dimple/staggered/Rev1)
+ 2. Dimple Round 2 Hotswap in 2021 (Use dimple/staggered/Rev2)
+ 3. Dimple Round 2 Solder in 2021 (Use dimple/staggered/Rev3)
+ 4. Dimple Round 2 OrthoStrange (Use dimple/ortho)
Make example for this keyboard (after setting up your build environment):
- make lazydesigners/dimple:default:dfu
+ make lazydesigners/dimple/staggered/rev1:default
+ make lazydesigners/dimple/staggered/rev2:default
+ make lazydesigners/dimple/ortho:default
To enter the bootloader, either short the pins on the PCB or the RESET button on the FN layer.
diff --git a/keyboards/lazydesigners/dimple/rules.mk b/keyboards/lazydesigners/dimple/rules.mk
index 6ac20a59a5..ee586a38e1 100644
--- a/keyboards/lazydesigners/dimple/rules.mk
+++ b/keyboards/lazydesigners/dimple/rules.mk
@@ -8,12 +8,16 @@ BOOTLOADER = atmel-dfu
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
# Disable unsupported hardware
AUDIO_SUPPORTED = no
-BACKLIGHT_SUPPORTED = no
+DEFAULT_FOLDER = lazydesigners/dimple/staggered/rev1
diff --git a/keyboards/lazydesigners/dimple/info.json b/keyboards/lazydesigners/dimple/staggered/info.json
index 4cfa1e6f18..4cfa1e6f18 100644
--- a/keyboards/lazydesigners/dimple/info.json
+++ b/keyboards/lazydesigners/dimple/staggered/info.json
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/default/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/default/keymap.c
new file mode 100644
index 0000000000..65b81ff4e1
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/default/keymap.c
@@ -0,0 +1,130 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+// Act as Shift on hold and as CapsLock on tap
+#define SFT_CPS LSFT_T(KC_CAPS)
+// Left space on tap, LOWER on hold
+#define SPC_LOW LT(_LOWER, KC_SPC)
+// Left space on tap, UPPER on hold
+#define SPC_UPR LT(_RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * ,---------------------------------------------------------------.
+ * |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |---------------------------------------------------------------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ' |Enter |
+ * |---------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | Up | . |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse |Left|Down|Rght|
+ * `-----------------------------------------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ SFT_CPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_DOT,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_LOW, SPC_UPR, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+ * |---------------------------------------------------------------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |---------------------------------------------------------------|
+ * | | F7 | F8 | F9 |F10 |F11 |F12 | | ; |PgUp| / |
+ * |---------------------------------------------------------------|
+ * | | | | | |Home|PgDn|End |
+ * `-----------------------------------------------------'
+ */
+
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_SCLN, KC_PGUP, KC_SLSH,
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |---------------------------------------------------------------|
+ * | Ins | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |---------------------------------------------------------------|
+ * | | F7 | F8 | F9 |F10 |F11 |F12 | | | | |
+ * |---------------------------------------------------------------|
+ * |VolD|Mute|VolU| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ KC_INS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * |EEPR|RST | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * |RGB-|RGB |RGB+| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_ADJUST] = LAYOUT(
+ EEP_RST, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+#ifdef KEYBOARD_lazydesigner_dimple_staggered_rev1
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ switch (get_highest_layer(state)) {
+ case _LOWER:
+ rgblight_sethsv_noeeprom(HSV_GREEN);
+ break;
+ case _RAISE:
+ rgblight_sethsv_noeeprom(HSV_GOLD);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_noeeprom(HSV_RED);
+ break;
+ default:
+ rgblight_sethsv_noeeprom(HSV_WHITE);
+ break;
+ }
+ return state;
+}
+#endif
diff --git a/keyboards/lazydesigners/dimple/keymaps/default/readme.md b/keyboards/lazydesigners/dimple/staggered/keymaps/default/readme.md
index c334b6c367..c334b6c367 100644
--- a/keyboards/lazydesigners/dimple/keymaps/default/readme.md
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/default/readme.md
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/config.h b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/config.h
new file mode 100644
index 0000000000..214ff982c6
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TERM 170
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c
new file mode 100644
index 0000000000..6f893e187f
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c
@@ -0,0 +1,162 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "erovia.h"
+
+// Left space on tap, LOWER on hold
+#define SPC_LOW LT(_LOWER, KC_TAB)
+// Left space on tap, UPPER on hold
+#define SPC_UPR LT(_RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ` | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |---------------------------------------------------------------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ' | . |
+ * |---------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | Enter |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ VIM_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_DOT,
+ TD_SHFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD_ENTR,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_LOW, SPC_UPR, KC_NO, KC_NO, KC_NO
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ` | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |---------------------------------------------------------------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ' | ' |
+ * |---------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | . | Enter |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_COLEMAK] = LAYOUT(
+ KC_GRV, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ VIM_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ TD_SHFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, TD_ENTR,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_LOW, SPC_UPR, KC_NO, KC_NO, KC_NO
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+ * |---------------------------------------------------------------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |---------------------------------------------------------------|
+ * | | F7 | F8 | F9 |F10 |F11 |F12 | | ; |PgUp| / |
+ * |---------------------------------------------------------------|
+ * | | | | | |Home|PgDn|End |
+ * `-----------------------------------------------------'
+ */
+
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_SCLN, KC_PGUP, KC_SLSH,
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |---------------------------------------------------------------|
+ * | Ins | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |---------------------------------------------------------------|
+ * | | F7 | F8 | F9 |F10 |F11 |F12 | | | | |
+ * |---------------------------------------------------------------|
+ * |VolD|Mute|VolU| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_INS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * |EEPR|RST | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * |Leader| | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * |RGB-|RGB |RGB+| | | | | |
+ * `-----------------------------------------------------'
+ */
+
+ [_ADJUST] = LAYOUT(
+ EEP_RST, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LEAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QWERTY, COLEMAK, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+
+/*
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | H | J | K | L | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | |Up | |
+ * |---------------------------------------------------------------|
+ * | | | | | |Left|Down|Rght|
+ * `-----------------------------------------------------'
+ */
+
+ [_VIM] = LAYOUT(
+ EEP_RST, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO,
+ RGB_VAD, RGB_TOG, RGB_VAI, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+layer_state_t layer_state_set_keymap(layer_state_t state) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ switch (biton32(state)) {
+ case _LOWER:
+ rgblight_sethsv_noeeprom(HSV_GREEN);
+ break;
+ case _RAISE:
+ rgblight_sethsv_noeeprom(HSV_GOLD);
+ break;
+ case _ADJUST:
+ rgblight_sethsv_noeeprom(HSV_RED);
+ break;
+ default:
+ rgblight_sethsv_noeeprom(HSV_WHITE);
+ break;
+ }
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ dimple_led_off();
+}
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/readme.md b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/readme.md
new file mode 100644
index 0000000000..c334b6c367
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/readme.md
@@ -0,0 +1,60 @@
+# The default keymap for Dimple
+
+**Features**
+
+* Shift acts as CapsLock when tapped
+* Left space: space on tap, Lower layer on hold
+* Right space: space on tap, Raise layer on hold
+* Both space: Adjust layer on hold
+
+## QWERTY (Normal) Layer
+```
+ ,---------------------------------------------------------------.
+ |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ |---------------------------------------------------------------|
+ | Tab | A | S | D | F | G | H | J | K | L | ' |Enter |
+ |---------------------------------------------------------------|
+ | Shift | Z | X | C | V | B | N | M | , | Up | . |
+ |---------------------------------------------------------------|
+ |Ctrl|Gui |Alt | Spc/Lwr | Spc/Rse |Left|Down|Rght|
+ `-----------------------------------------------------'
+```
+
+## Lower Layer
+```
+ ,---------------------------------------------------------------.
+ | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
+ |---------------------------------------------------------------|
+ | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ |---------------------------------------------------------------|
+ | | F7 | F8 | F9 |F10 |F11 |F12 | | ; |PgUp| / |
+ |---------------------------------------------------------------|
+ | | | | | |Home|PgDn|End |
+ `-----------------------------------------------------'
+```
+
+## Raise Layer
+```
+ ,---------------------------------------------------------------.
+ | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ |---------------------------------------------------------------|
+ | Ins | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ |---------------------------------------------------------------|
+ | | F7 | F8 | F9 |F10 |F11 |F12 | | | | |
+ |---------------------------------------------------------------|
+ |VolD|Mute|VolU| | | | | |
+ `-----------------------------------------------------'
+```
+
+## Adjust Layer
+```
+,---------------------------------------------------------------.
+ |EEPR|RST | | | | | | | | | | |
+ |---------------------------------------------------------------|
+ | | | | | | | | | | | | |
+ |---------------------------------------------------------------|
+ | | | | | | | | | | | |
+ |---------------------------------------------------------------|
+ |RGB-|RGB |RGB+| | | | | |
+ `-----------------------------------------------------'
+```
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c
new file mode 100644
index 0000000000..e4b4161b04
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT(KC_SLSH), KC_DEL, KC_ESC, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RGUI, KC_LCTL),
+ [1] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, RESET, RGB_SPI, RGB_SPD, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_SCLN, KC_NO, KC_LSFT, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, MO(2), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT),
+ [2] = LAYOUT(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO)
+};
diff --git a/keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c
index cdaade987f..cdaade987f 100644
--- a/keyboards/lazydesigners/dimple/keymaps/tominabox1/keymap.c
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/tominabox1/keymap.c
diff --git a/keyboards/lazydesigners/dimple/keymaps/via/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/via/keymap.c
index d3bfed176c..d3bfed176c 100644
--- a/keyboards/lazydesigners/dimple/keymaps/via/keymap.c
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/via/keymap.c
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/via/rules.mk b/keyboards/lazydesigners/dimple/staggered/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/lazydesigners/dimple/staggered/rev1/config.h b/keyboards/lazydesigners/dimple/staggered/rev1/config.h
new file mode 100644
index 0000000000..b62f3c4195
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev1/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define LED_CAPS_LOCK_PIN E6
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/lazydesigners/dimple/staggered/rev1/rules.mk b/keyboards/lazydesigners/dimple/staggered/rev1/rules.mk
new file mode 100644
index 0000000000..2fdb308d16
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev1/rules.mk
@@ -0,0 +1,4 @@
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+
+# Disable unsupported hardware
+BACKLIGHT_SUPPORTED = no
diff --git a/keyboards/lazydesigners/dimple/staggered/rev2/rules.mk b/keyboards/lazydesigners/dimple/staggered/rev2/rules.mk
new file mode 100644
index 0000000000..1961392f2d
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev2/rules.mk
@@ -0,0 +1,4 @@
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+
+# Disable unsupported hardware
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/config.h b/keyboards/lazydesigners/dimple/staggered/rev3/config.h
new file mode 100644
index 0000000000..cc32223f3a
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/info.json b/keyboards/lazydesigners/dimple/staggered/rev3/info.json
new file mode 100644
index 0000000000..eb1d8b14dc
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/info.json
@@ -0,0 +1,144 @@
+{
+ "keyboard_name": "Dimple",
+ "url": "http://lazydesigners.cn",
+ "maintainer": "Jacky@LAZYDESIGNERS",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25},
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",", "x":8.75, "y":2},
+ {"label":"Up", "x":9.75, "y":2},
+ {"label":".", "x":10.75, "y":2, "w":1.75},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Alt", "x":2.75, "y":3},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25},
+ {"label":"Space", "x":6, "y":3, "w":2.75},
+ {"label":"Left", "x":8.75, "y":3},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":0, "w":1.25,"h":2},
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",", "x":8.75, "y":2},
+ {"label":"Up", "x":9.75, "y":2},
+ {"label":".", "x":10.75, "y":2, "w":1.75},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Alt", "x":2.75, "y":3},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25},
+ {"label":"Space", "x":6, "y":3, "w":2.75},
+ {"label":"Left", "x":8.75, "y":3},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ },
+ "LAYOUT_7u": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5},
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"'", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25},
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",", "x":8.75, "y":2},
+ {"label":"Up", "x":9.75, "y":2},
+ {"label":".", "x":10.75, "y":2, "w":1.75},
+ {"label":"Ctrl", "x":0.75, "y":3},
+ {"label":"Gui", "x":1.75, "y":3},
+ {"label":"Space", "x":2.75, "y":3, "w":7},
+ {"label":"Down", "x":9.75, "y":3},
+ {"label":"Right", "x":10.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/keymaps/default/keymap.c b/keyboards/lazydesigners/dimple/staggered/rev3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ca20b00201
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 LAZYDESIGNERS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define LT2_TAB LT(2, KC_TAB)
+#define LT1_SPC LT(1, KC_SPC)
+
+/*
+ * ,---------------------------------------------------------------.
+ * |Esc | Q | W | E | R | T | Y | U | I | O | P | Bspc |
+ * |---------------------------------------------------------------|
+ * |Tab/LT2| A | S | D | F | G | H | J | K | L | ' |Enter|
+ * |---------------------------------------------------------------|
+ * | Shift | Z | X | C | V | B | N | M | , | Up | MO(2) |
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Spc/LT1 | Spc |Left|Down|Rght|
+ * `-----------------------------------------------------'
+ */
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT2_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, MO(2),
+ KC_LCTL, KC_LGUI, KC_RALT, LT1_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO,
+ KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT_all(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c
new file mode 100644
index 0000000000..afa1d38b6d
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c
@@ -0,0 +1,16 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev3.h"
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h
new file mode 100644
index 0000000000..2aec210d9e
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h
@@ -0,0 +1,90 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------'
+ */
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
+ K300, K302, K303, K304, K306, K307, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \
+ { K300, KC_NO, K302, K303, K304, KC_NO, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
+
+/*
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |-------------------------------------------------------- |
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------'
+ */
+
+#define LAYOUT_iso( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
+ K300, K302, K303, K304, K306, K307, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, KC_NO }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \
+ { K300, KC_NO, K302, K303, K304, KC_NO, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
+
+/*
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | |
+ * `-----------------------------------------------------'
+ */
+
+#define LAYOUT_7u( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
+ K300, K302, K304, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \
+ { K300, KC_NO, K302, KC_NO, K304, KC_NO, KC_NO, KC_NO, K308, K309, KC_NO, KC_NO } \
+}
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/rules.mk b/keyboards/lazydesigners/dimple/staggered/rev3/rules.mk
new file mode 100644
index 0000000000..b3b1cc58a1
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/rules.mk
@@ -0,0 +1,4 @@
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+
+# Disable unsupported hardware
+RGBLIGHT_ENABLE = no
diff --git a/keyboards/lazydesigners/dimple/staggered/staggered.c b/keyboards/lazydesigners/dimple/staggered/staggered.c
new file mode 100644
index 0000000000..2cd8c018db
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/staggered.c
@@ -0,0 +1,23 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "staggered.h"
+void dimple_led_on() {
+ writePinLow(E6);
+ }
+
+ void dimple_led_off() {
+ writePinHigh(E6);
+ }
diff --git a/keyboards/lazydesigners/dimple/staggered/staggered.h b/keyboards/lazydesigners/dimple/staggered/staggered.h
new file mode 100644
index 0000000000..433de3b897
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/staggered.h
@@ -0,0 +1,45 @@
+/* Copyright 2019 Erovia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ,---------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | |
+ * `-----------------------------------------------------'
+ */
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, \
+ K300, K302, K303, K304, K306, K307, K308, K309 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, KC_NO }, \
+ { K300, KC_NO, K302, K303, K304, KC_NO, K306, K307, K308, K309, KC_NO, KC_NO } \
+}
+
+void dimple_led_on(void);
+void dimple_led_off(void);
diff --git a/keyboards/lazydesigners/dimpleplus/rules.mk b/keyboards/lazydesigners/dimpleplus/rules.mk
index 699b9124dd..0973ca5132 100644
--- a/keyboards/lazydesigners/dimpleplus/rules.mk
+++ b/keyboards/lazydesigners/dimpleplus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lazydesigners/the30/rules.mk b/keyboards/lazydesigners/the30/rules.mk
index 8e36891e9f..c7fdf034b0 100644
--- a/keyboards/lazydesigners/the30/rules.mk
+++ b/keyboards/lazydesigners/the30/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lazydesigners/the40/rules.mk b/keyboards/lazydesigners/the40/rules.mk
index c34f7d1205..ce1d79e917 100644
--- a/keyboards/lazydesigners/the40/rules.mk
+++ b/keyboards/lazydesigners/the40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lazydesigners/the50/rules.mk b/keyboards/lazydesigners/the50/rules.mk
index c51112c057..c9f848a018 100644
--- a/keyboards/lazydesigners/the50/rules.mk
+++ b/keyboards/lazydesigners/the50/rules.mk
@@ -5,14 +5,13 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality
diff --git a/keyboards/lazydesigners/the60/rev1/rules.mk b/keyboards/lazydesigners/the60/rev1/rules.mk
index ee92af3fd6..9ebd4620b9 100755
--- a/keyboards/lazydesigners/the60/rev1/rules.mk
+++ b/keyboards/lazydesigners/the60/rev1/rules.mk
@@ -5,13 +5,12 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/lazydesigners/the60/rev2/rules.mk b/keyboards/lazydesigners/the60/rev2/rules.mk
index 431acd9df5..35fbff0af9 100755
--- a/keyboards/lazydesigners/the60/rev2/rules.mk
+++ b/keyboards/lazydesigners/the60/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lck75/rules.mk b/keyboards/lck75/rules.mk
index 665f65307a..1af1d4921b 100644
--- a/keyboards/lck75/rules.mk
+++ b/keyboards/lck75/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/le_chiffre/rules.mk b/keyboards/le_chiffre/rules.mk
index 25712583ab..bc5775a151 100644
--- a/keyboards/le_chiffre/rules.mk
+++ b/keyboards/le_chiffre/rules.mk
@@ -4,11 +4,13 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
OLED_ENABLE = no
diff --git a/keyboards/leafcutterlabs/bigknob/rules.mk b/keyboards/leafcutterlabs/bigknob/rules.mk
index 26c6933008..c4c90ab7b2 100644
--- a/keyboards/leafcutterlabs/bigknob/rules.mk
+++ b/keyboards/leafcutterlabs/bigknob/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/leeku/finger65/rules.mk b/keyboards/leeku/finger65/rules.mk
index 0669ee29cc..e1e0dba786 100644
--- a/keyboards/leeku/finger65/rules.mk
+++ b/keyboards/leeku/finger65/rules.mk
@@ -12,6 +12,4 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
diff --git a/keyboards/lefishe/rules.mk b/keyboards/lefishe/rules.mk
index 09f5916882..5d063b8756 100644
--- a/keyboards/lefishe/rules.mk
+++ b/keyboards/lefishe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lefty/rules.mk b/keyboards/lefty/rules.mk
index 119ec3128a..658803f6c7 100644
--- a/keyboards/lefty/rules.mk
+++ b/keyboards/lefty/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index 8b24a4131f..fcb3ab6677 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -34,10 +34,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_4x12(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -51,11 +51,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -69,11 +69,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -87,11 +87,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -105,11 +105,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -123,11 +123,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk
index 83f9665ca2..50355eda38 100644
--- a/keyboards/lets_split/rules.mk
+++ b/keyboards/lets_split/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SPLIT_KEYBOARD = yes
LAYOUTS = ortho_4x12
diff --git a/keyboards/lets_split_eh/keymaps/default/config.h b/keyboards/lets_split_eh/keymaps/default/config.h
deleted file mode 100644
index c535299e74..0000000000
--- a/keyboards/lets_split_eh/keymaps/default/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
- // place overrides here
diff --git a/keyboards/lets_split_eh/keymaps/default/keymap.c b/keyboards/lets_split_eh/keymaps/default/keymap.c
index 366c4ee3cc..3f41051cf6 100644
--- a/keyboards/lets_split_eh/keymaps/default/keymap.c
+++ b/keyboards/lets_split_eh/keymaps/default/keymap.c
@@ -34,11 +34,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | ` | GUI | Alt |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- FUNCTION, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, \
- KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ FUNCTION, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -52,11 +52,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | |Lower | Bksp | Bksp |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT( \
- KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE, \
- _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT(
+ KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MUTE, _______, KC_PIPE,
+ _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | , | 0 | . |Lower | Bksp | Bksp |Raise | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, \
- KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, \
- _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
+ KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
+ _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -88,11 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | RESET|
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT( \
- TSKMGR, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
- _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+[_ADJUST] = LAYOUT(
+ TSKMGR, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
),
/* Function
@@ -106,11 +106,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
-[_FUNCTION] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_FUNCTION] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/lets_split_eh/rules.mk b/keyboards/lets_split_eh/rules.mk
index 7df89d9e10..9662dfc60e 100644
--- a/keyboards/lets_split_eh/rules.mk
+++ b/keyboards/lets_split_eh/rules.mk
@@ -5,24 +5,20 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12
DEFAULT_FOLDER = lets_split_eh/eh
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk
index c894100f21..f1836baa27 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
@@ -16,7 +11,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = no # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = yes
TAP_DANCE_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
diff --git a/keyboards/lfkeyboards/lfk78/rules.mk b/keyboards/lfkeyboards/lfk78/rules.mk
index 9422978d11..89d8c7ff59 100644
--- a/keyboards/lfkeyboards/lfk78/rules.mk
+++ b/keyboards/lfkeyboards/lfk78/rules.mk
@@ -9,13 +9,13 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lfkeyboards, not qmk base
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk
index 2ab907be69..567232cb76 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
@@ -16,7 +11,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Disable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = yes
TAP_DANCE_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/config.h b/keyboards/lfkeyboards/lfk87/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/lfkeyboards/lfk87/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c
index 8d0dadcf81..3ee5399cd3 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c
+++ b/keyboards/lfkeyboards/lfk87/keymaps/default/keymap.c
@@ -34,12 +34,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------'
*/
[VANILLA] = LAYOUT_tkl_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap FUNCTION: Function Layer
@@ -58,12 +58,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------' `-------------'
*/
[FUNC] = LAYOUT_tkl_ansi(
- KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, \
- XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, \
- _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
- _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______ \
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______,
+ XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______,
+ _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
+ _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______
),
/* Keymap SETTINGS: Settings Layer
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------------------------------'
*/
[SETTINGS] = LAYOUT_tkl_ansi(
- F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \
- F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \
- MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, \
- AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
- F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \
- XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \
+ F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX,
+ F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX,
+ MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX,
+ AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
+ XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI
),
};
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
index 402b890b25..99a3287521 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/default/rules.mk
@@ -1,20 +1,14 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
index 64f4acea80..4dfb098538 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
+++ b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
@@ -34,12 +34,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------'
*/
[VANILLA] = LAYOUT_tkl_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, LGUI(KC_D), KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, LGUI(KC_D), KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap FUNCTION: Function Layer
@@ -58,12 +58,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------' `-------------'
*/
[FUNC] = LAYOUT_tkl_ansi(
- KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, \
- XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, \
- _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
- _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______ \
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______,
+ XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______,
+ _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
+ _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______
),
/* Keymap SETTINGS: Settings Layer
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------'
*/
[SETTINGS] = LAYOUT_tkl_ansi(
- F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \
- F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \
- MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, \
- AU_TOG, KC_F1, F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
- F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, \
- XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI \
+ F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX,
+ F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX,
+ MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX,
+ AU_TOG, KC_F1, F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
+ XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI
),
};
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk
index 147f4f8f20..fc0be15230 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk
@@ -1,14 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
@@ -16,8 +11,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/config.h b/keyboards/lfkeyboards/lfk87/keymaps/iso/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/lfkeyboards/lfk87/keymaps/iso/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c
index b9d46df2b9..428277c33f 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c
+++ b/keyboards/lfkeyboards/lfk87/keymaps/iso/keymap.c
@@ -34,12 +34,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------'
*/
[VANILLA] = LAYOUT_tkl_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_LSCR, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_LSCR, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Keymap FUNCTION: Function Layer
@@ -58,12 +58,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------' `-------------'
*/
[FUNC] = LAYOUT_tkl_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, \
- XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, \
- _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, XXXXXXX, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, \
- _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______,
+ XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______,
+ _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
+ _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______
),
/* Keymap SETTINGS: Settings Layer
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------' `--------------'
*/
[SETTINGS] = LAYOUT_tkl_iso(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, \
- F(0), F(3), F(4), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, \
- MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX, \
- AU_TOG, F(3), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, \
- F(7), XXXXXXX, F(4), F(6), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_HUI, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_SAD, RGB_HUD, RGB_SAI \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX,
+ F(0), F(3), F(4), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX,
+ MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX,
+ AU_TOG, F(3), F(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ F(7), XXXXXXX, F(4), F(6), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_HUI,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(0), RGB_SAD, RGB_HUD, RGB_SAI
),
};
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
index d880f9f156..4325b35d11 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/keymaps/iso/rules.mk
@@ -1,20 +1,14 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/lfkeyboards/lfk87/rules.mk b/keyboards/lfkeyboards/lfk87/rules.mk
index 1289cf133d..8322bd1769 100644
--- a/keyboards/lfkeyboards/lfk87/rules.mk
+++ b/keyboards/lfkeyboards/lfk87/rules.mk
@@ -15,22 +15,20 @@ SRC = TWIlib.c issi.c lighting.c
LAYOUTS = tkl_ansi tkl_iso
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BACKLIGHT_DRIVER = custom
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable RGB underlight
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms
diff --git a/keyboards/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk
index 18cea63e32..3e56a53241 100644
--- a/keyboards/lfkeyboards/lfkpad/rules.mk
+++ b/keyboards/lfkeyboards/lfkpad/rules.mk
@@ -12,14 +12,12 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lfkeyboards, not qmk base
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
ISSI_ENABLE = yes # If the I2C pullup resistors aren't installed this must be disabled
WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan() isn't run every 250ms
diff --git a/keyboards/lfkeyboards/mini1800/config.h b/keyboards/lfkeyboards/mini1800/config.h
index 1504a95cb4..7c81c9f98c 100644
--- a/keyboards/lfkeyboards/mini1800/config.h
+++ b/keyboards/lfkeyboards/mini1800/config.h
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER LFKeyboards
-#define PRODUCT LFK87
+#define PRODUCT Mini1800
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lfkeyboards/mini1800/info.json b/keyboards/lfkeyboards/mini1800/info.json
index 5d2662b877..0625ee43d4 100644
--- a/keyboards/lfkeyboards/mini1800/info.json
+++ b/keyboards/lfkeyboards/mini1800/info.json
@@ -1,10 +1,97 @@
{
"keyboard_name": "Mini1800",
"url": "",
- "maintainer": "qmk",
+ "maintainer": "lfkeyboards",
"layouts": {
"LAYOUT": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0, "w":2}, {"label":"Num Lock", "x":15.5, "y":0}, {"label":"/", "x":16.5, "y":0}, {"label":"*", "x":17.5, "y":0}, {"label":"-", "x":18.5, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"7", "x":15.5, "y":1}, {"label":"8", "x":16.5, "y":1}, {"label":"9", "x":17.5, "y":1}, {"label":"+", "x":18.5, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"4", "x":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"label":"+", "x":18.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"1", "x":15.5, "y":3}, {"label":"2", "x":16.5, "y":3}, {"label":"3", "x":17.5, "y":3}, {"label":"Enter", "x":18.5, "y":3, "h":2}, {"label":"\u2191", "x":14.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}, {"label":"\u2190", "x":13.25, "y":4.25}, {"label":"\u2193", "x":14.25, "y":4.25}, {"label":"\u2192", "x":15.25, "y":4.25}]
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Back Space", "x":13, "y":0, "w":2},
+ {"label":"Num Lock", "x":15.5, "y":0},
+ {"label":"/", "x":16.5, "y":0},
+ {"label":"*", "x":17.5, "y":0},
+ {"label":"-", "x":18.5, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"7", "x":15.5, "y":1},
+ {"label":"8", "x":16.5, "y":1},
+ {"label":"9", "x":17.5, "y":1},
+ {"label":"+", "x":18.5, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.25},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"4", "x":15.5, "y":2},
+ {"label":"5", "x":16.5, "y":2},
+ {"label":"6", "x":17.5, "y":2},
+ {"label":"+", "x":18.5, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14.25, "y":3.25},
+ {"label":"1", "x":15.5, "y":3},
+ {"label":"2", "x":16.5, "y":3},
+ {"label":"3", "x":17.5, "y":3},
+ {"label":"Enter", "x":18.5, "y":3, "h":2},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Fn", "x":11, "y":4},
+ {"label":"Ctrl", "x":12, "y":4},
+ {"label":"\u2190", "x":13.25, "y":4.25},
+ {"label":"\u2193", "x":14.25, "y":4.25},
+ {"label":"\u2192", "x":15.25, "y":4.25},
+ {"label":"0", "x":16.5, "y":4},
+ {"label":".", "x":17.5, "y":4}
+ ]
}
}
}
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/config.h b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/config.h
deleted file mode 100644
index 8893d122e0..0000000000
--- a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/config.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk
index b50ee2fd69..e5ddcae8d9 100644
--- a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk
+++ b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk
@@ -1,50 +1 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-AUDIO_ENABLE = yes # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable RGB underlight
-RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
-
-ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
-WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
-
-
-
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
-
-ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
- TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
-endif
-
-
-# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
-# #
-# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
-# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
-# #
-# # Set to B, C or D
-# LFK_REV = D
-
-# ifeq ($(LFK_REV), B)
-# MCU = atmega32u4
-# else
-# MCU = at90usb1286
-# endif
-# OPT_DEFS += -DLFK_REV_$(LFK_REV)
-# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/config.h b/keyboards/lfkeyboards/mini1800/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/lfkeyboards/mini1800/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c
index 364bf06c30..1d29cb1c56 100644
--- a/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c
+++ b/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------'
*/
[VANILLA] = LAYOUT(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* Keymap FUNCTION: Function Layer
@@ -60,11 +60,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------' `-------------'
*/
[FUNC] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, \
- XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, _______, _______, _______, _______, \
- _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______,
+ XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Keymap SETTINGS: Settings Layer
@@ -83,11 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------------------'
*/
[SETTINGS] = LAYOUT(
- F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX, \
- MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX, \
- AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX \
+ F(0), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX,
+ MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, F(2), RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX,
+ AU_TOG, F(1), F(3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ F(5), F(2), F(4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, F(12), XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
deleted file mode 100644
index 18cf149822..0000000000
--- a/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-AUDIO_ENABLE = yes # Audio output
-RGBLIGHT_ENABLE = yes # Enable RGB underlight
-RGBLIGHT_CUSTOM_DRIVER = yes # RGB code is implemented in lefkeyboards, not WS2812
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = no
-
-ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
-WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
-
-
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
-
-ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
- TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
-endif
-
-
-# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
-# #
-# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
-# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
-# #
-# # Set to B, C or D
-# LFK_REV = D
-
-# ifeq ($(LFK_REV), B)
-# MCU = atmega32u4
-# else
-# MCU = at90usb1286
-# endif
-# OPT_DEFS += -DLFK_REV_$(LFK_REV)
-# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/mini1800/post_rules.mk b/keyboards/lfkeyboards/mini1800/post_rules.mk
deleted file mode 100644
index f04e10e4a3..0000000000
--- a/keyboards/lfkeyboards/mini1800/post_rules.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-ifeq ($(LFK_REV), A)
- MCU = at90usb1286
-else
- MCU = at90usb646
-endif
-
-ifeq ($(strip $(ISSI_ENABLE)), yes)
- # TMK_COMMON_DEFS += -DISSI_ENABLE
-endif
diff --git a/keyboards/lfkeyboards/mini1800/readme.md b/keyboards/lfkeyboards/mini1800/readme.md
index e2839275cc..4e35ac537e 100644
--- a/keyboards/lfkeyboards/mini1800/readme.md
+++ b/keyboards/lfkeyboards/mini1800/readme.md
@@ -1,12 +1,26 @@
-Mini1800
-===
+# Mini1800
-Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
-Hardware Supported: Mini1800
-Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
+* Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
+* Hardware Supported:
+ * [Mini1800 RevA](reva/) - Green PCB with AT90USB1286
+ * [Mini1800 RevC](revc/) - Black PCB with AT90USB646; first public release
+* Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
Make example for this keyboard (after setting up your build environment):
- make lfkeyboards/mini1800:default
+ make lfkeyboards/mini1800/reva:default
+ make lfkeyboards/mini1800/revc:default
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
+Flashing example for this keyboard:
+
+ make lfkeyboards/mini1800/reva:default:flash
+ make lfkeyboards/mini1800/revc:default:flash
+
+## Bootloader
+
+To reset the board into bootloader mode, do one of the following:
+
+* **Physical reset button**: Briefly press the button on the bottom of the PCB (between Q and W keys)
+* **Keycode in keymap**: Press the key mapped to `RESET` if it is available (`Fn`+`Right Shift`, then tap `Enter` by default)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/lfkeyboards/mini1800/reva/post_rules.mk b/keyboards/lfkeyboards/mini1800/reva/post_rules.mk
new file mode 100644
index 0000000000..ad997587b2
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/reva/post_rules.mk
@@ -0,0 +1,7 @@
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
diff --git a/keyboards/lfkeyboards/mini1800/reva/readme.md b/keyboards/lfkeyboards/mini1800/reva/readme.md
new file mode 100644
index 0000000000..8460bb5326
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/reva/readme.md
@@ -0,0 +1,22 @@
+# Mini1800 RevA
+
+* Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
+* Hardware Supported: Mini1800 RevA (Green PCB with AT90USB1286)
+* Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make lfkeyboards/mini1800/reva:default
+
+Flashing example for this keyboard:
+
+ make lfkeyboards/mini1800/reva:default:flash
+
+## Bootloader
+
+To reset the board into bootloader mode, do one of the following:
+
+* **Physical reset button**: Briefly press the button on the bottom of the PCB (between Q and W keys)
+* **Keycode in keymap**: Press the key mapped to `RESET` if it is available (`Fn`+`Right Shift`, then tap `Enter` by default)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/lfkeyboards/mini1800/reva/rules.mk b/keyboards/lfkeyboards/mini1800/reva/rules.mk
new file mode 100644
index 0000000000..1f67c5f199
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/reva/rules.mk
@@ -0,0 +1,29 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+
+# RGB code is implemented in lfkeyboards, not WS2812
+RGBLIGHT_CUSTOM_DRIVER = yes
+BACKLIGHT_DRIVER = custom
+SLEEP_LED_ENABLE = yes
+
+ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
+
+# Extra source files for IS3731 lighting
+SRC = TWIlib.c issi.c lighting.c
diff --git a/keyboards/lfkeyboards/mini1800/revc/post_rules.mk b/keyboards/lfkeyboards/mini1800/revc/post_rules.mk
new file mode 100644
index 0000000000..ad997587b2
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/revc/post_rules.mk
@@ -0,0 +1,7 @@
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+ TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
diff --git a/keyboards/lfkeyboards/mini1800/revc/readme.md b/keyboards/lfkeyboards/mini1800/revc/readme.md
new file mode 100644
index 0000000000..5d442cb6d9
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/revc/readme.md
@@ -0,0 +1,24 @@
+# Mini1800 RevC
+
+The first public release of the Mini1800.
+
+* Keyboard Maintainer: [LFKeyboards](https://github.com/lfkeyboards)
+* Hardware Supported: Mini1800 RevC (Black PCB with AT90USB646)
+* Hardware Availability: [LFKeyboards.com](https://www.lfkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make lfkeyboards/mini1800/revc:default
+
+Flashing example for this keyboard:
+
+ make lfkeyboards/mini1800/revc:default:flash
+
+## Bootloader
+
+To reset the board into bootloader mode, do one of the following:
+
+* **Physical reset button**: Briefly press the button on the bottom of the PCB (between Q and W keys)
+* **Keycode in keymap**: Press the key mapped to `RESET` if it is available (`Fn`+`Right Shift`, then tap `Enter` by default)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/lfkeyboards/mini1800/revc/rules.mk b/keyboards/lfkeyboards/mini1800/revc/rules.mk
new file mode 100644
index 0000000000..0ea69b6d6f
--- /dev/null
+++ b/keyboards/lfkeyboards/mini1800/revc/rules.mk
@@ -0,0 +1,29 @@
+# MCU name
+MCU = at90usb646
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+
+# RGB code is implemented in lfkeyboards, not WS2812
+RGBLIGHT_CUSTOM_DRIVER = yes
+BACKLIGHT_DRIVER = custom
+SLEEP_LED_ENABLE = yes
+
+ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
+
+# Extra source files for IS3731 lighting
+SRC = TWIlib.c issi.c lighting.c
diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk
deleted file mode 100644
index c9a9b01054..0000000000
--- a/keyboards/lfkeyboards/mini1800/rules.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-# Set the LFK87 hardware version.
-#
-# RevA - Green PCB. at90usb1286 Only 3 exist
-# RevB - We don't talk about RevB
-# RevC - Black PCB. at90usb646 First public release
-#
-# Set to A or C
-LFK_REV = C
-
-BOOTLOADER = atmel-dfu
-OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV)
-
-# Extra source files for IS3731 lighting
-SRC = TWIlib.c issi.c lighting.c
-
-# Build Options
-# change yes to no to disable
-#
-BACKLIGHT_DRIVER = custom
diff --git a/keyboards/lfkeyboards/smk65/rules.mk b/keyboards/lfkeyboards/smk65/rules.mk
index 28efec35b3..30f0c24537 100644
--- a/keyboards/lfkeyboards/smk65/rules.mk
+++ b/keyboards/lfkeyboards/smk65/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lily58/keymaps/bcat/config.h b/keyboards/lily58/keymaps/bcat/config.h
index dbe724d56b..2ee0071bda 100644
--- a/keyboards/lily58/keymaps/bcat/config.h
+++ b/keyboards/lily58/keymaps/bcat/config.h
@@ -16,4 +16,6 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
#define EE_HANDS
diff --git a/keyboards/lily58/keymaps/bcat/keymap.c b/keyboards/lily58/keymaps/bcat/keymap.c
index 69af2ca003..a0856d0fdd 100644
--- a/keyboards/lily58/keymaps/bcat/keymap.c
+++ b/keyboards/lily58/keymaps/bcat/keymap.c
@@ -18,20 +18,9 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
+#if defined(OLED_ENABLE)
+# include "bcat_oled.h"
+#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -62,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7 */
[LAYER_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
@@ -70,4 +59,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
};
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
+#if defined(OLED_ENABLE)
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_master() ? OLED_ROTATION_270 : OLED_ROTATION_180; }
+
+void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {
+ render_oled_layers();
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_indicators(keyboard_state->leds);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_wpm(keyboard_state->wpm);
+ render_oled_pet(/*col=*/0, /*line=*/12, keyboard_state);
+}
+#endif
diff --git a/keyboards/lily58/keymaps/bcat/readme.md b/keyboards/lily58/keymaps/bcat/readme.md
index de03526a8b..8b0e77e1b7 100644
--- a/keyboards/lily58/keymaps/bcat/readme.md
+++ b/keyboards/lily58/keymaps/bcat/readme.md
@@ -37,6 +37,6 @@ back/forward navigation keys.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/Q3PGsiK.png)
+![Adjust layer layout](https://i.imgur.com/XC2eR2M.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7))
diff --git a/keyboards/lily58/keymaps/bcat/rules.mk b/keyboards/lily58/keymaps/bcat/rules.mk
index c87b447c1e..62d1007a54 100644
--- a/keyboards/lily58/keymaps/bcat/rules.mk
+++ b/keyboards/lily58/keymaps/bcat/rules.mk
@@ -1 +1,3 @@
+BCAT_OLED_PET = luna
+
BOOTLOADER = atmel-dfu # Elite-C
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h b/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h
new file mode 100644
index 0000000000..09248850f2
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h
@@ -0,0 +1,49 @@
+/*
+ This is the c configuration file for the keymap
+
+ Copyright 2012 Jun Wako <wakojun@gmail.com>
+ Copyright 2015 Jack Humbert
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #pragma once
+
+ //#define USE_MATRIX_I2C
+
+ /* Select hand configuration */
+
+ // #define MASTER_LEFT
+ #define MASTER_LEFT
+ // #define EE_HANDS
+
+ #define TAPPING_FORCE_HOLD
+ #define TAPPING_TERM 200
+
+ #undef RGBLED_NUM
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+ #define RGBLED_NUM 27
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c b/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
new file mode 100644
index 0000000000..f93e9050c4
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
@@ -0,0 +1,334 @@
+/* Copyright 2021 (@dbrglc)
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |CANC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_DEL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTRL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, KC_BSPC, RAISE, LOWER
+),
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | _ | + | { | } | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+[_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+[_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master())
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ return rotation;
+}
+
+// When you add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state(void);
+const char *read_logo(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+// const char *read_mode_icon(bool swap);
+// const char *read_host_led_state(void);
+// void set_timelog(void);
+// const char *read_timelog(void);
+
+char wpm_str[16];
+
+// WPM-responsive animation stuff here
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 40 // below this wpm value your animation will idle
+
+// #define PREP_FRAMES 1 // uncomment if >1
+
+#define TAP_FRAMES 2
+#define TAP_SPEED 60 // above this wpm value typing animation to triggere
+
+#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+#define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, may need fixing
+#define ANIM_SIZE 640 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+uint16_t anim_timer = 0;
+uint16_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+uint8_t current_tap_frame = 0;
+
+//
+// Render right OLED display animation
+//
+static void render_anim(void) {
+
+ // Idle animation
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
+ 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+ };
+
+ // Prep animation
+ static const char PROGMEM prep[][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ // Typing animation
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
+ 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
+ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ //assumes 1 frame prep stage
+ void animation_phase(void) {
+ if(get_current_wpm() <=IDLE_SPEED){
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_clear();
+ oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
+ }
+ if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
+ oled_clear();
+ // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ }
+ if(get_current_wpm() >=TAP_SPEED){
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_clear();
+ oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
+ }
+ }
+ if(get_current_wpm() != 0) {
+ if(timer_elapsed(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read();
+ animation_phase();
+ }
+ anim_sleep = timer_read();
+ } else {
+ if(timer_elapsed(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read();
+ animation_phase();
+ }
+ if(timer_elapsed(anim_sleep) > SLEEP_TIMER) {
+// oled_off();
+ }
+ }
+}
+
+void oled_task_user(void) {
+ if (is_keyboard_master()) {
+ oled_set_cursor(0,1);
+ uint8_t n = get_current_wpm();
+ char wpm_counter[4];
+ wpm_counter[3] = '\0';
+ wpm_counter[2] = '0' + n % 10;
+ wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
+ wpm_counter[0] = n / 10 ? '0' + n / 10 : ' ';
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(wpm_counter, false);
+ oled_set_cursor(0,3); {
+ oled_write_ln(read_layer_state(), false);
+ }
+ } else {
+ render_anim();
+ }
+}
+#endif // OLED_DRIVER_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef OLED_ENABLE
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md b/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md
new file mode 100644
index 0000000000..2bcd7e87f8
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md
@@ -0,0 +1,23 @@
+# Responsive Bongo Cat layout for Lily58 :drum: :smile_cat:
+
+This split ergo layout follows the layout of another ergo split keyboard with the following changes:
+
+* I put the space on the Left thumb and the Enter on the right thumb :thumbsup:
+
+* Near the thumbs there are all my most used keys as a Mac User :computer:
+
+* I edit the Bongo Cat to be responsive to the Word Per Minutes that you are writing :scream_cat:
+
+## Layers
+
+### Default layer
+
+![Default layer layout](https://i.imgur.com/padJXr2.png)
+
+### Raise layer
+
+![Raise layer layout](https://i.imgur.com/iqQDUXD.png)
+
+### Lower layer
+
+![Lower layer layout](https://i.imgur.com/EzNU2hq.png) \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk b/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk
new file mode 100644
index 0000000000..787d72e3f1
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk
@@ -0,0 +1,11 @@
+WPM_ENABLE = yes
+LTO_ENABLE = yes
+
+ # If you want to change the display of OLED, you need to change here
+ SRC += ./lib/rgb_state_reader.c \
+ ./lib/layer_state_reader.c \
+ ./lib/logo_reader.c \
+ ./lib/keylogger.c \
+ # ./lib/mode_icon_reader.c \
+ # ./lib/host_led_state_reader.c \
+ # ./lib/timelogger.c \ \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/default/keymap.c b/keyboards/lily58/keymaps/default/keymap.c
index 5010c66978..185b8ac692 100644
--- a/keyboards/lily58/keymaps/default/keymap.c
+++ b/keyboards/lily58/keymaps/default/keymap.c
@@ -24,12 +24,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------' '------''--------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, \
- KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_ENT, MO(_RAISE), KC_BSPC, KC_RGUI \
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_ENT, MO(_RAISE), KC_BSPC, KC_RGUI
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
@@ -45,12 +45,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
-[_LOWER] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,\
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, \
- _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, _______, _______, _______, _______, _______, _______, _______\
+[_LOWER] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
/* RAISE
* ,-----------------------------------------. ,-----------------------------------------.
@@ -67,12 +67,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------' '------''--------------------'
*/
-[_RAISE] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, \
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+[_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
@@ -88,12 +88,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
- [_ADJUST] = LAYOUT( \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/lily58/keymaps/default/rules.mk b/keyboards/lily58/keymaps/default/rules.mk
index 021d013e03..063ca44024 100644
--- a/keyboards/lily58/keymaps/default/rules.mk
+++ b/keyboards/lily58/keymaps/default/rules.mk
@@ -1,22 +1,15 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
OLED_ENABLE= yes # OLED display
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
# If you want to change the display of OLED, you need to change here
SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
diff --git a/keyboards/lily58/keymaps/druotoni/boot.c b/keyboards/lily58/keymaps/druotoni/boot.c
new file mode 100644
index 0000000000..ba46f8e361
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/boot.c
@@ -0,0 +1,309 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "boot.h"
+#include "fast_random.h"
+#include "draw_helper.h"
+#include "gui_state.h"
+
+// boot
+#define ANIM_BOOT_FRAME_DURATION 8
+uint16_t anim_boot_timer = 0;
+uint8_t anim_boot_current_frame = 0;
+
+#define NAVI_DURATION 55
+
+// terminal stuff
+#define TERMINAL_DURATION 25
+#define TERMINAL_LINE_NUMBER 19
+#define TERMINAL_LINE_MAX 14
+
+#define LILY_DURATION 50
+
+// halt
+#define ANIM_HALT_FRAME_DURATION 55
+uint16_t anim_halt_timer = 0;
+
+void reset_boot(void) {
+ // frame zero
+ anim_boot_current_frame = 0;
+}
+
+static void draw_lily_key(uint8_t x, uint8_t y, uint8_t *key_number, unsigned long key_state, uint8_t color) {
+ uint8_t v = *key_number;
+ unsigned long mask = 1;
+ mask = mask << v;
+
+ // ligth the key according to the mask
+ if (((key_state & mask) == mask)) {
+ color = !color;
+ }
+
+ draw_rectangle_fill(x, y, 3, 3, color);
+ *key_number = v + 1;
+}
+
+static void draw_lily_key_row(uint8_t x, uint8_t y, int w, uint8_t *key_number, unsigned long key_state, uint8_t color) {
+ // row of rectangle
+ for (uint8_t i = 0; i < w; i++) {
+ draw_lily_key(x + (i * 4), y, key_number, key_state, color);
+ }
+}
+
+static void draw_lily_render(unsigned long key_state) {
+ // different orientation base on side
+#if IS_LEFT
+
+ uint8_t x = 0;
+ uint8_t y = 56;
+ uint8_t x_ref = 10 + x;
+ uint8_t y_ref = 2 + y;
+ uint8_t i_key_number = 0;
+
+ for (uint8_t i = 0; i < 4; i++) {
+ draw_lily_key_row(x_ref, y_ref + (i * 4), 4, &i_key_number, key_state, true);
+ draw_lily_key_row(x_ref - 8, y_ref + 2 + (i * 4), 2, &i_key_number, key_state, true);
+ }
+
+ draw_lily_key_row(x_ref + 2, y_ref + (4 * 4), 3, &i_key_number, key_state, true);
+
+ uint8_t x_side = x_ref + (4 * 4);
+
+ draw_lily_key(x_side, y_ref + (2 * 4) + 2, &i_key_number, key_state, true);
+ draw_lily_key(x_side, y_ref + (4 * 4), &i_key_number, key_state, true);
+
+ // screen
+ draw_rectangle(x_side, y_ref, 4, 8, true);
+
+ // frame
+ drawline_hr(x + 1, y + 2, 8, true);
+ oled_write_pixel(x + 8, y + 1, true);
+ drawline_hr(x + 8, y, 23, true);
+
+ drawline_hr(x + 1, y + 20, 10, true);
+ oled_write_pixel(x + 10, y + 21, true);
+ drawline_hr(x + 10, y + 22, 16, true);
+
+ drawline_vb(x, y + 3, 17, true);
+ drawline_vb(x + 31, y + 1, 20, true);
+ oled_write_pixel(x + 30, y + 21, true);
+ oled_write_pixel(x + 29, y + 22, true);
+ oled_write_pixel(x + 28, y + 23, true);
+ oled_write_pixel(x + 27, y + 24, true);
+ oled_write_pixel(x + 26, y + 23, true);
+#endif
+
+#if IS_RIGHT
+ uint8_t i_key_number = 0;
+
+ for (uint8_t i = 0; i < 4; i++) {
+ draw_lily_key_row(7, 58 + (i * 4), 4, &i_key_number, key_state, true);
+ draw_lily_key_row(23, 60 + (i * 4), 2, &i_key_number, key_state, true);
+ }
+
+ draw_lily_key_row(9, 74, 3, &i_key_number, key_state, true);
+
+ draw_lily_key(3, 68, &i_key_number, key_state, true);
+ draw_lily_key(3, 74, &i_key_number, key_state, true);
+
+ // screen
+ draw_rectangle(2, 58, 4, 8, true);
+
+ // frame
+ drawline_hr(23, 58, 8, true);
+ oled_write_pixel(23, 57, true);
+ drawline_hr(1, 56, 23, true);
+
+ drawline_hr(21, 76, 10, true);
+ oled_write_pixel(21, 77, true);
+ drawline_hr(6, 78, 16, true);
+
+ drawline_vb(31, 59, 17, true);
+ drawline_vb(0, 57, 20, true);
+ oled_write_pixel(1, 77, true);
+ oled_write_pixel(2, 78, true);
+ oled_write_pixel(3, 79, true);
+ oled_write_pixel(4, 80, true);
+ oled_write_pixel(5, 79, true);
+#endif
+}
+
+static void draw_lily(uint8_t f) {
+ // frame for the events
+ uint8_t tres_stroke = 10;
+ uint8_t tres_boom = 30;
+ uint8_t y_start = 56;
+
+ if (f == 0 || f == tres_stroke || f == tres_boom) {
+ // clean screen
+ oled_clear();
+ }
+
+ // simple lily58 with all the keys
+ if (f < tres_stroke) {
+ draw_lily_render(0);
+ }
+
+ // increase number of random keys pressed
+ if (f >= tres_stroke && f < tres_boom) {
+ int inter_f = interpo_pourcent(tres_stroke, tres_boom, f);
+
+ unsigned long key_state = fastrand_long();
+ for (int r = 100 - inter_f; r > 0; r = r - 10) {
+ key_state &= fastrand_long();
+ }
+ draw_lily_render(key_state);
+ }
+
+ // statir explosion
+ if (f >= tres_boom) {
+ oled_clear();
+ uint8_t density = (f - tres_boom);
+ if (density > 4) density = 4;
+ draw_static(0, y_start - 8, 32, 32, true, density);
+ }
+}
+
+static void draw_startup_navi(uint8_t f) {
+ // text
+ oled_write_cursor(0, 5, "HELL0", false);
+ oled_write_cursor(0, 7, "NAVI.", false);
+
+ // prompt
+ if ((f % 8) > 4) {
+ oled_write_cursor(0, 12, "> ", false);
+ } else {
+ oled_write_cursor(0, 12, ">_", false);
+ }
+
+ // frame threshold
+ uint8_t tres_shell = 15;
+ uint8_t tres_load = 35;
+
+ // rand text to init display
+ if (f > tres_shell) {
+ int inter_f = interpo_pourcent(tres_shell, tres_load, f);
+
+ draw_random_char(1, 12, 'i', 60 + inter_f, 0);
+ draw_random_char(2, 12, 'n', 20 + inter_f, 0);
+ draw_random_char(3, 12, 'i', inter_f, 0);
+ draw_random_char(4, 12, 't', 20 + inter_f, 0);
+ }
+
+ // loading propress bar
+ if (f > tres_load) {
+ int inter_f = interpo_pourcent(tres_load, 50, f);
+
+ // ease
+ float fv = inter_f / 100.00;
+ fv = fv * fv * fv * fv;
+ inter_f = fv * 100;
+
+ draw_rectangle(0, (15 * 8), 32, 8, 1);
+ draw_progress(0 + 3, (15 * 8) + 3, 26, 2, inter_f, 0, 1);
+ }
+}
+
+// text dispayed on terminal
+static char *boot_ref[TERMINAL_LINE_NUMBER] = {"LT:", "RT:", "M :", " ", "cnx:", "A0:", "B0:", " ", "0x40", "0x60", "0x85", "0x0F", " ", "> run", "x ", "y ", " 100%", " ", "> key"};
+
+// prompt style for char in the font
+char scan_font[5] = {'>', 1, 1, 1, 1};
+
+static char *get_terminal_line(uint8_t i) {
+ // display text
+ if (i < TERMINAL_LINE_NUMBER) {
+ return boot_ref[i];
+ }
+
+ // blank line every 3 lines
+ if (i % 3 == 0) {
+ return " ";
+ }
+
+ // display consecutive chars in the font
+ i = (i - TERMINAL_LINE_NUMBER) * 4;
+
+ scan_font[1] = i;
+ scan_font[2] = i + 1;
+ scan_font[3] = i + 2;
+ scan_font[4] = i + 3;
+
+ return scan_font;
+}
+
+static void draw_startup_terminal(uint8_t f) {
+ // ease for printing on screen
+ f = f * 2;
+ f += (f / 5);
+
+ // scroll text
+ uint8_t i_start = 0;
+ uint8_t i_nb_char = f;
+
+ if (f > TERMINAL_LINE_MAX) {
+ i_start = f - TERMINAL_LINE_MAX;
+ i_nb_char = TERMINAL_LINE_MAX;
+ }
+
+ // display lines
+ oled_clear();
+ for (uint8_t i = 0; i < i_nb_char; i++) {
+ char *s = get_terminal_line(i + i_start);
+ oled_write_cursor(0, i, s, false);
+ }
+}
+
+bool render_boot(void) {
+ // end of the boot sequence
+ if (anim_boot_current_frame >= NAVI_DURATION + TERMINAL_DURATION + LILY_DURATION) {
+ anim_boot_current_frame = 0;
+ oled_clear();
+ return true;
+ }
+
+ if (timer_elapsed(anim_boot_timer) > ANIM_BOOT_FRAME_DURATION) {
+ anim_boot_timer = timer_read();
+ if (anim_boot_current_frame < NAVI_DURATION) {
+ // 55 frames
+ draw_startup_navi(anim_boot_current_frame);
+ } else {
+ if (anim_boot_current_frame >= NAVI_DURATION && anim_boot_current_frame < NAVI_DURATION + TERMINAL_DURATION) {
+ // 25
+ draw_startup_terminal(anim_boot_current_frame - NAVI_DURATION);
+ } else {
+ if (anim_boot_current_frame >= NAVI_DURATION + TERMINAL_DURATION) {
+ // 25
+ draw_lily(anim_boot_current_frame - NAVI_DURATION - TERMINAL_DURATION);
+ }
+ }
+ }
+
+ anim_boot_current_frame++;
+ }
+ return false;
+}
+
+void render_halt(void) {
+ if (timer_elapsed(anim_halt_timer) > ANIM_HALT_FRAME_DURATION) {
+ anim_halt_timer = timer_read();
+
+ // comb glitch for all the screen
+ draw_glitch_comb(0, 0, 32, 128, 3, true);
+
+ // random moving blocks of pixels
+ for (uint8_t i = 0; i < 6; i++) {
+ int r = fastrand();
+ int rr = fastrand();
+ uint8_t x = 4 + r % 28;
+ uint8_t y = rr % 128;
+
+ uint8_t w = 7 + r % 20;
+ uint8_t h = 3 + rr % 10;
+ int s = (fastrand() % 20) - 10;
+ move_block(x, y, w, h, s);
+ }
+ }
+}
diff --git a/keyboards/lily58/keymaps/druotoni/boot.h b/keyboards/lily58/keymaps/druotoni/boot.h
new file mode 100644
index 0000000000..7897e17923
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/boot.h
@@ -0,0 +1,9 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+bool render_boot(void);
+void render_halt(void);
+
+void reset_boot(void); \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/druotoni/burst.c b/keyboards/lily58/keymaps/druotoni/burst.c
new file mode 100644
index 0000000000..6dd6579e73
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/burst.c
@@ -0,0 +1,252 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// Copyright 2020 Richard Sutherland (rich@brickbots.com)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "gui_state.h"
+#include "fast_random.h"
+#include "burst.h"
+#include "draw_helper.h"
+
+// burst stuff
+static int current_burst = 0;
+static uint16_t burst_timer = 0;
+
+// WPM stuff
+static int current_wpm = 0;
+static uint16_t wpm_timer = 0;
+
+// This smoothing is 40 keystrokes
+static const float wpm_smoothing = WPM_SMOOTHING;
+
+// store values
+uint8_t burst_scope[SIZE_SCOPE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+uint8_t wpm_scope[SIZE_SCOPE] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+// current max wpm
+int max_wpm = MAX_WPM_INIT;
+
+// scope animation stuff
+#define ANIM_SCOPE_FRAME_DURATION 40
+#define ANIM_SLEEP_SCOPE_FRAME_NUMBER 10
+
+uint16_t anim_scope_timer = 0;
+uint16_t anim_scope_idle_timer = 0;
+uint16_t anim_sleep_scope_timer = 0;
+
+uint8_t anim_sleep_scope_duration[ANIM_SLEEP_SCOPE_FRAME_NUMBER] = {30, 30, 30, 30, 20, 20, 30, 30, 32, 35};
+uint8_t current_sleep_scope_frame = 0;
+uint8_t sleep_scope_frame_destination = ANIM_SLEEP_SCOPE_FRAME_NUMBER - 1;
+
+// glitch animation
+int current_glitch_scope_time = 150;
+uint32_t glitch_scope_timer = 0;
+uint8_t current_glitch_scope_index = 0;
+
+static void update_wpm(void) {
+ if (wpm_timer > 0) {
+ current_wpm += ((60000 / timer_elapsed(wpm_timer) / WPM_ESTIMATED_WORD_SIZE) - current_wpm) * wpm_smoothing;
+ if (current_wpm > LIMIT_MAX_WPM) {
+ current_wpm = LIMIT_MAX_WPM;
+ }
+ }
+ wpm_timer = timer_read();
+}
+
+void update_scope(void) {
+ update_wpm();
+
+ uint16_t temps_ecoule = timer_elapsed(burst_timer);
+
+ if (temps_ecoule > BURST_FENETRE) {
+ // 1er frappe après longtemps
+ current_burst = 40;
+ } else {
+ int time_pourcent = ((100 * (temps_ecoule)) / (BURST_FENETRE));
+ current_burst = 100 - time_pourcent;
+ }
+ burst_timer = timer_read();
+}
+
+static void update_scope_array(void) {
+ // shift array
+ for (uint8_t i = 0; i < SIZE_SCOPE - 1; i++) {
+ burst_scope[i] = burst_scope[i + 1];
+ wpm_scope[i] = wpm_scope[i + 1];
+ }
+
+ int burst = current_burst;
+ int wpm = current_wpm;
+
+ // compute max wpm
+ max_wpm = (wpm == 0) ? MAX_WPM_INIT : ((wpm > max_wpm) ? wpm : max_wpm);
+
+ // current wpm ratio VS max
+ wpm = (100 * wpm) / max_wpm;
+ if (wpm > 100) wpm = 100;
+
+ // update last slot of the arrays
+ burst_scope[SIZE_SCOPE - 1] = burst;
+ wpm_scope[SIZE_SCOPE - 1] = wpm;
+
+ // apply decay to burst chart
+ uint8_t pBaisse = 0;
+ for (uint8_t i = 0; i < SIZE_SCOPE - (SIZE_SCOPE / 4); i++) {
+ pBaisse = 2 + ((SIZE_SCOPE - 1 - i)) / 2;
+ burst_scope[i] -= ((burst_scope[i] * pBaisse) / 100);
+ }
+}
+
+static void RenderScopeBlack(void) {
+ // clean central zone
+ draw_rectangle_fill(3, 82, 28, 120, false);
+
+ // redraw some parts of the frame
+ drawline_hr(1, SCOPE_Y_BOTTOM, 32, 1);
+ drawline_vt(0, SCOPE_Y_BOTTOM - 1, 42, 1);
+ drawline_vt(31, SCOPE_Y_BOTTOM - 1, 47, 1);
+}
+
+static void render_scope_white(void) {
+ static const char PROGMEM raw_logo[] = {
+ 240, 8, 4, 226, 241, 248, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 127, 128, 128, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 128, 128, 127,
+ };
+ oled_write_raw_P_cursor(0, 10, raw_logo, sizeof(raw_logo));
+}
+
+static void render_scope_chart(void) {
+ // clean the frame
+ render_scope_white();
+
+ uint8_t y_offset = SCOPE_Y_BOTTOM - 3;
+
+ for (uint8_t i = 0; i < SIZE_SCOPE; i++) {
+ // offset
+ uint8_t x = 3 + i;
+
+ // new black vertical line for burst
+ uint8_t iCurrentBurst = burst_scope[i];
+ drawline_vt(x, y_offset, (iCurrentBurst * 4) / 10, 0);
+
+ // new black point for wpm, white if it's on the burst line
+ uint8_t iCurrentWpm = wpm_scope[i];
+ uint8_t yWpm = y_offset - ((iCurrentWpm * 4) / 10);
+ oled_write_pixel(x, yWpm, !(iCurrentWpm > iCurrentBurst));
+ }
+}
+
+void reset_scope(void) {
+ // scope need wakeup
+ anim_sleep_scope_timer = timer_read();
+ current_sleep_scope_frame = ANIM_SLEEP_SCOPE_FRAME_NUMBER - 1;
+
+ sleep_scope_frame_destination = 0;
+}
+
+static void render_glitch_square(void) {
+ if (timer_elapsed(anim_scope_idle_timer) > 60) {
+ anim_scope_idle_timer = timer_read();
+ RenderScopeBlack();
+
+ uint8_t color = 0;
+ uint8_t size = 0;
+ for (uint8_t i = 0; i < 4; i++) {
+ size = 4 + (fastrand() % 6);
+
+ draw_gradient(3 + (fastrand() % 19), 85 + (fastrand() % 20), size, size, 255, 255, 4);
+
+ size = (fastrand() % 6);
+ color = 100 + (fastrand() % 100);
+ draw_gradient(3 + (fastrand() % 19), 100 + (fastrand() % 20), size, size, color, color, 4);
+ }
+ }
+}
+
+void render_scope_idle(void) {
+ uint8_t glitch_prob = get_glitch_probability();
+ get_glitch_index(&glitch_scope_timer, &current_glitch_scope_time, &current_glitch_scope_index, 150, 350, glitch_prob, 2);
+
+ switch (current_glitch_scope_index) {
+ case 0:
+ RenderScopeBlack();
+ return;
+ case 1:
+ render_glitch_square();
+ return;
+ }
+}
+
+static void RenderScopeSleep(void) {
+ if (current_sleep_scope_frame == sleep_scope_frame_destination) {
+ // animation finished
+ render_scope_idle();
+ return;
+ }
+
+ if (timer_elapsed(anim_sleep_scope_timer) > anim_sleep_scope_duration[current_sleep_scope_frame]) {
+ anim_sleep_scope_timer = timer_read();
+
+ // clean scope
+ RenderScopeBlack();
+
+ // render animation
+ render_tv_animation(current_sleep_scope_frame, 3, 80, 25, 48);
+
+ // update frame number
+ if (sleep_scope_frame_destination > current_sleep_scope_frame) {
+ current_sleep_scope_frame++;
+ } else {
+ current_sleep_scope_frame--;
+ }
+ }
+}
+
+void render_scope(gui_state_t t) {
+ if (timer_elapsed(anim_scope_timer) > ANIM_SCOPE_FRAME_DURATION) {
+ anim_scope_timer = timer_read();
+
+ // shift arrays
+ update_scope_array();
+
+ // oled_set_cursor(0, 10);
+
+ if (t == _WAKINGUP) {
+ RenderScopeSleep();
+ return;
+ }
+
+ if (t == _IDLE) {
+ sleep_scope_frame_destination = ANIM_SLEEP_SCOPE_FRAME_NUMBER - 1;
+ RenderScopeSleep();
+ return;
+ }
+
+ render_scope_chart();
+ }
+}
+
+static void decay_burst(void) {
+ uint16_t temps_ecoule = timer_elapsed(burst_timer);
+
+ int poucentageEcoule = 100;
+
+ if (temps_ecoule <= BURST_FENETRE * 4) {
+ poucentageEcoule = ((100 * (temps_ecoule)) / (BURST_FENETRE * 4));
+ }
+
+ current_burst = current_burst - poucentageEcoule;
+ if (current_burst <= 0) current_burst = 0;
+}
+
+static void decay_wpm(void) {
+ if (timer_elapsed(wpm_timer) > 1000) {
+ wpm_timer = timer_read();
+ current_wpm += (-current_wpm) * wpm_smoothing;
+ }
+}
+
+void decay_scope(void) {
+ decay_burst();
+ decay_wpm();
+}
diff --git a/keyboards/lily58/keymaps/druotoni/burst.h b/keyboards/lily58/keymaps/druotoni/burst.h
new file mode 100644
index 0000000000..8bc8153508
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/burst.h
@@ -0,0 +1,24 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// Copyright 2020 Richard Sutherland (rich@brickbots.com)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// burst
+#define MAX_WPM_INIT 40
+#define BURST_FENETRE 500
+
+// wpm
+#define LIMIT_MAX_WPM 150
+#define WPM_ESTIMATED_WORD_SIZE 5
+#define WPM_SMOOTHING 0.0487
+
+// scope
+#define SIZE_SCOPE 26
+#define SCOPE_Y_BOTTOM 127
+
+void update_scope(void);
+void render_scope(gui_state_t t);
+
+void reset_scope(void);
+void decay_scope(void);
diff --git a/keyboards/lily58/keymaps/druotoni/config.h b/keyboards/lily58/keymaps/druotoni/config.h
new file mode 100644
index 0000000000..37124fcaaf
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/config.h
@@ -0,0 +1,55 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// Copyright 2012 Jun Wako <wakojun@gmail.com>
+// Copyright 2015 Jack Humbert
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define MASTER_LEFT
+#define OLED_DRIVER_ENABLE
+
+// tapping toggle for my layers
+#define TAPPING_TOGGLE 2
+
+// choose IS_LEFT or IS_RIGHT for compilation and flash firmware
+#define IS_LEFT 1
+//#define IS_RIGHT 1
+
+// logo glitch
+#define WITH_GLITCH
+// boot sequence
+#define WITH_BOOT
+
+// custom transport for displaying on both side
+#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_A
+
+// custom font
+#ifdef OLED_FONT_H
+# undef OLED_FONT_H
+#endif
+#define OLED_FONT_H "navi_font.c"
+#undef OLED_FONT_END
+#define OLED_FONT_END 125
+
+// more space
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define NO_ACTION_ONESHOT
+#define DISABLE_LEADER
+
+// ???
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+// small layer state
+#define LAYER_STATE_8BIT
+
+// no debug or trace
+#ifndef NO_DEBUG
+# define NO_DEBUG
+#endif
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+# define NO_PRINT
+#endif
+
+
diff --git a/keyboards/lily58/keymaps/druotoni/draw_helper.c b/keyboards/lily58/keymaps/druotoni/draw_helper.c
new file mode 100644
index 0000000000..c6761d725f
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/draw_helper.c
@@ -0,0 +1,768 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// Copyright 2021 ugfx
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "draw_helper.h"
+#include "fast_random.h"
+
+void drawline(uint8_t x, uint8_t y, uint8_t width, bool bHorizontal, bool bPositiveDirection, bool color) {
+ if (width <= 0) return;
+ uint8_t yPlus = 0;
+ uint8_t yMois = 0;
+ uint8_t nbtour = 0;
+
+ if (!bPositiveDirection) {
+ if (bHorizontal) {
+ x -= width;
+ } else {
+ y -= width;
+ }
+ }
+
+ yMois = (width / 2) - 1 + (width % 2);
+
+ yPlus = (width / 2);
+ nbtour = (width / 4) + 1;
+
+ bool bWhite = color;
+
+ if (bHorizontal) {
+ for (uint8_t i = 0; i < nbtour; i++) {
+ oled_write_pixel(x + yPlus + i, y, bWhite);
+ oled_write_pixel(x + yMois - i, y, bWhite);
+
+ oled_write_pixel(x + i, y, bWhite);
+ oled_write_pixel(x + width - 1 - i, y, bWhite);
+ }
+ } else {
+ for (uint8_t i = 0; i < nbtour; i++) {
+ oled_write_pixel(x, y + yPlus + i, bWhite);
+ oled_write_pixel(x, y + yMois - i, bWhite);
+
+ oled_write_pixel(x, y + i, bWhite);
+
+ oled_write_pixel(x, y + width - 1 - i, bWhite);
+ }
+ }
+}
+
+void drawline_vb(uint8_t x, uint8_t y, uint8_t width, bool color) { drawline(x, y, width, false, true, color); }
+
+void drawline_vt(uint8_t x, uint8_t y, uint8_t width, bool color) { drawline(x, y, width, false, false, color); }
+
+void drawline_hr(uint8_t x, uint8_t y, uint8_t width, bool color) { drawline(x, y, width, true, true, color); }
+
+void drawline_hl(uint8_t x, uint8_t y, uint8_t width, bool color) { drawline(x, y, width, true, false, color); }
+
+void draw_rectangle(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color) {
+ drawline_hr(x, y, width, color);
+ drawline_hr(x, y + heigth - 1, width, color);
+ drawline_vb(x, y, heigth, color);
+ drawline_vb(x + width - 1, y, heigth, color);
+}
+
+void draw_rectangle_fill(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color) {
+ for (uint8_t i = 0; i < heigth; i++) {
+ drawline_hr(x, y + i, width, color);
+ }
+}
+
+void drawline_hr_heigth(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color) {
+ for (int i = 0; i < heigth; i++) {
+ drawline_hr(x, y - i, width, color);
+ drawline_hr(x, y + i, width, color);
+ }
+}
+
+void drawline_point_hr(short x, short y, short x1, bool color) {
+ if (y < 0 || y > 127) return;
+
+ if (x1 < x) {
+ short iTemp = x;
+ x = x1;
+ x1 = iTemp;
+ }
+
+ if (x1 > 31) x1 = 31;
+ if (x < 0) x = 0;
+ if (x > 31) x = 31;
+
+ drawline(x, y, x1 - x, true, true, color);
+}
+
+void flip_flap_x(short px, short py, uint8_t val, bool color) {
+ oled_write_pixel(px + val, py, color);
+ oled_write_pixel(px - val, py, color);
+}
+
+void draw_circle(uint8_t x, uint8_t y, uint8_t radius, bool color) {
+ short a, b, P;
+
+ // Calculate intermediates
+ a = 1;
+ b = radius;
+ P = 4 - radius;
+
+ short py, px;
+
+ // Away we go using Bresenham's circle algorithm
+ // Optimized to prevent double drawing
+ px = x;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ px = x;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+
+ flip_flap_x(x, y, b, color);
+
+ do {
+ flip_flap_x(x, y + b, a, color);
+ flip_flap_x(x, y - b, a, color);
+ flip_flap_x(x, y + a, b, color);
+ flip_flap_x(x, y - a, b, color);
+
+ if (P < 0)
+ P += 3 + 2 * a++;
+ else
+ P += 5 + 2 * (a++ - b--);
+ } while (a < b);
+
+ flip_flap_x(x, y + b, a, color);
+ flip_flap_x(x, y - b, a, color);
+}
+
+void draw_ellipse(uint8_t x, uint8_t y, uint8_t a, uint8_t b, bool color) {
+ int dx, dy;
+ int a2, b2;
+ int err, e2;
+
+ // short py, px;
+ // Calculate intermediates
+ dx = 0;
+ dy = b;
+ a2 = a * a;
+ b2 = b * b;
+ err = b2 - (2 * b - 1) * a2;
+
+ // Away we go using Bresenham's ellipse algorithm
+ do {
+ flip_flap_x(x, y + dy, dx, color);
+ flip_flap_x(x, y - dy, dx, color);
+
+ e2 = 2 * err;
+ if (e2 < (2 * dx + 1) * b2) {
+ dx++;
+ err += (2 * dx + 1) * b2;
+ }
+ if (e2 > -(2 * dy - 1) * a2) {
+ dy--;
+ err -= (2 * dy - 1) * a2;
+ }
+ } while (dy >= 0);
+}
+
+void draw_ellipse_fill(uint8_t x, uint8_t y, uint8_t a, uint8_t b, bool color) { return; }
+// void draw_ellipse_fill(uint8_t x, uint8_t y, uint8_t a, uint8_t b, uint8_t color) {
+// int dx, dy;
+// int a2, b2;
+// int err, e2;
+
+// // Calculate intermediates
+// dx = 0;
+// dy = b;
+// a2 = a * a;
+// b2 = b * b;
+// err = b2 - (2 * b - 1) * a2;
+
+// short py, px, px1;
+
+// // Away we go using Bresenham's ellipse algorithm
+// // This is optimized to prevent overdrawing by drawing a line only when a y is about to change value
+// do {
+// e2 = 2 * err;
+// if (e2 < (2 * dx + 1) * b2) {
+// dx++;
+// err += (2 * dx + 1) * b2;
+// }
+// if (e2 > -(2 * dy - 1) * a2) {
+// py = y + dy;
+// px = x - dx;
+// px1 = x + dx;
+// drawline_point_hr(px, py, px1, color);
+// if (y) {
+// py = y - dy;
+// px = x - dx;
+// px1 = x + dx;
+// drawline_point_hr(px, py, px1, color);
+// }
+// dy--;
+// err -= (2 * dy - 1) * a2;
+// }
+// } while (dy >= 0);
+// }
+
+bool test_limit(short x, short y) { return !(y < 0 || y > 127 || x < 0 || x > 31); }
+
+void flip_flap_y_point(short px, short py, short px1, uint8_t val, bool color) {
+ // firmware size optimisation : one fonction for 2 lines of code
+ drawline_point_hr(px, py + val, px1, color);
+ drawline_point_hr(px, py - val, px1, color);
+}
+
+void draw_fill_circle(short x, short y, uint8_t radius, bool color) {
+ short a, b, P;
+
+ // Calculate intermediates
+ a = 1;
+ b = radius;
+ P = 4 - radius;
+
+ // Away we go using Bresenham's circle algorithm
+ // This is optimized to prevent overdrawing by drawing a line only when a variable is about to change value
+ short py, px, px1;
+
+ py = y;
+ px = x - b;
+ px1 = x + b;
+ drawline_point_hr(px, py, px1, color);
+
+ py = y + b;
+ px = x;
+ if (test_limit(px, py)) oled_write_pixel(px, py, color);
+ py = y - b;
+ px = x;
+ if (test_limit(px, py)) oled_write_pixel(px, py, color);
+ do {
+ flip_flap_y_point(x - b, y, x + b, a, color);
+
+ if (P < 0) {
+ P += 3 + 2 * a++;
+ } else {
+ flip_flap_y_point(x - a, y, x + a, b, color);
+
+ P += 5 + 2 * (a++ - b--);
+ }
+ } while (a < b);
+
+ flip_flap_y_point(x - b, y, x + b, a, color);
+}
+
+bool apres_moitie(int a, int b) { return (a > b / 2); }
+bool arrive_moitie(int a, int b) { return (a > b / 2); }
+bool avant_moitie(int a, int b) { return (a <= b / 2 && !apres_moitie(a, b)); }
+
+void draw_arc_sector(uint8_t x, uint8_t y, uint8_t radius, unsigned char sectors, unsigned char half, bool color) {
+ short a, b, P;
+ short py, px;
+ // Calculate intermediates
+ a = 1; // x in many explanations
+ b = radius; // y in many explanations
+ P = 4 - radius;
+
+ if (half != 2) {
+ // Away we go using Bresenham's circle algorithm
+ // Optimized to prevent double drawing
+ if (sectors & 0x06) {
+ px = x;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+ } // Upper upper
+ if (sectors & 0x60) {
+ px = x;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ } // Lower lower
+ if (sectors & 0x81) {
+ px = x + b;
+ py = y;
+ oled_write_pixel(px, py, color);
+ } // Right right
+ if (sectors & 0x18) {
+ px = x - b;
+ py = y;
+ oled_write_pixel(px, py, color);
+ } // Left left
+ }
+
+ bool dessiner = false;
+
+ do {
+ if (half == 1 && arrive_moitie(a, b)) break;
+
+ if (half == 2 && avant_moitie(a, b)) {
+ dessiner = false;
+ } else {
+ dessiner = true;
+ }
+
+ if (dessiner) {
+ if (sectors & 0x01) {
+ px = x + b;
+ py = y - a;
+ oled_write_pixel(px, py, color);
+ } // Upper right right
+ if (sectors & 0x02) {
+ px = x + a;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+ } // Upper upper right
+ if (sectors & 0x04) {
+ px = x - a;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+ } // Upper upper left
+ if (sectors & 0x08) {
+ px = x - b;
+ py = y - a;
+ oled_write_pixel(px, py, color);
+ } // Upper left left
+ if (sectors & 0x10) {
+ px = x - b;
+ py = y + a;
+ oled_write_pixel(px, py, color);
+ } // Lower left left
+ if (sectors & 0x20) {
+ px = x - a;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ } // Lower lower left
+ if (sectors & 0x40) {
+ px = x + a;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ } // Lower lower right
+ if (sectors & 0x80) {
+ px = x + b;
+ py = y + a;
+ oled_write_pixel(px, py, color);
+ } // Lower right right
+ }
+
+ if (P < 0)
+ P += 3 + 2 * a++;
+ else
+ P += 5 + 2 * (a++ - b--);
+ } while (a < b);
+
+ if (half != 1) {
+ if (sectors & 0xC0) {
+ px = x + a;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ } // Lower right
+ if (sectors & 0x03) {
+ px = x + a;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+ } // Upper right
+ if (sectors & 0x30) {
+ px = x - a;
+ py = y + b;
+ oled_write_pixel(px, py, color);
+ } // Lower left
+ if (sectors & 0x0C) {
+ px = x - a;
+ py = y - b;
+ oled_write_pixel(px, py, color);
+ } // Upper left
+ }
+}
+
+void draw_static(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int color, uint8_t density) {
+ unsigned long rx = fastrand_long();
+ unsigned long ry = fastrand_long();
+ unsigned long maskx = 1;
+ unsigned long masky = 1;
+ unsigned long mask_base = 1;
+
+ // more 1 in the octet
+ for (int r = 0; r < density; r++) {
+ rx &= fastrand_long();
+ ry &= fastrand_long();
+ }
+
+ color = ((rx >> 1) % 2) == 0;
+
+ for (uint8_t i = 0; i < width; i++) {
+ for (uint8_t j = 0; j < heigth; j++) {
+ // new mask based on ij loop
+ maskx = (mask_base << i);
+ masky = (mask_base << j);
+
+ // logic AND with the masks
+ if (((rx & maskx) == maskx) && ((ry & masky) == masky)) {
+ oled_write_pixel(x + i, y + j, color);
+ }
+ }
+ }
+}
+
+void copy_pixel(int from, int shift, unsigned char mask) {
+ if (shift == 0) return;
+
+ // pixel cluster from
+ char c_from = get_oled_char(from);
+ char extract = c_from & mask;
+
+ // pixel cluster shift
+ char c_from_shift = get_oled_char(from + shift);
+ c_from_shift &= ~(mask);
+ c_from_shift |= extract;
+ oled_write_raw_byte(c_from_shift, from + shift);
+
+ // fill blank with black
+ c_from &= ~(mask);
+ oled_write_raw_byte(c_from, from);
+}
+
+void draw_glitch_comb(uint8_t x, uint8_t y, uint8_t width, uint16_t height, uint8_t iSize, bool odd) {
+ // work only on row
+ uint16_t y_start = (y / 8) * 32;
+ uint8_t nb_h = height / 8;
+
+ uint8_t w_max = width;
+ uint16_t index = y_start + x;
+
+ // shift pair even pixel
+ int mask_1 = 85;
+ int mask_2 = 170;
+
+ if (!odd) {
+ // shift odd pixel
+ mask_1 = 170;
+ mask_2 = 85;
+ }
+
+ // wobble
+ uint16_t pos = 0;
+ for (uint16_t j = 0; j < nb_h; j++) {
+ // next line
+ index = (y_start + x) + (j * 32);
+
+ for (uint16_t i = 0; i < w_max; i++) {
+ if (i + iSize < w_max) {
+ pos = index + i;
+ copy_pixel(pos + iSize, iSize * -1, mask_1);
+ }
+
+ if (w_max - 1 - i - iSize >= 0) {
+ pos = (index + w_max - 1) - i;
+ copy_pixel(pos - iSize, iSize, mask_2);
+ }
+ }
+ }
+}
+
+void draw_random_char(uint8_t column, uint8_t row, char final_char, int value, uint8_t style) {
+ if (value < 0) return;
+
+ char c = final_char;
+
+ if (value < 100) {
+ c = ((fastrand() % 15) + 1);
+ }
+
+ oled_set_cursor(column, row);
+ oled_write_char(c, false);
+}
+
+void get_glitch_index_new(uint16_t *glitch_timer, uint8_t *current_glitch_scope_time, uint8_t *glitch_index, uint8_t min_time, uint16_t max_time, uint8_t glitch_probobility, uint8_t glitch_frame_number) {
+ if (timer_elapsed(*glitch_timer) > *current_glitch_scope_time) {
+ // end of the last glitch period
+ *glitch_timer = timer_read();
+
+ // new random glich period
+ *current_glitch_scope_time = min_time + fastrand() % (max_time - min_time);
+
+ bool bGenerateGlitch = (fastrand() % 100) < glitch_probobility;
+ if (!bGenerateGlitch) {
+ // no glitch
+ *glitch_index = 0;
+ return;
+ }
+
+ // get a new glitch index
+ *glitch_index = fastrand() % glitch_frame_number;
+ }
+}
+
+uint8_t get_glitch_frame_index(uint8_t glitch_probobility, uint8_t glitch_frame_number) {
+ bool bGenerateGlitch = (fastrand() % 100) < glitch_probobility;
+ if (!bGenerateGlitch) {
+ // no glitch
+ return 0;
+ }
+
+ // get a new glitch index
+ return fastrand() % glitch_frame_number;
+}
+
+uint8_t get_glitch_duration(uint8_t min_time, uint16_t max_time) { return min_time + fastrand() % (max_time - min_time); }
+
+void get_glitch_index(uint32_t *glitch_timer, int *current_glitch_scope_time, uint8_t *glitch_index, uint8_t min_time, uint16_t max_time, uint8_t glitch_probobility, uint8_t glitch_frame_number) {
+ if (timer_elapsed32(*glitch_timer) > *current_glitch_scope_time) {
+ // end of the last glitch period
+ *glitch_timer = timer_read32();
+
+ // new random glich period
+ *current_glitch_scope_time = min_time + fastrand() % (max_time - min_time);
+
+ bool bGenerateGlitch = (fastrand() % 100) < glitch_probobility;
+ if (!bGenerateGlitch) {
+ // no glitch
+ *glitch_index = 0;
+ return;
+ }
+
+ // get a new glitch index
+ *glitch_index = fastrand() % glitch_frame_number;
+ }
+}
+
+void draw_progress(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int value, uint8_t style, bool color) {
+ if (value > 100) {
+ value = 100;
+ }
+ int lenght = (width * value) / 100;
+ for (uint8_t i = 0; i < lenght; i++) {
+ switch (style) {
+ case 0:
+ drawline_vb(x + i, y, heigth - 1, color);
+ break;
+
+ // case 1:
+ // drawline_vb(x + i, y + 1, heigth - 3, ((i % 3) < 2));
+ // break;
+ // case 2:
+ // // . . . . .
+ // drawline_vb(x + i, y + 3, 2, ((i % 2) == 0));
+ // break;
+ }
+ }
+}
+
+void oled_write_raw_P_cursor(uint8_t col, uint8_t line, const char *data, uint16_t size) {
+ // raw_P at cursor position
+ oled_set_cursor(col, line);
+ oled_write_raw_P(data, size);
+}
+
+void oled_write_cursor(uint8_t col, uint8_t line, const char *data, bool invert) {
+ // write at cursor position
+ oled_set_cursor(col, line);
+ oled_write(data, invert);
+}
+
+void draw_label(const char *data, uint8_t len, uint8_t row, int value) {
+ if (value < 0) return;
+ if (row >= 16 || row < 0) return;
+ oled_write_cursor(0, row, data, false);
+}
+
+void draw_box(const char *data, uint8_t len, uint8_t row, long value, uint8_t style) {
+ if (value < 0) return;
+ if (row >= 16 || row < 0) return;
+
+ oled_write_cursor(0, row, data, false);
+
+ uint8_t y = row * 8;
+
+ uint8_t x = 6 * len;
+ uint8_t w = 32 - x;
+
+ if (value < 0) value = 0;
+ if (value > 100) value = 100;
+ draw_progress(x, y, w, 7, value, style, 1);
+}
+
+char get_oled_char(uint16_t start_index) {
+ oled_buffer_reader_t reader;
+ reader = oled_read_raw(start_index);
+ return *reader.current_element;
+}
+
+static int get_index_first_block(uint8_t y) { return ((y / 8) * 32); }
+
+void move_block(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int shift) {
+ // clip
+ if (x >= 31) return;
+ if (y >= 127) return;
+
+ int max_screen = 32 - 1;
+ if ((width + x) > max_screen + 1) width = max_screen + 1 - x;
+
+ if (width <= 1) return;
+
+ if ((heigth + y) > 127) heigth = 127 - y;
+ if (heigth <= 1) return;
+
+ // [-32 & +32]
+ if (shift > max_screen) shift = max_screen;
+ if (shift < -1 * max_screen) shift = -1 * max_screen;
+
+ if ((width + x + shift) > max_screen) width = width - shift;
+
+ int pixelTop = 8 - (y % 8);
+ int pixelBottom = (y + heigth) % 8;
+
+ unsigned char cMastTop = ~((unsigned)255 >> (pixelTop));
+ unsigned char cMastBottom = ~((unsigned)255 << (pixelBottom));
+
+ int indexFirstBloc = get_index_first_block(y) + x;
+ int indexFirstBlocFull = get_index_first_block(y + pixelTop) + x;
+ int indexFirstBlocEnd = get_index_first_block(y + heigth) + x;
+
+ int nbBlockHeigth = (heigth - pixelTop - pixelBottom) / 8;
+
+ if (nbBlockHeigth < 0) {
+ // just single row
+ nbBlockHeigth = 0;
+ cMastBottom = 0;
+ }
+
+ if (shift < 0) {
+ for (uint16_t i = 0; i < width; i++) {
+ copy_pixel(indexFirstBloc + i, shift, cMastTop);
+ copy_pixel(indexFirstBlocEnd + i, shift, cMastBottom);
+
+ for (uint16_t j = 0; j < nbBlockHeigth; j++) {
+ copy_pixel(indexFirstBlocFull + i + (j * 32), shift, 255);
+ }
+ }
+
+ } else {
+ for (int i = width - 1; i >= 0; i--) {
+ copy_pixel(indexFirstBloc + i, shift, cMastTop);
+ copy_pixel(indexFirstBlocEnd + i, shift, cMastBottom);
+
+ for (uint16_t j = 0; j < nbBlockHeigth; j++) {
+ copy_pixel(indexFirstBlocFull + i + (j * 32), shift, 255);
+ }
+ }
+ }
+}
+
+int interpo_pourcent(int min, int max, int v) {
+ // interpolation
+ float x0 = min;
+ float x1 = max;
+ float y0 = 0;
+ float y1 = 100;
+ float xp = v;
+ float yp = y0 + ((y1 - y0) / (x1 - x0)) * (xp - x0);
+
+ return (int)yp;
+}
+
+uint8_t BAYER_PATTERN_4[4][4] = {{15, 135, 45, 165}, {195, 75, 225, 105}, {60, 180, 30, 150}, {240, 120, 210, 90}};
+
+void draw_gradient(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, uint8_t color_start, uint8_t color_end, uint8_t tres) {
+ bool invert = color_start > color_end;
+
+ if (invert) {
+ color_start = 255 - color_start;
+ color_end = 255 - color_end;
+ }
+
+ int step = (100 / tres);
+ int step_minus = (100 / (tres - 1));
+ int distance = color_end - color_start;
+
+ for (uint8_t i = 0; i < width; i++) {
+ int position = interpo_pourcent(0, width, i);
+
+ float color = position;
+ color = ((int)(color / step)) * step_minus;
+
+ color = color_start + ((distance * color) / 100);
+
+ for (uint8_t j = 0; j < heigth; j++) {
+ uint8_t m = BAYER_PATTERN_4[i % 4][j % 4];
+ unsigned char color_d = (color > m) ? !invert : invert;
+
+ oled_write_pixel(x + i, y + j, color_d);
+ }
+ }
+}
+
+void render_tv_animation(uint8_t frame_number, uint8_t x, uint8_t y, uint8_t width, uint8_t heigth) {
+ uint8_t xCenter = x + (width / 2);
+ uint8_t yCenter = y + (heigth / 2);
+
+ switch (frame_number) {
+ case 0:
+ // a fond : allume
+ drawline_hr_heigth(x, yCenter, width, 17, true);
+ break;
+
+ case 1:
+ drawline_hr_heigth(x, yCenter, width, 12, true);
+ draw_ellipse_fill(xCenter, yCenter, 7, 15, true);
+ break;
+
+ case 2:
+ drawline_hr_heigth(x, yCenter, width, 5, true);
+ draw_ellipse_fill(xCenter, yCenter, 5, 8, true);
+ break;
+
+ case 3:
+ drawline_hr_heigth(x, yCenter, width, 3, true);
+ draw_ellipse_fill(xCenter, yCenter, 3, 4, true);
+ break;
+
+ case 4:
+ drawline_hr_heigth(x, yCenter, width, 2, true);
+ draw_fill_circle(xCenter, yCenter, 3, true);
+ break;
+
+ case 5:
+ // central line
+ drawline_hr(x, yCenter, width, true);
+ draw_fill_circle(xCenter, yCenter, 2, true);
+ break;
+
+ case 6:
+ // cross
+ drawline_hr(xCenter, yCenter + 1, 2, true);
+ drawline_hr(xCenter, yCenter - 1, 2, true);
+
+ // central line
+ drawline_hr(x, yCenter, width, true);
+ break;
+
+ case 7:
+ // cross
+ drawline_hr(xCenter, yCenter + 1, 2, true);
+ drawline_hr(xCenter, yCenter - 1, 2, true);
+ // central line
+ drawline_hr(xCenter - 8, yCenter, 18, true);
+ // static
+ oled_write_pixel(xCenter - 11, yCenter, true);
+ oled_write_pixel(xCenter + 12, yCenter, true);
+ break;
+
+ case 8:
+ // cross
+ drawline_hr(xCenter, yCenter + 1, 2, true);
+ drawline_hr(xCenter, yCenter - 1, 2, true);
+ // central line
+ drawline_hr(xCenter - 2, yCenter, 4, true);
+ // static
+ drawline_hr(xCenter - 7, yCenter, 2, true);
+ drawline_hr(xCenter + 6, yCenter, 3, true);
+
+ // oled_write_pixel(xCenter - 11, yCenter, true);
+ oled_write_pixel(xCenter - 9, yCenter, true);
+ oled_write_pixel(xCenter + 12, yCenter, true);
+ oled_write_pixel(xCenter + 14, yCenter, true);
+ break;
+
+ case 9:
+ // central line
+ drawline_hr(xCenter, yCenter, 2, true);
+ break;
+ }
+} \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/druotoni/draw_helper.h b/keyboards/lily58/keymaps/druotoni/draw_helper.h
new file mode 100644
index 0000000000..991ab0d0a6
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/draw_helper.h
@@ -0,0 +1,47 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// Copyright 2021 ugfx
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// line
+void drawline_vb(uint8_t x, uint8_t y, uint8_t width, bool color);
+void drawline_vt(uint8_t x, uint8_t y, uint8_t width, bool color);
+void drawline_hr(uint8_t x, uint8_t y, uint8_t width, bool color);
+void drawline_hl(uint8_t x, uint8_t y, uint8_t width, bool color);
+void drawline_hr_heigth(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color);
+
+// rectangle
+void draw_rectangle(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color);
+void draw_rectangle_fill(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, bool color);
+void draw_gradient(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, uint8_t color_start, uint8_t color_end, uint8_t tres);
+
+// circle
+void draw_fill_circle(short x, short y, uint8_t radius, bool color);
+void draw_circle(uint8_t x, uint8_t y, uint8_t radius, bool color);
+void draw_ellipse(uint8_t x, uint8_t y, uint8_t a, uint8_t b, bool color);
+void draw_ellipse_fill(uint8_t x, uint8_t y, uint8_t a, uint8_t b, bool color);
+void draw_arc_sector(uint8_t x, uint8_t y, uint8_t radius, unsigned char sectors, unsigned char half, bool color);
+void draw_static(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int color, uint8_t density);
+
+// text
+void draw_random_char(uint8_t column, uint8_t row, char final_char, int value, uint8_t style);
+void draw_label(const char *data, uint8_t len, uint8_t row, int value);
+void draw_box(const char *data, uint8_t len, uint8_t row, long value, uint8_t style);
+void draw_progress(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int value, uint8_t style, bool color);
+
+// oled drivers stuff
+char get_oled_char(uint16_t start_index);
+void oled_write_cursor(uint8_t col, uint8_t line, const char *data, bool invert);
+void oled_write_raw_P_cursor(uint8_t col, uint8_t line, const char *data, uint16_t size);
+
+// pixel manipulation
+void copy_pixel(int from, int shift, unsigned char mask);
+void move_block(uint8_t x, uint8_t y, uint8_t width, uint8_t heigth, int shift);
+void draw_glitch_comb(uint8_t x, uint8_t y, uint8_t width, uint16_t height, uint8_t iSize, bool odd);
+
+// misc
+void render_tv_animation(uint8_t frame_number, uint8_t x, uint8_t y, uint8_t width, uint8_t heigth);
+int interpo_pourcent(int min, int max, int v);
+void get_glitch_index(uint32_t *glitch_timer, int *current_glitch_scope_time, uint8_t *glitch_index, uint8_t min_time, uint16_t max_time, uint8_t glitch_probobility, uint8_t glitch_frame_number);
+void get_glitch_index_new(uint16_t *glitch_timer, uint8_t *current_glitch_scope_time, uint8_t *glitch_index, uint8_t min_time, uint16_t max_time, uint8_t glitch_probobility, uint8_t glitch_frame_number);
diff --git a/keyboards/lily58/keymaps/druotoni/fast_random.c b/keyboards/lily58/keymaps/druotoni/fast_random.c
new file mode 100644
index 0000000000..3028b57ac6
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/fast_random.c
@@ -0,0 +1,17 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "fast_random.h"
+
+// seed for random
+static unsigned long g_seed = 0;
+
+int fastrand(void) {
+ // todo : try with random16();
+ g_seed = (214013 * g_seed + 2531011);
+ return (g_seed >> 16) & 0x7FFF;
+}
+
+unsigned long fastrand_long(void) {
+ g_seed = (214013 * g_seed + 2531011);
+ return g_seed;
+}
diff --git a/keyboards/lily58/keymaps/druotoni/fast_random.h b/keyboards/lily58/keymaps/druotoni/fast_random.h
new file mode 100644
index 0000000000..fe8c4a40a2
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/fast_random.h
@@ -0,0 +1,7 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+int fastrand(void);
+unsigned long fastrand_long(void); \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/druotoni/gui_state.c b/keyboards/lily58/keymaps/druotoni/gui_state.c
new file mode 100644
index 0000000000..d86e67ec7b
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/gui_state.c
@@ -0,0 +1,71 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "gui_state.h"
+#include "draw_helper.h"
+
+// timer for the gui state
+uint32_t global_sleep_timer = 0;
+uint32_t global_waking_up_timer = 0;
+uint32_t global_booting_timer = 0;
+
+// timers test for states
+#ifdef WITH_BOOT
+static bool IsBooting(void) { return (timer_elapsed32(global_booting_timer) < BOOTING_TIME_TRESHOLD); }
+#else
+static bool IsBooting(void) { return false; }
+#endif
+
+// state test
+static bool IsWakingUp(void) { return (timer_elapsed32(global_waking_up_timer) < WAKING_UP_TIME_TRESHOLD); }
+static bool IsIdle(void) { return (timer_elapsed32(global_sleep_timer) > IDLE_TIME_TRESHOLD && timer_elapsed32(global_sleep_timer) < HALTING_TIME_TRESHOLD); }
+static bool IsSleep(void) { return (timer_elapsed32(global_sleep_timer) >= SLEEP_TIME_TRESHOLD); }
+static bool IsHalting(void) { return (timer_elapsed32(global_sleep_timer) >= HALTING_TIME_TRESHOLD && timer_elapsed32(global_sleep_timer) < SLEEP_TIME_TRESHOLD); }
+
+gui_state_t get_gui_state(void) {
+ // get gui states by testing timers
+ if (IsBooting()) return _BOOTING;
+ if (IsWakingUp()) return _WAKINGUP;
+ if (IsIdle()) return _IDLE;
+ if (IsHalting()) return _HALTING;
+ if (IsSleep()) return _SLEEP;
+
+ return _UP;
+}
+
+void update_gui_state(void) {
+ // what to do when a key is pressed
+ gui_state_t t = get_gui_state();
+
+#ifdef WITH_BOOT
+ if (t == _SLEEP) {
+ // booting
+ global_booting_timer = timer_read32();
+ }
+
+ if (t == _BOOTING) {
+ // cancel booting
+ global_booting_timer = 1000000;
+ }
+#else
+ if (t == _SLEEP) {
+ // waking up
+ global_waking_up_timer = timer_read32();
+ }
+#endif
+
+ if (t == _IDLE || t == _HALTING || t == _BOOTING) {
+ // waking up
+ global_waking_up_timer = timer_read32();
+ }
+
+ // no sleep
+ global_sleep_timer = timer_read32();
+}
+
+uint8_t get_glitch_probability(void) {
+ // more gliches could occur when halting time is near
+ return interpo_pourcent(IDLE_TIME_TRESHOLD, HALTING_TIME_TRESHOLD, timer_elapsed32(global_sleep_timer));
+}
diff --git a/keyboards/lily58/keymaps/druotoni/gui_state.h b/keyboards/lily58/keymaps/druotoni/gui_state.h
new file mode 100644
index 0000000000..190e02d303
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/gui_state.h
@@ -0,0 +1,18 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// states timing
+#define BOOTING_TIME_TRESHOLD 7000
+#define WAKING_UP_TIME_TRESHOLD 300
+#define IDLE_TIME_TRESHOLD 4000
+#define HALTING_TIME_TRESHOLD IDLE_TIME_TRESHOLD + 6000
+#define SLEEP_TIME_TRESHOLD HALTING_TIME_TRESHOLD + 8000
+
+typedef uint8_t gui_state_t;
+enum gui_state { _WAKINGUP = 0, _IDLE, _SLEEP, _UP, _BOOTING, _HALTING };
+
+gui_state_t get_gui_state(void);
+void update_gui_state(void);
+uint8_t get_glitch_probability(void); \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/druotoni/keymap.c b/keyboards/lily58/keymaps/druotoni/keymap.c
new file mode 100644
index 0000000000..2db32047e0
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/keymap.c
@@ -0,0 +1,253 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_french.h"
+#include "transactions.h"
+
+// global
+#include "gui_state.h"
+#include "boot.h"
+#include "navi_logo.h"
+
+#include "draw_helper.h"
+#include "fast_random.h"
+
+// left side
+#include "layer_frame.h"
+#include "burst.h"
+
+// right side
+#include "ring.h"
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* QWERTY
+* ,-----------------------------------------. ,-----------------------------------------.
+* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | DEL |
+* |------+------+------+------+------+------| |------+------+------+------+------+------|
+* | Tab | Q | W | E | R | T | | Y | U | I | O | P | ^ |
+* |------+------+------+------+------+------| |------+------+------+------+------+------|
+* |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ; |RShift|
+* |------+------+------+------+------+------| " | | ) |------+------+------+------+------+------|
+* |LCTRL | Z | X | C | V | B |-------| |-------| N | M | , | . | / | $ |
+* `-----------------------------------------/ / \ \-----------------------------------------'
+* | LAlt | SPE | Space| / NAV / \Enter \ |BackSP| ] | RGUI |
+* | | | |/ / \ \ | | | |
+* `----------------------------' '------''--------------------'
+*/
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DELETE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FR_CIRC,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RSFT,
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_Z), FR_RPRN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_LALT, TT(_RAISE), KC_SPC, TT(_LOWER), KC_ENT, KC_BSPC, KC_RBRC, KC_RGUI
+ ),
+
+ /* LOWER
+* ,---------------------------------------------. ,------------------------------------------------.
+* | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | DEL |
+* |------+-------+-------+------+-------+-------| |--------+--------+--------+-------+------+------|
+* | RST | F11 | F12 | DEL | paste | copy | | home | pg up | print | redo | w | |
+* |------+-------+-------+------+-------+-------| |--------+--------+--------+-------+------+------|
+* | | all | | SAV | undo | BackSP|-------. ,-------| left | down | up | right | | |
+* |------+-------+-------+------+-------+-------| enter| | |--------+--------+--------+-------+------+------|
+* | F9 | F11 | F10 | F5 | TAB | cut |-------| |-------| end | pg dw | | | | |
+* `---------------------------------------------/ / \ \-----------------------------------------------'
+* | | SPE | | / / \ \ | | MENU | |
+* | | | |/ / \ \ | | | |
+* `--------------------------------' '-------''--------------------'
+*/
+ [_LOWER] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DELETE,
+ RESET, KC_F11, KC_F12, KC_DELETE, RCTL(FR_V), RCTL(FR_C), KC_HOME, KC_PGUP, KC_PSCR, RCTL(FR_Y), RCTL(KC_RIGHT), _______,
+ _______,RCTL(FR_A), _______,RCTL(FR_S), RCTL(FR_Z), KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
+ KC_F9, KC_F11, KC_F10, KC_F5, LALT(KC_TAB), RCTL(FR_X), KC_ENT, _______, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______,TT(_RAISE), _______, _______, _______, _______, KC_APP, _______),
+
+/* RAISE
+* ,-----------------------------------------. ,-------------------------------------------.
+* | | | | | | | | | | / | * | - | RGB TOG|
+* |------+------+------+------+------+------| |------+------+------+------+-----+--------|
+* | ` | [ | ] | | | | | ^ | 7 | 8 | 9 | + | RGB HUI|
+* |------+------+------+------+------+------| |------+------+------+------+-----+--------|
+* | | @ | | | & | € | # |-------. ,-------| $ | 4 | 5 | 6 | | |
+* |------+------+------+------+------+------| | | |------+------+------+------+-----+--------|
+* | F7 | F8 | F9 | F10 | # | F12 |-------| |-------| | 1 | 2 | 3 | | |
+* `-----------------------------------------/ / \ \------------------------------------------'
+* | | | | / / \ \ | | 0 | . |
+* | | | |/ / \ \ | | | |
+* `----------------------------' '------''---------------------'
+*/
+ [_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, RGB_TOG,
+ KC_GRV, FR_LBRC, FR_RBRC, _______, _______, _______, FR_EQL, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, RGB_HUI,
+ _______, FR_AT, FR_PIPE, ALGR(KC_1), FR_EURO, FR_HASH, S(FR_EQL), KC_KP_4, KC_KP_5, KC_KP_6, _______, _______,
+ KC_F7, KC_F8, KC_F9, KC_F10, FR_HASH, KC_F12, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT)
+};
+// clang-format on
+
+// sync transport
+typedef struct _sync_keycode_t {
+ uint16_t keycode;
+} sync_keycode_t;
+
+// force rigth side to update
+bool b_sync_need_send = false;
+
+// last keycode typed
+sync_keycode_t last_keycode;
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ // vertical orientation
+ return OLED_ROTATION_270;
+}
+
+void render(gui_state_t t) {
+ // logo
+ render_logo(t);
+
+#if IS_LEFT
+ // left side
+ render_layer_frame(t);
+ render_gears();
+
+ decay_scope();
+ render_scope(t);
+#endif
+
+#if IS_RIGHT
+ // right side
+ render_circle(t);
+#endif
+}
+
+void update(uint16_t keycode) {
+#if IS_LEFT
+ update_scope();
+#endif
+
+#if IS_RIGHT
+ update_circle(keycode);
+#endif
+}
+
+void reset(void) {
+#if IS_LEFT
+ reset_scope();
+#endif
+
+#if IS_RIGHT
+ reset_ring();
+#endif
+}
+
+void set_wackingup_mode_clean(void) {
+ oled_clear();
+ reset();
+}
+
+bool oled_task_user(void) {
+ gui_state_t t = get_gui_state();
+
+ // in sleep mode => turn display off
+ if (t == _SLEEP) {
+ oled_off();
+ return false;
+ }
+
+ // not in sleep mode => screen is on
+ oled_on();
+
+#ifdef WITH_BOOT
+ // in booting mode => display booting animation
+ if (t == _BOOTING) {
+ bool boot_finished = render_boot();
+ if (boot_finished) {
+ // end of the boot : wacking up
+ set_wackingup_mode_clean();
+ update_gui_state();
+ }
+ return false;
+ }
+#endif
+
+ // in halting mode => display booting animation
+ if (t == _HALTING) {
+ render_halt();
+ return false;
+ }
+
+ render(t);
+ return false;
+}
+
+void process_key(uint16_t keycode) {
+ // update screen with the new key
+ update(keycode);
+
+ gui_state_t t = get_gui_state();
+
+ if (t == _IDLE) {
+ // wake up animation
+ reset();
+ }
+
+ if (t == _BOOTING || t == _HALTING) {
+ // cancel booting or halting : waking_up
+ set_wackingup_mode_clean();
+ }
+
+ if (t == _SLEEP) {
+ // boot sequence
+ set_wackingup_mode_clean();
+ reset_boot();
+ }
+
+ update_gui_state();
+}
+
+void user_sync_a_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {
+ const sync_keycode_t* m2s = (const sync_keycode_t*)in_data;
+ // get the last char typed on left side and update the right side
+ process_key(m2s->keycode);
+}
+
+void keyboard_post_init_user(void) {
+ // callback for tranport sync data
+ transaction_register_rpc(USER_SYNC_A, user_sync_a_slave_handler);
+}
+
+void housekeeping_task_user(void) {
+ // only for master side
+ if (!is_keyboard_master()) return;
+
+ // only if a new char was typed
+ if (!b_sync_need_send) return;
+
+ // send the char to the slave side : sync is done
+ if (transaction_rpc_send(USER_SYNC_A, sizeof(last_keycode), &last_keycode)) {
+ b_sync_need_send = false;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ if (record->event.pressed) {
+ // master : store keycode to sent to the other side to be process_key
+ last_keycode.keycode = keycode;
+ b_sync_need_send = true;
+
+ // gui process the input
+ process_key(keycode);
+ }
+ return true;
+}
+
+#if IS_LEFT
+layer_state_t layer_state_set_user(layer_state_t state) {
+ // update the frame with the layer name
+ update_layer_frame(state);
+ return state;
+}
+#endif
diff --git a/keyboards/lily58/keymaps/druotoni/layer_frame.c b/keyboards/lily58/keymaps/druotoni/layer_frame.c
new file mode 100644
index 0000000000..6f7ae1a253
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/layer_frame.c
@@ -0,0 +1,105 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "gui_state.h"
+#include "layer_frame.h"
+#include "draw_helper.h"
+
+#define ANIM_LAYER_FRAME_DURATION 2
+#define ANIM_LAYER_FRAME_MAX 7
+
+// current layer
+uint8_t current_layer = _QWERTY;
+
+// layer animation stuff
+uint16_t anim_layer_frame_timer = 0;
+uint8_t current_layer_frame = ANIM_LAYER_FRAME_MAX;
+uint8_t layer_frame_destination = ANIM_LAYER_FRAME_MAX;
+
+// layer name for display
+const char* layer_name;
+static const char* layer_ref[3] = {LAYER_NAME_0, LAYER_NAME_1, LAYER_NAME_2};
+
+void update_layer_frame(layer_state_t state) {
+ // reset timer
+ anim_layer_frame_timer = timer_read();
+
+ // direction for animation base on layer selected
+ current_layer = get_highest_layer(state);
+ if (current_layer == _QWERTY) {
+ layer_frame_destination = 0;
+ } else {
+ layer_frame_destination = ANIM_LAYER_FRAME_MAX;
+ }
+}
+
+static void draw_black_screen(void) {
+ // clean frame center
+ draw_rectangle_fill(3, 42, 26, 20, false);
+ drawline_hr(17, 62, 12, false);
+}
+
+void render_gears(void) {
+ // 64 bytes, 8x8 font, 8 characters, 32x16 image, 4 columns, 2 rows
+ static const char PROGMEM raw_logo[] = {
+ 0, 6, 6, 54, 118, 96, 230, 192, 192, 128, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 18, 226, 2, 18, 226, 2, 18, 226, 2, 1, 0, 0, 0, 0, 0, 128, 128, 128, 185, 187, 187, 131, 128, 184, 128, 128, 128, 128, 128, 128, 128, 128, 128, 191, 128, 128, 191, 128, 128, 191, 128, 0,
+ };
+
+ // extra line for complete the gui
+ oled_write_raw_P_cursor(0, 8, raw_logo, sizeof(raw_logo));
+}
+
+void render_layer_frame(gui_state_t t) {
+ // 96 bytes, 8x8 font, 12 characters, 32x24 image, 4 columns, 3 rows
+ static const char PROGMEM raw_logo[] = {
+ 62, 1, 0, 56, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 124, 248, 241, 226, 4, 8, 240, 0, 28, 28, 28, 0, 0, 127, 4, 8, 16, 127, 0, 124, 18, 17, 18, 124, 0, 31, 32, 64, 32, 31, 0, 0, 0, 0, 255, 255, 0, 0, 255, 62, 64, 64, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 142, 30, 62, 126, 126, 70, 70, 126, 70, 70, 126, 70, 70, 127, 127, 0, 0, 255,
+ };
+ oled_write_raw_P_cursor(0, 5, raw_logo, sizeof(raw_logo));
+
+ // extra line for complete the gui
+ drawline_hr(2, 39, 25, 1);
+
+ if (current_layer_frame != layer_frame_destination) {
+ if (timer_elapsed(anim_layer_frame_timer) > ANIM_LAYER_FRAME_DURATION) {
+ anim_layer_frame_timer = timer_read();
+
+ if (layer_frame_destination > current_layer_frame) {
+ current_layer_frame++;
+ } else {
+ current_layer_frame--;
+ }
+ }
+
+ // black screen
+ draw_black_screen();
+
+ // gradient animation on layer selection
+ draw_gradient(3, 42, current_layer_frame * 4, 10, 0, 255, 7);
+ draw_gradient(3 + (27 - current_layer_frame * 4), 57, current_layer_frame * 4, 6, 255, 0, 7);
+
+ drawline_hr(3, 46, 22, false);
+ drawline_hr(3, 47, 23, false);
+
+ draw_rectangle_fill(3, 55, 24, 2, false);
+ draw_rectangle_fill(24, 48, 3, 7, false);
+
+ draw_rectangle_fill(3, 60, 12, 2, false);
+ oled_write_pixel(15, 61, false);
+ drawline_hr(14, 62, 3, false);
+ drawline_hr(14, 62, 3, false);
+ drawline_hr(3, 62, 11, true);
+ }
+
+ // get current layer name
+ layer_name = layer_ref[current_layer];
+
+ // gui on pause : no layer name on screen
+ if (t == _IDLE || t == _SLEEP || t == _WAKINGUP) {
+ layer_name = " ";
+ }
+
+ // display layer name in the frame
+ oled_write_cursor(1, 6, layer_name, false);
+}
diff --git a/keyboards/lily58/keymaps/druotoni/layer_frame.h b/keyboards/lily58/keymaps/druotoni/layer_frame.h
new file mode 100644
index 0000000000..abbd948395
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/layer_frame.h
@@ -0,0 +1,15 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// layer name : must be 3 chars
+#define LAYER_NAME_0 "ABC"
+#define LAYER_NAME_1 "NAV"
+#define LAYER_NAME_2 "SPE"
+
+enum layer_number { _QWERTY = 0, _LOWER, _RAISE };
+
+void render_gears(void);
+void render_layer_frame(gui_state_t t);
+void update_layer_frame(layer_state_t state); \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/druotoni/navi_font.c b/keyboards/lily58/keymaps/druotoni/navi_font.c
new file mode 100644
index 0000000000..2412256e61
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/navi_font.c
@@ -0,0 +1,139 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#include "progmem.h"
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x42, 0x3A, 0x12, 0x12, 0x0E, 0x00,
+ 0x0C, 0x44, 0x47, 0x24, 0x1C, 0x00,
+ 0x24, 0x24, 0x14, 0x7F, 0x04, 0x00,
+ 0x42, 0x3F, 0x02, 0x22, 0x1E, 0x00,
+ 0x0A, 0x0A, 0x7F, 0x0A, 0x0A, 0x00,
+ 0x02, 0x47, 0x42, 0x22, 0x1F, 0x00,
+ 0x21, 0x15, 0x09, 0x15, 0x63, 0x00,
+ 0x44, 0x44, 0x3F, 0x04, 0x04, 0x00,
+ 0x22, 0x1A, 0x02, 0x7F, 0x12, 0x00,
+ 0x22, 0x22, 0x12, 0x0A, 0x06, 0x00,
+ 0x08, 0x47, 0x42, 0x22, 0x1E, 0x00,
+ 0x10, 0x52, 0x54, 0x30, 0x16, 0x00,
+ 0x40, 0x3A, 0x02, 0x3E, 0x42, 0x00,
+ 0x5E, 0x52, 0x52, 0x52, 0x5E, 0x00,
+ 0x04, 0x27, 0x44, 0x44, 0x3C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x77, 0x00, 0x77, 0x00, 0x77, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00,
+ 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00
+};
diff --git a/keyboards/lily58/keymaps/druotoni/navi_logo.c b/keyboards/lily58/keymaps/druotoni/navi_logo.c
new file mode 100644
index 0000000000..6041aa5ebc
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/navi_logo.c
@@ -0,0 +1,117 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "gui_state.h"
+#include "navi_logo.h"
+#include "fast_random.h"
+#include "draw_helper.h"
+
+#define LOGO_SIZE 128
+
+// glitch stuff
+#define GLITCH_FRAME_NUMBER 11
+
+uint8_t current_glitch_index = 0;
+int current_glitch_time = 150;
+uint32_t glitch_timer = 0;
+
+static void render_logo_clean(void) {
+ // your logo here
+ static const char PROGMEM raw_logo[] = {
+ 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 128, 128, 192, 192, 204, 222, 222, 204, 192, 192, 128, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 192, 240, 248, 28, 14, 7, 3, 249, 252, 255, 15, 7, 3, 225, 241, 241, 241, 241, 225, 3, 7, 15, 255, 252, 249, 3, 7, 14, 28, 248, 240, 192, 192, 227, 231, 206, 28, 56, 112, 99, 15, 31, 60, 120, 240, 225, 227, 3, 3, 227, 225, 240, 120, 60, 31, 15, 103, 112, 56, 28, 206, 231, 227, 192, 0, 1, 1, 0, 0, 0, 56, 120, 96, 192, 192, 192, 96, 127, 63, 0, 0, 63, 127, 96, 192, 192, 192, 96, 120, 56, 0, 0, 0, 1, 1, 0,
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+void render_glitch_bar(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t iProb) {
+ // random horizontal scanlines
+ for (uint8_t i = 0; i < height; i++) {
+ bool bGenerateGlitch = (fastrand() % 100) < iProb;
+
+ if (bGenerateGlitch) {
+ drawline_hr(x, y + i, width, true);
+ }
+ }
+}
+
+void render_misc_glitch(uint8_t algo) {
+ char c = 0;
+ switch (algo) {
+ case 7:
+ // invert
+ for (uint8_t i = 0; i < LOGO_SIZE; i++) {
+ c = get_oled_char(i);
+ oled_write_raw_byte(~(c), i);
+ }
+ break;
+
+ case 8:
+ // wobble
+ for (uint8_t i = 0; i < LOGO_SIZE; i++) {
+ if (i < LOGO_SIZE - 1) {
+ copy_pixel(i + 1, -1, 85);
+
+ copy_pixel(LOGO_SIZE - 1 - 1 - i, 1, 170);
+ }
+ }
+ break;
+ }
+}
+
+static void render_logo_glitch(void) {
+#ifdef WITH_GLITCH
+ // get a random glitch index
+ uint8_t glitch_prob = get_glitch_probability();
+ get_glitch_index(&glitch_timer, &current_glitch_time, &current_glitch_index, 0, 150, glitch_prob, GLITCH_FRAME_NUMBER);
+
+ // no glitch
+ if (current_glitch_index <= 3) {
+ render_logo_clean();
+ return;
+ }
+
+ // glitch time !
+ switch (current_glitch_index) {
+ case 4:
+ move_block(1, 11, 24, 3, 5);
+ move_block(2, 19, 14, 3, 4);
+ move_block(9, 22, 7, 4, 4);
+ return;
+
+ case 5:
+ move_block(6, 25, 20, 7, 4);
+ move_block(0, 8, 32, 8, 7);
+ return;
+ case 6:
+ move_block(3, 7, 27, 4, -3);
+ move_block(13, 23, 19, 4, -4);
+ return;
+
+ case 7:
+ case 8:
+ render_misc_glitch(current_glitch_index);
+ return;
+
+ case 9:
+ render_glitch_bar(0, 0, 32, 32, 25);
+ return;
+
+ case 10:
+ draw_static(0, 0, 32, 32, true, 0);
+ return;
+ }
+#endif
+}
+
+void render_logo(gui_state_t t) {
+ if (t == _IDLE) {
+ // on idle : glitch time !
+ render_logo_glitch();
+ return;
+ }
+
+ // standart logo
+ render_logo_clean();
+}
diff --git a/keyboards/lily58/keymaps/druotoni/navi_logo.h b/keyboards/lily58/keymaps/druotoni/navi_logo.h
new file mode 100644
index 0000000000..3504568e5d
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/navi_logo.h
@@ -0,0 +1,7 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+void render_logo(gui_state_t t);
+
diff --git a/keyboards/lily58/keymaps/druotoni/readme.md b/keyboards/lily58/keymaps/druotoni/readme.md
new file mode 100644
index 0000000000..c6d47da5d7
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/readme.md
@@ -0,0 +1,133 @@
+# HELL0 NAVI. Interface
+
+HELL0 NAVI. Interface is a GUI based en [Serial Experiments Lain](https://en.wikipedia.org/wiki/Serial_Experiments_Lain). Turn your [Lily58](https://github.com/kata0510/Lily58) keyboard into a Navi computer with its own Copland OS.
+
+
+Ready to dive into the Wired ?
+
+
+HELL0 NAVI provides interactive animations for both sides :
+- a scope on left side for burst, WPM and active layer
+- a ring on right side for the last key stroke
+
+
+
+
+
+
+
+## Typing animation
+
+The scope displays your burst time on a chart. The WPM is represented by an horizontal line.
+
+The ring display the last letter in the upper frame. Each time you enter a key, the Navi searches into the circular database and locks the position. A special animation is displayed when Enter, Backspce or Escape are struck.
+
+<img src="https://imgur.com/Yf7D6UN.gif" height="400" >
+
+## Startup animation
+
+Your Navi boots when it leaves the sleep mode. The animation can be canceled by typing.
+
+
+
+<img src="https://imgur.com/EXU92Ev.gif" height="400" >
+
+
+
+## Waking up animation
+
+After a period of inactivity, the scope and the ring turn off and the Navi runs in Idle mode. A new key stroke wakes them up.
+
+
+<img src="https://imgur.com/9GWa7rR.gif" height="400" >
+
+
+## Idle animation
+
+The Copland OS is still in beta test. After a while, some visual glitches will occur.
+
+
+<img src="https://imgur.com/eKZ7qgC.gif" height="400" >
+
+
+
+## Shutdown animation
+The Navi runs in sleep mode after 10 seconds in Idle mode. A nice (and difficul to render in a gif) animation is run. The OLED display turns off.
+
+# How to build & flash
+
+You need to flash each side with a specific version based on config.h configuration.
+
+ ## Left side (master)
+
+IS_RIGHT needs to be commented in config.h
+```
+#define IS_LEFT 1
+//#define IS_RIGHT 1
+```
+Connect the left side and flash
+
+ ## Right side (slave)
+
+Comment IS_LEFT and uncomment IS_RIGHT in config.h
+```
+//#define IS_LEFT 1
+#define IS_RIGHT 1
+```
+Connect the right side and flash
+
+# Customization
+
+## Logo
+Logo can be change in navi_logo.c.
+The new logo must be 32x32 pixels.
+```
+static void render_logo_clean(void) {
+ // your logo here
+ static const char PROGMEM logo_raw[] = {
+ 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 128, 128, 192, 192, 204, 222, 222, 204, 192, 192, 128, 0, 0, 0, 128, 128, 0, 0,
+ 0, 0, 0, 0, 192, 240, 248, 28, 14, 7, 3, 249, 252, 255, 15, 7, 3, 225, 241, 241, 241, 241, 225, 3, 7, 15, 255, 252,
+ 249, 3, 7, 14, 28, 248, 240, 192, 192, 227, 231, 206, 28, 56, 112, 99, 15, 31, 60, 120, 240, 225, 227, 3, 3, 227,
+ 225, 240, 120, 60, 31, 15, 103, 112, 56, 28, 206, 231, 227, 192, 0, 1, 1, 0, 0, 0, 56, 120, 96, 192, 192, 192,
+ 96, 127, 63, 0, 0, 63, 127, 96, 192, 192, 192, 96, 120, 56, 0, 0, 0, 1, 1, 0,
+ };
+ oled_write_raw_P(logo_raw, sizeof(logo_raw));
+}
+```
+## Layer names
+
+The current version handle 3 differents layers. Names can be changed in layer_frame.h.
+```
+// layer name : must be 3 chars
+#define LAYER_NAME_0 "ABC"
+#define LAYER_NAME_1 "NAV"
+#define LAYER_NAME_2 "SPE"
+```
+
+## Timing
+
+You can tweak states timing in gui_state.h.
+```
+// states timing
+#define BOOTING_TIME_TRESHOLD 7000
+#define WAKING_UP_TIME_TRESHOLD 300
+#define IDLE_TIME_TRESHOLD 4000
+#define HALTING_TIME_TRESHOLD IDLE_TIME_TRESHOLD + 6000
+#define SLEEP_TIME_TRESHOLD HALTING_TIME_TRESHOLD + 8000
+```
+
+## Need space ?
+Boot and gliches can be commented in config.h
+```
+// states timing
+// logo glitch
+//#define WITH_GLITCH
+// boot sequence
+//#define WITH_BOOT
+```
+
+![My Navi](https://imgur.com/eYkgoZJ.png)
+> Keyboard : https://github.com/kata0510/Lily58
+>
+> Case : https://github.com/BoardSodie/Lily58-Acrylic-Case
+
diff --git a/keyboards/lily58/keymaps/druotoni/ring.c b/keyboards/lily58/keymaps/druotoni/ring.c
new file mode 100644
index 0000000000..e3b7472872
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/ring.c
@@ -0,0 +1,494 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "gui_state.h"
+#include "ring.h"
+
+#include "fast_random.h"
+#include "draw_helper.h"
+
+char tListeTotal[SIZE_ARRAY_1] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'};
+char tListeTotal2[SIZE_ARRAY_1] = {'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ',', '.', '/', '1', '2', '3'};
+
+static char tRefArc[SIZE_ARRAY_1] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'};
+static char tRefArc2[SIZE_ARRAY_1] = {'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ',', '.', '/', '1', '2', '3'};
+
+// ring target and previous char
+char c_target = 'A';
+char c_target2 = 'Q';
+char c_last = ' ';
+char c_previous = ' ';
+
+static const char PROGMEM code_to_name[60] = {' ', ' ', ' ', ' ', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ';', '\'', ' ', ',', '.', '/', ' ', ' ', ' '};
+
+// main circle
+#define CIRCLE_ANIM_FRAME_DURATION 40
+uint16_t circle_timer = 0;
+
+// special animation for special keys
+#define ANIM_CENTER_FRAME_NUMBER 5
+#define ANIM_CENTER_FRAME_DURATION 40
+uint16_t anim_center_timer = 0;
+uint8_t anim_center_current_frame = 0;
+
+// sleep animation
+#define ANIM_SLEEP_RING_FRAME_NUMBER 9
+#define ANIM_SLEEP_RING_FRAME_DURATION 20
+uint16_t anim_sleep_ring_timer = 0;
+uint8_t current_sleep_ring_frame = 0;
+uint8_t sleep_ring_frame_destination = ANIM_SLEEP_RING_FRAME_NUMBER - 1;
+
+// glitch animation
+uint16_t anim_ring_idle_timer = 0;
+int current_glitch_ring_time = 150;
+uint32_t glitch_ring_timer = 0;
+uint8_t current_glitch_ring_index = 0;
+
+// central frame keylog animation
+#define ANIM_KEYLOG_FRAME_NUMBER 8
+#define ANIM_KEYLOG_FRAME_DURATION 20
+uint8_t anim_keylog_current_frame = 0;
+uint16_t anim_keylog_timer = 0;
+
+static const char PROGMEM raw_ring_sleep[4][64] = {{
+ 192, 32, 16, 8, 4, 4, 4, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 8, 16, 32, 192, 3, 4, 8, 16, 32, 32, 32, 64, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 16, 8, 4, 3,
+ },
+
+ {
+ 128, 64, 32, 32, 16, 16, 16, 16, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 32, 32, 64, 128, 0, 1, 2, 2, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 2, 1, 0,
+ },
+
+ {
+ 248, 192, 128, 128, 128, 128, 128, 128, 128, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 128, 128, 128, 128, 128, 128, 128, 192, 248, 15, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15,
+ },
+
+ {
+ 255, 240, 128, 128, 0, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 128, 128, 0, 128, 128, 248, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 255,
+ }};
+
+static const char PROGMEM raw_circle[4][128] = {{
+ 0, 0, 0, 192, 32, 16, 8, 8, 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 8, 8, 16, 32, 192, 0, 0, 0, 240, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 238, 240, 15, 112, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 192, 240, 255, 127, 15, 0, 0, 0, 3, 4, 8, 16, 16, 32, 64, 64, 64, 128, 128, 192, 192, 224, 224, 224, 240, 112, 120, 124, 60, 30, 30, 15, 7, 3, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 192, 32, 16, 8, 8, 4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 8, 8, 48, 224, 192, 0, 0, 0, 240, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 254, 240, 15, 112, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 192, 224, 240, 248, 248, 254, 255, 255, 127, 15, 0, 0, 0, 3, 7, 15, 31, 30, 62, 126, 126, 126, 254, 254, 254, 254, 254, 255, 255, 255, 127, 127, 127, 63, 31, 31, 15, 7, 3, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 192, 32, 16, 8, 8, 4, 2, 2, 2, 1, 1, 1, 1, 3, 15, 255, 255, 254, 254, 254, 252, 248, 248, 240, 224, 192, 0, 0, 0, 240, 14, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 192, 240, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 240, 15, 126, 252, 248, 248, 248, 248, 248, 252, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 127, 63, 31, 15, 7, 7, 3, 3, 3, 7, 143, 127, 15, 0, 0, 0, 3, 7, 15, 31, 31, 63, 127, 127, 127, 255, 255, 255, 255, 255, 255, 195, 128, 64, 64, 64, 32, 16, 16, 8, 4, 3, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 192, 224, 240, 248, 248, 124, 62, 30, 14, 15, 7, 7, 3, 3, 3, 1, 1, 2, 2, 2, 4, 8, 8, 16, 32, 192, 0, 0, 0, 240, 254, 255, 31, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 240, 15, 115, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 15, 0, 0, 0, 3, 4, 8, 16, 16, 32, 64, 64, 64, 128, 128, 128, 128, 128, 128, 128, 128, 64, 64, 64, 32, 16, 16, 8, 4, 3, 0, 0, 0,
+ }};
+
+static const char PROGMEM raw_bottom[] = {
+ 127, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 127,
+};
+
+static const char PROGMEM raw_middle[] = {
+ 240, 8, 4, 226, 241, 248, 124, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 56, 0, 1, 62, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 0, 255, 0, 0, 127, 127, 70, 70, 126, 70, 70, 126, 70, 70, 126, 126, 62, 30, 142, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 64, 64, 62, 1, 2, 114, 114, 2, 2, 114, 114, 2, 2, 114, 114, 2, 2, 2, 2, 1, 0, 0, 0, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 0, 0, 128, 131, 131, 132, 136, 179, 131, 132, 184, 131, 131, 188, 128, 128, 128, 128, 128, 128, 128, 143, 144, 149, 144, 149, 144, 149, 144, 149, 144, 143, 0,
+};
+
+static void rotate_right(char str[]) {
+ uint8_t iSize = SIZE_ARRAY_1;
+ char cFist = str[0];
+
+ // rotate array to the right
+ for (uint8_t i = 0; i < iSize - 1; i++) {
+ str[i] = str[i + 1];
+ }
+ str[iSize - 1] = cFist;
+}
+
+static void rotate_left(char str[]) {
+ uint8_t iSize = SIZE_ARRAY_1;
+ char cLast = str[iSize - 1];
+
+ // rotate array to the left
+ for (uint8_t i = iSize - 1; i > 0; i--) {
+ str[i] = str[i - 1];
+ }
+ str[0] = cLast;
+}
+
+static signed char GetPosition(char c, char tListe[]) {
+ uint8_t iSize = SIZE_ARRAY_1;
+
+ // find position of c in the array
+ for (uint8_t i = 0; i < iSize; i++) {
+ if (tListe[i] == c) return i;
+ }
+
+ // not found
+ return -1;
+}
+
+static signed char GetDistance(char cNew, char tListe[]) {
+ signed char iPositionNew = GetPosition(cNew, tListe);
+ if (iPositionNew == -1) {
+ // not found
+ return 0;
+ }
+
+ return iPositionNew - CURSOR_1;
+}
+
+static bool TesterEstDansListe(char c, char tListe[]) {
+ // char in the list ?
+ return GetPosition(c, tListe) != -1;
+}
+
+static void SmartRotation(char c, char tListe[]) {
+ signed char i = GetDistance(c, tListe);
+ if (i == 0) return;
+
+ // rotate in the shorter way
+ if (i < 0) {
+ rotate_left(tListe);
+ return;
+ }
+
+ if (i > 0) {
+ rotate_right(tListe);
+ return;
+ }
+}
+
+static void update_list(char cNouveau, char tListe[]) {
+ signed char iDistance = GetDistance(cNouveau, tListe);
+ if (iDistance != 0) {
+ // the new char is in the list : rotation
+ SmartRotation(cNouveau, tListe);
+ }
+}
+
+static void draw_arc_sector_16(uint8_t x, uint8_t y, uint8_t radius, int position, bool color) {
+ unsigned int s = 1;
+ s = s << (position / 2);
+
+ if (position % 4 == 0 || position % 4 == 3) {
+ draw_arc_sector(x, y, radius, s, 1, color);
+ } else {
+ draw_arc_sector(x, y, radius, s, 2, color);
+ }
+}
+
+static void render_set(uint8_t x, uint8_t y, uint8_t r, int p, bool color) {
+ // 2 pixels arc sector
+ draw_arc_sector_16(x, y, r, p, color);
+ draw_arc_sector_16(x, y, r - 1, p, color);
+}
+
+static void draw_letter_circle(char t[], char tRef[], char ct, uint8_t x, uint8_t y, uint8_t r, bool invert) {
+ char c = t[CURSOR_1];
+
+ signed char p = GetPosition(c, tRef);
+ signed char pt = GetPosition(ct, tRef);
+
+ if (!invert) {
+ draw_fill_circle(x, y, r, false);
+ draw_circle(x, y, r, false);
+ draw_circle(x, y, r - 1, false);
+ draw_circle(x, y, r - 2, false);
+ draw_circle(x, y, r - 4, true);
+ draw_circle(x, y, r - 5, true);
+ }
+
+ int pafter = (pt + 1) % SIZE_ARRAY_1;
+ int pbefore = (pt + SIZE_ARRAY_1 - 1) % SIZE_ARRAY_1;
+ render_set(x, y, r, pt, true);
+ render_set(x, y, r, pafter, true);
+ render_set(x, y, r, pbefore, true);
+
+ pafter = (pt + 2) % SIZE_ARRAY_1;
+ pbefore = (pt + SIZE_ARRAY_1 - 2) % SIZE_ARRAY_1;
+ render_set(x, y, r, pafter, true);
+ render_set(x, y, r, pbefore, true);
+
+ r -= 4;
+
+ pafter = (p + 1) % SIZE_ARRAY_1;
+ pbefore = (p + SIZE_ARRAY_1 - 1) % SIZE_ARRAY_1;
+
+ render_set(x, y, r, p, false);
+ render_set(x, y, r, pafter, false);
+ render_set(x, y, r, pbefore, false);
+
+ draw_circle(x, y, r - 6, true);
+}
+
+static void draw_center_circle_frame(uint8_t x, uint8_t y, uint8_t r, uint8_t f) {
+ draw_fill_circle(x, y, r, 0);
+ draw_circle(x, y, r, 0);
+
+ if (f == 0) {
+ draw_circle(x, y, r, 1);
+ } else {
+ // animation
+ oled_write_raw_P_cursor(0, 11, raw_circle[f - 1], sizeof(raw_circle[f - 1]));
+ }
+}
+
+static void render_anim_center_circle(uint8_t x, uint8_t y, uint8_t r) {
+ if (anim_center_current_frame == ANIM_CENTER_FRAME_NUMBER) {
+ // last frame : no animation
+ return;
+ }
+
+ if (timer_elapsed(anim_center_timer) > ANIM_CENTER_FRAME_DURATION) {
+ anim_center_timer = timer_read();
+
+ draw_center_circle_frame(x, y, r, anim_center_current_frame);
+
+ anim_center_current_frame++;
+ }
+}
+
+static void write_char(char c) {
+ // write keylog char in the frame then offset to center
+ oled_set_cursor(2, 6);
+ oled_write_char(c, false);
+ move_block(12, 48, 6, 8, 2);
+}
+
+static void render_keylog(gui_state_t t) {
+ if (anim_keylog_current_frame != ANIM_KEYLOG_FRAME_NUMBER) {
+ if (timer_elapsed(anim_keylog_timer) > ANIM_KEYLOG_FRAME_DURATION) {
+ // update frame number
+ anim_keylog_timer = timer_read();
+ anim_keylog_current_frame++;
+ }
+
+ // clean frame
+ draw_rectangle_fill(7, 46, 21, 11, false);
+
+ // comb motion to merge current and previous
+ if (anim_keylog_current_frame < ANIM_KEYLOG_FRAME_NUMBER / 2) {
+ // expand the previous char
+ write_char(c_previous);
+ draw_glitch_comb(9, 6 * 8, 18, 8, anim_keylog_current_frame + 1, true);
+ } else {
+ // shrink the current char
+ write_char(c_last);
+ draw_glitch_comb(9, 6 * 8, 18, 8, ANIM_KEYLOG_FRAME_NUMBER - anim_keylog_current_frame, false);
+ }
+
+ return;
+ }
+
+ write_char(c_last);
+}
+
+void reset_ring(void) {
+ // need to open
+ anim_sleep_ring_timer = timer_read();
+ current_sleep_ring_frame = ANIM_SLEEP_RING_FRAME_NUMBER - 1;
+ sleep_ring_frame_destination = 0;
+}
+
+static void render_tv_circle(uint8_t x, uint8_t y, uint8_t r, uint8_t f) {
+ // raw image
+ if (f == 2 || f == 3) {
+ oled_write_raw_P_cursor(0, 12, raw_ring_sleep[f - 2], sizeof(raw_ring_sleep[f - 2]));
+ return;
+ }
+
+ // raw image
+ if (f == 5 || f == 6) {
+ oled_write_raw_P_cursor(0, 12, raw_ring_sleep[f - 3], sizeof(raw_ring_sleep[f - 3]));
+ return;
+ }
+
+ // other frames : lighter to draw than using raw image
+ switch (f) {
+ case 1:
+ draw_circle(x, y, r, 1);
+ break;
+
+ case 4:
+ drawline_hr(1, y, 12, 1);
+ drawline_hr(19, y, 12, 1);
+ drawline_vb(0, y - 1, 3, true);
+ drawline_vb(31, y - 1, 3, true);
+ break;
+
+ case 7:
+
+ oled_write_pixel(1, y, true);
+ oled_write_pixel(3, y, true);
+ oled_write_pixel(28, y, true);
+ oled_write_pixel(30, y, true);
+
+ drawline_vb(0, y - 12, 26, true);
+ drawline_vb(31, y - 12, 26, true);
+ break;
+
+ case 8:
+ drawline_vb(0, 88, 32, true);
+ drawline_vb(31, 88, 32, true);
+ break;
+ }
+}
+
+static void render_circle_white(void) {
+ // top
+ oled_write_raw_P_cursor(0, 5, raw_middle, sizeof(raw_middle));
+ drawline_hr(5, 39, 25, 1);
+
+ // clean center
+ draw_rectangle_fill(0, 80, 32, 40, false);
+
+ // bottom
+ drawline_vb(0, 80, 8, 1);
+ drawline_vb(31, 80, 8, 1);
+ oled_write_pixel(1, 80, true);
+ oled_write_pixel(30, 80, true);
+
+ oled_write_raw_P_cursor(0, 15, raw_bottom, sizeof(raw_bottom));
+}
+
+static void render_ring_clean_close(void) {
+ render_circle_white();
+ drawline_vb(0, 88, 32, true);
+ drawline_vb(31, 88, 32, true);
+}
+
+static void render_glitch_square(void) {
+ if (timer_elapsed(anim_ring_idle_timer) > 60) {
+ anim_ring_idle_timer = timer_read();
+
+ render_ring_clean_close();
+
+ uint8_t size = 0;
+ for (uint8_t i = 0; i < 4; i++) {
+ size = 4 + (fastrand() % 6);
+ draw_rectangle_fill(3 + (fastrand() % 19), 85 + (fastrand() % 20), size, size, true);
+
+ size = (fastrand() % 6);
+ draw_rectangle_fill(3 + (fastrand() % 19), 100 + (fastrand() % 20), size, size, true);
+ }
+ }
+}
+
+static void render_ring_idle(void) {
+ uint8_t glitch_prob = get_glitch_probability();
+ get_glitch_index(&glitch_ring_timer, &current_glitch_ring_time, &current_glitch_ring_index, 150, 350, glitch_prob, 2);
+
+ switch (current_glitch_ring_index) {
+ case 0:
+ // no glitch
+ render_ring_clean_close();
+ return;
+ case 1:
+ // square gliches
+ render_glitch_square();
+ return;
+ }
+}
+
+static void render_ring_sleep(void) {
+ if (current_sleep_ring_frame == sleep_ring_frame_destination) {
+ // no more animation needes : render the idle animation
+ render_ring_idle();
+ return;
+ }
+
+ // display wacking up / sleep animation
+ if (timer_elapsed(anim_sleep_ring_timer) > ANIM_SLEEP_RING_FRAME_DURATION) {
+ anim_sleep_ring_timer = timer_read();
+
+ // clean + new frame
+ render_circle_white();
+ render_tv_circle(15, 103, 11, current_sleep_ring_frame);
+
+ // update frame number
+ if (sleep_ring_frame_destination > current_sleep_ring_frame) {
+ current_sleep_ring_frame++;
+ } else {
+ current_sleep_ring_frame--;
+ }
+ }
+}
+
+static void render_circle_middle(void) {
+ // clean
+ render_circle_white();
+
+ // center special animation
+ if (anim_center_current_frame < ANIM_CENTER_FRAME_NUMBER) {
+ render_anim_center_circle(15, 103, 15 - 4);
+ return;
+ }
+
+ // ring render
+ if (anim_center_current_frame == ANIM_CENTER_FRAME_NUMBER) {
+ draw_letter_circle(tListeTotal, tRefArc, c_target, 15, 103, 15, false);
+ draw_letter_circle(tListeTotal2, tRefArc2, c_target2, 15, 103, 15, true);
+ }
+}
+
+void render_circle(gui_state_t t) {
+ if (timer_elapsed(circle_timer) > CIRCLE_ANIM_FRAME_DURATION) {
+ // new frame
+ circle_timer = timer_read();
+
+ // shift rings
+ update_list(c_target, tListeTotal);
+ update_list(c_target2, tListeTotal2);
+
+ // waking up animation
+ if (t == _WAKINGUP) {
+ render_ring_sleep();
+ return;
+ }
+
+ // idle animation
+ if (t == _IDLE) {
+ sleep_ring_frame_destination = ANIM_SLEEP_RING_FRAME_NUMBER - 1;
+ render_ring_sleep();
+ return;
+ }
+
+ // render on display
+ render_circle_middle();
+ render_keylog(t);
+ }
+}
+
+void update_circle(uint16_t keycode) {
+ // special animation for special keys
+ if (keycode == KC_ESC || keycode == KC_SPACE || keycode == KC_ENTER) {
+ anim_center_timer = timer_read();
+ anim_center_current_frame = 0;
+ return;
+ }
+
+ // cancel special animation on a new key
+ anim_center_current_frame = ANIM_CENTER_FRAME_NUMBER;
+
+ // out of scope key
+ if (keycode >= 60) {
+ return;
+ }
+
+ // keycode to char
+ char c = pgm_read_byte(&code_to_name[keycode]);
+
+ // stock previous char
+ c_previous = c_last;
+ c_last = c;
+
+ // start keylog animation
+ anim_keylog_current_frame = 0;
+
+ // update target in ring #1 position
+ if (TesterEstDansListe(c, tListeTotal)) {
+ c_target = c;
+ return;
+ }
+
+ // update target in #2 position
+ if (TesterEstDansListe(c, tListeTotal2)) {
+ c_target2 = c;
+ return;
+ }
+}
diff --git a/keyboards/lily58/keymaps/druotoni/ring.h b/keyboards/lily58/keymaps/druotoni/ring.h
new file mode 100644
index 0000000000..9ce4520e64
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/ring.h
@@ -0,0 +1,11 @@
+// Copyright 2021 Nicolas Druoton (druotoni)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SIZE_ARRAY_1 16
+#define CURSOR_1 9
+
+void update_circle(uint16_t);
+void render_circle(gui_state_t t);
+void reset_ring(void);
diff --git a/keyboards/lily58/keymaps/druotoni/rules.mk b/keyboards/lily58/keymaps/druotoni/rules.mk
new file mode 100644
index 0000000000..c07761108e
--- /dev/null
+++ b/keyboards/lily58/keymaps/druotoni/rules.mk
@@ -0,0 +1,28 @@
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# EXTRAFLAGS += -flto
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+
+# If you want to change the display of OLED, you need to change here
+SRC += ./lib/rgb_state_reader.c \
+ ./burst.c \
+ ./navi_logo.c \
+ ./gui_state.c \
+ ./fast_random.c \
+ ./layer_frame.c \
+ ./ring.c \
+ ./boot.c \
+ ./draw_helper.c \
+
diff --git a/keyboards/lily58/keymaps/gaston/keymap.c b/keyboards/lily58/keymaps/gaston/keymap.c
index 234b283a91..321b225c02 100644
--- a/keyboards/lily58/keymaps/gaston/keymap.c
+++ b/keyboards/lily58/keymaps/gaston/keymap.c
@@ -41,10 +41,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, KC_F12,
- XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX
+ KC_TRNS, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, KC_F12,
+ KC_TRNS, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
+ KC_TRNS, XXXXXXX, XXXXXXX, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX
),
[_MOUSE] = LAYOUT(
diff --git a/keyboards/lily58/keymaps/gaston/readme.md b/keyboards/lily58/keymaps/gaston/readme.md
index 2d28be00af..8edd92cc3f 100644
--- a/keyboards/lily58/keymaps/gaston/readme.md
+++ b/keyboards/lily58/keymaps/gaston/readme.md
@@ -38,13 +38,13 @@ The main characteristics of this keymap are:
,-----------------------------------------. ,-----------------------------------------.
| ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|------+------+------+------+------+------| |------+------+------+------+------+------|
-| | | MUTE | VOLD | VOLU | | | HOME | PGDN | PGUP | END | | F12 |
+| TRNS | | MUTE | VOLD | VOLU | | | HOME | PGDN | PGUP | END | | F12 |
|------+------+------+------+------+------| |------+------+------+------+------+------|
-| | | MPRV | MPLY | MNXT | |-------. ,-------| LEFT | DOWN | UP | RGHT | | |
+| TRNS | | MPRV | MPLY | MNXT | |-------. ,-------| LEFT | DOWN | UP | RGHT | | |
|------+------+------+------+------+------| | | |------+------+------+------+------+------|
-| | | | BRID | BRIU | |-------| |-------| | INS | DEL | | | |
+| TRNS | | | BRID | BRIU | |-------| |-------| | INS | DEL | | | |
`-----------------------------------------/ / \ \----------------------------------------'
- | | | | / TRNS / \ TRNS \ | | | |
+ | TRNS | TRNS | TRNS | / TRNS / \ TRNS \ | | | |
| | | |/ / \ \ | | | |
`----------------------------' '-----------------------------'
```
diff --git a/keyboards/lily58/rules.mk b/keyboards/lily58/rules.mk
index f11904c49a..d6635f7347 100644
--- a/keyboards/lily58/rules.mk
+++ b/keyboards/lily58/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # OLED display
SPLIT_KEYBOARD = yes
diff --git a/keyboards/lime/rules.mk b/keyboards/lime/rules.mk
index b6d3c2b7d1..17e83d045c 100644
--- a/keyboards/lime/rules.mk
+++ b/keyboards/lime/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/linworks/fave84h/config.h b/keyboards/linworks/fave84h/config.h
new file mode 100644
index 0000000000..4127c211fd
--- /dev/null
+++ b/keyboards/linworks/fave84h/config.h
@@ -0,0 +1,115 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4C58 // LX
+#define PRODUCT_ID 0x0004 // FAve 84H
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER Lx3
+#define PRODUCT FAve 84H
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B1, B2, B3, D3, D1, D0 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B7, E6}
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+//Led configuration
+#define RGBLIGHT_ANIMATIONS
+#define RGB_DI_PIN D2
+
+#define DRIVER_LED_TOTAL 126
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 140
+
+#define RGB_MATRIX_KEYPRESSES
+//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
+ #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#endif
+#ifdef RGB_MATRIX_KEYPRESSES
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_SPLASH
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/linworks/fave84h/fave84h.c b/keyboards/linworks/fave84h/fave84h.c
new file mode 100644
index 0000000000..745e8633f7
--- /dev/null
+++ b/keyboards/linworks/fave84h/fave84h.c
@@ -0,0 +1,50 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "fave84h.h"
+
+#ifdef RGB_MATRIX_ENABLE
+ led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 47, NO_LED, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 },
+ { 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30 },
+ { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO_LED, 0, NO_LED, NO_LED, NO_LED },
+ { 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, NO_LED, 84, NO_LED, NO_LED, 85, NO_LED },
+ { 72, 71, 70, NO_LED, NO_LED, 69, NO_LED, NO_LED, NO_LED, NO_LED, 68, NO_LED, 67, 66, 65, 64, 63 },
+ }, {
+ // LED Index to Physical Position
+ {0, 0}, {28, 0}, {42, 0}, {57, 0}, {71, 0}, {92, 0}, {106, 0}, {120, 0}, {134, 0}, {156, 0},
+ {170, 0}, {184, 0}, {198, 0}, {216, 0}, {230, 0}, {244, 0}, {0, 15}, {14, 15}, {28, 15}, {42, 15},
+ {57, 15}, {71, 15}, {85, 15}, {99, 15}, {113, 15}, {127, 15}, {141, 15}, {156, 15}, {170, 15}, {191, 17},
+ {216, 15}, {230, 15}, {244, 15}, {4, 27}, {21, 27}, {35, 27}, {50, 27}, {64, 27}, {78, 27}, {92, 27},
+ {106, 27}, {120, 27}, {134, 27}, {149, 27}, {163, 27}, {177, 27}, {194, 27}, {216, 27}, {230, 27}, {244, 27},
+ {10, 40}, {25, 40}, {39, 40}, {53, 40}, {67, 40}, {81, 40}, {95, 40}, {110, 40}, {124, 40}, {138, 40},
+ {152, 40}, {166, 40}, {189, 40}, {9, 52}, {32, 52}, {46, 52}, {60, 52}, {74, 52}, {88, 52}, {103, 52},
+ {117, 52}, {131, 52}, {145, 52}, {159, 52}, {186, 52}, {230, 52}, {4, 64}, {21, 64}, {39, 64}, {99, 64},
+ {159, 64}, {177, 64}, {194, 64}, {216, 64}, {230, 64}, {244, 64}
+ }, {
+ // LED Index to Flag
+ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+ }
+};
+#endif \ No newline at end of file
diff --git a/keyboards/linworks/fave84h/fave84h.h b/keyboards/linworks/fave84h/fave84h.h
new file mode 100644
index 0000000000..39f85c159c
--- /dev/null
+++ b/keyboards/linworks/fave84h/fave84h.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* FAve 84H Keymap Definitions */
+#define LAYOUT( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
+ K50, K51, K52, K55, K5A, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, KC_NO, K5A, KC_NO, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/linworks/fave84h/info.json b/keyboards/linworks/fave84h/info.json
new file mode 100644
index 0000000000..939b99c480
--- /dev/null
+++ b/keyboards/linworks/fave84h/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Lx3 Fave 84H",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Delete", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Win", "x":1.5, "y":5.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Fn", "x":12.5, "y":5.25}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/linworks/fave84h/keymaps/default/keymap.c b/keyboards/linworks/fave84h/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5b65733221
--- /dev/null
+++ b/keyboards/linworks/fave84h/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DEL, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ )
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+}
diff --git a/keyboards/linworks/fave84h/keymaps/via/keymap.c b/keyboards/linworks/fave84h/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3000a76245
--- /dev/null
+++ b/keyboards/linworks/fave84h/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DEL, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ ),
+
+ [_LAYER2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+} \ No newline at end of file
diff --git a/keyboards/linworks/fave84h/keymaps/via/rules.mk b/keyboards/linworks/fave84h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/linworks/fave84h/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/linworks/fave84h/readme.md b/keyboards/linworks/fave84h/readme.md
new file mode 100644
index 0000000000..f2090dee53
--- /dev/null
+++ b/keyboards/linworks/fave84h/readme.md
@@ -0,0 +1,23 @@
+# FAve 84H
+
+The following is the QMK Firmware for the FAve 84H Hotswap PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+* Hotswap
+* Per Key and Underglow RGB
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make linworks/fave84h:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
diff --git a/keyboards/linworks/fave84h/rules.mk b/keyboards/linworks/fave84h/rules.mk
new file mode 100644
index 0000000000..c3ddbe4252
--- /dev/null
+++ b/keyboards/linworks/fave84h/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/linworks/fave87/rules.mk b/keyboards/linworks/fave87/rules.mk
index e63f2359c8..cda82bb82a 100644
--- a/keyboards/linworks/fave87/rules.mk
+++ b/keyboards/linworks/fave87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/linworks/fave87h/config.h b/keyboards/linworks/fave87h/config.h
new file mode 100644
index 0000000000..64f6fc4cba
--- /dev/null
+++ b/keyboards/linworks/fave87h/config.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4C58 //"LX"
+#define PRODUCT_ID 0x0003 // FAve 87H
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER Lx3
+#define PRODUCT FAve 87H
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B1, B2, B3, D3, D1, D0 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B7, E6}
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+//Led configuration
+#define RGB_DI_PIN D2
+
+#define DRIVER_LED_TOTAL 127
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 140
+
+#define RGB_MATRIX_KEYPRESSES
+//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS
+ #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#endif
+#ifdef RGB_MATRIX_KEYPRESSES
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_SPLASH
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/linworks/fave87h/fave87h.c b/keyboards/linworks/fave87h/fave87h.c
new file mode 100644
index 0000000000..3bf2739f0b
--- /dev/null
+++ b/keyboards/linworks/fave87h/fave87h.c
@@ -0,0 +1,51 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "fave87h.h"
+
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 47, NO_LED, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 },
+ { 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30 },
+ { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO_LED, 0, NO_LED, NO_LED, NO_LED },
+ { 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, NO_LED, 85, NO_LED, NO_LED, 86, NO_LED },
+ { 73, 72, 71, NO_LED, NO_LED, 70, NO_LED, NO_LED, NO_LED, 69, 68, NO_LED, 67, 66, 65, 64, 63 },
+ }, {
+ // LED Index to Physical Position
+ {190, 40}, {167, 40}, {153, 40}, {139, 40}, {125, 40}, {111, 40}, {97, 40}, {83, 40}, {69, 40}, {55, 40},
+ {40, 40}, {26, 40}, {0, 41}, {5, 27}, {23, 27}, {37, 27}, {51, 27}, {65, 27}, {79, 27}, {93, 27},
+ {107, 27}, {121, 27}, {135, 27}, {149, 27}, {163, 27}, {177, 27}, {195, 27}, {216, 27}, {230, 27}, {244, 27},
+ {244, 15}, {230, 15}, {216, 15}, {191, 17}, {170, 15}, {156, 15}, {142, 15}, {128, 15}, {114, 15}, {100, 15},
+ {86, 15}, {72, 15}, {58, 15}, {44, 15}, {30, 15}, {16, 15}, {2, 15}, {2, 0}, {30, 0}, {44, 0},
+ {58, 0}, {72, 0}, {93, 0}, {107, 0}, {121, 0}, {135, 0}, {156, 0}, {170, 0}, {184, 0}, {198, 0},
+ {216, 0}, {230, 0}, {244, 0}, {244, 64}, {230, 64}, {216, 64}, {197, 64}, {179, 64}, {162, 64}, {144, 64},
+ {91, 64}, {39, 64}, {21, 64}, {4, 64}, {11, 52}, {33, 52}, {47, 52}, {62, 52}, {76, 52}, {90, 52},
+ {104, 52}, {118, 52}, {132, 52}, {146, 52}, {160, 52}, {186, 52}, {230, 52}
+ }, {
+ // LED Index to Flag
+ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+ }
+};
+#endif
diff --git a/keyboards/linworks/fave87h/fave87h.h b/keyboards/linworks/fave87h/fave87h.h
new file mode 100644
index 0000000000..748dae3ebc
--- /dev/null
+++ b/keyboards/linworks/fave87h/fave87h.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* FAve 87H Keymap Definitions */
+#define LAYOUT( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \
+ K50, K51, K52, K55, K59, K5A, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, KC_NO, K59, K5A, KC_NO, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/linworks/fave87h/info.json b/keyboards/linworks/fave87h/info.json
new file mode 100644
index 0000000000..ac82fa4d8a
--- /dev/null
+++ b/keyboards/linworks/fave87h/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Lx3 FAve 87H",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Delete", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"label":"Win", "x":11.25, "y":5.25, "w":1.25}, {"label":"Fn", "x":12.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/linworks/fave87h/keymaps/default/keymap.c b/keyboards/linworks/fave87h/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0f93bc13f0
--- /dev/null
+++ b/keyboards/linworks/fave87h/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DEL, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ )
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+}
diff --git a/keyboards/linworks/fave87h/keymaps/via/keymap.c b/keyboards/linworks/fave87h/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a64a67df47
--- /dev/null
+++ b/keyboards/linworks/fave87h/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_DEL, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ ),
+
+ [_LAYER2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+} \ No newline at end of file
diff --git a/keyboards/linworks/fave87h/keymaps/via/rules.mk b/keyboards/linworks/fave87h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/linworks/fave87h/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/linworks/fave87h/readme.md b/keyboards/linworks/fave87h/readme.md
new file mode 100644
index 0000000000..cd256bcee5
--- /dev/null
+++ b/keyboards/linworks/fave87h/readme.md
@@ -0,0 +1,22 @@
+# FAve 87H
+
+The following is the QMK Firmware for the FAve 87H Hotswap PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+* Hotswap
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make linworks/fave87h:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
diff --git a/keyboards/linworks/fave87h/rules.mk b/keyboards/linworks/fave87h/rules.mk
new file mode 100644
index 0000000000..01b02d60ca
--- /dev/null
+++ b/keyboards/linworks/fave87h/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812 \ No newline at end of file
diff --git a/keyboards/linworks/whale75/rules.mk b/keyboards/linworks/whale75/rules.mk
index 1d72891376..adad6ab5d2 100644
--- a/keyboards/linworks/whale75/rules.mk
+++ b/keyboards/linworks/whale75/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/littlealby/mute/rules.mk b/keyboards/littlealby/mute/rules.mk
index 3352704754..d8c28e194f 100644
--- a/keyboards/littlealby/mute/rules.mk
+++ b/keyboards/littlealby/mute/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lizard_trick/tenkey_plusplus/rules.mk b/keyboards/lizard_trick/tenkey_plusplus/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/lizard_trick/tenkey_plusplus/rules.mk
+++ b/keyboards/lizard_trick/tenkey_plusplus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ll3macorn/bongopad/bongopad.c b/keyboards/ll3macorn/bongopad/bongopad.c
new file mode 100644
index 0000000000..42a8a199cb
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/bongopad.c
@@ -0,0 +1,124 @@
+// Copyright 2021 Ll3macorn (@ll3macorn)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "bongopad.h"
+
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ // rest fo the code
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+// WPM-responsive animation stuff here
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 0 // below this wpm value your animation will idle
+
+ // #define PREP_FRAMES 1 // uncomment if >1
+
+# define TAP_FRAMES 2
+# define TAP_SPEED 0 // above this wpm value typing animation to triggere
+
+# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+# define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+ uint32_t anim_timer = 0;
+ uint32_t anim_sleep = 0;
+ uint8_t current_idle_frame = 0;
+ // uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
+ uint8_t current_tap_frame = 0;
+
+ // Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
+ void render_anim(void) {
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 16, 8, 8, 4, 4, 4, 8, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 100, 130, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 56, 4, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 8, 4, 2, 2, 4, 24, 96, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 194, 1, 1, 2, 2, 4, 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 96, 0, 129, 130, 130, 132, 8, 16, 32, 64, 128, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 25, 6, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 27, 3, 0, 64, 160, 34, 36, 20, 18, 18, 18, 11, 8, 8, 8, 8, 5, 5, 9, 9, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 4, 2, 2, 2, 4, 56, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 226, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 192, 193, 193, 194, 4, 8, 16, 32, 64, 128, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 13, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ }};
+ static const char PROGMEM prep[][ANIM_SIZE] = {{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 195, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ }};
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 248, 248, 248, 248, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 129, 128, 128, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 1, 2, 4, 8, 16, 32, 67, 135, 7, 1, 0, 184, 188, 190, 159, 95, 95, 79, 76, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 24, 6, 5, 152, 153, 132, 67, 124, 65, 65, 64, 64, 32, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 8, 8, 16, 16, 16, 16, 16, 17, 15, 1, 61, 124, 252, 252, 252, 252, 252, 60, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 128, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 4, 2, 1, 1, 2, 12, 48, 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 225, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 48, 48, 0, 0, 1, 225, 26, 6, 9, 49, 53, 1, 138, 124, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 196, 4, 196, 4, 196, 2, 194, 2, 194, 1, 1, 1, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 112, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 64, 160, 33, 34, 18, 17, 17, 17, 9, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 170, 255, 255, 195, 191, 127, 3, 127, 191, 195, 255, 255, 170, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 64, 64, 64, 64, 32, 32, 32, 32, 16, 16, 16, 16, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 2, 3, 122, 122, 121, 121, 121, 121, 57, 49, 2, 2, 4, 4, 8, 8, 8, 8, 8, 7, 0, 0, 0, 48, 60, 124, 124, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 7, 31, 7, 31, 7, 28, 7, 31, 7, 31, 7, 2, 2, 0, 0, 0, 0,
+ },
+ };
+
+ // assumes 1 frame prep stage
+ void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ }
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
+ // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ }
+ if (get_current_wpm() >= TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+ }
+ if (get_current_wpm() != 000) {
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+ }
+
+ render_anim();
+ oled_set_cursor(0, 0);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ return true;
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; };
+#endif
diff --git a/keyboards/ll3macorn/bongopad/bongopad.h b/keyboards/ll3macorn/bongopad/bongopad.h
new file mode 100644
index 0000000000..31fc0cc5c7
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/bongopad.h
@@ -0,0 +1,18 @@
+// Copyright 2021 Ll3macorn (@ll3macorn)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_default( \
+ K00, \
+ K10, K11, K12, \
+ K20, K21, K22, \
+ K30, K31, K32 \
+) { \
+ { K00, KC_NO, KC_NO }, \
+ { K10, K11, K12 }, \
+ { K20, K21, K22 }, \
+ { K30, K31, K32 } \
+}
+
diff --git a/keyboards/ll3macorn/bongopad/config.h b/keyboards/ll3macorn/bongopad/config.h
new file mode 100644
index 0000000000..ccbd45f461
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/config.h
@@ -0,0 +1,40 @@
+// Copyright 2021 Ll3macorn (@ll3macorn)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3728
+#define PRODUCT_ID 0x2949
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ll3macorn
+#define PRODUCT BongoPad
+
+/* bootmagic */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* rgb underglow */
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 6
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 3
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F7, D7, C6, D4 }
+#define MATRIX_COL_PINS { F4, F5, F6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* encoders */
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B3 }
+
+/* misc */
+#define LAYER_STATE_8BIT
+#define NO_ACTION_TAPPING
diff --git a/keyboards/ll3macorn/bongopad/info.json b/keyboards/ll3macorn/bongopad/info.json
new file mode 100644
index 0000000000..1431c3ca35
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Bongopad",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3macorn/bongopad",
+ "maintainer": "Ll3macorn",
+ "layouts": {
+ "LAYOUT_default": {
+ "layout": [{"x":0, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}]
+ }
+ }
+ } \ No newline at end of file
diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c b/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..807d050e1d
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2021 Ll3macorn (@ll3macorn)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum layers {
+ Layer1,
+ Layer2,
+ Layer3,
+ Layer4
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [Layer1] = LAYOUT_default(
+ KC__MUTE,
+ KC_7, KC_8, KC_9,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3),
+
+ [Layer2] = LAYOUT_default(
+ KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC),
+
+ [Layer3] = LAYOUT_default(
+ KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC),
+
+ [Layer4] = LAYOUT_default(
+ KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC)
+
+};
+
+// clang-format on
+
diff --git a/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk b/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..c715f00277
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/keymaps/default/rules.mk
@@ -0,0 +1,3 @@
+LTO_ENABLE = yes
+COMBO_ENABLE = no
+
diff --git a/keyboards/ll3macorn/bongopad/readme.md b/keyboards/ll3macorn/bongopad/readme.md
new file mode 100644
index 0000000000..d2902aae6a
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/readme.md
@@ -0,0 +1,10 @@
+# BongoPad
+
+* Keyboard Maintainer: [Ll3macorn](https://github.com/Ll3macorn)
+* Hardware Supported: Pro micro
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ll3macorn/bongopad:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ll3macorn/bongopad/rules.mk b/keyboards/ll3macorn/bongopad/rules.mk
new file mode 100644
index 0000000000..9a6b49f2c7
--- /dev/null
+++ b/keyboards/ll3macorn/bongopad/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/lm_keyboard/lm60n/rules.mk b/keyboards/lm_keyboard/lm60n/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/lm_keyboard/lm60n/rules.mk
+++ b/keyboards/lm_keyboard/lm60n/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/longnald/corin/rules.mk b/keyboards/longnald/corin/rules.mk
index a488e3dc0b..b5761555d4 100644
--- a/keyboards/longnald/corin/rules.mk
+++ b/keyboards/longnald/corin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ls_60/rules.mk b/keyboards/ls_60/rules.mk
index 8ac8fcb8be..bcc109f6d4 100644
--- a/keyboards/ls_60/rules.mk
+++ b/keyboards/ls_60/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/alexa/rules.mk b/keyboards/lucid/alexa/rules.mk
index 1d16100050..d53eb045af 100644
--- a/keyboards/lucid/alexa/rules.mk
+++ b/keyboards/lucid/alexa/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/kbd8x_hs/rules.mk b/keyboards/lucid/kbd8x_hs/rules.mk
index 916eb9fbbd..aed2d80b8b 100644
--- a/keyboards/lucid/kbd8x_hs/rules.mk
+++ b/keyboards/lucid/kbd8x_hs/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/phantom_hs/rules.mk b/keyboards/lucid/phantom_hs/rules.mk
index a49a628735..88051c08ed 100644
--- a/keyboards/lucid/phantom_hs/rules.mk
+++ b/keyboards/lucid/phantom_hs/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/phantom_solder/rules.mk b/keyboards/lucid/phantom_solder/rules.mk
index 4f87390759..67f00abb1e 100644
--- a/keyboards/lucid/phantom_solder/rules.mk
+++ b/keyboards/lucid/phantom_solder/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/scarlet/rules.mk b/keyboards/lucid/scarlet/rules.mk
index 916eb9fbbd..aed2d80b8b 100644
--- a/keyboards/lucid/scarlet/rules.mk
+++ b/keyboards/lucid/scarlet/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lw67/config.h b/keyboards/lw67/config.h
new file mode 100644
index 0000000000..3561f4a2ad
--- /dev/null
+++ b/keyboards/lw67/config.h
@@ -0,0 +1,53 @@
+/* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4C50
+#define PRODUCT_ID 0x9998
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Laneware Peripherals
+#define PRODUCT LW-67
+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { E6, B7, D0, D1, D2 }
+#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, B0, B1 }
+#define UNUSED_PINS
+
+/*ENCODER*/
+#define ENCODERS_PAD_A { F0 }
+#define ENCODERS_PAD_B { F1 }
+#define ENCODER_RESOLUTION 4
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/lw67/info.json b/keyboards/lw67/info.json
new file mode 100644
index 0000000000..6bccc7bce3
--- /dev/null
+++ b/keyboards/lw67/info.json
@@ -0,0 +1,22 @@
+{
+ "keyboard_name": "LW67",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts":{
+ "LAYOUT_ansi":{
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Mute", "x":16, "y":0.5}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Delete", "x":15.5, "y":2}, {"label":"PgUp", "x":16.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"PgDn", "x":16.5, "y":3}, {"label":"\u2191", "x":15.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4.25}, {"label":"\u2193", "x":15.25, "y":4.25}, {"label":"\u2192", "x":16.25, "y":4.25}]
+ },
+
+ "LAYOUT_ansi_splitbs": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"~", "x":13, "y":0}, {"label":"Backspace", "x":14, "y":0}, {"label":"Mute", "x":16, "y":0.5}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Delete", "x":15.5, "y":2}, {"label":"PgUp", "x":16.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"PgDn", "x":16.5, "y":3}, {"label":"\u2191", "x":15.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4.25}, {"label":"\u2193", "x":15.25, "y":4.25}, {"label":"\u2192", "x":16.25, "y":4.25}]
+ },
+
+ "LAYOUT_iso": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Mute", "x":16, "y":0.5}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Delete", "x":15.5, "y":2}, {"label":"PgUp", "x":16.5, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"PgDn", "x":16.5, "y":3}, {"label":"\u2191", "x":15.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.25, "y":4.25}, {"label":"\u2193", "x":15.25, "y":4.25}, {"label":"\u2192", "x":16.25, "y":4.25}]
+ },
+
+ "LAYOUT_iso_splitbs": {
+ "layout": [{"label":"Esc", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"\"", "x":2, "y":1.5}, {"label":"\u00a3", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"\u00ac", "x":13, "y":1.5}, {"label":"Backspace", "x":14, "y":1.5}, {"label":"Mute", "x":16, "y":2}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"@", "x":11.75, "y":3.5}, {"label":"~", "x":12.75, "y":3.5}, {"label":"Delete", "x":15.5, "y":3.5}, {"label":"PgUp", "x":16.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"PgDn", "x":16.5, "y":4.5}, {"label":"\u2191", "x":15.25, "y":4.75}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"AltGr", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"\u2190", "x":14.25, "y":5.75}, {"label":"\u2193", "x":15.25, "y":5.75}, {"label":"\u2192", "x":16.25, "y":5.75}]
+ }
+ }
+}
diff --git a/keyboards/lw67/keymaps/ansi_split_backspace/keymap.c b/keyboards/lw67/keymaps/ansi_split_backspace/keymap.c
new file mode 100644
index 0000000000..4d89777d88
--- /dev/null
+++ b/keyboards/lw67/keymaps/ansi_split_backspace/keymap.c
@@ -0,0 +1,41 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ansi_splitbs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_ansi_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_ansi_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), };
+
diff --git a/keyboards/lw67/keymaps/default/keymap.c b/keyboards/lw67/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2ab17a3590
--- /dev/null
+++ b/keyboards/lw67/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), };
+
diff --git a/keyboards/lw67/keymaps/iso/keymap.c b/keyboards/lw67/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..6e05f9b8bd
--- /dev/null
+++ b/keyboards/lw67/keymaps/iso/keymap.c
@@ -0,0 +1,41 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), };
+
diff --git a/keyboards/lw67/keymaps/iso_split_backspace/keymap.c b/keyboards/lw67/keymaps/iso_split_backspace/keymap.c
new file mode 100644
index 0000000000..a1349af56b
--- /dev/null
+++ b/keyboards/lw67/keymaps/iso_split_backspace/keymap.c
@@ -0,0 +1,41 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso_splitbs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), };
+
diff --git a/keyboards/lw67/keymaps/via/keymap.c b/keyboards/lw67/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a8f4b42084
--- /dev/null
+++ b/keyboards/lw67/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso_splitbs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRAVE, KC_BSPC, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_DEL, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT_iso_splitbs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), };
diff --git a/keyboards/lw67/keymaps/via/rules.mk b/keyboards/lw67/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/lw67/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/lw67/lw67.c b/keyboards/lw67/lw67.c
new file mode 100644
index 0000000000..87eaa1671e
--- /dev/null
+++ b/keyboards/lw67/lw67.c
@@ -0,0 +1,30 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "lw67.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) return false;
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
+
diff --git a/keyboards/lw67/lw67.h b/keyboards/lw67/lw67.h
new file mode 100644
index 0000000000..fba187d078
--- /dev/null
+++ b/keyboards/lw67/lw67.h
@@ -0,0 +1,131 @@
+ /* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│ 013 │ ┌───┐
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ │015│
+ * │ 100 │101│102│103│104│105│106│107│108│109│110│111│112│ 113 │ └───┘
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌───┬───┐
+ * │ 200 │201│202│203│204│205│206│207│208│209│210│211│ 213 │ │214│215│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┼───┤
+ * │ 300 │302│303│304│305│306│307│308│309│310│311│ 312 │┌───┐│314│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘│313│└───┘
+ * │ 400│ 401│ 402│ 403 │ 404│ 405│ 406│ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │407│408│409│
+ * └───┴───┴───┘
+ */
+
+#define LAYOUT_ansi( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│013│014│ ┌───┐
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │015│
+ * │ 100 │101│102│103│104│105│106│107│108│109│110│111│112│ 113 │ └───┘
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌───┬───┐
+ * │ 200 │201│202│203│204│205│206│207│208│209│210│211│ 213 │ │214│215│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┼───┤
+ * │ 300 │302│303│304│305│306│307│308│309│310│311│ 312 │┌───┐│314│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘│313│└───┘
+ * │ 400│ 401│ 402│ 403 │ 404│ 405│ 406│ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │407│408│409│
+ * └───┴───┴───┘
+ */
+
+#define LAYOUT_ansi_splitbs( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, K215, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, KC_NO, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214, K215 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│ 013 │ ┌───┐
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ │015│
+ * │ 100 │101│102│103│104│105│106│107│108│109│110│111│112│ │ └───┘
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ 213│ ┌───┬───┐
+ * │ 200 │201│202│203│204│205│206│207│208│209│210│211│212│ │ │214│215│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ └───┼───┤
+ * │ 300│301│302│303│304│305│306│307│308│309│310│311│ 312 │┌───┐│314│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘│313│└───┘
+ * │ 400│ 401│ 402│ 403 │ 404│ 405│ 406│ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │407│408│409│
+ * └───┴───┴───┘
+ */
+
+#define LAYOUT_iso( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, KC_NO, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+/* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │000│001│002│003│004│005│006│007│008│009│010│011│012│013│014│ ┌───┐
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │015│
+ * │ 100 │101│102│103│104│105│106│107│108│109│110│111│112│ │ └───┘
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ 213│ ┌───┬───┐
+ * │ 200 │201│202│203│204│205│206│207│208│209│210│211│212│ │ │214│215│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ └───┼───┤
+ * │ 300│301│302│303│304│305│306│307│308│309│310│311│ 312 │┌───┐│314│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘│313│└───┘
+ * │ 400│ 401│ 402│ 403 │ 404│ 405│ 406│ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │407│408│409│
+ * └───┴───┴───┘
+ */
+
+#define LAYOUT_iso_splitbs( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, KC_NO, KC_NO, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/lw67/readme.md b/keyboards/lw67/readme.md
new file mode 100644
index 0000000000..dacd09b5e0
--- /dev/null
+++ b/keyboards/lw67/readme.md
@@ -0,0 +1,22 @@
+# LW-67
+
+![LW67](https://i.imgur.com/mcM1TTi.jpg)
+
+A 65% Keyboard with a LHS rotary encoder, made and sold by Laneware Peripherals.
+
+* Keyboard Maintainer: [Laneware Peripherals](https://github.com/laneware)
+* Hardware Supported: Macro-1
+* Hardware Availability: [Laneware Peripherals](https://lanewareperipherals.com/),
+
+Make example for this keyboard (after setting up your build environment):
+
+ make lw67:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the encoder and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/lw67/rules.mk b/keyboards/lw67/rules.mk
new file mode 100644
index 0000000000..5f58c5684b
--- /dev/null
+++ b/keyboards/lw67/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
diff --git a/keyboards/lyra/keymaps/default/rules.mk b/keyboards/lyra/keymaps/default/rules.mk
deleted file mode 100644
index c02c449839..0000000000
--- a/keyboards/lyra/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-CONSOLE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/lyra/keymaps/via/rules.mk b/keyboards/lyra/keymaps/via/rules.mk
deleted file mode 100644
index 5e92d952f1..0000000000
--- a/keyboards/lyra/keymaps/via/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-CONSOLE_ENABLE = yes
-VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/lyra/lyra.c b/keyboards/lyra/lyra.c
deleted file mode 100644
index f479cbfd7b..0000000000
--- a/keyboards/lyra/lyra.c
+++ /dev/null
@@ -1,93 +0,0 @@
- /* Copyright 2021 Domanic Calleja
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "lyra.h"
-
-#ifdef OLED_DRIVER_ENABLE
-
-// 'lyralogooled', 32x128px
-oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- if (is_keyboard_master()) {
- return OLED_ROTATION_270;
- }
- return rotation;
-}
-
-bool oled_task_kb(void) {
- if (!oled_task_user()) {
- return false;
- }
- if (is_keyboard_master()) {
- oled_write_P(PSTR(" "), false);
-# ifdef WPM_ENABLE
- uint8_t n = get_current_wpm();
- char wpm_counter[4];
- wpm_counter[3] = '\0';
- wpm_counter[2] = '0' + n % 10;
- wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- wpm_counter[0] = n / 10 ? '0' + n / 10 : ' ';
- oled_write(wpm_counter, false);
- oled_write_ln_P(PSTR(" WPM"), false);
-# else
- oled_advance_page(true);
-# endif
- oled_advance_page(true);
- led_t led_usb_state = host_keyboard_led_state();
- oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
- oled_advance_page(true); oled_advance_page(true);
- oled_write_ln_P(PSTR("Lyra"), false);
- oled_write_ln_P(PSTR("v1.1"), false);
- oled_write_ln_P(PSTR("by"), false);
- oled_write_P(PSTR("Dom C"), false);
- } else {
- static const char PROGMEM QMK_logo[] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x0c, 0x04, 0x06, 0x02,
- 0x02, 0x82, 0xc0, 0xf0, 0x38, 0x8c, 0xf2, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x18, 0x30, 0x20, 0xa0, 0xe0, 0xf8,
- 0x3e, 0x1f, 0x13, 0x0c, 0x06, 0xc3, 0xf0, 0x60, 0x00, 0x80, 0xf0, 0xe0, 0x00, 0x38, 0xfe, 0x67,
- 0x7b, 0xa5, 0xf3, 0xf0, 0x70, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x30, 0x20, 0x00, 0x00,
- 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0x3e, 0x61, 0xdf,
- 0xde, 0xde, 0x01, 0xff, 0xfe, 0x00, 0x80, 0x80, 0x80, 0xff, 0xc0, 0xdf, 0xdf, 0xdf, 0xe0, 0xff,
- 0x7f, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0xfe, 0xc1, 0xfd, 0x7d, 0xc3, 0xfd, 0x7d,
- 0xc3, 0xfe, 0xfc, 0x30, 0xea, 0xd5, 0xd5, 0xd5, 0xc3, 0xff, 0xfe, 0x7e, 0xc1, 0xfd, 0x7d, 0x7d,
- 0xc3, 0xfe, 0xfc, 0x3f, 0xe1, 0xff, 0xff, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xf7, 0xe6, 0x00, 0x00,
- 0x00, 0x78, 0xc4, 0xc2, 0x82, 0x82, 0x82, 0x82, 0xc2, 0xe4, 0x74, 0x7c, 0x3f, 0x1f, 0x31, 0x60,
- 0xe0, 0xc0, 0x80, 0x9c, 0xbf, 0xe7, 0xf1, 0x78, 0x3e, 0x1f, 0x0b, 0x04, 0x02, 0x01, 0x00, 0x1c,
- 0x3e, 0x2f, 0x13, 0x10, 0x0c, 0x1e, 0x3f, 0x2f, 0x13, 0x09, 0x1c, 0x3e, 0x2f, 0x10, 0x08, 0x06,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
- 0x06, 0x06, 0x07, 0x03, 0x7f, 0xc1, 0xbe, 0xbe, 0xbe, 0xa6, 0xe7, 0xc7, 0x60, 0xd4, 0xaa, 0xaa,
- 0xaa, 0x86, 0xfe, 0xfc, 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0xc4, 0xaa, 0xaa, 0xaa,
- 0xa6, 0xfc, 0xf8, 0xff, 0x02, 0xff, 0xff, 0x60, 0xd4, 0xaa, 0xaa, 0xaa, 0x86, 0xfe, 0xfc, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x24,
- 0x32, 0x1b, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x3c, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x30, 0x38,
- 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x07, 0x0d, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- };
- oled_write_raw_P(QMK_logo, sizeof(QMK_logo));
- }
- return false;
-}
-#endif
diff --git a/keyboards/lyra/lyra.h b/keyboards/lyra/lyra.h
deleted file mode 100644
index ba0c8344fe..0000000000
--- a/keyboards/lyra/lyra.h
+++ /dev/null
@@ -1,23 +0,0 @@
- /* Copyright 2021 Domanic Calleja
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#include "quantum.h"
-
-
-#ifdef KEYBOARD_lyra_rev1
- #include "rev1.h"
-#endif
diff --git a/keyboards/lyra/readme.md b/keyboards/lyra/readme.md
deleted file mode 100644
index 575afa3f03..0000000000
--- a/keyboards/lyra/readme.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Lyra Keyboard
-By Domanic Calleja - https://github.com/Malevolti
-
-Lyra is 7x5 keys column-staggered split keyboard. Based on Sofle, Lily58, Corne and Helix keyboards.
-There is an open source PCB available via https://github.com/Malevolti/Lyra
-Instructions for handwiring and hand-wire specific case STLs are available for home 3d printing
-
-Make example for this keyboard (after setting up your build environment):
-
- make lyra:default
-
-Flashing example for this keyboard:
-
- make lyra:default:flash
-
-Press reset button on the keyboard when asked.
-
-Disconnect the first half, connect the second one and repeat the process.
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/lyra/rev1/config.h b/keyboards/lyra/rev1/config.h
deleted file mode 100644
index 3dc9af28aa..0000000000
--- a/keyboards/lyra/rev1/config.h
+++ /dev/null
@@ -1,50 +0,0 @@
- /* Copyright 2021 Domanic Calleja
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4443 //DC
-#define PRODUCT_ID 0x4C43 //LC
-#define DEVICE_VER 0x3031 //01
-#define MANUFACTURER Dom
-#define PRODUCT Lyra
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 10
-#define MATRIX_COLS 7
-
-// wiring of each half
-#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
-#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 }
-
-#define DIODE_DIRECTION COL2ROW
-
-#define TAPPING_TERM 100
-
-/* define if matrix has ghost */
-//#define MATRIX_HAS_GHOST
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
-/* communication between sides */
-#define USE_SERIAL
-#define SERIAL_USE_MULTI_TRANSACTION
-#define SOFT_SERIAL_PIN D2
-
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
diff --git a/keyboards/lyra/rev1/rules.mk b/keyboards/lyra/rev1/rules.mk
deleted file mode 100644
index fe98743e67..0000000000
--- a/keyboards/lyra/rev1/rules.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = caterina
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
-SPLIT_KEYBOARD = yes
-OLED_ENABLE = yes
-WPM_ENABLE = yes
-LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/lz/erghost/config.h b/keyboards/lz/erghost/config.h
new file mode 100644
index 0000000000..74867baf7f
--- /dev/null
+++ b/keyboards/lz/erghost/config.h
@@ -0,0 +1,92 @@
+/*
+Copyright 2021 Mechlovin' Studio
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6C7A
+#define PRODUCT_ID 0x0002
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mechlovin Studio
+#define PRODUCT erGhost
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+#define USB_POLLING_INTERVAL_MS 1
+
+
+#define LED_NUM_LOCK_PIN D7
+#define LED_CAPS_LOCK_PIN D6
+#define LED_SCROLL_LOCK_PIN B4
+#define LED_PIN_ON_STATE 1
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_LEVELS 3
+#define BACKLIGHT_BREATHING
+
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN E2
+#define RGBLED_NUM 28
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+// #define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+# define RGBLIGHT_EFFECT_STATIC_LIGHT
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/lz/erghost/erghost.c b/keyboards/lz/erghost/erghost.c
new file mode 100644
index 0000000000..7ea321e12e
--- /dev/null
+++ b/keyboards/lz/erghost/erghost.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "erghost.h"
diff --git a/keyboards/lz/erghost/erghost.h b/keyboards/lz/erghost/erghost.h
new file mode 100644
index 0000000000..5f5244340c
--- /dev/null
+++ b/keyboards/lz/erghost/erghost.h
@@ -0,0 +1,67 @@
+/* Copyright 2021 Mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K57, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K54, K55, K56, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+#define LAYOUT_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K43, K44, K45, K46, K57, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K54, K55, K56, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+#define LAYOUT_iso( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K57, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K54, K55, K56, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/lz/erghost/info.json b/keyboards/lz/erghost/info.json
new file mode 100644
index 0000000000..1a5c9abf64
--- /dev/null
+++ b/keyboards/lz/erghost/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Erghost",
+ "url": "",
+ "maintainer": "Mechlovin' Studio",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6, "y":0}, {"label":"0,6", "x":8.75, "y":0}, {"label":"0,7", "x":9.75, "y":0}, {"label":"0,8", "x":10.75, "y":0}, {"label":"0,9", "x":11.75, "y":0}, {"label":"0,10", "x":12.75, "y":0}, {"label":"0,11", "x":13.75, "y":0}, {"label":"0,12", "x":14.75, "y":0}, {"label":"0,14", "x":17, "y":0}, {"label":"0,15", "x":18, "y":0}, {"label":"0,16", "x":19, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":8.75, "y":1.25}, {"label":"1,8", "x":9.75, "y":1.25}, {"label":"1,9", "x":10.75, "y":1.25}, {"label":"1,10", "x":11.75, "y":1.25}, {"label":"1,11", "x":12.75, "y":1.25}, {"label":"1,12", "x":13.75, "y":1.25}, {"label":"1,13", "x":14.75, "y":1.25}, {"label":"0,13", "x":15.75, "y":1.25}, {"label":"1,14", "x":17, "y":1.25}, {"label":"1,15", "x":18, "y":1.25}, {"label":"1,16", "x":19, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":8.25, "y":2.25}, {"label":"2,7", "x":9.25, "y":2.25}, {"label":"2,8", "x":10.25, "y":2.25}, {"label":"2,9", "x":11.25, "y":2.25}, {"label":"2,10", "x":12.25, "y":2.25}, {"label":"2,11", "x":13.25, "y":2.25}, {"label":"2,12", "x":14.25, "y":2.25}, {"label":"2,13", "x":15.25, "y":2.25, "w":1.5}, {"label":"2,14", "x":17, "y":2.25}, {"label":"2,15", "x":18, "y":2.25}, {"label":"2,16", "x":19, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":8.5, "y":3.25}, {"label":"3,7", "x":9.5, "y":3.25}, {"label":"3,8", "x":10.5, "y":3.25}, {"label":"3,9", "x":11.5, "y":3.25}, {"label":"3,10", "x":12.5, "y":3.25}, {"label":"3,11", "x":13.5, "y":3.25}, {"label":"3,13", "x":14.5, "y":3.25, "w":1.25}, {"label":"3,12", "x":15.75, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"5,7", "x":8, "y":4.25}, {"label":"4,7", "x":9, "y":4.25}, {"label":"4,8", "x":10, "y":4.25}, {"label":"4,9", "x":11, "y":4.25}, {"label":"4,10", "x":12, "y":4.25}, {"label":"4,11", "x":13, "y":4.25}, {"label":"4,12", "x":14, "y":4.25, "w":1.75}, {"label":"4,13", "x":15.75, "y":4.25}, {"label":"4,15", "x":18, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,2", "x":3.75, "y":5.25, "w":1.25}, {"label":"5,6", "x":5, "y":5.25, "w":1.25}, {"x":6.25, "y":5.25}, {"label":"5,10", "x":8, "y":5.25, "w":1.75}, {"x":9.75, "y":5.25}, {"label":"5,11", "x":10.75, "y":5.25, "w":1.25}, {"label":"5,12", "x":12, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.25, "y":5.25, "w":1.25}, {"label":"5,13", "x":14.5, "y":5.25, "w":1.25}, {"label":"5,14", "x":17, "y":5.25}, {"label":"5,15", "x":18, "y":5.25}, {"label":"5,16", "x":19, "y":5.25}]
+ },
+ "LAYOUT_ansi": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6, "y":0}, {"label":"0,6", "x":8.75, "y":0}, {"label":"0,7", "x":9.75, "y":0}, {"label":"0,8", "x":10.75, "y":0}, {"label":"0,9", "x":11.75, "y":0}, {"label":"0,10", "x":12.75, "y":0}, {"label":"0,11", "x":13.75, "y":0}, {"label":"0,12", "x":14.75, "y":0}, {"label":"0,14", "x":17, "y":0}, {"label":"0,15", "x":18, "y":0}, {"label":"0,16", "x":19, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":8.75, "y":1.25}, {"label":"1,8", "x":9.75, "y":1.25}, {"label":"1,9", "x":10.75, "y":1.25}, {"label":"1,10", "x":11.75, "y":1.25}, {"label":"1,11", "x":12.75, "y":1.25}, {"label":"1,12", "x":13.75, "y":1.25}, {"label":"1,13", "x":14.75, "y":1.25, "w":2}, {"label":"1,14", "x":17, "y":1.25}, {"label":"1,15", "x":18, "y":1.25}, {"label":"1,16", "x":19, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":8.25, "y":2.25}, {"label":"2,7", "x":9.25, "y":2.25}, {"label":"2,8", "x":10.25, "y":2.25}, {"label":"2,9", "x":11.25, "y":2.25}, {"label":"2,10", "x":12.25, "y":2.25}, {"label":"2,11", "x":13.25, "y":2.25}, {"label":"2,12", "x":14.25, "y":2.25}, {"label":"2,13", "x":15.25, "y":2.25, "w":1.5}, {"label":"2,14", "x":17, "y":2.25}, {"label":"2,15", "x":18, "y":2.25}, {"label":"2,16", "x":19, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":8.5, "y":3.25}, {"label":"3,7", "x":9.5, "y":3.25}, {"label":"3,8", "x":10.5, "y":3.25}, {"label":"3,9", "x":11.5, "y":3.25}, {"label":"3,10", "x":12.5, "y":3.25}, {"label":"3,11", "x":13.5, "y":3.25}, {"label":"3,13", "x":14.5, "y":3.25, "w":2.25}, {"label":"4,0", "x":0, "y":4.25, "w":2.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"5,7", "x":8, "y":4.25}, {"label":"4,7", "x":9, "y":4.25}, {"label":"4,8", "x":10, "y":4.25}, {"label":"4,9", "x":11, "y":4.25}, {"label":"4,10", "x":12, "y":4.25}, {"label":"4,11", "x":13, "y":4.25}, {"label":"4,13", "x":14, "y":4.25, "w":2.75}, {"label":"4,15", "x":18, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,2", "x":3.75, "y":5.25, "w":1.25}, {"label":"5,6", "x":5, "y":5.25, "w":1.25}, {"x":6.25, "y":5.25}, {"label":"5,10", "x":8, "y":5.25, "w":1.75}, {"x":9.75, "y":5.25}, {"label":"5,11", "x":10.75, "y":5.25, "w":1.25}, {"label":"5,12", "x":12, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.25, "y":5.25, "w":1.25}, {"label":"5,13", "x":14.5, "y":5.25, "w":1.25}, {"label":"5,14", "x":17, "y":5.25}, {"label":"5,15", "x":18, "y":5.25}, {"label":"5,16", "x":19, "y":5.25}]
+ },
+ "LAYOUT_iso": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"0,2", "x":3, "y":0}, {"label":"0,3", "x":4, "y":0}, {"label":"0,4", "x":5, "y":0}, {"label":"0,5", "x":6, "y":0}, {"label":"0,6", "x":8.75, "y":0}, {"label":"0,7", "x":9.75, "y":0}, {"label":"0,8", "x":10.75, "y":0}, {"label":"0,9", "x":11.75, "y":0}, {"label":"0,10", "x":12.75, "y":0}, {"label":"0,11", "x":13.75, "y":0}, {"label":"0,12", "x":14.75, "y":0}, {"label":"0,14", "x":17, "y":0}, {"label":"0,15", "x":18, "y":0}, {"label":"0,16", "x":19, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1, "y":1.25}, {"label":"1,2", "x":2, "y":1.25}, {"label":"1,3", "x":3, "y":1.25}, {"label":"1,4", "x":4, "y":1.25}, {"label":"1,5", "x":5, "y":1.25}, {"label":"1,6", "x":6, "y":1.25}, {"label":"1,7", "x":8.75, "y":1.25}, {"label":"1,8", "x":9.75, "y":1.25}, {"label":"1,9", "x":10.75, "y":1.25}, {"label":"1,10", "x":11.75, "y":1.25}, {"label":"1,11", "x":12.75, "y":1.25}, {"label":"1,12", "x":13.75, "y":1.25}, {"label":"1,13", "x":14.75, "y":1.25, "w":2}, {"label":"1,14", "x":17, "y":1.25}, {"label":"1,15", "x":18, "y":1.25}, {"label":"1,16", "x":19, "y":1.25}, {"label":"2,0", "x":0, "y":2.25, "w":1.5}, {"label":"2,1", "x":1.5, "y":2.25}, {"label":"2,2", "x":2.5, "y":2.25}, {"label":"2,3", "x":3.5, "y":2.25}, {"label":"2,4", "x":4.5, "y":2.25}, {"label":"2,5", "x":5.5, "y":2.25}, {"label":"2,6", "x":8.25, "y":2.25}, {"label":"2,7", "x":9.25, "y":2.25}, {"label":"2,8", "x":10.25, "y":2.25}, {"label":"2,9", "x":11.25, "y":2.25}, {"label":"2,10", "x":12.25, "y":2.25}, {"label":"2,11", "x":13.25, "y":2.25}, {"label":"2,12", "x":14.25, "y":2.25}, {"label":"3,13", "x":15.5, "y":2.25, "w":1.25, "h":2}, {"label":"2,14", "x":17, "y":2.25}, {"label":"2,15", "x":18, "y":2.25}, {"label":"2,16", "x":19, "y":2.25}, {"label":"3,0", "x":0, "y":3.25, "w":1.75}, {"label":"3,1", "x":1.75, "y":3.25}, {"label":"3,2", "x":2.75, "y":3.25}, {"label":"3,3", "x":3.75, "y":3.25}, {"label":"3,4", "x":4.75, "y":3.25}, {"label":"3,5", "x":5.75, "y":3.25}, {"label":"3,6", "x":8.5, "y":3.25}, {"label":"3,7", "x":9.5, "y":3.25}, {"label":"3,8", "x":10.5, "y":3.25}, {"label":"3,9", "x":11.5, "y":3.25}, {"label":"3,10", "x":12.5, "y":3.25}, {"label":"3,11", "x":13.5, "y":3.25}, {"label":"3,12", "x":14.5, "y":3.25}, {"label":"4,0", "x":0, "y":4.25, "w":1.25}, {"label":"4,1", "x":1.25, "y":4.25}, {"label":"4,2", "x":2.25, "y":4.25}, {"label":"4,3", "x":3.25, "y":4.25}, {"label":"4,4", "x":4.25, "y":4.25}, {"label":"4,5", "x":5.25, "y":4.25}, {"label":"4,6", "x":6.25, "y":4.25}, {"label":"5,7", "x":8, "y":4.25}, {"label":"4,7", "x":9, "y":4.25}, {"label":"4,8", "x":10, "y":4.25}, {"label":"4,9", "x":11, "y":4.25}, {"label":"4,10", "x":12, "y":4.25}, {"label":"4,11", "x":13, "y":4.25}, {"label":"4,12", "x":14, "y":4.25, "w":1.75}, {"label":"4,13", "x":15.75, "y":4.25}, {"label":"4,15", "x":18, "y":4.25}, {"label":"5,0", "x":0, "y":5.25, "w":1.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.25}, {"label":"5,2", "x":3.75, "y":5.25, "w":1.25}, {"label":"5,6", "x":5, "y":5.25, "w":1.25}, {"x":6.25, "y":5.25}, {"label":"5,10", "x":8, "y":5.25, "w":1.75}, {"x":9.75, "y":5.25}, {"label":"5,11", "x":10.75, "y":5.25, "w":1.25}, {"label":"5,12", "x":12, "y":5.25, "w":1.25}, {"label":"5,13", "x":13.25, "y":5.25, "w":1.25}, {"label":"5,13", "x":14.5, "y":5.25, "w":1.25}, {"label":"5,14", "x":17, "y":5.25}, {"label":"5,15", "x":18, "y":5.25}, {"label":"5,16", "x":19, "y":5.25}] }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/lz/erghost/keymaps/default/keymap.c b/keyboards/lz/erghost/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d19e909ce6
--- /dev/null
+++ b/keyboards/lz/erghost/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2021 Mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, MO(1), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
diff --git a/keyboards/lz/erghost/keymaps/default/readme.md b/keyboards/lz/erghost/keymaps/default/readme.md
new file mode 100644
index 0000000000..be484dbb0e
--- /dev/null
+++ b/keyboards/lz/erghost/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for ERghost
diff --git a/keyboards/lz/erghost/keymaps/via/keymap.c b/keyboards/lz/erghost/keymaps/via/keymap.c
new file mode 100644
index 0000000000..eb8bac8eb5
--- /dev/null
+++ b/keyboards/lz/erghost/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 Mechlovin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, MO(2), KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LGUI, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/lz/erghost/keymaps/via/readme.md b/keyboards/lz/erghost/keymaps/via/readme.md
new file mode 100644
index 0000000000..abafa4946f
--- /dev/null
+++ b/keyboards/lz/erghost/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for erGhost
diff --git a/keyboards/lz/erghost/keymaps/via/rules.mk b/keyboards/lz/erghost/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/lz/erghost/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/lz/erghost/matrix.c b/keyboards/lz/erghost/matrix.c
new file mode 100644
index 0000000000..6b7d091cb7
--- /dev/null
+++ b/keyboards/lz/erghost/matrix.c
@@ -0,0 +1,344 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+Copyright 2019 Evy Dekkers
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "matrix.h"
+#include "gpio.h"
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+
+/* Cols 0 - 16
+ * These columns use two 74HC138 3 to 8 bit demultiplexer. B0, F1 is the enable pin, must be set high (1) to use it.
+ *
+ * col / pin: PB5 PB7 PF0 PB0 PF1 PE6
+ * 0: 0 ── 0 ── 0 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 1: 0 ── 0 ── 1 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 2: 0 ── 1 ── 0 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 3: 0 ── 1 ── 1 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 4: 1 ── 0 ── 0 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 5: 1 ── 0 ── 1 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 6: 1 ── 1 ── 0 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 7: 1 ── 1 ── 1 1 ── 0 0
+ * ────────────────────────────────────────────
+ * 8: 0 ── 0 ── 0 0 ── 1 0
+ * ────────────────────────────────────────────
+ * 9: 0 ── 0 ── 1 0 ── 1 0
+ * ────────────────────────────────────────────
+ *10: 0 ── 1 ── 0 0 ── 1 0
+ * ────────────────────────────────────────────
+ *11: 0 ── 1 ── 1 0 ── 1 0
+ * ────────────────────────────────────────────
+ *12: 1 ── 0 ── 0 0 ── 1 0
+ * ────────────────────────────────────────────
+ *13: 1 ── 0 ── 1 0 ── 1 0
+ * ────────────────────────────────────────────
+ *14: 1 ── 1 ── 1 0 ── 1 0
+ * ────────────────────────────────────────────
+ *15: 1 ── 1 ── 0 0 ── 1 0
+ * ────────────────────────────────────────────
+ *16: 0 ── 0 ── 0 0 ── 0 1
+ *
+ */
+static void select_col(uint8_t col) {
+ switch (col) {
+ case 0:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinHigh(B0);
+ break;
+ case 1:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinHigh(B0);
+ break;
+ case 2:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinHigh(B0);
+ break;
+ case 3:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinHigh(B0);
+ break;
+ case 4:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinHigh(B0);
+ break;
+ case 5:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinHigh(B0);
+ break;
+ case 6:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinHigh(B0);
+ break;
+ case 7:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinHigh(B0);
+ break;
+ case 8:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinHigh(F1);
+ break;
+ case 9:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinHigh(F1);
+ break;
+ case 10:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinHigh(F1);
+ break;
+ case 11:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinHigh(F1);
+ break;
+ case 12:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinHigh(F1);
+ break;
+ case 13:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinHigh(F1);
+ break;
+ case 14:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinHigh(F1);
+ break;
+ case 15:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinHigh(F1);
+ break;
+ case 16:
+ writePinLow(E6);
+ break;
+ }
+}
+
+static void unselect_col(uint8_t col) {
+ switch (col) {
+ case 0:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinLow(B0);
+ break;
+ case 1:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinLow(B0);
+ break;
+ case 2:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinLow(B0);
+ break;
+ case 3:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinLow(B0);
+ break;
+ case 4:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinLow(B0);
+ break;
+ case 5:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinLow(B0);
+ break;
+ case 6:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinLow(B0);
+ break;
+ case 7:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinLow(B0);
+ break;
+ case 8:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinLow(F1);
+ break;
+ case 9:
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinLow(F1);
+ break;
+ case 10:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinLow(F1);
+ break;
+ case 11:
+ writePinHigh(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinLow(F1);
+ break;
+ case 12:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+ writePinLow(F1);
+ break;
+ case 13:
+ writePinLow(B5);
+ writePinHigh(B7);
+ writePinLow(F0);
+ writePinLow(F1);
+ break;
+ case 14:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinLow(F0);
+ writePinLow(F1);
+ break;
+ case 15:
+ writePinLow(B5);
+ writePinLow(B7);
+ writePinHigh(F0);
+ writePinLow(F1);
+ break;
+ case 16:
+ writePinHigh(E6);
+ break;
+ }
+}
+
+static void unselect_cols(void) {
+ //Native
+ writePinHigh(E6);
+
+ //Demultiplexer
+ writePinLow(B0);
+ writePinLow(F1);
+ writePinHigh(B5);
+ writePinHigh(B7);
+ writePinHigh(F0);
+}
+
+static void init_pins(void) {
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ setPinInputHigh(row_pins[x]);
+ }
+ setPinOutput(B5);
+ setPinOutput(B7);
+ setPinOutput(F0);
+ setPinOutput(B0);
+ setPinOutput(F1);
+ setPinOutput(E6);
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
+ bool matrix_changed = false;
+
+ // Select col and wait for col selecton to stabilize
+ select_col(current_col);
+ matrix_io_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
+ // Store last value of row prior to reading
+ matrix_row_t last_row_value = current_matrix[row_index];
+
+ // Check row pin state
+ if (readPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
+ }
+
+ // Determine if the matrix changed state
+ if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
+ matrix_changed = true;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+
+ return matrix_changed;
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
+
+ // Set col, read rows
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+ changed |= read_rows_on_col(current_matrix, current_col);
+ }
+
+ return changed;
+}
+
diff --git a/keyboards/lz/erghost/readme.md b/keyboards/lz/erghost/readme.md
new file mode 100644
index 0000000000..8a48d912d0
--- /dev/null
+++ b/keyboards/lz/erghost/readme.md
@@ -0,0 +1,27 @@
+# erGhost
+
+![erGhost](https://i.imgur.com/7cUHEXTl.jpeg)
+
+LZ erGhost PCB
+
+* Keyboard Maintainer: [Mechlovin](https://github.com/mechlovin)
+* Hardware Supported: erGhost PCB, Atmega32u4
+* Hardware Availability: [GB](https://geekhack.org/index.php?topic=115100.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make lz/erghost:default
+
+Flashing example for this keyboard:
+
+ make lz/erghost:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Physical reset button**: Press the button on the back of the PCB \ No newline at end of file
diff --git a/keyboards/lz/erghost/rules.mk b/keyboards/lz/erghost/rules.mk
new file mode 100644
index 0000000000..a10d80e257
--- /dev/null
+++ b/keyboards/lz/erghost/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c
diff --git a/keyboards/m10a/rules.mk b/keyboards/m10a/rules.mk
index fb9a3a4b2a..1d0c9335df 100644
--- a/keyboards/m10a/rules.mk
+++ b/keyboards/m10a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/m3n3van/keymaps/via/keymap.c b/keyboards/m3n3van/keymaps/via/keymap.c
index 5dcb23b1cf..1b01b10adb 100644
--- a/keyboards/m3n3van/keymaps/via/keymap.c
+++ b/keyboards/m3n3van/keymaps/via/keymap.c
@@ -18,32 +18,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_encoder( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MUTE, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LALT, KC_LGUI, LT(2, KC_SPC), LT(1, KC_SPC), KC_RGUI, KC_RALT, KC_RCTL \
+ [0] = LAYOUT_encoder(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, LT(2, KC_SPC), LT(1, KC_SPC), KC_RGUI, KC_RALT, KC_RCTL
),
- [1] = LAYOUT_encoder( \
- KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ [1] = LAYOUT_encoder(
+ KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_QUOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_SLSH, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [2] = LAYOUT_encoder( \
- KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ [2] = LAYOUT_encoder(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [3] = LAYOUT_encoder( \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ [3] = LAYOUT_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/m3n3van/rules.mk b/keyboards/m3n3van/rules.mk
index 698cce9fb1..5f58c5684b 100644
--- a/keyboards/m3n3van/rules.mk
+++ b/keyboards/m3n3van/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/m65/config.h b/keyboards/m65/config.h
deleted file mode 100644
index 49db1720a7..0000000000
--- a/keyboards/m65/config.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "config_common.h"
-
-#define VENDOR_ID 0xBABA
-#define MANUFACTURER Alin Elena
-#define PRODUCT m65
-
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 13
-
-#define DIODE_DIRECTION COL2ROW
-#define DEBOUNCE 5
-
-#define LOCKING_SUPPORT_ENABLE
-#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/m65/info.json b/keyboards/m65/info.json
deleted file mode 100644
index 966a949466..0000000000
--- a/keyboards/m65/info.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
- "keyboard_name": "M65",
- "keyboard_folder": "m65",
- "url": "https://alin.elena.space/blog/keeblego/",
- "maintainer": "alinelena",
- "layouts": {
- "LAYOUT_ortho_5x13": {
- "layout": [
- {"x": 0, "y": 0},
- {"x": 1, "y": 0},
- {"x": 2, "y": 0},
- {"x": 3, "y": 0},
- {"x": 4, "y": 0},
- {"x": 5, "y": 0},
- {"x": 6, "y": 0},
- {"x": 7, "y": 0},
- {"x": 8, "y": 0},
- {"x": 9, "y": 0},
- {"x": 10, "y": 0},
- {"x": 11, "y": 0},
- {"x": 12, "y": 0},
-
- {"x": 0, "y": 1},
- {"x": 1, "y": 1},
- {"x": 2, "y": 1},
- {"x": 3, "y": 1},
- {"x": 4, "y": 1},
- {"x": 5, "y": 1},
- {"x": 6, "y": 1},
- {"x": 7, "y": 1},
- {"x": 8, "y": 1},
- {"x": 9, "y": 1},
- {"x": 10, "y": 1},
- {"x": 11, "y": 1},
- {"x": 12, "y": 1},
-
- {"x": 0, "y": 2},
- {"x": 1, "y": 2},
- {"x": 2, "y": 2},
- {"x": 3, "y": 2},
- {"x": 4, "y": 2},
- {"x": 5, "y": 2},
- {"x": 6, "y": 2},
- {"x": 7, "y": 2},
- {"x": 8, "y": 2},
- {"x": 9, "y": 2},
- {"x": 10, "y": 2},
- {"x": 11, "y": 2},
- {"x": 12, "y": 2},
-
- {"x": 0, "y": 3},
- {"x": 1, "y": 3},
- {"x": 2, "y": 3},
- {"x": 3, "y": 3},
- {"x": 4, "y": 3},
- {"x": 5, "y": 3},
- {"x": 6, "y": 3},
- {"x": 7, "y": 3},
- {"x": 8, "y": 3},
- {"x": 9, "y": 3},
- {"x": 10, "y": 3},
- {"x": 11, "y": 3},
- {"x": 12, "y": 3},
-
- {"x": 0, "y": 4},
- {"x": 1, "y": 4},
- {"x": 2, "y": 4},
- {"x": 3, "y": 4},
- {"x": 4, "y": 4},
- {"x": 5, "y": 4},
- {"x": 6, "y": 4},
- {"x": 7, "y": 4},
- {"x": 8, "y": 4},
- {"x": 9, "y": 4},
- {"x": 10, "y": 4},
- {"x": 11, "y": 4}
- {"x": 12, "y": 4}
- ]
- }
- }
-}
diff --git a/keyboards/m65/keymaps/default/config.h b/keyboards/m65/keymaps/default/config.h
deleted file mode 100644
index aabd6a2be6..0000000000
--- a/keyboards/m65/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#define TAPPING_TOGGLE 2
diff --git a/keyboards/m65/keymaps/default/keymap.c b/keyboards/m65/keymaps/default/keymap.c
deleted file mode 100644
index 13093408b2..0000000000
--- a/keyboards/m65/keymaps/default/keymap.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include QMK_KEYBOARD_H
-
-enum layer_names { _QW = 0, _LWR, _RSE, _ADJ };
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QW] = LAYOUT_ortho_5x13(
- KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC ,
- KC_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC ,
- KC_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
- KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH ,
- KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [_LWR] = LAYOUT_ortho_5x13(
- KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL ,
- KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS ,
- KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),
-
- [_RSE] = LAYOUT_ortho_5x13(
- KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R),
-
- [_ADJ] = LAYOUT_ortho_5x13(
- KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-};
-// clang-format on
-
-// let us assume we start with both layers off
-bool toggle_lwr = false;
-bool toggle_rse = false;
-
-static inline void led_lwr(const bool on) {
-#ifdef LED_NUM_LOCK_PIN
- writePin(LED_NUM_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_rse(const bool on) {
-#ifdef LED_SCROLL_LOCK_PIN
- writePin(LED_SCROLL_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_caps(const bool on) {
-#ifdef LED_CAPS_LOCK_PIN
- writePin(LED_CAPS_LOCK_PIN, on);
-#endif
-}
-
-bool led_update_user(led_t led_state) {
- // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
- return false;
-}
-
-void matrix_scan_user(void) {
- led_lwr(toggle_lwr);
- led_rse(toggle_rse);
- led_t led_state = host_keyboard_led_state();
- led_caps(!led_state.caps_lock);
- if (layer_state_is(_ADJ)) {
- led_lwr(true);
- led_rse(true);
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case (TT(_LWR)):
- if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
- toggle_lwr = !layer_state_is(_LWR);
- }
- return true;
- break;
- case (TT(_RSE)):
- if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- toggle_rse = !layer_state_is(_RSE);
- }
- return true;
- break;
- default:
- return true;
- }
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); }
diff --git a/keyboards/m65/keymaps/dk/config.h b/keyboards/m65/keymaps/dk/config.h
deleted file mode 100644
index aabd6a2be6..0000000000
--- a/keyboards/m65/keymaps/dk/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#define TAPPING_TOGGLE 2
diff --git a/keyboards/m65/keymaps/dk/keymap.c b/keyboards/m65/keymaps/dk/keymap.c
deleted file mode 100644
index 4a26f4eeda..0000000000
--- a/keyboards/m65/keymaps/dk/keymap.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include QMK_KEYBOARD_H
-#include "keymap_danish.h"
-
-enum layer_names { _QW = 0, _LWR, _RSE, _ADJ };
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QW] = LAYOUT_ortho_5x13(
- KC_ESC, DK_1 , DK_2 , DK_3 , DK_4 , DK_5 , DK_6 , DK_7 , DK_8 , DK_9 , DK_0 , DK_PLUS, KC_BSPC ,
- KC_TAB, DK_Q , DK_W , DK_E , DK_R , DK_T , DK_Y , DK_U , DK_I , DK_O , DK_P , DK_ARNG, DK_DIAE ,
- DK_QUOT, DK_A , DK_S , DK_D , DK_F , DK_G , DK_H , DK_J , DK_K , DK_L , DK_AE , DK_OSTR, KC_ENT ,
- KC_LSPO, DK_LABK, DK_Z , DK_X , DK_C , DK_V , DK_B , DK_N , DK_M , DK_COMM, DK_DOT , KC_UP , DK_MINS ,
- KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [_LWR] = LAYOUT_ortho_5x13(
- DK_HALF, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , DK_ACUT ,
- KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS ,
- KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),
-
- [_RSE] = LAYOUT_ortho_5x13(
- KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R),
-
- [_ADJ] = LAYOUT_ortho_5x13(
- KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-};
-// clang-format on
-
-// let us assume we start with both layers off
-bool toggle_lwr = false;
-bool toggle_rse = false;
-
-static inline void led_lwr(const bool on) {
-#ifdef LED_NUM_LOCK_PIN
- writePin(LED_NUM_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_rse(const bool on) {
-#ifdef LED_SCROLL_LOCK_PIN
- writePin(LED_SCROLL_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_caps(const bool on) {
-#ifdef LED_CAPS_LOCK_PIN
- writePin(LED_CAPS_LOCK_PIN, on);
-#endif
-}
-
-bool led_update_user(led_t led_state) {
- // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
- return false;
-}
-
-void matrix_scan_user(void) {
- led_lwr(toggle_lwr);
- led_rse(toggle_rse);
- led_t led_state = host_keyboard_led_state();
- led_caps(!led_state.caps_lock);
- if (layer_state_is(_ADJ)) {
- led_lwr(true);
- led_rse(true);
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case (TT(_LWR)):
- if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
- toggle_lwr = !layer_state_is(_LWR);
- }
- return true;
- break;
- case (TT(_RSE)):
- if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- toggle_rse = !layer_state_is(_RSE);
- }
- return true;
- break;
- default:
- return true;
- }
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); }
diff --git a/keyboards/m65/keymaps/uk/config.h b/keyboards/m65/keymaps/uk/config.h
deleted file mode 100644
index aabd6a2be6..0000000000
--- a/keyboards/m65/keymaps/uk/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#define TAPPING_TOGGLE 2
diff --git a/keyboards/m65/keymaps/uk/keymap.c b/keyboards/m65/keymaps/uk/keymap.c
deleted file mode 100644
index 0f426f6149..0000000000
--- a/keyboards/m65/keymaps/uk/keymap.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include QMK_KEYBOARD_H
-#include "keymap_uk.h"
-
-enum layer_names { _QW = 0, _LWR, _RSE, _ADJ };
-
-// clang-format off
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QW] = LAYOUT_ortho_5x13(
- KC_ESC, UK_1 , UK_2 , UK_3 , UK_4 , UK_5 , UK_6 , UK_7 , UK_8 , UK_9 , UK_0 , UK_MINS, KC_BSPC ,
- KC_TAB, UK_Q , UK_W , UK_E , UK_R , UK_T , UK_Y , UK_U , UK_I , UK_O , UK_P , UK_LBRC, UK_RBRC ,
- UK_HASH, UK_A , UK_S , UK_D , UK_F , UK_G , UK_H , UK_J , UK_K , UK_L , UK_SCLN, UK_QUOT, KC_ENT ,
- KC_LSPO, UK_BSLS, UK_Z , UK_X , UK_C , UK_V , UK_B , UK_N , UK_M , UK_COMM, UK_DOT , KC_UP , UK_SLSH ,
- KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [_LWR] = LAYOUT_ortho_5x13(
- KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , UK_EQL ,
- KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS ,
- KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),
-
- [_RSE] = LAYOUT_ortho_5x13(
- KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R),
-
- [_ADJ] = LAYOUT_ortho_5x13(
- KC_TRNS, KC_TRNS, A(KC_F2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,
- KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-};
-// clang-format on
-
-// let us assume we start with both layers off
-bool toggle_lwr = false;
-bool toggle_rse = false;
-
-static inline void led_lwr(const bool on) {
-#ifdef LED_NUM_LOCK_PIN
- writePin(LED_NUM_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_rse(const bool on) {
-#ifdef LED_SCROLL_LOCK_PIN
- writePin(LED_SCROLL_LOCK_PIN, on);
-#endif
-}
-
-static inline void led_caps(const bool on) {
-#ifdef LED_CAPS_LOCK_PIN
- writePin(LED_CAPS_LOCK_PIN, on);
-#endif
-}
-
-bool led_update_user(led_t led_state) {
- // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
- return false;
-}
-
-void matrix_scan_user(void) {
- led_lwr(toggle_lwr);
- led_rse(toggle_rse);
- led_t led_state = host_keyboard_led_state();
- led_caps(!led_state.caps_lock);
- if (layer_state_is(_ADJ)) {
- led_lwr(true);
- led_rse(true);
- }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t* record) {
- switch (keycode) {
- case (TT(_LWR)):
- if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
- toggle_lwr = !layer_state_is(_LWR);
- }
- return true;
- break;
- case (TT(_RSE)):
- if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
- toggle_rse = !layer_state_is(_RSE);
- }
- return true;
- break;
- default:
- return true;
- }
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LWR, _RSE, _ADJ); }
diff --git a/keyboards/m65/m65.c b/keyboards/m65/m65.c
deleted file mode 100644
index 35e2b41226..0000000000
--- a/keyboards/m65/m65.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-
-#include "m65.h"
diff --git a/keyboards/m65/m65.h b/keyboards/m65/m65.h
deleted file mode 100644
index 50065c9f89..0000000000
--- a/keyboards/m65/m65.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#include "quantum.h"
-
-#define LAYOUT_ortho_5x13( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
- K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 \
-) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 } \
-}
diff --git a/keyboards/m65/readme.md b/keyboards/m65/readme.md
deleted file mode 100644
index 9493a3fffc..0000000000
--- a/keyboards/m65/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# M65
-
-![M65](https://i.imgur.com/gXuecush.jpg)
-
-A (13x5) ortholinear keyboard that can be hand wired or using a pcb.
-
-* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll))
-* Hardware Supported: custom pcb [see](https://gitlab.com/drFaustroll/m65) STM/APM32F103C8T6, aka Black Pill
-* Hardware Availability: [custom how to](https://alin.elena.space/blog/keeblego/)
-
-
-Make example for this keyboard (after setting up your build environment):
-
- make m65/rev1:default
-
-Flashing example for this keyboard:
-
- make m65/rev1:default:flash
-
-To enter flashing mode, press Lower+Raise+R.
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/m65/rev1/chconf.h b/keyboards/m65/rev1/chconf.h
deleted file mode 100644
index 8c43fb2697..0000000000
--- a/keyboards/m65/rev1/chconf.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright 2021 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/m65/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
- */
-
-#pragma once
-
-#define CH_CFG_ST_TIMEDELTA 0
-
-#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
-
-#include_next <chconf.h>
-
diff --git a/keyboards/m65/rev1/config.h b/keyboards/m65/rev1/config.h
deleted file mode 100644
index 090210f254..0000000000
--- a/keyboards/m65/rev1/config.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright 2021 Alin M Elena <alinm.elena@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-#define DEVICE_VER 0x0001
-#define PRODUCT_ID 0x6060
-
-#define LED_NUM_LOCK_PIN B12
-#define LED_SCROLL_LOCK_PIN B13
-#define LED_CAPS_LOCK_PIN C13
-
-// 0 1 2 3 4
-#define MATRIX_ROW_PINS { B11, B0, B1, A2, A3 }
-// 0 1 2 3 4 5 6 7 8 9 10 11 12
-#define MATRIX_COL_PINS {A10, A15, B3, B4, B5, B9, B8, B7, B6, C15, A0, A7, B10 }
-
-#define UNUSED_PINS
diff --git a/keyboards/m65/rev1/mcuconf.h b/keyboards/m65/rev1/mcuconf.h
deleted file mode 100644
index 20df276a5a..0000000000
--- a/keyboards/m65/rev1/mcuconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2021 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
- */
-
-#pragma once
-
-#include_next <mcuconf.h>
-
-#undef STM32_SPI_USE_SPI2
-#define STM32_SPI_USE_SPI2 FALSE
diff --git a/keyboards/m65/rev1/rules.mk b/keyboards/m65/rev1/rules.mk
deleted file mode 100644
index c4a8259807..0000000000
--- a/keyboards/m65/rev1/rules.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# MCU name
-MCU = STM32F103
-
-# Bootloader selection
-BOOTLOADER = stm32duino
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/machkeyboards/mach3/rules.mk b/keyboards/machkeyboards/mach3/rules.mk
index e8f6fb4038..ada54400b2 100644
--- a/keyboards/machkeyboards/mach3/rules.mk
+++ b/keyboards/machkeyboards/mach3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/macro1/macro1.c b/keyboards/macro1/macro1.c
index b470ed523f..f1fbed1d15 100644
--- a/keyboards/macro1/macro1.c
+++ b/keyboards/macro1/macro1.c
@@ -1,29 +1,31 @@
- /* Copyright 2021 Laneware Peripherals
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
+/* Copyright 2021 Laneware Peripherals
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "macro1.h"
-bool encoder_update_user(uint8_t index, bool clockwise) {
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
- }
- return false;
+ }
+ return false;
}
-
diff --git a/keyboards/macro1/rules.mk b/keyboards/macro1/rules.mk
index 6822271603..c4a39c910f 100644
--- a/keyboards/macro1/rules.mk
+++ b/keyboards/macro1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/macro3/config.h b/keyboards/macro3/config.h
index 59f7a151c7..722cdf319f 100644
--- a/keyboards/macro3/config.h
+++ b/keyboards/macro3/config.h
@@ -1,18 +1,6 @@
/* Copyright 2020 David Philip Barr <@davidphilipbarr>
* Copyright 2021 @filterpaper
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * SPDX-License-Identifier: GPL-2.0+
*/
#pragma once
@@ -43,13 +31,3 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* Top right key */
-#define BOOTMAGIC_LITE_ROW 0
-#define BOOTMAGIC_LITE_COLUMN 3
-
diff --git a/keyboards/macro3/info.json b/keyboards/macro3/info.json
index b25779cb70..a29313c2b3 100644
--- a/keyboards/macro3/info.json
+++ b/keyboards/macro3/info.json
@@ -13,7 +13,7 @@
{"x": 0, "y": 1},
{"x": 1, "y": 1},
{"x": 2, "y": 1},
- {"x": 3, "y": 1},
+ {"x": 3, "y": 1}
]
}
}
diff --git a/keyboards/macro3/keymaps/default/keymap.c b/keyboards/macro3/keymaps/default/keymap.c
index ca4db51f3e..11ebeff023 100644
--- a/keyboards/macro3/keymaps/default/keymap.c
+++ b/keyboards/macro3/keymaps/default/keymap.c
@@ -1,26 +1,14 @@
/* Copyright 2020 David Philip Barr <@davidphilipbarr>
* Copyright 2021 @filterpaper
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * SPDX-License-Identifier: GPL-2.0+
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_HOME, KC_MUTE, KC_MPLY, KC_MSEL,
- KC_UNDO, KC_CUT, KC_COPY, LT(1,KC_PSTE)
+ KC_MUTE, KC_MPLY, KC_MRWD, LT(1,KC_MFFD),
+ C(KC_Z), C(KC_X), C(KC_C), C(KC_V)
),
[1] = LAYOUT(
_______, _______, _______, _______,
diff --git a/keyboards/macro3/macro3.c b/keyboards/macro3/macro3.c
index cc12c0268a..90bb982509 100644
--- a/keyboards/macro3/macro3.c
+++ b/keyboards/macro3/macro3.c
@@ -1,18 +1,6 @@
/* Copyright 2020 David Philip Barr <@davidphilipbarr>
* Copyright 2021 @filterpaper
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * SPDX-License-Identifier: GPL-2.0+
*/
#include "macro3.h"
@@ -20,17 +8,17 @@
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
- if (index == 1) {
+ if (index == 0) {
if (clockwise) {
- tap_code(KC_VOLD);
- } else {
tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
}
- } else if (index == 0) {
+ } else if (index == 1) {
if (clockwise) {
- tap_code(KC_WH_D);
+ tap_code(KC_MNXT);
} else {
- tap_code(KC_WH_U);
+ tap_code(KC_MPRV);
}
}
return true;
diff --git a/keyboards/macro3/macro3.h b/keyboards/macro3/macro3.h
index 12621d2c09..d95f504083 100644
--- a/keyboards/macro3/macro3.h
+++ b/keyboards/macro3/macro3.h
@@ -1,18 +1,6 @@
/* Copyright 2020 David Philip Barr <@davidphilipbarr>
* Copyright 2021 @filterpaper
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * SPDX-License-Identifier: GPL-2.0+
*/
#include "quantum.h"
diff --git a/keyboards/macro3/post_config.h b/keyboards/macro3/post_config.h
new file mode 100644
index 0000000000..0f94fe19e1
--- /dev/null
+++ b/keyboards/macro3/post_config.h
@@ -0,0 +1,17 @@
+/* Copyright 2020 David Philip Barr <@davidphilipbarr>
+ * Copyright 2021 @filterpaper
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+/* Top right key */
+#ifndef BOOTMAGIC_LITE_ROW
+# define BOOTMAGIC_LITE_ROW 0
+#endif
+#ifndef BOOTMAGIC_LITE_COLUMN
+# define BOOTMAGIC_LITE_COLUMN 3
+#endif
+
+#ifndef ENCODER_RESOLUTION
+# define ENCODER_RESOLUTION 2
+#endif
+
diff --git a/keyboards/macro3/readme.md b/keyboards/macro3/readme.md
index 66a142ecdf..0234741174 100644
--- a/keyboards/macro3/readme.md
+++ b/keyboards/macro3/readme.md
@@ -1,8 +1,8 @@
# Macro3
-![Macro3](https://github.com/davidphilipbarr/Macropads/raw/main/macro3/IMG_20200703_170424.jpg)
+![Macro3](https://github.com/filterpaper/filterpaper.github.io/raw/main/images/macro3.png)
-Macro3 is a low-profile macro pad with encoder support designed by [@davidphilipbarr](https://github.com/davidphilipbarr) using direct micro-controller pin wiring.
+Macro3 is a low-profile macro pad with dual encoder support designed by [@davidphilipbarr](https://github.com/davidphilipbarr).
## Keyboard Info
@@ -21,6 +21,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top right key and plug in the controller.
-* **Physical reset button**: Briefly press the reset button soldered on the PCB.
* **Keycode in layout**: Press the key mapped to `RESET` if it is configured.
+* **Physical reset pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material.
diff --git a/keyboards/macro3/rules.mk b/keyboards/macro3/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/macro3/rules.mk
+++ b/keyboards/macro3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/majistic/keymaps/default/keymap.c b/keyboards/majistic/keymaps/default/keymap.c
index e26a631d71..409c94d891 100644
--- a/keyboards/majistic/keymaps/default/keymap.c
+++ b/keyboards/majistic/keymaps/default/keymap.c
@@ -29,17 +29,17 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
- JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT , \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, KC_UP, KC_RSFT, \
- KC_LCTL, KC_LALT, KC_LGUI, KC_LANG2, LT(_LOWER, KC_SPC), LT(_LOWER, KC_SPC), KC_LANG1, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT \
+ JP_1, JP_2, JP_3, JP_4, JP_5, JP_6, JP_7, JP_8, JP_9, JP_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT ,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_LANG2, LT(_LOWER, KC_SPC), LT(_LOWER, KC_SPC), KC_LANG1, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_LOWER] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
- KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, JP_UNDS, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMU, KC_VOLU, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMD, KC_VOLD, _______ \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, JP_UNDS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMU, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_BRMD, KC_VOLD, _______
),
};
diff --git a/keyboards/majistic/rules.mk b/keyboards/majistic/rules.mk
index 7abc445e3b..859c6c3502 100644
--- a/keyboards/majistic/rules.mk
+++ b/keyboards/majistic/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/makrosu/config.h b/keyboards/makrosu/config.h
index 8a5214fe68..b587477f8a 100644
--- a/keyboards/makrosu/config.h
+++ b/keyboards/makrosu/config.h
@@ -34,9 +34,8 @@
#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5}
#define UNUSED_PINS
-#define ENCODERS_PAD_A { D1 }
-#define ENCODERS_PAD_B { E6 }
-#define ENCODER_DIRECTION_FLIP
+#define ENCODERS_PAD_A { E6 }
+#define ENCODERS_PAD_B { D1 }
#define TAP_CODE_DELAY 10
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/makrosu/rules.mk b/keyboards/makrosu/rules.mk
index ae3cb78f31..d88257b2d6 100644
--- a/keyboards/makrosu/rules.mk
+++ b/keyboards/makrosu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lyra/config.h b/keyboards/malevolti/lyra/config.h
index a4606507ce..a4606507ce 100644
--- a/keyboards/lyra/config.h
+++ b/keyboards/malevolti/lyra/config.h
diff --git a/keyboards/lyra/keymaps/default/config.h b/keyboards/malevolti/lyra/keymaps/default/config.h
index 9c4bacd36d..9c4bacd36d 100644
--- a/keyboards/lyra/keymaps/default/config.h
+++ b/keyboards/malevolti/lyra/keymaps/default/config.h
diff --git a/keyboards/lyra/keymaps/default/keymap.c b/keyboards/malevolti/lyra/keymaps/default/keymap.c
index 1d4bef03f2..1d4bef03f2 100644
--- a/keyboards/lyra/keymaps/default/keymap.c
+++ b/keyboards/malevolti/lyra/keymaps/default/keymap.c
diff --git a/keyboards/lyra/keymaps/via/config.h b/keyboards/malevolti/lyra/keymaps/via/config.h
index 9c4bacd36d..9c4bacd36d 100644
--- a/keyboards/lyra/keymaps/via/config.h
+++ b/keyboards/malevolti/lyra/keymaps/via/config.h
diff --git a/keyboards/lyra/keymaps/via/keymap.c b/keyboards/malevolti/lyra/keymaps/via/keymap.c
index efc40d2267..efc40d2267 100644
--- a/keyboards/lyra/keymaps/via/keymap.c
+++ b/keyboards/malevolti/lyra/keymaps/via/keymap.c
diff --git a/keyboards/malevolti/lyra/keymaps/via/rules.mk b/keyboards/malevolti/lyra/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/malevolti/lyra/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/malevolti/lyra/lyra.c b/keyboards/malevolti/lyra/lyra.c
new file mode 100644
index 0000000000..cd8d7c2e8b
--- /dev/null
+++ b/keyboards/malevolti/lyra/lyra.c
@@ -0,0 +1,84 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "lyra.h"
+
+#ifdef OLED_ENABLE
+
+// 'lyralogooled', 32x128px
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR(" "), false);
+# ifdef WPM_ENABLE
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ oled_write_ln_P(PSTR(" WPM"), false);
+# else
+ oled_advance_page(true);
+# endif
+ oled_advance_page(true);
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
+ oled_advance_page(true); oled_advance_page(true);
+ oled_write_ln_P(PSTR("Lyra"), false);
+ oled_write_ln_P(PSTR("v1.1"), false);
+ oled_write_ln_P(PSTR("by"), false);
+ oled_write_P(PSTR("Dom C"), false);
+ } else {
+ static const char PROGMEM QMK_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x18, 0x0c, 0x04, 0x06, 0x02,
+ 0x02, 0x82, 0xc0, 0xf0, 0x38, 0x8c, 0xf2, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x18, 0x30, 0x20, 0xa0, 0xe0, 0xf8,
+ 0x3e, 0x1f, 0x13, 0x0c, 0x06, 0xc3, 0xf0, 0x60, 0x00, 0x80, 0xf0, 0xe0, 0x00, 0x38, 0xfe, 0x67,
+ 0x7b, 0xa5, 0xf3, 0xf0, 0x70, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x30, 0x20, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0x3e, 0x61, 0xdf,
+ 0xde, 0xde, 0x01, 0xff, 0xfe, 0x00, 0x80, 0x80, 0x80, 0xff, 0xc0, 0xdf, 0xdf, 0xdf, 0xe0, 0xff,
+ 0x7f, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xe3, 0x7e, 0x3c, 0xfe, 0xc1, 0xfd, 0x7d, 0xc3, 0xfd, 0x7d,
+ 0xc3, 0xfe, 0xfc, 0x30, 0xea, 0xd5, 0xd5, 0xd5, 0xc3, 0xff, 0xfe, 0x7e, 0xc1, 0xfd, 0x7d, 0x7d,
+ 0xc3, 0xfe, 0xfc, 0x3f, 0xe1, 0xff, 0xff, 0x3c, 0x62, 0xdd, 0xdd, 0xdd, 0xf7, 0xe6, 0x00, 0x00,
+ 0x00, 0x78, 0xc4, 0xc2, 0x82, 0x82, 0x82, 0x82, 0xc2, 0xe4, 0x74, 0x7c, 0x3f, 0x1f, 0x31, 0x60,
+ 0xe0, 0xc0, 0x80, 0x9c, 0xbf, 0xe7, 0xf1, 0x78, 0x3e, 0x1f, 0x0b, 0x04, 0x02, 0x01, 0x00, 0x1c,
+ 0x3e, 0x2f, 0x13, 0x10, 0x0c, 0x1e, 0x3f, 0x2f, 0x13, 0x09, 0x1c, 0x3e, 0x2f, 0x10, 0x08, 0x06,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
+ 0x06, 0x06, 0x07, 0x03, 0x7f, 0xc1, 0xbe, 0xbe, 0xbe, 0xa6, 0xe7, 0xc7, 0x60, 0xd4, 0xaa, 0xaa,
+ 0xaa, 0x86, 0xfe, 0xfc, 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0xc0, 0xff, 0xff, 0xc4, 0xaa, 0xaa, 0xaa,
+ 0xa6, 0xfc, 0xf8, 0xff, 0x02, 0xff, 0xff, 0x60, 0xd4, 0xaa, 0xaa, 0xaa, 0x86, 0xfe, 0xfc, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x24,
+ 0x32, 0x1b, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x3c, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x30, 0x38,
+ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x07, 0x0d, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ oled_write_raw_P(QMK_logo, sizeof(QMK_logo));
+ }
+}
+#endif
diff --git a/keyboards/malevolti/lyra/lyra.h b/keyboards/malevolti/lyra/lyra.h
new file mode 100644
index 0000000000..941f292c93
--- /dev/null
+++ b/keyboards/malevolti/lyra/lyra.h
@@ -0,0 +1,23 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+
+#ifdef KEYBOARD_malevolti_lyra_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/malevolti/lyra/readme.md b/keyboards/malevolti/lyra/readme.md
new file mode 100644
index 0000000000..3939431fb6
--- /dev/null
+++ b/keyboards/malevolti/lyra/readme.md
@@ -0,0 +1,20 @@
+# Lyra Keyboard
+By Domanic Calleja - https://github.com/Malevolti
+
+Lyra is 7x5 keys column-staggered split keyboard. Based on Sofle, Lily58, Corne and Helix keyboards.
+There is an open source PCB available via https://github.com/Malevolti/Lyra
+Instructions for handwiring and hand-wire specific case STLs are available for home 3d printing
+
+Make example for this keyboard (after setting up your build environment):
+
+ make malevolti/lyra:default
+
+Flashing example for this keyboard:
+
+ make malevolti/lyra:default:flash
+
+Press reset button on the keyboard when asked.
+
+Disconnect the first half, connect the second one and repeat the process.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/malevolti/lyra/rev1/config.h b/keyboards/malevolti/lyra/rev1/config.h
new file mode 100644
index 0000000000..4e006c2bdf
--- /dev/null
+++ b/keyboards/malevolti/lyra/rev1/config.h
@@ -0,0 +1,49 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4443 //DC
+#define PRODUCT_ID 0x4C43 //LC
+#define DEVICE_VER 0x3031 //01
+#define MANUFACTURER Dom
+#define PRODUCT Lyra
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define TAPPING_TERM 100
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* communication between sides */
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/lyra/rev1/info.json b/keyboards/malevolti/lyra/rev1/info.json
index 82dd811fd5..82dd811fd5 100644
--- a/keyboards/lyra/rev1/info.json
+++ b/keyboards/malevolti/lyra/rev1/info.json
diff --git a/keyboards/malevolti/lyra/rev1/rev1.c b/keyboards/malevolti/lyra/rev1/rev1.c
new file mode 100644
index 0000000000..db31ea975c
--- /dev/null
+++ b/keyboards/malevolti/lyra/rev1/rev1.c
@@ -0,0 +1,19 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev1.h"
+
+
diff --git a/keyboards/lyra/rev1/rev1.h b/keyboards/malevolti/lyra/rev1/rev1.h
index 81b862c5c6..81b862c5c6 100644
--- a/keyboards/lyra/rev1/rev1.h
+++ b/keyboards/malevolti/lyra/rev1/rev1.h
diff --git a/keyboards/malevolti/lyra/rev1/rules.mk b/keyboards/malevolti/lyra/rev1/rules.mk
new file mode 100644
index 0000000000..87f331ab6c
--- /dev/null
+++ b/keyboards/malevolti/lyra/rev1/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+SPLIT_KEYBOARD = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/malevolti/superlyra/config.h b/keyboards/malevolti/superlyra/config.h
new file mode 100644
index 0000000000..a4606507ce
--- /dev/null
+++ b/keyboards/malevolti/superlyra/config.h
@@ -0,0 +1,19 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
diff --git a/keyboards/malevolti/superlyra/keymaps/default/config.h b/keyboards/malevolti/superlyra/keymaps/default/config.h
new file mode 100644
index 0000000000..bbdf47463f
--- /dev/null
+++ b/keyboards/malevolti/superlyra/keymaps/default/config.h
@@ -0,0 +1,26 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
diff --git a/keyboards/malevolti/superlyra/keymaps/default/keymap.c b/keyboards/malevolti/superlyra/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c266867f6f
--- /dev/null
+++ b/keyboards/malevolti/superlyra/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+//
+// Keymaps
+//
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Layer 0
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_NLCK, KC_HOME, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PAST, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NUHS, KC_DEL,
+ KC_CLCK, KC_RBRC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, TT(1), KC_APP, KC_PGDN, KC_SPC, KC_DEL, KC_P0, KC_PDOT, KC_ENT, KC_SPC, KC_PGUP, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ // Layer 1
+ [1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
+
diff --git a/keyboards/malevolti/superlyra/keymaps/via/config.h b/keyboards/malevolti/superlyra/keymaps/via/config.h
new file mode 100644
index 0000000000..bbdf47463f
--- /dev/null
+++ b/keyboards/malevolti/superlyra/keymaps/via/config.h
@@ -0,0 +1,26 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
diff --git a/keyboards/malevolti/superlyra/keymaps/via/keymap.c b/keyboards/malevolti/superlyra/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8c29bed56a
--- /dev/null
+++ b/keyboards/malevolti/superlyra/keymaps/via/keymap.c
@@ -0,0 +1,56 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+//
+// Keymaps
+//
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Layer 0
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_NLCK, KC_HOME, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_LBRC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PAST, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NUHS, KC_DEL,
+ KC_CLCK, KC_RBRC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, TT(1), KC_APP, KC_PGDN, KC_SPC, KC_DEL, KC_P0, KC_PDOT, KC_ENT, KC_SPC, KC_PGUP, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ // Layer 1
+ [1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ // Layer 2
+ [2] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ // Layer 3
+ [3] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/malevolti/superlyra/keymaps/via/rules.mk b/keyboards/malevolti/superlyra/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/malevolti/superlyra/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/malevolti/superlyra/readme.md b/keyboards/malevolti/superlyra/readme.md
new file mode 100644
index 0000000000..23eccd6d49
--- /dev/null
+++ b/keyboards/malevolti/superlyra/readme.md
@@ -0,0 +1,19 @@
+# SuperLyra Keyboard
+By Domanic Calleja - https://github.com/Malevolti
+
+SuperLyra is a 90 key column-staggered ergonomic keyboard. Based on the Lyra split with the addition of a centre numpad for ambidextorous use.
+This version is a single pcb as opposed to a split, with the alphanumeric segments angled at 30 degrees to eachother.
+There is an open source PCB available via https://github.com/Malevolti/SuperLyra
+
+Make example for this keyboard (after setting up your build environment):
+
+ make malevolti/superlyra:default
+
+Flashing example for this keyboard:
+
+ make malevolti/superlyra:default:flash
+
+Press reset button on the keyboard when asked.
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/malevolti/superlyra/rev1/config.h b/keyboards/malevolti/superlyra/rev1/config.h
new file mode 100644
index 0000000000..65c41392fa
--- /dev/null
+++ b/keyboards/malevolti/superlyra/rev1/config.h
@@ -0,0 +1,44 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4443 //DC
+#define PRODUCT_ID 0x4C53 //LS
+#define DEVICE_VER 0x3031 //01
+#define MANUFACTURER Dom
+#define PRODUCT SuperLyra
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define TAPPING_TERM 100
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/malevolti/superlyra/rev1/info.json b/keyboards/malevolti/superlyra/rev1/info.json
new file mode 100644
index 0000000000..c7dce70de5
--- /dev/null
+++ b/keyboards/malevolti/superlyra/rev1/info.json
@@ -0,0 +1,116 @@
+{
+ "keyboard_name": "superlyra",
+ "url": "",
+ "maintainer": "malevolti",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "x": 0, "y": 0.3 },
+ { "x": 1, "y": 0.4 },
+ { "x": 2, "y": 0.3 },
+ { "x": 3, "y": 0.1 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0.1 },
+ { "x": 6, "y": 0.25 },
+
+ { "x": 8, "y": 0.25 },
+ { "x": 9, "y": 0.25 },
+ { "x": 10, "y": 0.25 },
+ { "x": 11, "y": 0.25 },
+
+ { "x": 13, "y": 0.25 },
+ { "x": 14, "y": 0.1 },
+ { "x": 15, "y": 0 },
+ { "x": 16, "y": 0.1 },
+ { "x": 17, "y": 0.3 },
+ { "x": 18, "y": 0.4 },
+ { "x": 19, "y": 0.3 },
+
+ { "x": 0, "y": 1.3 },
+ { "x": 1, "y": 1.4 },
+ { "x": 2, "y": 1.3 },
+ { "x": 3, "y": 1.1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1.1 },
+ { "x": 6, "y": 1.25 },
+
+ { "x": 8, "y": 1.25 },
+ { "x": 9, "y": 1.25 },
+ { "x": 10, "y": 1.25 },
+ { "x": 11, "y": 1.25 },
+
+ { "x": 13, "y": 1.25 },
+ { "x": 14, "y": 1.1 },
+ { "x": 15, "y": 1 },
+ { "x": 16, "y": 1.1 },
+ { "x": 17, "y": 1.3 },
+ { "x": 18, "y": 1.4 },
+ { "x": 19, "y": 1.3 },
+
+ { "x": 0, "y": 2.3 },
+ { "x": 1, "y": 2.4 },
+ { "x": 2, "y": 2.3 },
+ { "x": 3, "y": 2.1 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2.1 },
+ { "x": 6, "y": 2.25 },
+
+ { "x": 8, "y": 2.25 },
+ { "x": 9, "y": 2.25 },
+ { "x": 10, "y": 2.25 },
+ { "x": 11, "y": 2.25 },
+
+ { "x": 13, "y": 2.25 },
+ { "x": 14, "y": 2.1 },
+ { "x": 15, "y": 2 },
+ { "x": 16, "y": 2.1 },
+ { "x": 17, "y": 2.3 },
+ { "x": 18, "y": 2.4 },
+ { "x": 19, "y": 2.3 },
+
+ { "x": 0, "y": 3.3 },
+ { "x": 1, "y": 3.4 },
+ { "x": 2, "y": 3.3 },
+ { "x": 3, "y": 3.1 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3.1 },
+ { "x": 6, "y": 3.25 },
+
+ { "x": 8, "y": 3.25 },
+ { "x": 9, "y": 3.25 },
+ { "x": 10, "y": 3.25 },
+ { "x": 11, "y": 3.25 },
+
+ { "x": 13, "y": 3.25 },
+ { "x": 14, "y": 3.1 },
+ { "x": 15, "y": 3 },
+ { "x": 16, "y": 3.1 },
+ { "x": 17, "y": 3.3 },
+ { "x": 18, "y": 3.4 },
+ { "x": 19, "y": 3.3 },
+
+ { "x": 0, "y": 4.3 },
+ { "x": 1, "y": 4.4 },
+ { "x": 2, "y": 4.3 },
+ { "x": 3, "y": 4.1 },
+ { "x": 4, "y": 4 },
+ { "x": 5, "y": 4.1 },
+ { "x": 6.25, "y": 4.5, "w": 1.5 },
+
+ { "x": 8, "y": 4.25 },
+ { "x": 9, "y": 4.25 },
+ { "x": 10, "y": 4.25 },
+ { "x": 11, "y": 4.25 },
+
+ { "x": 12.25, "y": 4.5, "w": 1.5 },
+ { "x": 14, "y": 4.1 },
+ { "x": 15, "y": 4 },
+ { "x": 16, "y": 4.1 },
+ { "x": 17, "y": 4.3 },
+ { "x": 18, "y": 4.4 },
+ { "x": 19, "y": 4.3 }
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/lyra/rev1/rev1.c b/keyboards/malevolti/superlyra/rev1/rev1.c
index 35b44aed16..35b44aed16 100644
--- a/keyboards/lyra/rev1/rev1.c
+++ b/keyboards/malevolti/superlyra/rev1/rev1.c
diff --git a/keyboards/malevolti/superlyra/rev1/rev1.h b/keyboards/malevolti/superlyra/rev1/rev1.h
new file mode 100644
index 0000000000..8bc17d1173
--- /dev/null
+++ b/keyboards/malevolti/superlyra/rev1/rev1.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "superlyra.h"
+
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, K16, K17, \
+ K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, K51, K52, K53, \
+ K54, K55, K56, K57, K58, K59, K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K70, K71, \
+ K72, K73, K74, K75, K76, K77, K78, K79, K80, K81, K82, K83, K84, K85, K86, K87, K88, K89 \
+ ) \
+ { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35 }, \
+ { K36, K37, K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, K51, K52, K53 }, \
+ { K54, K55, K56, K57, K58, K59, K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K70, K71 }, \
+ { K72, K73, K74, K75, K76, K77, K78, K79, K80, K81, K82, K83, K84, K85, K86, K87, K88, K89 } \
+ }
diff --git a/keyboards/malevolti/superlyra/rev1/rules.mk b/keyboards/malevolti/superlyra/rev1/rules.mk
new file mode 100644
index 0000000000..e3012714c8
--- /dev/null
+++ b/keyboards/malevolti/superlyra/rev1/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LTO_ENABLE = yes
diff --git a/keyboards/malevolti/superlyra/superlyra.c b/keyboards/malevolti/superlyra/superlyra.c
new file mode 100644
index 0000000000..045ec9a097
--- /dev/null
+++ b/keyboards/malevolti/superlyra/superlyra.c
@@ -0,0 +1,17 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "superlyra.h"
+
diff --git a/keyboards/malevolti/superlyra/superlyra.h b/keyboards/malevolti/superlyra/superlyra.h
new file mode 100644
index 0000000000..b3c0f16daf
--- /dev/null
+++ b/keyboards/malevolti/superlyra/superlyra.h
@@ -0,0 +1,23 @@
+ /* Copyright 2021 Domanic Calleja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+
+#ifdef KEYBOARD_malevolti_superlyra_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/manta60/rules.mk b/keyboards/manta60/rules.mk
index 876ab73012..8d5f3a9ce6 100644
--- a/keyboards/manta60/rules.mk
+++ b/keyboards/manta60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/manyboard/macro/rules.mk b/keyboards/manyboard/macro/rules.mk
index 34d79efae1..9999ddafff 100644
--- a/keyboards/manyboard/macro/rules.mk
+++ b/keyboards/manyboard/macro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/marksard/leftover30/rules.mk b/keyboards/marksard/leftover30/rules.mk
index 2e36ecd727..1681487a94 100644
--- a/keyboards/marksard/leftover30/rules.mk
+++ b/keyboards/marksard/leftover30/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/marksard/rhymestone/keymaps/default/config.h b/keyboards/marksard/rhymestone/keymaps/default/config.h
index 95f2d039b2..224ec53519 100644
--- a/keyboards/marksard/rhymestone/keymaps/default/config.h
+++ b/keyboards/marksard/rhymestone/keymaps/default/config.h
@@ -24,4 +24,4 @@
// If you plug in the USB on the right side, please enable MASTER_RIGHT
// #define MASTER_RIGHT
-#define OLED_FONT_H "keyboards/rhymestone/common/glcdfont.c"
+#define OLED_FONT_H "keyboards/marksard/rhymestone/common/glcdfont.c"
diff --git a/keyboards/marksard/rhymestone/rules.mk b/keyboards/marksard/rhymestone/rules.mk
index 39a02a5427..576ef80754 100644
--- a/keyboards/marksard/rhymestone/rules.mk
+++ b/keyboards/marksard/rhymestone/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/massdrop/alt/keymaps/b_/config.h b/keyboards/massdrop/alt/keymaps/b_/config.h
new file mode 100644
index 0000000000..ca4424bd3f
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/b_/config.h
@@ -0,0 +1,121 @@
+// Copyright 2021 br (@b-)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+
+#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT)
+#define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
+#define MODS_ALT (get_mods() & MOD_MASK_ALT)
+
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging)
+
+// #define NO_DEBUG // Disable debugging
+// #define NO_PRINT // Disable printing/debugging using hid_listen
+// #define NO_ACTION_LAYER // Disable layers
+// #define NO_ACTION_TAPPING // Disable tap dance and other tapping features
+// #define NO_ACTION_ONESHOT // Disable one-shot modifiers
+// #define NO_ACTION_MACRO // Disable old style macro handling: MACRO() & action_get_macro
+// #define TERMINAL_HELP
+// #define MOUSEKEY_INTERVAL 20
+// #define MOUSEKEY_DELAY 0
+// #define MOUSEKEY_TIME_TO_MAX 60
+// #define MOUSEKEY_MAX_SPEED 10
+// #define MOUSEKEY_WHEEL_DELAY 0
+//#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
+// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
+// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
+// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
+// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
+// #define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
+// #define TAPPING_TERM_PER_KEY // Enabling to allow to tweak individual keys
+// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
+// #define TAPPING_TOGGLE 2 // How many taps before triggering the toggle
+// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details
+// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details
+// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle)
+// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped.
+// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall
+// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
+// #define ONESHOT_TIMEOUT 3000 // How long before oneshot times out
+// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
+// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
+// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
+// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
+#define TAP_CODE_DELAY 25 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
+// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+
+
+
+//Teal and Blue
+//#define RGB_MATRIX_STARTUP_HUE 127 // Default boot color
+//#define RGB_MATRIX_STARTUP_SPD 47 // Used to determine the color for the modifiers
+
+//Teal and Blue
+//#define RGB_MATRIX_STARTUP_HUE 120 // Default boot color
+//#define RGB_MATRIX_STARTUP_SPD 50 //Used to determine the color for the modifiers
+
+
+//QMK HSV is based on 255 value wheel rather than 360
+
+//Cyan and Yellow
+//#define RGB_MATRIX_STARTUP_HUE 127 // Default boot color
+//#define RGB_MATRIX_STARTUP_SPD 177
+
+//Cyan and Green
+//#define RGB_MATRIX_STARTUP_HUE 127 // Default boot color
+//#define RGB_MATRIX_STARTUP_SPD 215
+
+// #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+#define RGB_MATRIX_STARTUP_HUE 180 //purple alphas with green background when pressed.
+
+// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around.
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/massdrop/alt/keymaps/b_/keymap.c b/keyboards/massdrop/alt/keymaps/b_/keymap.c
new file mode 100644
index 0000000000..8285d5108f
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/b_/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2021 br (@b-)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/* physical layout
+ * [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [ bksp ] [ del ]
+ * [ tab* ] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ home ]
+ * [ ctrl* ] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [ enter ] [ PgUp ]
+ * [ lshift* ] [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ] [ rshift* ] ] [ ↑ ] [ PgDn ]
+ * [ ctrl ] [ alt ] [ meta ] [ spaaaaaaaace ] [ meta ] [ alt ] [ ← ] [ ↓ ] [ → ]
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker( /* normal */
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, /* 15 */
+ LT(1,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, /* 15 */
+ LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, /* 14 */
+ LM(2, MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LM(2, MOD_LSFT), KC_UP, KC_PGDN, /* 14 */
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT /* 9 */
+ ),
+ [1] = LAYOUT_65_ansi_blocker( /* hold tab */
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_MUTE,
+ KC_TRNS, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, BL_INC, BL_DEC, BL_BRTG, BL_STEP, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_END,
+ MO(3), RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, MO(4), NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END // fn layer. f keys, media keys, backlight control, nkro-toggle, etc.
+ ),
+ [2] = LAYOUT_65_ansi_blocker( /* lshift + rshift = caps lock */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // this feels like a kludge...but it works
+ ),
+ [3] = LAYOUT_65_ansi_blocker( /* tab+ctrl */
+ KC_EXEC, KC_HELP, KC_MENU, KC_SLCT, KC_STOP, KC_AGIN, KC_UNDO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_EJCT,
+ KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_TRNS, BL_TOGG, BL_STEP, BL_BRTG, KC_FIND, BL_DEC, BL_INC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BRIU,
+ KC_NO, KC_NO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_BRID,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MRWD, KC_MPLY, KC_MFFD // miscellaneous silly keys, subject to change
+ ),
+ [4] = LAYOUT_65_ansi_blocker( /* tab+b */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, /* backspace */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS // tab + b + backspace goes to bootloader
+ )
+};
+
diff --git a/keyboards/massdrop/alt/keymaps/default/keymap.c b/keyboards/massdrop/alt/keymaps/default/keymap.c
index df8d406988..b847b39f33 100644
--- a/keyboards/massdrop/alt/keymaps/default/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/default/keymap.c
@@ -12,26 +12,26 @@ enum alt_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi_blocker(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi_blocker(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
- _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
- _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
- _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
- _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE,
+ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
/*
[X] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
*/
};
diff --git a/keyboards/massdrop/alt/keymaps/default_md/keymap.c b/keyboards/massdrop/alt/keymaps/default_md/keymap.c
index fa8b294cd1..7a6d2bd4e0 100644
--- a/keyboards/massdrop/alt/keymaps/default_md/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/default_md/keymap.c
@@ -29,26 +29,26 @@ enum alt_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \
- L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END, \
- L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
- _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, \
- _______, _______, _______, DBG_FAC, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE,
+ L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD,
+ _______, _______, _______, DBG_FAC, _______, _______, KC_HOME, KC_PGDN, KC_END
),
/*
[X] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
*/
};
diff --git a/keyboards/massdrop/alt/keymaps/via/keymap.c b/keyboards/massdrop/alt/keymaps/via/keymap.c
new file mode 100644
index 0000000000..fd1bf3c0b0
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/via/keymap.c
@@ -0,0 +1,128 @@
+/* Copyright 2021 Asdfire (@asdfire1)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum alt_keycodes {
+ U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active
+ U_T_AGCR, //USB Toggle Automatic GCR control
+ DBG_TOG, //DEBUG Toggle On / Off
+ DBG_MTRX, //DEBUG Toggle Matrix Prints
+ DBG_KBD, //DEBUG Toggle Keyboard Prints
+ DBG_MOU, //DEBUG Toggle Mouse Prints
+ MD_BOOT, //Restart into bootloader after hold timeout
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE,
+ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, _______, _______, _______, _______, KC_PGUP, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [2] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+#define MODS_SHIFT (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))
+#define MODS_CTRL (get_mods() & MOD_BIT(KC_LCTL) || get_mods() & MOD_BIT(KC_RCTRL))
+#define MODS_ALT (get_mods() & MOD_BIT(KC_LALT) || get_mods() & MOD_BIT(KC_RALT))
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ static uint32_t key_timer;
+
+ switch (keycode) {
+ case U_T_AUTO:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
+ }
+ return false;
+ case U_T_AGCR:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
+ }
+ return false;
+ case DBG_TOG:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
+ }
+ return false;
+ case DBG_MTRX:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
+ }
+ return false;
+ case DBG_KBD:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
+ }
+ return false;
+ case DBG_MOU:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
+ }
+ return false;
+ case MD_BOOT:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
+ default:
+ return true; //Process all other keycodes normally
+ }
+}
diff --git a/keyboards/massdrop/alt/keymaps/via/rules.mk b/keyboards/massdrop/alt/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk
index e8a3a06541..83d4fc590b 100644
--- a/keyboards/massdrop/alt/rules.mk
+++ b/keyboards/massdrop/alt/rules.mk
@@ -6,17 +6,14 @@ ARM_ATSAM = SAMD51J18A
MCU = cortex-m4
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/massdrop/ctrl/keymaps/R167/keymap.c b/keyboards/massdrop/ctrl/keymaps/R167/keymap.c
new file mode 100644
index 0000000000..942a002d95
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/R167/keymap.c
@@ -0,0 +1,143 @@
+// Copyright 2021 Winston Durand (@R167)
+// SPDX-License-Identifier: MIT
+
+#include QMK_KEYBOARD_H
+
+enum ctrl_keycodes {
+ U_T_AUTO = SAFE_RANGE, // USB Extra Port Toggle Auto Detect / Always Active
+ U_T_AGCR, // USB Toggle Automatic GCR control
+ DBG_TOG, // DEBUG Toggle On / Off
+ DBG_MTRX, // DEBUG Toggle Matrix Prints
+ DBG_KBD, // DEBUG Toggle Keyboard Prints
+ DBG_MOU, // DEBUG Toggle Mouse Prints
+ MD_BOOT, // Restart into bootloader after hold timeout
+ SLEEP, // Macro to send CMD+ALT+Ejct & turn off lights
+};
+
+enum r167_layers {
+ _QWERTY = 0, // Standard querty layout
+ _FN, // Simple function keys
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_EJCT, KC_HOME, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_VOLD,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT(
+ SLEEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SLEEP, KC_MPLY, _______, _______,
+ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ), \
+ /*
+ [X] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ */
+};
+// clang-format on
+
+#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT)
+#define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
+#define MODS_ALT (get_mods() & MOD_MASK_ALT)
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ static uint32_t key_timer;
+ static bool asleep = false;
+ if (asleep && record->event.pressed) {
+ asleep = false;
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+
+ switch (keycode) {
+ case U_T_AUTO:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_extra_manual, "USB extra port manual mode");
+ }
+ return false;
+ case U_T_AGCR:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
+ }
+ return false;
+ case DBG_TOG:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
+ }
+ return false;
+ case DBG_MTRX:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_matrix, "Debug matrix");
+ }
+ return false;
+ case DBG_KBD:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_keyboard, "Debug keyboard");
+ }
+ return false;
+ case DBG_MOU:
+ if (record->event.pressed) {
+ TOGGLE_FLAG_AND_PRINT(debug_mouse, "Debug mouse");
+ }
+ return false;
+ case MD_BOOT:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ } break;
+ }
+ }
+ return false;
+ case SLEEP:
+ if (record->event.pressed) {
+ // CMD+ALT+EJECT doesn't always reliably trigger. fall back mode
+ // tap_code16(G(A(KC_EJCT)));
+ tap_code16(LCTL(LGUI(KC_Q)));
+ asleep = true;
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ } else if (IS_RELEASED(record->event)) {
+ tap_code(KC_ESCAPE);
+ }
+ return false;
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/massdrop/ctrl/keymaps/R167/readme.md b/keyboards/massdrop/ctrl/keymaps/R167/readme.md
new file mode 100644
index 0000000000..1b805ea6a9
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/R167/readme.md
@@ -0,0 +1,14 @@
+![Layer 0](https://i.imgur.com/iRwr7si.png)
+
+![Layer 1](https://i.imgur.com/b2qwYdR.png)
+
+# R167 massdrop ctrl
+
+The main layer is a ~standard QWERTY layout with the ALT/GUI swap for macOS
+in addition to shifting the `Fn` key one to the right so cmd/alt line up nicely.
+Addionally, I rarely use PgUp/Dn, so I've remapped those to volume control.
+
+The most interesting bit is the shortcut `Fn + Esc` which triggers the macOS sleep
+shortcut (`CMD + ALT + Eject`) and then disables LEDs since the computer will wake up
+peripherals even while the display is asleep. Keyboard is returned to all LEDs on after
+pressing any key.
diff --git a/keyboards/massdrop/ctrl/keymaps/default/keymap.c b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
index 8c0cab2ea9..9d10a70c2e 100644
--- a/keyboards/massdrop/ctrl/keymaps/default/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/default/keymap.c
@@ -12,29 +12,29 @@ enum ctrl_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
- _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
- _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU,
+ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
[X] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
*/
};
diff --git a/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c b/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c
index db36131fca..9dd2032d25 100644
--- a/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/default_md/keymap.c
@@ -29,29 +29,29 @@ enum ctrl_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
- L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
- L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, DBG_FAC, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU,
+ L_T_BR, L_PSD, L_BRI, L_PSI, L_EDG_I, _______, _______, _______, U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD,
+ L_T_PTD, L_PTP, L_BRD, L_PTN, L_EDG_D, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, L_T_MD, L_T_ONF, _______, L_EDG_M, MD_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, DBG_FAC, _______, _______, _______, _______, _______, _______, _______
),
/*
[X] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
*/
};
diff --git a/keyboards/massdrop/ctrl/rules.mk b/keyboards/massdrop/ctrl/rules.mk
index 772d06ec0a..667642f83d 100644
--- a/keyboards/massdrop/ctrl/rules.mk
+++ b/keyboards/massdrop/ctrl/rules.mk
@@ -6,17 +6,14 @@ ARM_ATSAM = SAMD51J18A
MCU = cortex-m4
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/massdrop/thekey/config.h b/keyboards/massdrop/thekey/config.h
new file mode 100644
index 0000000000..a195628203
--- /dev/null
+++ b/keyboards/massdrop/thekey/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Drop
+#define PRODUCT The Key
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 3
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define MATRIX_ROW_PINS { D4 }
+#define MATRIX_COL_PINS { D2, D1, D0 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN B1
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
diff --git a/keyboards/massdrop/thekey/info.json b/keyboards/massdrop/thekey/info.json
new file mode 100644
index 0000000000..ac4c17e8c8
--- /dev/null
+++ b/keyboards/massdrop/thekey/info.json
@@ -0,0 +1,14 @@
+{
+ "keyboard_name": "The Key",
+ "url": "https://drop.com/buy/stack-overflow-the-key-macropad",
+ "maintainer": "massdrop",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "K00 (D4,D2)", "x": 0, "y": 0 },
+ { "label": "K01 (D4,D1)", "x": 1, "y": 0 },
+ { "label": "K02 (D4,D0)", "x": 2, "y": 0 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/massdrop/thekey/keymaps/default-macos/keymap.c b/keyboards/massdrop/thekey/keymaps/default-macos/keymap.c
new file mode 100644
index 0000000000..7e389e304e
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/default-macos/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(KC_LGUI, KC_C, KC_V),
+
+};
diff --git a/keyboards/massdrop/thekey/keymaps/default/keymap.c b/keyboards/massdrop/thekey/keymaps/default/keymap.c
new file mode 100644
index 0000000000..047def84b6
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(KC_LCTL, KC_C, KC_V),
+
+};
diff --git a/keyboards/massdrop/thekey/keymaps/url-copy-paste-macos/keymap.c b/keyboards/massdrop/thekey/keymaps/url-copy-paste-macos/keymap.c
new file mode 100644
index 0000000000..57382dfc5f
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/url-copy-paste-macos/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ TK_URL = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(TK_URL, G(KC_C), G(KC_V)),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TK_URL:
+ if (record->event.pressed) {
+ // when keycode TK_URL is pressed
+ SEND_STRING("https://stackoverflow.com/\n");
+ }
+ break;
+ default:
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/massdrop/thekey/keymaps/url-copy-paste/keymap.c b/keyboards/massdrop/thekey/keymaps/url-copy-paste/keymap.c
new file mode 100644
index 0000000000..18778d1946
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/url-copy-paste/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ TK_URL = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(TK_URL, C(KC_C), C(KC_V)),
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TK_URL:
+ if (record->event.pressed) {
+ // when keycode TK_URL is pressed
+ SEND_STRING("https://stackoverflow.com/");
+ }
+ break;
+ default:
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/massdrop/thekey/readme.md b/keyboards/massdrop/thekey/readme.md
new file mode 100644
index 0000000000..74eab45f5e
--- /dev/null
+++ b/keyboards/massdrop/thekey/readme.md
@@ -0,0 +1,38 @@
+# The Key
+
+![The Key](https://i.imgur.com/hL5cRj9.jpg)
+
+
+The Stack Overflow "The Key" is a 3 button macropad based on atmega32u4 with Kailh Black Box switches.
+
+> Some say a programmer’s best solution is a simple two-step process: copy and paste. On April 1st, 2021, Stack Overflow proved it. On that fateful day, each time users went to copy a piece of code, they were met with a pop-up for a fake product. It was called The Key: an ultra-compact macropad advertised as the new (and only) way to copy and paste on the platform. As it turns out, roughly one fourth of Stack Overflow’s 15 million users tries to copy and paste within five minutes of visiting the site. An even greater number saw the joke and loved it, with many demanding that The Key be developed in earnest. So, naturally, we teamed up with Stack Overflow to make it happen. What started as an April Fool’s gag is now a full-fledged macropad—designed by our very own community member Cassidy, with a portion of proceeds benefiting digitalundivided.
+
+Keyboard Maintainer: [Drop / Massdrop](https://github.com/Massdrop/qmk_firmware)
+
+Hardware Supported: Massdrop, Inc. **The Key**
+
+Hardware Availability: Limited Release - https://drop.com/buy/stack-overflow-the-key-macropad
+
+
+Make example for this keyboard (after setting up your build environment):
+```bash
+# default provided by Drop / Stack Overflow
+make massdrop/thekey:default
+# common modification where C = CTRL+C, V = CTRL+V
+make massdrop/thekey:url-copy-paste
+```
+
+Flashing example for this keyboard:
+```bash
+# install in dfu mode
+make massdrop/thekey:default:dfu
+```
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+Make example for this keyboard (after setting up your build environment):
+
+## Bootloader
+
+Enter the bootloader as follows:
+* **Bootmagic reset**: Hold down the "Stack Overflow" key, the "left-most" or furthest from the USB plug while inserting the USB cable for a few seconds. The LEDs will **NOT** turn on.
+* **Physical reset button**: Briefly press and hold the reset button while pluggin in the USB port. The LEDs on the back will **NOT** turn on. Depending on your case revision, you may have to remove the 4 screws on the back plate to access the switch OR you can use the associated access hole on newer releases.
diff --git a/keyboards/massdrop/thekey/rules.mk b/keyboards/massdrop/thekey/rules.mk
new file mode 100644
index 0000000000..5b0dcd2db4
--- /dev/null
+++ b/keyboards/massdrop/thekey/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/massdrop/thekey/thekey.c b/keyboards/massdrop/thekey/thekey.c
new file mode 100644
index 0000000000..b32c302cd0
--- /dev/null
+++ b/keyboards/massdrop/thekey/thekey.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "thekey.h"
diff --git a/keyboards/massdrop/thekey/thekey.h b/keyboards/massdrop/thekey/thekey.h
new file mode 100644
index 0000000000..f889c973c7
--- /dev/null
+++ b/keyboards/massdrop/thekey/thekey.h
@@ -0,0 +1,27 @@
+/* Copyright 2021 Joe Maples <joe@maples.dev>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ K00, K01, K02 \
+) { \
+ { K00, K01, K02 }, \
+}
diff --git a/keyboards/masterworks/classy_tkl/keymaps/default/config.h b/keyboards/masterworks/classy_tkl/keymaps/default/config.h
deleted file mode 100644
index e328e5a3b0..0000000000
--- a/keyboards/masterworks/classy_tkl/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/masterworks/classy_tkl/keymaps/default_tkl_ansi_wkl/config.h b/keyboards/masterworks/classy_tkl/keymaps/default_tkl_ansi_wkl/config.h
deleted file mode 100644
index e328e5a3b0..0000000000
--- a/keyboards/masterworks/classy_tkl/keymaps/default_tkl_ansi_wkl/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/masterworks/classy_tkl/keymaps/default_tkl_iso_wkl/config.h b/keyboards/masterworks/classy_tkl/keymaps/default_tkl_iso_wkl/config.h
deleted file mode 100644
index e328e5a3b0..0000000000
--- a/keyboards/masterworks/classy_tkl/keymaps/default_tkl_iso_wkl/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2020 Mathias Andersson <wraul@dbox.se>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/masterworks/classy_tkl/rev_a/rules.mk b/keyboards/masterworks/classy_tkl/rev_a/rules.mk
index 24ca03b845..73ac281e0b 100644
--- a/keyboards/masterworks/classy_tkl/rev_a/rules.mk
+++ b/keyboards/masterworks/classy_tkl/rev_a/rules.mk
@@ -4,7 +4,6 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
@@ -13,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matchstickworks/southpad/rules.mk b/keyboards/matchstickworks/southpad/rules.mk
index abb5f15055..5ce64a46c3 100644
--- a/keyboards/matchstickworks/southpad/rules.mk
+++ b/keyboards/matchstickworks/southpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matrix/abelx/rules.mk b/keyboards/matrix/abelx/rules.mk
index bd8156dd67..98b6cfa65e 100644
--- a/keyboards/matrix/abelx/rules.mk
+++ b/keyboards/matrix/abelx/rules.mk
@@ -41,10 +41,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
diff --git a/keyboards/matrix/cain_re/rules.mk b/keyboards/matrix/cain_re/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/matrix/cain_re/rules.mk
+++ b/keyboards/matrix/cain_re/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matrix/falcon/rules.mk b/keyboards/matrix/falcon/rules.mk
index ad5ddd9246..a279def303 100644
--- a/keyboards/matrix/falcon/rules.mk
+++ b/keyboards/matrix/falcon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matrix/m12og/rev1/rules.mk b/keyboards/matrix/m12og/rev1/rules.mk
index ed4293c95a..0e0584b8c9 100644
--- a/keyboards/matrix/m12og/rev1/rules.mk
+++ b/keyboards/matrix/m12og/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # HAS TO BE ON! Otherwise the custom matrix doesn't work
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matrix/m12og/rev2/rules.mk b/keyboards/matrix/m12og/rev2/rules.mk
index 7588e8671d..51da7491d3 100644
--- a/keyboards/matrix/m12og/rev2/rules.mk
+++ b/keyboards/matrix/m12og/rev2/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/matrix/m20add/rules.mk b/keyboards/matrix/m20add/rules.mk
index e5b9093e37..1ecbd9d308 100644
--- a/keyboards/matrix/m20add/rules.mk
+++ b/keyboards/matrix/m20add/rules.mk
@@ -11,14 +11,14 @@ MCU_LDSCRIPT = m20add_boot
BOARD = ST_NUCLEO64_F411RE
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/matrix/me/rules.mk b/keyboards/matrix/me/rules.mk
index eec8ecbaa0..3ff392a61f 100644
--- a/keyboards/matrix/me/rules.mk
+++ b/keyboards/matrix/me/rules.mk
@@ -2,7 +2,7 @@
MCU = atmega32u4
# Bootloader selection
-BOOTLOADER = atmel-dfu
+BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/matrix/noah/rules.mk b/keyboards/matrix/noah/rules.mk
index 83b33df48c..b9f642e8cd 100644
--- a/keyboards/matrix/noah/rules.mk
+++ b/keyboards/matrix/noah/rules.mk
@@ -11,14 +11,14 @@ MCU_LDSCRIPT = noah_boot
BOARD = ST_NUCLEO64_F411RE
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h
deleted file mode 100644
index 08c234aee2..0000000000
--- a/keyboards/maxipad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c
index 0971569319..fe7f238b4a 100644
--- a/keyboards/maxipad/keymaps/default/keymap.c
+++ b/keyboards/maxipad/keymaps/default/keymap.c
@@ -17,17 +17,17 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \
- MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, \
- KC_LCTL, KC_LALT, MO(1), KC_ENT, KC_GRV, KC_SPC \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_LCTL, KC_LALT, MO(1), KC_ENT, KC_GRV, KC_SPC
),
[1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \
- _______, _______, KC_UP, _______, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \
- _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ _______, _______, KC_UP, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk
index 35b135deed..c21aaab851 100644
--- a/keyboards/maxipad/rules.mk
+++ b/keyboards/maxipad/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/maxr1998/phoebe/config.h b/keyboards/maxr1998/phoebe/config.h
index b52221dc03..cce72108c5 100644
--- a/keyboards/maxr1998/phoebe/config.h
+++ b/keyboards/maxr1998/phoebe/config.h
@@ -23,57 +23,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
-#define MANUFACTURER Maxr1998
#define PRODUCT Phoebe
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 12
-
-/* Planck PCB default pin-out */
-#define MATRIX_ROW_PINS { B7, B3, B2, B1, D6 }
-#define MATRIX_COL_PINS { D7, B4, B5, B6, C6, C7, B0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* Set 0 if debouncing isn't needed */
-#define DEBOUNCE 5
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* RGB LED Setup */
-#define RGB_DI_PIN F0 // pin the DI on the WS2812B is hooked-up to
-#define RGBLED_NUM 8 // number of LEDs
-
/* Selectively enable animation effects */
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
-
-/* Leader key setup */
-#define LEADER_PER_KEY_TIMING
-#define LEADER_TIMEOUT 250
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
diff --git a/keyboards/maxr1998/phoebe/info.json b/keyboards/maxr1998/phoebe/info.json
index 5892684245..1b22277d8a 100644
--- a/keyboards/maxr1998/phoebe/info.json
+++ b/keyboards/maxr1998/phoebe/info.json
@@ -1,69 +1,351 @@
{
- "keyboard_name": "Phoebe",
- "url": "https://github.com/Maxr1998/Phoebe_Keyboard",
- "maintainer": "Maxr1998",
- "layouts": {
- "LAYOUT": {
- "layout": [
- { "w": 1, "x": 0, "y": 0 },
- { "w": 1, "x": 1, "y": 0 },
- { "w": 1, "x": 2, "y": 0 },
- { "w": 1, "x": 3, "y": 0 },
- { "w": 1, "x": 4, "y": 0 },
- { "w": 1, "x": 5, "y": 0 },
- { "w": 1, "x": 6, "y": 0 },
- { "w": 1, "x": 7, "y": 0 },
- { "w": 1, "x": 8, "y": 0 },
- { "w": 1, "x": 9, "y": 0 },
- { "w": 1, "x": 10, "y": 0 },
- { "w": 1, "x": 11, "y": 0 },
- { "w": 1, "x": 0, "y": 1 },
- { "w": 1, "x": 1, "y": 1 },
- { "w": 1, "x": 2, "y": 1 },
- { "w": 1, "x": 3, "y": 1 },
- { "w": 1, "x": 4, "y": 1 },
- { "w": 1, "x": 5, "y": 1 },
- { "w": 1, "x": 6, "y": 1 },
- { "w": 1, "x": 7, "y": 1 },
- { "w": 1, "x": 8, "y": 1 },
- { "w": 1, "x": 9, "y": 1 },
- { "w": 1, "x": 10, "y": 1 },
- { "w": 1, "x": 11, "y": 1 },
- { "w": 1, "x": 0, "y": 2 },
- { "w": 1, "x": 1, "y": 2 },
- { "w": 1, "x": 2, "y": 2 },
- { "w": 1, "x": 3, "y": 2 },
- { "w": 1, "x": 4, "y": 2 },
- { "w": 1, "x": 5, "y": 2 },
- { "w": 1, "x": 6, "y": 2 },
- { "w": 1, "x": 7, "y": 2 },
- { "w": 1, "x": 8, "y": 2 },
- { "w": 1, "x": 9, "y": 2 },
- { "w": 1, "x": 10, "y": 2 },
- { "w": 1, "x": 11, "y": 2 },
- { "w": 1, "x": 0, "y": 3 },
- { "w": 1, "x": 1, "y": 3 },
- { "w": 1, "x": 2, "y": 3 },
- { "w": 1, "x": 3, "y": 3 },
- { "w": 1, "x": 4, "y": 3 },
- { "w": 1, "x": 5, "y": 3 },
- { "w": 1, "x": 6, "y": 3 },
- { "w": 1, "x": 7, "y": 3 },
- { "w": 1, "x": 8, "y": 3 },
- { "w": 1, "x": 9, "y": 3 },
- { "w": 1, "x": 10, "y": 3 },
- { "w": 1, "x": 11, "y": 3 },
- { "w": 1, "x": 0, "y": 4 },
- { "w": 1, "x": 1, "y": 4 },
- { "w": 1, "x": 2, "y": 4 },
- { "w": 1, "x": 3, "y": 4 },
- { "w": 1, "x": 4, "y": 4 },
- { "w": 2, "x": 5, "y": 4 },
- { "w": 1, "x": 7, "y": 4 },
- { "w": 1, "x": 8, "y": 4 },
- { "w": 1, "x": 9, "y": 4 },
- { "w": 1, "x": 10, "y": 4 },
- { "w": 1, "x": 11, "y": 4 } ]
+ "keyboard_name": "Phoebe",
+ "maintainer": "Maxr1998",
+ "manufacturer": "Maxr1998",
+ "url": "https://github.com/Maxr1998/Phoebe_Keyboard",
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "bootloader_instructions": "Tap reset button on the back.",
+ "diode_direction": "COL2ROW",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": true,
+ "key_lock": true,
+ "leader": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "w": 1,
+ "x": 0,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 1,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 2,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 3,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 4,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 5,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 6,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 7,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 8,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 9,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 10,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 11,
+ "y": 0
+ },
+ {
+ "w": 1,
+ "x": 0,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 1,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 2,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 3,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 4,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 5,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 6,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 7,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 8,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 9,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 10,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 11,
+ "y": 1
+ },
+ {
+ "w": 1,
+ "x": 0,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 1,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 2,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 3,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 4,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 5,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 6,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 7,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 8,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 9,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 10,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 11,
+ "y": 2
+ },
+ {
+ "w": 1,
+ "x": 0,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 1,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 2,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 3,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 4,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 5,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 6,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 7,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 8,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 9,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 10,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 11,
+ "y": 3
+ },
+ {
+ "w": 1,
+ "x": 0,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 1,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 2,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 3,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 4,
+ "y": 4
+ },
+ {
+ "w": 2,
+ "x": 5,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 7,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 8,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 9,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 10,
+ "y": 4
+ },
+ {
+ "w": 1,
+ "x": 11,
+ "y": 4
+ }
+ ]
+ }
+ },
+ "leader_key": {
+ "timing": true,
+ "timeout": 250
+ },
+ "matrix_pins": {
+ "cols": [
+ "D7",
+ "B4",
+ "B5",
+ "B6",
+ "C6",
+ "C7",
+ "B0",
+ "F1",
+ "F4",
+ "F5",
+ "F6",
+ "F7"
+ ],
+ "rows": [
+ "B7",
+ "B3",
+ "B2",
+ "B1",
+ "D6"
+ ]
+ },
+ "rgblight": {
+ "led_count": 8,
+ "pin": "F0"
}
- }
}
diff --git a/keyboards/maxr1998/phoebe/rules.mk b/keyboards/maxr1998/phoebe/rules.mk
index 04b1d031a2..e69de29bb2 100644
--- a/keyboards/maxr1998/phoebe/rules.mk
+++ b/keyboards/maxr1998/phoebe/rules.mk
@@ -1,22 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = no # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-KEY_LOCK_ENABLE = yes
-LEADER_ENABLE = yes # Enable leader key
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
index 1ed4b5f1af..243a96ba74 100644
--- a/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
+++ b/keyboards/maxr1998/pulse4k/keymaps/default/keymap.c
@@ -21,6 +21,10 @@ enum layers {
DEFAULT
};
+enum combo_events {
+ LED_ADJUST
+};
+
const uint16_t PROGMEM led_adjust_combo[] = {KC_LEFT, KC_RGHT, COMBO_END};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -29,3 +33,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LEFT, KC_DOWN, KC_RGHT
)
};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [LED_ADJUST] = COMBO_ACTION(led_adjust_combo)
+};
+
+bool led_adjust_active = false;
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ if (combo_index == LED_ADJUST) {
+ led_adjust_active = pressed;
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (led_adjust_active) {
+ if (clockwise) {
+ rgblight_increase_val();
+ } else {
+ rgblight_decrease_val();
+ }
+ return false;
+ }
+ } else if (index == 1) {
+ if (led_adjust_active) {
+ if (clockwise) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ return false;
+ }
+ }
+
+ return true;
+}
diff --git a/keyboards/maxr1998/pulse4k/keymaps/default/rules.mk b/keyboards/maxr1998/pulse4k/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/maxr1998/pulse4k/keymaps/default/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c
index 9eec3f0ae7..2aad1fa346 100644
--- a/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c
+++ b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/keymap.c
@@ -21,6 +21,10 @@ enum layers {
DEFAULT
};
+enum combo_events {
+ LED_ADJUST
+};
+
const uint16_t PROGMEM led_adjust_combo[] = {KC_F22, KC_F24, COMBO_END};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -30,6 +34,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
+combo_t key_combos[COMBO_COUNT] = {
+ [LED_ADJUST] = COMBO_ACTION(led_adjust_combo)
+};
+
+bool led_adjust_active = false;
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ if (combo_index == LED_ADJUST) {
+ led_adjust_active = pressed;
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (led_adjust_active) {
+ if (clockwise) {
+ rgblight_increase_val();
+ } else {
+ rgblight_decrease_val();
+ }
+ return false;
+ }
+ } else if (index == 1) {
+ if (led_adjust_active) {
+ if (clockwise) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ return false;
+ }
+ }
+
+ return true;
+}
+
void encoder_one_update(bool clockwise) {
tap_code(!clockwise ? KC_F18 : KC_F19);
}
diff --git a/keyboards/maxr1998/pulse4k/keymaps/maxr1998/rules.mk b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/maxr1998/pulse4k/keymaps/maxr1998/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/maxr1998/pulse4k/pulse4k.c b/keyboards/maxr1998/pulse4k/pulse4k.c
index 21bbe5d68e..f31eb6db37 100644
--- a/keyboards/maxr1998/pulse4k/pulse4k.c
+++ b/keyboards/maxr1998/pulse4k/pulse4k.c
@@ -16,44 +16,14 @@
*/
#include "pulse4k.h"
-#include "rgblight.h"
-
-enum combo_events {
- LED_ADJUST
-};
-
-extern const uint16_t PROGMEM led_adjust_combo[3];
-
-combo_t key_combos[COMBO_COUNT] = {
- [LED_ADJUST] = COMBO_ACTION(led_adjust_combo)
-};
-
-bool led_adjust_active = false;
-
-void process_combo_event(uint16_t combo_index, bool pressed) {
- if (combo_index == LED_ADJUST) {
- led_adjust_active = pressed;
- }
-}
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
+
if (index == 0) {
- if (led_adjust_active) {
- if (clockwise) {
- rgblight_increase_val();
- } else {
- rgblight_decrease_val();
- }
- } else encoder_one_update(clockwise);
+ encoder_one_update(clockwise);
} else if (index == 1) {
- if (led_adjust_active) {
- if (clockwise) {
- rgblight_increase_hue();
- } else {
- rgblight_decrease_hue();
- }
- } else encoder_two_update(clockwise);
+ encoder_two_update(clockwise);
}
return true;
}
diff --git a/keyboards/maxr1998/pulse4k/rules.mk b/keyboards/maxr1998/pulse4k/rules.mk
index b977e5db22..5533ac6f35 100644
--- a/keyboards/maxr1998/pulse4k/rules.mk
+++ b/keyboards/maxr1998/pulse4k/rules.mk
@@ -5,8 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
@@ -14,9 +13,7 @@ ENCODER_ENABLE = yes # Rotary encoders
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-COMBO_ENABLE = yes # Key combo feature
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/mb44/rules.mk b/keyboards/mb44/rules.mk
index a0de6aceff..25bfe0732a 100644
--- a/keyboards/mb44/rules.mk
+++ b/keyboards/mb44/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mc_76k/rules.mk b/keyboards/mc_76k/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/mc_76k/rules.mk
+++ b/keyboards/mc_76k/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechanickeys/miniashen40/info.json b/keyboards/mechanickeys/miniashen40/info.json
index 6a6b1e951a..bf46a8bdcd 100644
--- a/keyboards/mechanickeys/miniashen40/info.json
+++ b/keyboards/mechanickeys/miniashen40/info.json
@@ -1,15 +1,62 @@
{
- "keyboard_name": "Mini Ashen 40",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label": "Tab", "x": 0, "y": 0}, {"label": "Q", "x": 1, "y": 0}, {"label": "W", "x": 2, "y": 0}, {"label": "E", "x": 3, "y": 0}, {"label": "R", "x": 4, "y": 0}, {"label": "T", "x": 5, "y": 0}, {"label": "Y", "x": 6, "y": 0}, {"label": "U", "x": 7, "y": 0}, {"label": "I", "x": 8, "y": 0}, {"label": "O", "x": 9, "y": 0}, {"label": "P", "x": 10, "y": 0}, {"label": "Del", "x": 11, "y": 0}, {"label": "M1", "x": 12.25, "y": 0}, {"label": "M2", "x": 13.25, "y": 0},
- {"label": "Ctrl", "x": 0, "y": 1, "w":1.25}, {"label": "A", "x": 1.25, "y": 1}, {"label": "S", "x": 2.25, "y": 1}, {"label": "D", "x": 3.25, "y": 1}, {"label": "F", "x": 4.25, "y": 1}, {"label": "G", "x": 5.25, "y": 1}, {"label": "H", "x": 6.25, "y": 1}, {"label": "J", "x": 7.25, "y": 1}, {"label": "K", "x": 8.25, "y": 1}, {"label": "L", "x": 9.25, "y": 1}, {"label": "Enter", "x": 10.25, "y": 1, "w":1.75}, {"label": "M3", "x": 12.25, "y": 1}, {"label": "M4", "x": 13.25, "y": 1},
- {"label": "Shift", "x": 0, "y": 2, "w":1.75}, {"label": "Z", "x": 1.75, "y": 2}, {"label": "X", "x": 2.75, "y": 2}, {"label": "C", "x": 3.75, "y": 2}, {"label": "V", "x": 4.75, "y": 2}, {"label": "B", "x": 5.75, "y": 2}, {"label": "N", "x": 6.75, "y": 2}, {"label": "M", "x": 7.75, "y": 2}, {"label": ",", "x": 8.75, "y": 2}, {"label": ".", "x": 9.75, "y": 2}, {"label": "Fn", "x": 10.75, "y": 2, "w":1.25}, {"label": "Up", "x": 12.25, "y": 2.25},
- {"label": "Alt", "x": 1, "y": 3}, {"label": "OS", "x": 2, "y": 3, "w": 1.5}, {"label": "", "x": 3.5, "y": 3, "w": 2.75}, {"label": "", "x": 6.25, "y": 3, "w": 2.25}, {"label": "Os", "x": 8.5, "y": 3, "w": 1.5}, {"label": "Alt", "x": 10, "y": 3}, {"label": "Left", "x": 11.25, "y": 3.25}, {"label": "Down", "x": 12.25, "y": 3.25}, {"label": "Right", "x": 13.25, "y": 3.25}
- ]
+ "keyboard_name": "Mini Ashen 40",
+ "url": "",
+ "maintainer": "jfescobar18",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Tab", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"Del", "x":11, "y":0},
+ {"label":"M1", "x":12.25, "y":0},
+ {"label":"M2", "x":13.25, "y":0},
+
+ {"label":"Ctrl", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":"Enter", "x":10.25, "y":1, "w":1.75},
+ {"label":"M3", "x":12.25, "y":1},
+ {"label":"M4", "x":13.25, "y":1},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",", "x":8.75, "y":2},
+ {"label":".", "x":9.75, "y":2},
+ {"label":"Fn", "x":10.75, "y":2, "w":1.25},
+ {"label":"Up", "x":12.25, "y":2.25},
+
+ {"label":"Alt", "x":1, "y":3},
+ {"label":"OS", "x":2, "y":3, "w":1.5},
+ {"label":"", "x":3.5, "y":3, "w":2.75},
+ {"label":"", "x":6.25, "y":3, "w":2.25},
+ {"label":"Os", "x":8.5, "y":3, "w":1.5},
+ {"label":"Alt", "x":10, "y":3},
+ {"label":"Left", "x":11.25, "y":3.25},
+ {"label":"Down", "x":12.25, "y":3.25},
+ {"label":"Right", "x":13.25, "y":3.25}
+ ]
+ }
}
- }
-} \ No newline at end of file
+}
diff --git a/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c b/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c
index b49b5882fa..4f4b79e45e 100644
--- a/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c
+++ b/keyboards/mechanickeys/miniashen40/keymaps/default/keymap.c
@@ -1,47 +1,47 @@
/* Copyright 2021 jfescobar18
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( /* 0: qwerty */
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT,
+ [0] = LAYOUT( /* 0: qwerty */
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MPRV, KC_MNXT,
CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP,
KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT( /* 1: Symbols */
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS,
+ [1] = LAYOUT( /* 1: Symbols */
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS,
MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [2] = LAYOUT( /* 2: Fn */
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS,
+ [2] = LAYOUT( /* 2: Fn */
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [3] = LAYOUT( /*3: Empty */
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [3] = LAYOUT( /*3: Empty */
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
diff --git a/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c b/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c
index 0aa9476b4e..bb7721561d 100644
--- a/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c
+++ b/keyboards/mechanickeys/miniashen40/keymaps/via/keymap.c
@@ -17,31 +17,31 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( /* 0: qwerty */
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MPRV, KC_MNXT,
+ [0] = LAYOUT( /* 0: qwerty */
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_MPRV, KC_MNXT,
CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, KC_MUTE, KC_MPLY,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP, KC_BSPC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, MO(1), KC_UP,
KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT( /* 1: Symbols */
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_TRNS, KC_TRNS,
+ [1] = LAYOUT( /* 1: Symbols */
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS,
MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_BSLS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, KC_EQL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [2] = LAYOUT( /* 2: Fn */
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS,
+ [2] = LAYOUT( /* 2: Fn */
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [3] = LAYOUT( /*3: Empty */
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [3] = LAYOUT( /*3: Empty */
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
diff --git a/keyboards/mechanickeys/miniashen40/miniashen40.h b/keyboards/mechanickeys/miniashen40/miniashen40.h
index 4430396b41..5d6e639b20 100644
--- a/keyboards/mechanickeys/miniashen40/miniashen40.h
+++ b/keyboards/mechanickeys/miniashen40/miniashen40.h
@@ -1,17 +1,17 @@
/* Copyright 2021 jfescobar18
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
@@ -20,19 +20,24 @@
#define XXX KC_NO
-/* This is a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │2C ││0B │0C │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤├───┼───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A ││1B │1C │
+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤└───┴───┘
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │┌───┐
+ * └───┬──┴┬──┴──┬┴───┴───┴─┬─┴───┴──┬┴───┴┬──┴┬───┘│2B │
+ * │30 │31 │33 │36 │38 │39 │┌───┼───┼───┐
+ * └───┴─────┴──────────┴────────┴─────┴───┘│3A │3B │3C │
+ * └───┴───┴───┘
*/
+
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- K30, K31, K33, K36, K38, K39, K3A, K3B, K3C \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K2C, K0B, K0C, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
+ K30, K31, K33, K36, K38, K39, K3A, K3B, K3C \
) \
{ \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
diff --git a/keyboards/mechanickeys/miniashen40/rules.mk b/keyboards/mechanickeys/miniashen40/rules.mk
index 2057d9c939..d1dde8af62 100644
--- a/keyboards/mechanickeys/miniashen40/rules.mk
+++ b/keyboards/mechanickeys/miniashen40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechanickeys/undead60m/rules.mk b/keyboards/mechanickeys/undead60m/rules.mk
index eb0e0270de..d5f4c9de7c 100644
--- a/keyboards/mechanickeys/undead60m/rules.mk
+++ b/keyboards/mechanickeys/undead60m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechbrewery/mb65s/config.h b/keyboards/mechbrewery/mb65s/config.h
new file mode 100644
index 0000000000..79f2028323
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/config.h
@@ -0,0 +1,72 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4252 //BR
+#define PRODUCT_ID 0x3635 //65
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MechBrewery
+#define PRODUCT MB65S
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+#define MATRIX_ROW_PINS { B7, D0, F0, F1, F4 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, D1, D2, D3, D6, D7, B4, B6, C6, C7, F7, F6, F5 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debouncing reduces chatter */
+#define DEBOUNCE 5
+
+/* indicators */
+#define LED_CAPS_LOCK_PIN D4
+#define LED_PIN_ON_STATE 0
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B5
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 16
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 240
+#define RGBLIGHT_SLEEP
+#endif
diff --git a/keyboards/mechbrewery/mb65s/info.json b/keyboards/mechbrewery/mb65s/info.json
new file mode 100644
index 0000000000..b11e07fa26
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/info.json
@@ -0,0 +1,233 @@
+{
+ "keyboard_name": "mb65s",
+ "url": "",
+ "maintainer": "AnthonyNguyen168",
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_isoenter": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c
new file mode 100644
index 0000000000..512c04a296
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Keymap (Base Layer) Default Layer
+ * ,---------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |Del|
+ * |---------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |PUp|
+ * |---------------------------------------------------------------|
+ * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return |PDn|
+ * |---------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End|
+ * |---------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |Alt | Fn | |Lef|Dow|Rig|
+ * `---------------------------------------------------------------'
+ */
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Keymap Fn Layer
+ * ,---------------------------------------------------------------.
+ * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete |Ins|
+ * |---------------------------------------------------------------|
+ * | | |Up | | | | | |PSc|SLk|Pau|Up | | | |
+ * |---------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| Reset | |
+ * |---------------------------------------------------------------|
+ * | |BL-|BLT|BL+|BLS|BLM| | |End|PDn|Dow| |PUp| |
+ * |---------------------------------------------------------------|
+ * | | | | | | | |Hom|PDn|End|
+ * `---------------------------------------------------------------'
+ */
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, RESET, _______,
+ _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, BL_BRTG, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+};
diff --git a/keyboards/mechbrewery/mb65s/keymaps/default/readme.md b/keyboards/mechbrewery/mb65s/keymaps/default/readme.md
new file mode 100644
index 0000000000..50d242b75a
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for the MB65S
diff --git a/keyboards/mechbrewery/mb65s/keymaps/iso/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..f6101815ac
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/iso/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PUp│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
+ * │Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PDn│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │Shft │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│LGUI│LAlt│ Space │RAlt│Fn │ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_65_ansi_blocker_isoenter(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Function layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ § │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│Delete │Prt│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │Prv│Pau│Nxt│ │ │ │ │ │ │ │ │ │Reset│Ins│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ │Vl-│V0 │Vl+│ │ │ │ │ │ │ │ │ │ │Hom│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │BL-│BLT│BL+│BLS│BLM│ │ │ │ │ │LClick│MUp│End│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │MLt│MDw│MRt│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_65_ansi_blocker_isoenter(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_HOME,
+ _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, BL_BRTG, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_END,
+ _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+
+};
diff --git a/keyboards/mechbrewery/mb65s/keymaps/iso/readme.md b/keyboards/mechbrewery/mb65s/keymaps/iso/readme.md
new file mode 100644
index 0000000000..2397d2e858
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/iso/readme.md
@@ -0,0 +1,33 @@
+# Keymap by tuananhnguyen204
+
+Almost a default ISO layout, except Caps Lock swapped `MO(1)`.
+
+Made with `LAYOUT_65_ansi_blocker_isoenter`
+
+```
+Base layer
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+│Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Del│
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PUp│
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
+│ Fn │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PDn│
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│Shft │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+│Ctrl│LGUI│LAlt│ Space │RAlt│App │ │ ← │ ↓ │ → │
+└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+
+Function layer
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+│ § │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│Delete │Prt│
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+│Caps │Prv│Pau│Nxt│ │ │ │ │ │ │BL+│BL-│BLT│Reset│Ins│
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+│ │Vl-│V0 │Vl+│ │ │ │ │ │ │ │ │ │ │Hom│
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │BL-│BLT│BL+│BLS│BLM│ │ │ │ │ │LClick│MUp│End│
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+│ │ │ │ │ │ │ │MLt│MDw│MRt│
+└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+```
diff --git a/keyboards/mechbrewery/mb65s/keymaps/split_bs/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/split_bs/keymap.c
new file mode 100644
index 0000000000..0cbb5040ea
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/split_bs/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Keymap (Base Layer) Default Layer
+ * ,---------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| - | = |Bsp|Del|Hom|
+ * |---------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [ | ] | \ |PUp|
+ * |---------------------------------------------------------------|
+ * |Caps | A| S| D| F| G| H| J| K| L| ; | ' |Return |PDn|
+ * |---------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| , | . | / |Shift | Up|Hom|
+ * |---------------------------------------------------------------|
+ * |Ctrl|LGUI|Alt | Space |GUI |Fn | |Lef|Dow|Rig|
+ * `---------------------------------------------------------------'
+ */
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Keymap Fn Layer
+ * ,---------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| - | = | |Del|Ins|
+ * |---------------------------------------------------------------|
+ * | | |Up | | | | | |PSc|SLk|Pau|Up | | | |
+ * |---------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | |Hom|PUp|Lef|Rig| Reset |Vl+|
+ * |---------------------------------------------------------------|
+ * | |BL-|BLT|BL+|BLS|BLM| | |End|PDn|Dow| | |Vl-|
+ * |---------------------------------------------------------------|
+ * | | | | | | | |Prv|Ply|Nxt|
+ * `---------------------------------------------------------------'
+ */
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_INS,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, RESET, KC_VOLU,
+ _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, BL_BRTG, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+
+};
diff --git a/keyboards/mechbrewery/mb65s/keymaps/split_bs/readme.md b/keyboards/mechbrewery/mb65s/keymaps/split_bs/readme.md
new file mode 100644
index 0000000000..50d242b75a
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/keymaps/split_bs/readme.md
@@ -0,0 +1 @@
+# The default keymap for the MB65S
diff --git a/keyboards/mechbrewery/mb65s/mb65s.c b/keyboards/mechbrewery/mb65s/mb65s.c
new file mode 100644
index 0000000000..49a62affe7
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/mb65s.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mb65s.h" \ No newline at end of file
diff --git a/keyboards/mechbrewery/mb65s/mb65s.h b/keyboards/mechbrewery/mb65s/mb65s.h
new file mode 100644
index 0000000000..ff03e7a0e6
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/mb65s.h
@@ -0,0 +1,90 @@
+/* Copyright 2021 MechBrewery
+ * Author: tuananhnguyen204 (https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │ │0E │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐2D │ ISO Enter
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2F │ │1E │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │3F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │43 │46 │4A │4B │ │4D │4E │4F │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, XXX, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, XXX, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E, K0F }, \
+ { K10, XXX, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, XXX, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_isoenter( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1E, K2D, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, XXX, K0E, K0F }, \
+ { K10, XXX, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, XXX, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, XXX, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_split_bs LAYOUT_all
diff --git a/keyboards/mechbrewery/mb65s/readme.md b/keyboards/mechbrewery/mb65s/readme.md
new file mode 100644
index 0000000000..e8505cb6fe
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/readme.md
@@ -0,0 +1,17 @@
+# MechBrewery MB65S
+
+65% keyboard with originally sold for the MechBrewery MB-65S.
+
+* Keyboard Maintainer: [tuananhnguyen204](https://github.com/AnthonyNguyen168) (tuananhnguyen204@gmail.com)
+* Hardware Supported: MechBrewery MB-65S
+* Hardware Availability: N/A
+* Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechbrewery/mb65s:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mechbrewery/mb65s/rules.mk b/keyboards/mechbrewery/mb65s/rules.mk
new file mode 100644
index 0000000000..d0cf09161a
--- /dev/null
+++ b/keyboards/mechbrewery/mb65s/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
+
+LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs
diff --git a/keyboards/mechkeys/mk60/keymaps/default/config.h b/keyboards/mechkeys/mk60/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/mechkeys/mk60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/mechkeys/mk60/keymaps/default/keymap.c b/keyboards/mechkeys/mk60/keymaps/default/keymap.c
index 7718902eba..7471a3cd3e 100644
--- a/keyboards/mechkeys/mk60/keymaps/default/keymap.c
+++ b/keyboards/mechkeys/mk60/keymaps/default/keymap.c
@@ -22,19 +22,19 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_NO, KC_Z, \
- KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, \
- MO(1), KC_SPC, KC_RALT, KC_PGUP, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT \
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_NO, KC_Z,
+ KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_DEL, KC_LCTL, KC_LGUI, KC_LALT,
+ MO(1), KC_SPC, KC_RALT, KC_PGUP, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT( \
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, \
- BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, \
- RGB_MOD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ [1] = LAYOUT(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG,
+ RGB_MOD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
diff --git a/keyboards/mechkeys/mk60/rules.mk b/keyboards/mechkeys/mk60/rules.mk
index 0d9012c70b..3ca912f6ec 100644
--- a/keyboards/mechkeys/mk60/rules.mk
+++ b/keyboards/mechkeys/mk60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechllama/g35/rules.mk b/keyboards/mechllama/g35/rules.mk
index d0f3ce4ede..af6241ff59 100644
--- a/keyboards/mechllama/g35/rules.mk
+++ b/keyboards/mechllama/g35/rules.mk
@@ -4,7 +4,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
index b0f082cc88..c0817d6062 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
@@ -87,7 +87,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/mechlovin/adelais/rules.mk b/keyboards/mechlovin/adelais/rules.mk
index 8b6c9a433e..f609e13993 100644
--- a/keyboards/mechlovin/adelais/rules.mk
+++ b/keyboards/mechlovin/adelais/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
LAYOUTS = alice alice_split_bs
diff --git a/keyboards/mechlovin/adelais/standard_led/rules.mk b/keyboards/mechlovin/adelais/standard_led/rules.mk
index b3c522ca06..271c6a9179 100644
--- a/keyboards/mechlovin/adelais/standard_led/rules.mk
+++ b/keyboards/mechlovin/adelais/standard_led/rules.mk
@@ -1,5 +1,5 @@
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
DEFAULT_FOLDER = mechlovin/adelais/standard_led/arm/rev2
diff --git a/keyboards/mechlovin/delphine/rules.mk b/keyboards/mechlovin/delphine/rules.mk
index c95ae3887b..5279b625ee 100644
--- a/keyboards/mechlovin/delphine/rules.mk
+++ b/keyboards/mechlovin/delphine/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah60rgb/rules.mk b/keyboards/mechlovin/hannah60rgb/rules.mk
index ef38f055fc..8b57ebc30b 100644
--- a/keyboards/mechlovin/hannah60rgb/rules.mk
+++ b/keyboards/mechlovin/hannah60rgb/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah65/config.h b/keyboards/mechlovin/hannah65/config.h
index 8c94fe4b35..f0aa801396 100644
--- a/keyboards/mechlovin/hannah65/config.h
+++ b/keyboards/mechlovin/hannah65/config.h
@@ -42,10 +42,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
#define LED_CAPS_LOCK_PIN B9
+#define LED_PIN_ON_STATE 0
#define BACKLIGHT_PIN B8
#define BACKLIGHT_BREATHING
-#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_DRIVER PWMD4
#define BACKLIGHT_PWM_CHANNEL 3
#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/mechlovin/hannah65/rev1/haus/config.h b/keyboards/mechlovin/hannah65/rev1/haus/config.h
index 4d517ef475..204bf356e7 100644
--- a/keyboards/mechlovin/hannah65/rev1/haus/config.h
+++ b/keyboards/mechlovin/hannah65/rev1/haus/config.h
@@ -19,4 +19,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT_ID 0x6500
#define DEVICE_VER 0x0001
-#define PRODUCTION Haus Rev. 1 \ No newline at end of file
+#define PRODUCT Haus Rev. 1 \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah65/rules.mk b/keyboards/mechlovin/hannah65/rules.mk
index 6323e8584f..39cf604383 100644
--- a/keyboards/mechlovin/hannah65/rules.mk
+++ b/keyboards/mechlovin/hannah65/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah910/rev1/rules.mk b/keyboards/mechlovin/hannah910/rev1/rules.mk
index 3fe754c12a..c483c98ee3 100644
--- a/keyboards/mechlovin/hannah910/rev1/rules.mk
+++ b/keyboards/mechlovin/hannah910/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah910/rev2/rules.mk b/keyboards/mechlovin/hannah910/rev2/rules.mk
index 6afb684cc8..8a0a3dd4c3 100644
--- a/keyboards/mechlovin/hannah910/rev2/rules.mk
+++ b/keyboards/mechlovin/hannah910/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah910/rev3/rules.mk b/keyboards/mechlovin/hannah910/rev3/rules.mk
index a87762efe8..376a012e98 100644
--- a/keyboards/mechlovin/hannah910/rev3/rules.mk
+++ b/keyboards/mechlovin/hannah910/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hex4b/config.h b/keyboards/mechlovin/hex4b/config.h
index 789e5517b4..c8176d76b5 100644
--- a/keyboards/mechlovin/hex4b/config.h
+++ b/keyboards/mechlovin/hex4b/config.h
@@ -20,11 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C //MechLovin
+#define VENDOR_ID 0x4D4C
#define PRODUCT_ID 0x0675 //Hex-75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team Mechlovin
-#define PRODUCT Hex 4B
+#define MANUFACTURER Mechlovin Studio
/* key matrix size */
#define MATRIX_ROWS 6
@@ -41,23 +39,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-#define MATRIX_ROW_PINS { B7, A2, A1, A3, A4, A5 }
-#define MATRIX_COL_PINS { B6, B5, B3, B2, B1, B0, A0, A6, A7, C7, C6, C5, C4, D1, D0 }
-#define UNUSED_PINS
-
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
-#define LED_NUM_LOCK_PIN D6
-#define LED_CAPS_LOCK_PIN D7
-#define LED_SCROLL_LOCK_PIN D5
#define LED_PIN_ON_STATE 0
-//#define LED_COMPOSE_PIN B3
-//#define LED_KANA_PIN B4
-
-#define BACKLIGHT_PIN D4
-#define BACKLIGHT_LEVELS 5
-#define BACKLIGHT_BREATHING
/* Bootmagic Lite key configuration, Backspace */
#define BOOTMAGIC_LITE_ROW 1
diff --git a/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c b/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c
new file mode 100644
index 0000000000..437233be52
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2020 Team Mechlovin
+ * Copyright 2021 Nazerim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_bs(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_SPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
+
+bool led_update_user(led_t led_state) {
+
+ // Toggle CAPS_LOCK LED normally
+
+# if LED_PIN_ON_STATE == 0
+ // invert the whole thing to avoid having to conditionally !led_state.x later
+ led_state.raw = ~led_state.raw;
+# endif
+# ifdef LED_CAPS_LOCK_PIN
+ writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
+# endif
+
+ // Don't call led_update_kb
+ return false;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+
+ uint8_t layer = biton32(state);
+
+#if defined(LED_NUM_LOCK_PIN) && defined(LED_SCROLL_LOCK_PIN)
+ switch (layer) {
+ case 0:
+ writePin(LED_SCROLL_LOCK_PIN, !LED_PIN_ON_STATE);
+ writePin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE);
+ break;
+ case 1:
+ writePin(LED_SCROLL_LOCK_PIN, LED_PIN_ON_STATE);
+ writePin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE);
+ break;
+ case 2:
+ writePin(LED_SCROLL_LOCK_PIN, !LED_PIN_ON_STATE);
+ writePin(LED_NUM_LOCK_PIN, LED_PIN_ON_STATE);
+ break;
+ case 3:
+ writePin(LED_SCROLL_LOCK_PIN, LED_PIN_ON_STATE);
+ writePin(LED_NUM_LOCK_PIN, LED_PIN_ON_STATE);
+ break;
+ }
+#endif
+
+ return state;
+
+}
diff --git a/keyboards/mechlovin/hex4b/keymaps/nazzer/reame.md b/keyboards/mechlovin/hex4b/keymaps/nazzer/reame.md
new file mode 100644
index 0000000000..a8a686d8bc
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/keymaps/nazzer/reame.md
@@ -0,0 +1,15 @@
+# Nazzer's Hex 4b - Layers on Scroll Lock and Num Lock LED
+
+Repurposed the Scroll Lock and Num Lock LED's as Hex 4b does not have a NUM pad and default layout does not map Scroll Lock
+- Top LED shows CAPS lock status
+- Layer indicators:
+- Layer 0: bottom LED off, middle LED off
+- Layer 1: bottom LED on , middle LED off
+- Layer 2: bottom LED off, middle LED on
+- Layer 3: bottom LED on , middle LED on
+
+## Changelog
+
+### 15/11/2021 - 0.0.1
+
+- Initial release
diff --git a/keyboards/mechlovin/hex4b/keymaps/nazzer/rules.mk b/keyboards/mechlovin/hex4b/keymaps/nazzer/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/keymaps/nazzer/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/hex4b/rev1/config.h b/keyboards/mechlovin/hex4b/rev1/config.h
new file mode 100644
index 0000000000..014209cefd
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev1/config.h
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Team Mechlovin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define DEVICE_VER 0x0001
+#define PRODUCT Hex-4B Rev.1
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+
+#define MATRIX_ROW_PINS { B7, A2, A1, A3, A4, A5 }
+#define MATRIX_COL_PINS { B6, B5, B3, B2, B1, B0, A0, A6, A7, C7, C6, C5, C4, D1, D0 }
+#define UNUSED_PINS
+
+#define LED_NUM_LOCK_PIN D6
+#define LED_CAPS_LOCK_PIN D7
+#define LED_SCROLL_LOCK_PIN D5
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_LEVELS 5
+#define BACKLIGHT_BREATHING
+
+/* Bootmagic Lite key configuration, Backspace */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 14
diff --git a/keyboards/mechlovin/hex4b/rev1/readme.md b/keyboards/mechlovin/hex4b/rev1/readme.md
new file mode 100644
index 0000000000..e47dd78a96
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev1/readme.md
@@ -0,0 +1,21 @@
+# hex4b
+
+![hex4b](https://i.imgur.com/lArfGgHh.jpeg)
+
+A PCB for HEX.4B 75% keyboard.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Hex.4B PCB, Atmega32A
+* Hardware Availability: [Hex Keyboard](https://hexkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/hex4b/rev1:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/hex4b/rev1:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+Reset Key: To put the Hex4B into bootloader, hold esc key while plugging in (bootloader), hold backspace while plugging in (bootmagic) and plug cable.
diff --git a/keyboards/mechlovin/hex4b/rev1/rules.mk b/keyboards/mechlovin/hex4b/rev1/rules.mk
new file mode 100644
index 0000000000..c3a1785039
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev1/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32a
+
+# Bootloader selection
+BOOTLOADER = usbasploader
+
+# Processor frequency
+F_CPU = 16000000
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hex4b/rev2/chconf.h b/keyboards/mechlovin/hex4b/rev2/chconf.h
new file mode 100644
index 0000000000..fe716d6552
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/chconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/mechlovin/hex4b/rev2/config.h b/keyboards/mechlovin/hex4b/rev2/config.h
new file mode 100644
index 0000000000..af956f3ec0
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/config.h
@@ -0,0 +1,56 @@
+/*
+Copyright 2020 Team Mechlovin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define DEVICE_VER 0x0002
+#define PRODUCT Hex-4B Rev.2
+
+
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+
+#define MATRIX_ROW_PINS { A4, B12, B13, B14, B15, A1 }
+#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A3, C13, B7, B6, B5, B4, B3 }
+#define UNUSED_PINS
+
+#define LED_NUM_LOCK_PIN C15
+#define LED_CAPS_LOCK_PIN B9
+#define LED_SCROLL_LOCK_PIN A15
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN B8
+#define BACKLIGHT_LEVELS 5
+#define BACKLIGHT_PWM_DRIVER PWMD4
+#define BACKLIGHT_BREATHING
+
+/* Bootmagic Lite key configuration, Backspace */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 14 \ No newline at end of file
diff --git a/keyboards/mechlovin/hex4b/rev2/halconf.h b/keyboards/mechlovin/hex4b/rev2/halconf.h
new file mode 100644
index 0000000000..1f5149b1aa
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechlovin/hex4b/rev2/mcuconf.h b/keyboards/mechlovin/hex4b/rev2/mcuconf.h
new file mode 100644
index 0000000000..10c578ca04
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/mcuconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM4
+#define STM32_PWM_USE_TIM4 TRUE
+
+
+
diff --git a/keyboards/mechlovin/hex4b/rev2/readme.md b/keyboards/mechlovin/hex4b/rev2/readme.md
new file mode 100644
index 0000000000..328c869704
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/readme.md
@@ -0,0 +1,28 @@
+# hex4b
+
+![hex4b](https://i.imgur.com/lArfGgHh.jpeg)
+
+A PCB for HEX.4B 75% keyboard.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Hex.4B Rev.2 PCB, APM32F103CBT6
+* Hardware Availability: [Hex Keyboard](https://hexkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/hex4b/rev2:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/hex4b/rev2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Bootloader reset**: Hold down the key at (0,13) in the matrix (Backspace) and plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Hardware reset**: Press reset button (located on the top side of the PCB) \ No newline at end of file
diff --git a/keyboards/mechlovin/hex4b/rev2/rules.mk b/keyboards/mechlovin/hex4b/rev2/rules.mk
new file mode 100644
index 0000000000..a61a25009b
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hex4b/rules.mk b/keyboards/mechlovin/hex4b/rules.mk
index 0d1cf307e1..e3d9ab46b4 100644
--- a/keyboards/mechlovin/hex4b/rules.mk
+++ b/keyboards/mechlovin/hex4b/rules.mk
@@ -1,24 +1 @@
-# MCU name
-MCU = atmega32a
-
-# Bootloader selection
-BOOTLOADER = usbasploader
-
-# Processor frequency
-F_CPU = 16000000
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
+DEFAULT_FOLDER = mechlovin/hex4b/rev1
diff --git a/keyboards/mechlovin/hex6c/rules.mk b/keyboards/mechlovin/hex6c/rules.mk
index 0853ef8e7b..3bdec7329d 100644
--- a/keyboards/mechlovin/hex6c/rules.mk
+++ b/keyboards/mechlovin/hex6c/rules.mk
@@ -13,9 +13,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/rev2/rules.mk b/keyboards/mechlovin/infinity87/rev2/rules.mk
index f30ef9c493..92823adea9 100644
--- a/keyboards/mechlovin/infinity87/rev2/rules.mk
+++ b/keyboards/mechlovin/infinity87/rev2/rules.mk
@@ -4,13 +4,12 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
-NKRO_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
CUSTOM_MATRIX = lite
diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk
index 400c42eb21..251f8440aa 100644
--- a/keyboards/mechlovin/infinity87/rules.mk
+++ b/keyboards/mechlovin/infinity87/rules.mk
@@ -7,10 +7,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/infinity88/infinity88.h b/keyboards/mechlovin/infinity88/infinity88.h
index d9e1122576..c7decced45 100644
--- a/keyboards/mechlovin/infinity88/infinity88.h
+++ b/keyboards/mechlovin/infinity88/infinity88.h
@@ -56,7 +56,7 @@
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
}
-#define LAYOUT_tkl_ansi_f13( \
+#define LAYOUT_tkl_f13_ansi( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3E, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
@@ -72,7 +72,7 @@
{ K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
}
-#define LAYOUT_tkl_iso_f13( \
+#define LAYOUT_tkl_f13_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K3E, K0E, K0F, K0G, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
diff --git a/keyboards/mechlovin/infinity88/info.json b/keyboards/mechlovin/infinity88/info.json
index 49aae61f76..edf91c4687 100644
--- a/keyboards/mechlovin/infinity88/info.json
+++ b/keyboards/mechlovin/infinity88/info.json
@@ -99,7 +99,7 @@
{"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_ansi_f13": {
+ "LAYOUT_tkl_f13_ansi": {
"layout": [
{"label":"K00 (B0,B6)", "x":0, "y":0},
{"label":"K01 (B0,F4)", "x":1.25, "y":0},
@@ -196,7 +196,7 @@
{"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
]
},
- "LAYOUT_tkl_iso_f13": {
+ "LAYOUT_tkl_f13_iso": {
"layout": [
{"label":"K00 (B0,B6)", "x":0, "y":0},
{"label":"K01 (B0,F4)", "x":1.25, "y":0},
diff --git a/keyboards/mechlovin/infinity88/rules.mk b/keyboards/mechlovin/infinity88/rules.mk
index 1e8563c962..48e047d13e 100644
--- a/keyboards/mechlovin/infinity88/rules.mk
+++ b/keyboards/mechlovin/infinity88/rules.mk
@@ -13,9 +13,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+
+LAYOUTS = tkl_f13_ansi tkl_f13_iso
diff --git a/keyboards/mechlovin/infinityce/rules.mk b/keyboards/mechlovin/infinityce/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/mechlovin/infinityce/rules.mk
+++ b/keyboards/mechlovin/infinityce/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/jay60/rules.mk b/keyboards/mechlovin/jay60/rules.mk
index 9354e10b87..fe2be33f82 100644
--- a/keyboards/mechlovin/jay60/rules.mk
+++ b/keyboards/mechlovin/jay60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/kanu/rules.mk b/keyboards/mechlovin/kanu/rules.mk
index 066a67501a..90897bfdcf 100644
--- a/keyboards/mechlovin/kanu/rules.mk
+++ b/keyboards/mechlovin/kanu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/kay60/config.h b/keyboards/mechlovin/kay60/config.h
new file mode 100644
index 0000000000..ae321a6491
--- /dev/null
+++ b/keyboards/mechlovin/kay60/config.h
@@ -0,0 +1,136 @@
+/*
+Copyright 2021 Mechlovin'
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4D4C
+#define PRODUCT_ID 0x0601
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mechlovin Studio
+#define PRODUCT Kay60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D5, D3, D2, B1, B5}
+#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B2, B3, B7, B4, D7, D6, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+//#define LED_NUM_LOCK_PIN B0
+#define LED_CAPS_LOCK_PIN B0
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 22
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechlovin/kay60/info.json b/keyboards/mechlovin/kay60/info.json
new file mode 100644
index 0000000000..adcbc594d4
--- /dev/null
+++ b/keyboards/mechlovin/kay60/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "kay60",
+ "url": "",
+ "maintainer": "Mechlovin' Studio",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4, "w": 1.25},
+ {"x": 11.25, "y": 4, "w": 1.25},
+ {"x": 12.5, "y": 4, "w": 1.25},
+ {"x": 13.75, "y": 4, "w": 1.25}
+ ]
+ },
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w": 2},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 2.75},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4, "w": 1.25},
+ {"x": 11.25, "y": 4, "w": 1.25},
+ {"x": 12.5, "y": 4, "w": 1.25},
+ {"x": 13.75, "y": 4, "w": 1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechlovin/kay60/kay60.c b/keyboards/mechlovin/kay60/kay60.c
new file mode 100644
index 0000000000..61d968e48c
--- /dev/null
+++ b/keyboards/mechlovin/kay60/kay60.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Mechlovin'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kay60.h"
diff --git a/keyboards/mechlovin/kay60/kay60.h b/keyboards/mechlovin/kay60/kay60.h
new file mode 100644
index 0000000000..52e2bb4893
--- /dev/null
+++ b/keyboards/mechlovin/kay60/kay60.h
@@ -0,0 +1,66 @@
+/* Copyright 2021 Mechlovin'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#define XXX KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───────┘
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌──────────┐
+ │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
+ * │40 │41 │42 │46 │4A │4B │4C │4D │ Standard
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \
+}
+
+#define LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D }, \
+}
+
diff --git a/keyboards/mechlovin/kay60/keymaps/default/keymap.c b/keyboards/mechlovin/kay60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..10546ece4d
--- /dev/null
+++ b/keyboards/mechlovin/kay60/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Mechlovin' Studio
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define LT1_CAP LT(1, KC_CAPS)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ LT1_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/kay60/keymaps/default/readme.md b/keyboards/mechlovin/kay60/keymaps/default/readme.md
new file mode 100644
index 0000000000..17a9cf38c5
--- /dev/null
+++ b/keyboards/mechlovin/kay60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for kay60 \ No newline at end of file
diff --git a/keyboards/mechlovin/kay60/keymaps/via/keymap.c b/keyboards/mechlovin/kay60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..34b8cb9822
--- /dev/null
+++ b/keyboards/mechlovin/kay60/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2020 Mechlovin'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define LT1_CAP LT(1, KC_CAPS)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ LT1_CAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/kay60/keymaps/via/rules.mk b/keyboards/mechlovin/kay60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mechlovin/kay60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/kay60/readme.md b/keyboards/mechlovin/kay60/readme.md
new file mode 100644
index 0000000000..cc53c13175
--- /dev/null
+++ b/keyboards/mechlovin/kay60/readme.md
@@ -0,0 +1,26 @@
+# kay60
+
+![kay60](https://i.imgur.com/FVg59LUl.png)
+
+Kay60 PCB, 60% keyboard PCB.
+* Keyboard Maintainer: [Mechlovin'](https://mechlovin.studio)
+* Hardware Supported: Kay60, Atmega32U4
+* Hardware Availability: [Mechlovin'](https://mechlovin.studio)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/kay60:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/kay60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Physic button**: Press reset swith on the bottom of the PCB
diff --git a/keyboards/mechlovin/kay60/rules.mk b/keyboards/mechlovin/kay60/rules.mk
new file mode 100644
index 0000000000..f3ae57a374
--- /dev/null
+++ b/keyboards/mechlovin/kay60/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/mechlovin9/rev1/rules.mk b/keyboards/mechlovin/mechlovin9/rev1/rules.mk
index 38261a4f06..1333470e59 100644
--- a/keyboards/mechlovin/mechlovin9/rev1/rules.mk
+++ b/keyboards/mechlovin/mechlovin9/rev1/rules.mk
@@ -7,4 +7,4 @@ BOARD = QMK_PROTON_C
#
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
diff --git a/keyboards/mechlovin/mechlovin9/rules.mk b/keyboards/mechlovin/mechlovin9/rules.mk
index 98282f2125..c32039871c 100644
--- a/keyboards/mechlovin/mechlovin9/rules.mk
+++ b/keyboards/mechlovin/mechlovin9/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/olly/bb/bb.h b/keyboards/mechlovin/olly/bb/bb.h
index 91a8f23896..7980a1c4ef 100644
--- a/keyboards/mechlovin/olly/bb/bb.h
+++ b/keyboards/mechlovin/olly/bb/bb.h
@@ -18,6 +18,35 @@
#include "quantum.h"
+#define XXX KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┐┌───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D ││0E ││0F │0G │0H │0I │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤├───┼───┼───┼───┤ └─┬─────┤ ┌───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2E ││1E ││1F │1G │1H │1I │ │ │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘├───┼───┼───┼───┤ ┌──┴┐2D │ ISO Enter │2I │ 2u Plus
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2F │2G │2H │2I │ │2C │ │ │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ├───┼───┼───┼───┤ ┌─┴───┴────┤ ├───┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │┌───┐│3F │3G │3H │3I │ │3C │ 2.75u RShift │ │
+ * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬────┼───┘│3E │└───┼───┼───┼───┤ └──────────┘ │4I │ 2u Enter
+ * │40 │41 │43 │46 │4A │4B │4C │┌───┼───┼───┐│4G │4H │4I │ │ │
+ * └─────┴───┴─────┴────────────────────────┴────┴────┴────┘│4D │4E │4F │└───┴───┴───┘ └───┘
+ * └───┴───┴───┘┌───────┐
+ * ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┐ │4G │ 2u 0
+ * │40 │41 │43 │46 │4A │4B │4C │ └───────┘
+ * └────┴────┴────┴────────────────────────┴─────┴─────┴───┘
+ * ┌────┬────┬────┬────────────────────────┬─────┬───┬─────┐
+ * │40 │41 │43 │46 │4A │4B │4C │
+ * └────┴────┴────┴────────────────────────┴─────┴───┴─────┘
+ * ┌────┬────┬────┬────────────────────────┬─────┬────┬────┐
+ * │40 │41 │43 │46 │4A │4B │4C │
+ * └────┴────┴────┴────────────────────────┴─────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬─────┐
+ * │40 │41 │43 │46 │4B │4C │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴─────┘
+ */
+
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, K0I, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2E, K1E, K1F, K1G, K1H, K1I, \
@@ -25,9 +54,37 @@
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, \
K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I \
) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \
+}
+
+#define LAYOUT_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2E, K1E, K1F, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, K2G, K2H, K2I, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E, K2F, K2G, K2H, K2I }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \
+}
+
+#define LAYOUT_iso_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D, K0E, K0F, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, K2H, K2I, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F, K2G, K2H, K2I }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I }, \
+ { K40, K41, XXX, K43, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I }, \
}
diff --git a/keyboards/mechlovin/olly/bb/info.json b/keyboards/mechlovin/olly/bb/info.json
index 90e07662fd..fbc9bae3eb 100644
--- a/keyboards/mechlovin/olly/bb/info.json
+++ b/keyboards/mechlovin/olly/bb/info.json
@@ -3,7 +3,7 @@
"url": "",
"maintainer": "Mechlovin' Studio",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_all": {
"layout": [
{ "label": "K00 (B0,B5)", "x": 0, "y": 0 },
{ "label": "K01 (B0,B6)", "x": 1, "y": 0 },
@@ -25,6 +25,7 @@
{ "label": "K0G (B0,D5)", "x": 17.5, "y": 0 },
{ "label": "K0H (B0,D6)", "x": 18.5, "y": 0 },
{ "label": "K0I (B0,D7)", "x": 19.5, "y": 0 },
+
{ "label": "K10 (B1,B5)", "x": 0, "y": 1, "w": 1.5 },
{ "label": "K11 (B1,B6)", "x": 1.5, "y": 1 },
{ "label": "K12 (B1,B7)", "x": 2.5, "y": 1 },
@@ -44,6 +45,7 @@
{ "label": "K1G (B1,D5)", "x": 17.5, "y": 1 },
{ "label": "K1H (B1,D6)", "x": 18.5, "y": 1 },
{ "label": "K1I (B1,D7)", "x": 19.5, "y": 1 },
+
{ "label": "K20 (B2,B5)", "x": 0, "y": 2, "w": 1.75 },
{ "label": "K21 (B2,B6)", "x": 1.75, "y": 2 },
{ "label": "K22 (B2,B7)", "x": 2.75, "y": 2 },
@@ -62,6 +64,7 @@
{ "label": "K2G (B2,D5)", "x": 17.5, "y": 2 },
{ "label": "K2H (B2,D6)", "x": 18.5, "y": 2 },
{ "label": "K2I (B2,D7)", "x": 19.5, "y": 2 },
+
{ "label": "K30 (B3,B5)", "x": 0, "y": 3, "w": 1.25 },
{ "label": "K31 (B3,B6)", "x": 1.25, "y": 3 },
{ "label": "K32 (B3,B7)", "x": 2.25, "y": 3 },
@@ -76,11 +79,12 @@
{ "label": "K3B (B3,D0)", "x": 11.25, "y": 3 },
{ "label": "K3C (B3,D1)", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "K3D (B3,D2)", "x": 14, "y": 3 },
+ { "label": "K3E (B3,D3)", "x": 15.25, "y": 3.25 },
{ "label": "K3F (B3,D4)", "x": 16.5, "y": 3 },
{ "label": "K3G (B3,D5)", "x": 17.5, "y": 3 },
{ "label": "K3H (B3,D6)", "x": 18.5, "y": 3 },
{ "label": "K3I (B3,D7)", "x": 19.5, "y": 3 },
- { "label": "K3E (B3,D3)", "x": 15.25, "y": 3.25 },
+
{ "label": "K40 (B4,B5)", "x": 0, "y": 4, "w": 1.5 },
{ "label": "K41 (B4,B6)", "x": 1.5, "y": 4 },
{ "label": "K43 (B4,C0)", "x": 2.5, "y": 4, "w": 1.5 },
@@ -88,14 +92,204 @@
{ "label": "K4A (B4,C7)", "x": 10.25, "y": 4, "w": 1.25 },
{ "label": "K4B (B4,D0)", "x": 11.5, "y": 4, "w": 1.25 },
{ "label": "K4C (B4,D1)", "x": 12.75, "y": 4, "w": 1.25 },
- { "label": "K4G (B4,D5)", "x": 17.5, "y": 4 },
- { "label": "K4H (B4,D6)", "x": 18.5, "y": 4 },
- { "label": "K4I (B4,D7)", "x": 19.5, "y": 4 },
{ "label": "K4D (B4,D2)", "x": 14.25, "y": 4.25 },
{ "label": "K4E (B4,D3)", "x": 15.25, "y": 4.25 },
- { "label": "K4F (B4,D4)", "x": 16.25, "y": 4.25 }
+ { "label": "K4F (B4,D4)", "x": 16.25, "y": 4.25 },
+ { "label": "K4G (B4,D5)", "x": 17.5, "y": 4 },
+ { "label": "K4H (B4,D6)", "x": 18.5, "y": 4 },
+ { "label": "K4I (B4,D7)", "x": 19.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_ansi_split_bs": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1!", "x": 1, "y": 0 },
+ { "label": "2@", "x": 2, "y": 0 },
+ { "label": "3#", "x": 3, "y": 0 },
+ { "label": "4$", "x": 4, "y": 0 },
+ { "label": "5%", "x": 5, "y": 0 },
+ { "label": "6^", "x": 6, "y": 0 },
+ { "label": "7*", "x": 7, "y": 0 },
+ { "label": "8*", "x": 8, "y": 0 },
+ { "label": "9(", "x": 9, "y": 0 },
+ { "label": "0)", "x": 10, "y": 0 },
+ { "label": "-_", "x": 11, "y": 0 },
+ { "label": "=+", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "Insert", "x": 15.25, "y": 0 },
+ { "label": "Num Lock", "x": 16.5, "y": 0 },
+ { "label": "/", "x": 17.5, "y": 0 },
+ { "label": "*", "x": 18.5, "y": 0 },
+ { "label": "Pause", "x": 19.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[{", "x": 11.5, "y": 1 },
+ { "label": "]}", "x": 12.5, "y": 1 },
+ { "label": "\\|", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15.25, "y": 1 },
+ { "label": "7", "x": 16.5, "y": 1 },
+ { "label": "8", "x": 17.5, "y": 1 },
+ { "label": "9", "x": 18.5, "y": 1 },
+ { "label": "-", "x": 19.5, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";:", "x": 10.75, "y": 2 },
+ { "label": "'\"", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "4", "x": 16.5, "y": 2 },
+ { "label": "5", "x": 17.5, "y": 2 },
+ { "label": "6", "x": 18.5, "y": 2 },
+ { "label": "+", "x": 19.5, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",<", "x": 9.25, "y": 3 },
+ { "label": ".>", "x": 10.25, "y": 3 },
+ { "label": "/?", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "Fn", "x": 14, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3.25 },
+ { "label": "1", "x": 16.5, "y": 3 },
+ { "label": "2", "x": 17.5, "y": 3 },
+ { "label": "3", "x": 18.5, "y": 3 },
+ { "label": "Enter", "x": 19.5, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.5 },
+ { "label": "GUI", "x": 1.5, "y": 4 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.5 },
+ { "label": "Space", "x": 4, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10.25, "y": 4, "w": 1.25 },
+ { "label": "GUI", "x": 11.5, "y": 4, "w": 1.25 },
+ { "label": "Ctrl", "x": 12.75, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 4.25 },
+ { "label": "\u2193", "x": 15.25, "y": 4.25 },
+ { "label": "\u2192", "x": 16.25, "y": 4.25 },
+ { "label": "0", "x": 17.5, "y": 4 },
+ { "label": ".", "x": 18.5, "y": 4 },
+ { "label": "Enter", "x": 19.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_iso_split_bs": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1!", "x": 1, "y": 0 },
+ { "label": "2\"", "x": 2, "y": 0 },
+ { "label": "3\u00a3", "x": 3, "y": 0 },
+ { "label": "4$", "x": 4, "y": 0 },
+ { "label": "5%", "x": 5, "y": 0 },
+ { "label": "6^", "x": 6, "y": 0 },
+ { "label": "7*", "x": 7, "y": 0 },
+ { "label": "8*", "x": 8, "y": 0 },
+ { "label": "9(", "x": 9, "y": 0 },
+ { "label": "0)", "x": 10, "y": 0 },
+ { "label": "-_", "x": 11, "y": 0 },
+ { "label": "=+", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "Insert", "x": 15.25, "y": 0 },
+ { "label": "Num Lock", "x": 16.5, "y": 0 },
+ { "label": "/", "x": 17.5, "y": 0 },
+ { "label": "*", "x": 18.5, "y": 0 },
+ { "label": "Pause", "x": 19.5, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[{", "x": 11.5, "y": 1 },
+ { "label": "]}", "x": 12.5, "y": 1 },
+ { "label": "Delete", "x": 15.25, "y": 1 },
+ { "label": "7", "x": 16.5, "y": 1 },
+ { "label": "8", "x": 17.5, "y": 1 },
+ { "label": "9", "x": 18.5, "y": 1 },
+ { "label": "-", "x": 19.5, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";:", "x": 10.75, "y": 2 },
+ { "label": "'@", "x": 11.75, "y": 2 },
+ { "label": "#~", "x": 12.75, "y": 2 },
+ { "label": "Enter", "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "label": "4", "x": 16.5, "y": 2 },
+ { "label": "5", "x": 17.5, "y": 2 },
+ { "label": "6", "x": 18.5, "y": 2 },
+ { "label": "+", "x": 19.5, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "\\|", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",<", "x": 9.25, "y": 3 },
+ { "label": ".>", "x": 10.25, "y": 3 },
+ { "label": "/?", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "Fn", "x": 14, "y": 3 },
+ { "label": "\u2191", "x": 15.25, "y": 3.25 },
+ { "label": "1", "x": 16.5, "y": 3 },
+ { "label": "2", "x": 17.5, "y": 3 },
+ { "label": "3", "x": 18.5, "y": 3 },
+ { "label": "Enter", "x": 19.5, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.5 },
+ { "label": "GUI", "x": 1.5, "y": 4 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.5 },
+ { "label": "Space", "x": 4, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10.25, "y": 4, "w": 1.25 },
+ { "label": "GUI", "x": 11.5, "y": 4, "w": 1.25 },
+ { "label": "Ctrl", "x": 12.75, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 4.25 },
+ { "label": "\u2193", "x": 15.25, "y": 4.25 },
+ { "label": "\u2192", "x": 16.25, "y": 4.25 },
+ { "label": "0", "x": 17.5, "y": 4 },
+ { "label": ".", "x": 18.5, "y": 4 },
+ { "label": "Enter", "x": 19.5, "y": 4 }
]
}
}
- ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}
diff --git a/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c
index c7c0da223e..d1bcb7cb29 100644
--- a/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/olly/bb/keymaps/default/keymap.c
@@ -24,25 +24,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-}; \ No newline at end of file
+};
diff --git a/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..652cf85c98
--- /dev/null
+++ b/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2021 mechlovin, QMK (James Young @noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ansi_split_bs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_ansi_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/readme.md b/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/readme.md
new file mode 100644
index 0000000000..95cffc54a0
--- /dev/null
+++ b/keyboards/mechlovin/olly/bb/keymaps/default_ansi_split_bs/readme.md
@@ -0,0 +1 @@
+# The default_ansi_split_bs keymap for Olly BB
diff --git a/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/keymap.c
new file mode 100644
index 0000000000..e0abc90c4e
--- /dev/null
+++ b/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2021 mechlovin, QMK (James Young @noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_iso_split_bs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_iso_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_iso_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_iso_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/readme.md b/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/readme.md
new file mode 100644
index 0000000000..7ad1086f94
--- /dev/null
+++ b/keyboards/mechlovin/olly/bb/keymaps/default_iso_split_bs/readme.md
@@ -0,0 +1 @@
+# The default_iso_split_bs keymap for Olly BB
diff --git a/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c b/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c
index c7c0da223e..d1bcb7cb29 100644
--- a/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c
+++ b/keyboards/mechlovin/olly/bb/keymaps/via/keymap.c
@@ -24,25 +24,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-}; \ No newline at end of file
+};
diff --git a/keyboards/mechlovin/olly/bb/rules.mk b/keyboards/mechlovin/olly/bb/rules.mk
index b5b3be65b2..2fafe64f12 100644
--- a/keyboards/mechlovin/olly/bb/rules.mk
+++ b/keyboards/mechlovin/olly/bb/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/olly/jf/rules.mk b/keyboards/mechlovin/olly/jf/rules.mk
index be95cebe84..c0c9b2d7ea 100644
--- a/keyboards/mechlovin/olly/jf/rules.mk
+++ b/keyboards/mechlovin/olly/jf/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/pisces/rules.mk b/keyboards/mechlovin/pisces/rules.mk
index 727a95d309..2a88ecc5da 100644
--- a/keyboards/mechlovin/pisces/rules.mk
+++ b/keyboards/mechlovin/pisces/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/serratus/rules.mk b/keyboards/mechlovin/serratus/rules.mk
index 2288d50d8c..a10d80e257 100644
--- a/keyboards/mechlovin/serratus/rules.mk
+++ b/keyboards/mechlovin/serratus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/th1800/rules.mk b/keyboards/mechlovin/th1800/rules.mk
index 9354e10b87..fe2be33f82 100644
--- a/keyboards/mechlovin/th1800/rules.mk
+++ b/keyboards/mechlovin/th1800/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/tmkl/rules.mk b/keyboards/mechlovin/tmkl/rules.mk
index 5fb72c7f3c..6d58f12af6 100644
--- a/keyboards/mechlovin/tmkl/rules.mk
+++ b/keyboards/mechlovin/tmkl/rules.mk
@@ -13,9 +13,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/mechmini/v1/rules.mk b/keyboards/mechmini/v1/rules.mk
index d77ba03993..6905e73c27 100644
--- a/keyboards/mechmini/v1/rules.mk
+++ b/keyboards/mechmini/v1/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = atmel-dfu
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/mechmini/v2/rules.mk b/keyboards/mechmini/v2/rules.mk
index c4071d79b3..4f6e666b62 100755
--- a/keyboards/mechmini/v2/rules.mk
+++ b/keyboards/mechmini/v2/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/mechstudio/dawn/rules.mk b/keyboards/mechstudio/dawn/rules.mk
index ed324bb64d..7314d63b46 100644
--- a/keyboards/mechstudio/dawn/rules.mk
+++ b/keyboards/mechstudio/dawn/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/mechstudio/ud_40_ortho/rules.mk b/keyboards/mechstudio/ud_40_ortho/rules.mk
index bb380e5b58..3d5bbd7532 100644
--- a/keyboards/mechstudio/ud_40_ortho/rules.mk
+++ b/keyboards/mechstudio/ud_40_ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/bde/lefty/rules.mk b/keyboards/mechwild/bde/lefty/rules.mk
index 6ba908ad55..ba23033c82 100644
--- a/keyboards/mechwild/bde/lefty/rules.mk
+++ b/keyboards/mechwild/bde/lefty/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/bde/righty/rules.mk b/keyboards/mechwild/bde/righty/rules.mk
index 6ba908ad55..ba23033c82 100644
--- a/keyboards/mechwild/bde/righty/rules.mk
+++ b/keyboards/mechwild/bde/righty/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/config.h b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/config.h
new file mode 100644
index 0000000000..9d588ed8c0
--- /dev/null
+++ b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 Fearless Spiff
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TERM 180
diff --git a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c
new file mode 100644
index 0000000000..ada92103c3
--- /dev/null
+++ b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c
@@ -0,0 +1,293 @@
+/* Copyright 2021 Kyle McCreery
+ * Copyright 2021 Jonavin Eng
+ * Copyright 2022 Fearless Spiff
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_german.h"
+
+// OLED setup for bongocat
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 30
+#define TAP_FRAMES 2
+#define TAP_SPEED 40
+#define ANIM_FRAME_DURATION 200
+#define ANIM_SIZE 512
+
+#define LABEL_LENGTH 8
+
+#define KC_CAD LALT(LCTL(KC_DEL))
+#define KC_TEAMS_CAM C(S(KC_O))
+#define KC_TEAMS_MUTE C(S(KC_M))
+
+enum layers {
+ QWERT,
+ FN_1,
+ FN_2
+};
+
+enum custom_user_keycodes {
+ KC_ENC = SAFE_RANGE
+};
+
+static long int oled_timeout = 1800000; // 30 minutes
+bool gui_on = true;
+char wpm_str[10];
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+uint8_t current_tap_frame = 0;
+
+// Tap Dance declarations
+enum {
+ TD_TAB_ESC,
+};
+
+// Tap Dance definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // Tap once for Tab, twice for Esc
+ [TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC),
+};
+
+typedef struct {
+ char label_top[LABEL_LENGTH];
+ char label_mid[LABEL_LENGTH];
+ char label_bottom[LABEL_LENGTH];
+ uint16_t keycode;
+} encoder_key;
+
+static const encoder_key PROGMEM encoder_keys[] = {
+ // list of key codes that will be scrolled through by encoder and description
+ // Be aware that it only works when using one char less than defined. In this case 7 max. No idea why?
+ {"Teams", "Toggle", "Mic", KC_TEAMS_MUTE},
+ {"Teams", "Toggle", "Cam", KC_TEAMS_CAM},
+ {"Ctrl", "Alt", "Del", KC_CAD},
+ {"Caps", "Lock", "", KC_CAPSLOCK},
+ {"Pause", "", "", KC_PAUSE},
+ {"PrtScr", "", "", KC_PSCR},
+ {"Insert", "", "", KC_INS},
+ {"Play", "", "", KC_MEDIA_PLAY_PAUSE}
+};
+
+#define NUMBER_OF_ENCODER_KEYS sizeof(encoder_keys)/sizeof(encoder_keys[0])
+
+static uint8_t selected_encoder_key_id = 0;
+static encoder_key selected_encoder_key;
+
+static void set_selected_encoder_key(uint8_t idx) {
+ // make a copy from PROGMEM
+ memcpy_P (&selected_encoder_key, &encoder_keys[idx], sizeof selected_encoder_key);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_ENC:
+ if (record->event.pressed) {
+ tap_code16(selected_encoder_key.keycode);
+ }
+ break;
+ }
+ return true;
+}
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [QWERT] = LAYOUT_all(
+ KC_ENC,
+ TD(TD_TAB_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT,
+ KC_LSFT, DE_LABK, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, LT(2,KC_SPC), LT(2,KC_SPC), LT(2,KC_SPC), KC_RALT, DE_MINS, KC_RCTL ),
+
+ [FN_1] = LAYOUT_all(
+ KC_MUTE,
+ KC_GESC, _______, _______, _______, DE_LCBR, DE_RCBR, _______, DE_UDIA, KC_UP, DE_ODIA, DE_QUES, KC_DEL,
+ _______, DE_ADIA, DE_SS, _______, DE_LPRN, DE_RPRN, _______, KC_LEFT, KC_DOWN, KC_RIGHT, DE_HASH, _______,
+ _______, DE_CIRC, DE_ACUT, _______, _______, DE_LBRC, DE_RBRC, KC_HOME, KC_END, DE_QUOT, DE_DQUO, DE_EQL,
+ _______, _______, _______, _______, _______, _______, DE_BSLS, DE_SLSH, DE_TILD ),
+
+ [FN_2] = LAYOUT_all(
+ _______,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_BSPC,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ )
+};
+
+#ifdef ENCODER_ENABLE
+ bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ if (IS_LAYER_ON(QWERT) && selected_encoder_key_id < NUMBER_OF_ENCODER_KEYS-1) {
+ selected_encoder_key_id ++;
+ set_selected_encoder_key(selected_encoder_key_id);
+ }
+ if (IS_LAYER_ON(FN_1)) {
+ tap_code16(KC_PGDOWN);
+ }
+ if (IS_LAYER_ON(FN_2)) {
+ tap_code(KC_VOLU);
+ }
+ } else {
+ if (IS_LAYER_ON(QWERT) && selected_encoder_key_id > 0) {
+ selected_encoder_key_id --;
+ set_selected_encoder_key(selected_encoder_key_id);
+ }
+ if (IS_LAYER_ON(FN_1)) {
+ tap_code16(KC_PGUP);
+ }
+ if (IS_LAYER_ON(FN_2)) {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+ }
+#endif
+
+#ifdef OLED_ENABLE
+ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ set_selected_encoder_key(selected_encoder_key_id);
+
+ return OLED_ROTATION_180; // flips the display 180 degrees
+ }
+
+ static void render_anim(void) {
+
+ // Idle animation
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
+ 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ // Prep animation
+ static const char PROGMEM prep[][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ // Typing animation
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
+ 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
+ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
+ oled_write_raw_P(prep[0], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() >= TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
+ }
+ }
+
+ if (get_current_wpm() != 000) {
+ oled_on();
+
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > oled_timeout) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+ }
+
+ bool oled_task_user(void) {
+
+ render_anim();
+
+ oled_set_cursor(0,0);
+ oled_write(selected_encoder_key.label_top, false);
+
+ oled_set_cursor(0,1);
+ oled_write(selected_encoder_key.label_mid, false);
+
+ oled_set_cursor(0,2);
+ oled_write(selected_encoder_key.label_bottom, false);
+
+ /* hide wpm display for now
+ oled_set_cursor(13,3);
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ */
+
+ return true;
+ }
+
+ void suspend_power_down_user(void) {
+ oled_off();
+ }
+#endif
diff --git a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/readme.md b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/readme.md
new file mode 100644
index 0000000000..33240ffbcd
--- /dev/null
+++ b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/readme.md
@@ -0,0 +1,24 @@
+Fearless Spiff's Custom Mercutio Keymap
+ - "Programmer"-centric and German layout based keymap
+ - Based on Bongocat and Jonavin keymap
+
+Features
+ - Fancy Bongocat! Yay! (borrowed from bongocat obviously)
+ - Encoder selectable key codes and displayed on OLED (borrowed and multi-line-enhanced from Jonavin)
+ - Change encoder_keys in keymap.c to assign your desired key selection
+ - Additional encoder functionality
+ - While holding FN_1, page up and down
+ - While holding FN_2, volume up and down
+ - Use my templates for your own layout overview at [Keyboard Layout Editor](http://www.keyboard-layout-editor.com) using my gist [here](https://gist.github.com/FearlessSpiff)
+
+QWERT Layer
+![image](https://user-images.githubusercontent.com/1927259/148683284-04932e15-a34d-451e-b657-335780033f36.png)
+
+FN_1 Layer
+![image](https://user-images.githubusercontent.com/1927259/148683299-f2c80403-3f29-4ba8-9fc4-957729f30b05.png)
+
+FN_2 layer
+![image](https://user-images.githubusercontent.com/1927259/148683306-364bc59c-b41b-4092-b93b-d7b4fc58567b.png)
+
+
+
diff --git a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/rules.mk b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/rules.mk
new file mode 100644
index 0000000000..16f26944e8
--- /dev/null
+++ b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/rules.mk
@@ -0,0 +1,7 @@
+WPM_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+VIA_ENABLE = no
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+KEY_LOCK_ENABLE = no
+CONSOLE_ENABLE = no
diff --git a/keyboards/mechwild/mercutio/rules.mk b/keyboards/mechwild/mercutio/rules.mk
index 66bdc206b2..cba3861f34 100644
--- a/keyboards/mechwild/mercutio/rules.mk
+++ b/keyboards/mechwild/mercutio/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/murphpad/rules.mk b/keyboards/mechwild/murphpad/rules.mk
index cac073573b..2210965970 100644
--- a/keyboards/mechwild/murphpad/rules.mk
+++ b/keyboards/mechwild/murphpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/obe/rules.mk b/keyboards/mechwild/obe/rules.mk
index 0b3a24b7fd..d5fac1ee4e 100644
--- a/keyboards/mechwild/obe/rules.mk
+++ b/keyboards/mechwild/obe/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechwild/waka60/config.h b/keyboards/mechwild/waka60/config.h
new file mode 100644
index 0000000000..636e13de38
--- /dev/null
+++ b/keyboards/mechwild/waka60/config.h
@@ -0,0 +1,143 @@
+/*
+Copyright 2021 Kyle McCreery
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6D77 // mw = "MechWild"
+#define PRODUCT_ID 0x1709
+#define DEVICE_VER 0x0101
+#define MANUFACTURER MechWild
+#define PRODUCT Waka60
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+#define EEPROM_I2C_24LC64
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B8, B4, B3, B9, A15, B12, B13, B14, B15, A8 }
+#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, A5, A4 }
+#define UNUSED_PINS
+
+/* encoder pins */
+#define ENCODERS_PAD_A { A3 }
+#define ENCODERS_PAD_B { A2 }
+
+/* encoder resolution */
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* RGB settings, uncomment this define to enable RGB */
+#define RGB_DI_PIN A1
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 3
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/waka60/f401/halconf.h b/keyboards/mechwild/waka60/f401/halconf.h
new file mode 100644
index 0000000000..25309fc70f
--- /dev/null
+++ b/keyboards/mechwild/waka60/f401/halconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+#define HAL_USE_GPT TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechwild/waka60/f401/mcuconf.h b/keyboards/mechwild/waka60/f401/mcuconf.h
new file mode 100644
index 0000000000..95339690cf
--- /dev/null
+++ b/keyboards/mechwild/waka60/f401/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+#undef STM32_GPT_USE_TIM4
+#define STM32_GPT_USE_TIM4 TRUE \ No newline at end of file
diff --git a/keyboards/mechwild/waka60/f401/rules.mk b/keyboards/mechwild/waka60/f401/rules.mk
new file mode 100644
index 0000000000..f1304648f0
--- /dev/null
+++ b/keyboards/mechwild/waka60/f401/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/waka60/f411/halconf.h b/keyboards/mechwild/waka60/f411/halconf.h
new file mode 100644
index 0000000000..b57977316a
--- /dev/null
+++ b/keyboards/mechwild/waka60/f411/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechwild/waka60/f411/mcuconf.h b/keyboards/mechwild/waka60/f411/mcuconf.h
new file mode 100644
index 0000000000..a00131aca5
--- /dev/null
+++ b/keyboards/mechwild/waka60/f411/mcuconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
diff --git a/keyboards/mechwild/waka60/f411/rules.mk b/keyboards/mechwild/waka60/f411/rules.mk
new file mode 100644
index 0000000000..b32a8b7f5b
--- /dev/null
+++ b/keyboards/mechwild/waka60/f411/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/waka60/info.json b/keyboards/mechwild/waka60/info.json
new file mode 100644
index 0000000000..87549849b9
--- /dev/null
+++ b/keyboards/mechwild/waka60/info.json
@@ -0,0 +1,73 @@
+{
+ "keyboard_name": "MechWild Waka60",
+ "url": "mechwild.com",
+ "maintainer": "Kyle McCreery",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k00", "x": 0, "y": 0},
+ {"label": "k01", "x": 1, "y": 0},
+ {"label": "k02", "x": 2, "y": 0},
+ {"label": "k03", "x": 3, "y": 0},
+ {"label": "k04", "x": 4, "y": 0},
+ {"label": "k05", "x": 5, "y": 0},
+ {"label": "k50", "x": 7, "y": 0},
+ {"label": "k51", "x": 8, "y": 0},
+ {"label": "k52", "x": 9, "y": 0},
+ {"label": "k53", "x": 10, "y": 0},
+ {"label": "k54", "x": 11, "y": 0},
+ {"label": "k55", "x": 12, "y": 0},
+ {"label": "k10", "x": 0, "y": 1},
+ {"label": "k11", "x": 1, "y": 1},
+ {"label": "k12", "x": 2, "y": 1},
+ {"label": "k13", "x": 3, "y": 1},
+ {"label": "k14", "x": 4, "y": 1},
+ {"label": "k15", "x": 5, "y": 1},
+ {"label": "k60", "x": 7, "y": 1},
+ {"label": "k61", "x": 8, "y": 1},
+ {"label": "k62", "x": 9, "y": 1},
+ {"label": "k63", "x": 10, "y": 1},
+ {"label": "k64", "x": 11, "y": 1},
+ {"label": "k65", "x": 12, "y": 1},
+ {"label": "k20", "x": 0, "y": 2},
+ {"label": "k21", "x": 1, "y": 2},
+ {"label": "k22", "x": 2, "y": 2},
+ {"label": "k23", "x": 3, "y": 2},
+ {"label": "k24", "x": 4, "y": 2},
+ {"label": "k25", "x": 5, "y": 2},
+ {"label": "k70", "x": 7, "y": 2},
+ {"label": "k71", "x": 8, "y": 2},
+ {"label": "k72", "x": 9, "y": 2},
+ {"label": "k73", "x": 10, "y": 2},
+ {"label": "k74", "x": 11, "y": 2},
+ {"label": "k75", "x": 12, "y": 2},
+ {"label": "k30", "x": 0, "y": 3},
+ {"label": "k31", "x": 1, "y": 3},
+ {"label": "k32", "x": 2, "y": 3},
+ {"label": "k33", "x": 3, "y": 3},
+ {"label": "k34", "x": 4, "y": 3},
+ {"label": "k35", "x": 5, "y": 3},
+ {"label": "k36", "x": 6, "y": 3},
+ {"label": "k80", "x": 7, "y": 3},
+ {"label": "k81", "x": 8, "y": 3},
+ {"label": "k82", "x": 9, "y": 3},
+ {"label": "k83", "x": 10, "y": 3},
+ {"label": "k84", "x": 11, "y": 3},
+ {"label": "k85", "x": 12, "y": 3},
+ {"label": "k40", "x": 0, "y": 4},
+ {"label": "k41", "x": 1, "y": 4},
+ {"label": "k42", "x": 2, "y": 4},
+ {"label": "k43", "x": 3, "y": 4},
+ {"label": "k44", "x": 4, "y": 4},
+ {"label": "k45", "x": 5, "y": 4},
+ {"label": "k46", "x": 6, "y": 4},
+ {"label": "k90", "x": 7, "y": 4},
+ {"label": "k91", "x": 8, "y": 4},
+ {"label": "k92", "x": 9, "y": 4},
+ {"label": "k93", "x": 10, "y": 4},
+ {"label": "k94", "x": 11, "y": 4},
+ {"label": "k95", "x": 12, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/waka60/keymaps/audio/config.h b/keyboards/mechwild/waka60/keymaps/audio/config.h
new file mode 100644
index 0000000000..095242a161
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/audio/config.h
@@ -0,0 +1,23 @@
+/*
+Copyright 2021 Kyle McCreery
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define AUDIO_PIN B5
+#define AUDIO_PWM_DRIVER PWMD1
+#define AUDIO_PWM_CHANNEL 1
+#define AUDIO_STATE_TIMER GPTD4
diff --git a/keyboards/mechwild/waka60/keymaps/audio/keymap.c b/keyboards/mechwild/waka60/keymaps/audio/keymap.c
new file mode 100644
index 0000000000..6f36d75496
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/audio/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [_FN1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TRNS, AU_TOG, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, MU_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, MU_MOD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mechwild/waka60/keymaps/audio/rules.mk b/keyboards/mechwild/waka60/keymaps/audio/rules.mk
new file mode 100644
index 0000000000..59d40ea4dd
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/audio/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+AUDIO_ENABLE = yes
+AUDIO_DRIVER = pwm_software \ No newline at end of file
diff --git a/keyboards/mechwild/waka60/keymaps/default/keymap.c b/keyboards/mechwild/waka60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..54f2a32a7d
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [_FN1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mechwild/waka60/keymaps/via/keymap.c b/keyboards/mechwild/waka60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6f36d75496
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [_FN1] = LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ KC_TRNS, AU_TOG, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, MU_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, MU_MOD, RGB_RMOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mechwild/waka60/keymaps/via/rules.mk b/keyboards/mechwild/waka60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..16d33cd89f
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+
diff --git a/keyboards/mechwild/waka60/readme.md b/keyboards/mechwild/waka60/readme.md
new file mode 100644
index 0000000000..7e6d9cefca
--- /dev/null
+++ b/keyboards/mechwild/waka60/readme.md
@@ -0,0 +1,19 @@
+# Waka60
+
+![waka](https://i.imgur.com/ohyE83Sh.png)
+
+An affordable Ortholinear keyboard kit featuring a speaker, top-facing RGB LEDs, a center encoder, spacing between the halves, and powered by the STM32 Blackpill.
+
+* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery)
+* Hardware Supported: Waka60 v1.1
+* Hardware Availability: [Waka60 on MechWild](https://mechwild.com/product/waka/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechwild/waka60:default
+
+Flashing example for this keyboard:
+
+ make mechwild/waka60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mechwild/waka60/rules.mk b/keyboards/mechwild/waka60/rules.mk
new file mode 100644
index 0000000000..5b058057fc
--- /dev/null
+++ b/keyboards/mechwild/waka60/rules.mk
@@ -0,0 +1,17 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Encoder Enabled
+
+EEPROM_DRIVER = i2c
+
+DEFAULT_FOLDER = mechwild/waka60/f401
diff --git a/keyboards/mechwild/waka60/waka60.c b/keyboards/mechwild/waka60/waka60.c
new file mode 100644
index 0000000000..1b6eec1f44
--- /dev/null
+++ b/keyboards/mechwild/waka60/waka60.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "waka60.h"
+void board_init(void) {
+ // B9 is configured as I2C1_SDA in the board file; that function must be
+ // disabled before using B7 as I2C1_SDA.
+ setPinInputHigh(B9);
+}
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ switch (index) {
+ case 0:
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ break;
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/mechwild/waka60/waka60.h b/keyboards/mechwild/waka60/waka60.h
new file mode 100644
index 0000000000..4e7d82e929
--- /dev/null
+++ b/keyboards/mechwild/waka60/waka60.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Kyle McCreery
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k50, k51, k52, k53, k54, k55, \
+ k10, k11, k12, k13, k14, k15, k60, k61, k62, k63, k64, k65, \
+ k20, k21, k22, k23, k24, k25, k70, k71, k72, k73, k74, k75, \
+ k30, k31, k32, k33, k34, k35, k36, k80, k81, k82, k83, k84, k85, \
+ k40, k41, k42, k43, k44, k45, k46, k90, k91, k92, k93, k94, k95 \
+) { \
+ { k00, k01, k02, k03, k04, k05, ___}, \
+ { k10, k11, k12, k13, k14, k15, ___}, \
+ { k20, k21, k22, k23, k24, k25, ___}, \
+ { k30, k31, k32, k33, k34, k35, k36}, \
+ { k40, k41, k42, k43, k44, k45, k46}, \
+ { k50, k51, k52, k53, k54, k55, ___}, \
+ { k60, k61, k62, k63, k64, k65, ___}, \
+ { k70, k71, k72, k73, k74, k75, ___}, \
+ { k80, k81, k82, k83, k84, k85, ___}, \
+ { k90, k91, k92, k93, k94, k95, ___} \
+}
diff --git a/keyboards/mehkee96/config.h b/keyboards/mehkee96/config.h
index 44ded13a57..98e359f980 100644
--- a/keyboards/mehkee96/config.h
+++ b/keyboards/mehkee96/config.h
@@ -18,11 +18,10 @@
#define LED_NUM_LOCK_PIN D0
#define LED_CAPS_LOCK_PIN D1
-#define LED_PIN_ON_STATE 0
#define BACKLIGHT_PIN D4
#define BACKLIGHT_LEVELS 3
-#define RGBLED_NUM 16
+#define RGBLED_NUM 18
#define RGBLIGHT_ANIMATIONS
/* key combination for command */
diff --git a/keyboards/mehkee96/mehkee96.h b/keyboards/mehkee96/mehkee96.h
index a92e7ffe0f..32d4fa72a1 100644
--- a/keyboards/mehkee96/mehkee96.h
+++ b/keyboards/mehkee96/mehkee96.h
@@ -5,7 +5,7 @@
#define XXX KC_NO
#define LAYOUT( \
- k50, k52, k53, k54, k55, k60, k6A, k7A, k70, k5B, k5C, k5D, k5E, k1D, k2E, k0D, k76, k78, k79, \
+ k50, k52, k53, k54, k55, k60, k6A, k7A, k70, k5B, k5C, k5D, k5E, k1D, k2E, k0D, k76, k79, k78, \
k40, k41, k42, k43, k44, k45, k61, k6B, k7B, k71, k4A, k4B, k4C, k4E, k46, k47, k48, k49, \
k30, k31, k32, k33, k34, k35, k62, k6C, k7C, k72, k3A, k3B, k3C, k3D, k36, k37, k38, k39, \
k20, k21, k22, k23, k24, k25, k63, k6D, k7D, k73, k2A, k2B, k2D, k26, k27, k28, k29, \
diff --git a/keyboards/mehkee96/rules.mk b/keyboards/mehkee96/rules.mk
index 171f3a5734..9e2ac24f88 100644
--- a/keyboards/mehkee96/rules.mk
+++ b/keyboards/mehkee96/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32a
BOOTLOADER = bootloadhid
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/meira/keymaps/default/keymap.c b/keyboards/meira/keymaps/default/keymap.c
index c4d6759ea7..dacf848cf1 100644
--- a/keyboards/meira/keymaps/default/keymap.c
+++ b/keyboards/meira/keymaps/default/keymap.c
@@ -66,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | Alt |Lower | Cmd |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- ADJUST, KC_LCTL, KC_LALT, KC_LALT, LOWER, KC_LGUI, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_QWERTY] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ ADJUST, KC_LCTL, KC_LALT, KC_LALT, LOWER, KC_LGUI, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -84,11 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
- [_COLEMAK] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_COLEMAK] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -102,11 +102,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
- [_DVORAK] = LAYOUT( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_DVORAK] = LAYOUT(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -120,11 +120,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT( \
- _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, KC_QUOT, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ [_LOWER] = LAYOUT(
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, KC_QUOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Raise
@@ -138,11 +138,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | Home | PgUp | PgDn | End |
* `-----------------------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT( \
- _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ [_RAISE] = LAYOUT(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
/* Adjust (Lower + Raise)
@@ -156,11 +156,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- BL_TOGG, RESET, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \
- BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT(
+ BL_TOGG, RESET, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL,
+ BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/meira/rules.mk b/keyboards/meira/rules.mk
index 29fadda574..cdd0acb824 100644
--- a/keyboards/meira/rules.mk
+++ b/keyboards/meira/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality, also set ISSI_ENABLE below for Meira
BACKLIGHT_DRIVER = custom
ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled
diff --git a/keyboards/meishi/keymaps/default/keymap.c b/keyboards/meishi/keymaps/default/keymap.c
index 5cbeebc469..ba4565f03a 100644
--- a/keyboards/meishi/keymaps/default/keymap.c
+++ b/keyboards/meishi/keymaps/default/keymap.c
@@ -17,6 +17,6 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) \
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
),
};
diff --git a/keyboards/meishi/rules.mk b/keyboards/meishi/rules.mk
index 0f5e7479f6..63aadefc79 100644
--- a/keyboards/meishi/rules.mk
+++ b/keyboards/meishi/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/meishi2/keymaps/default/config.h b/keyboards/meishi2/keymaps/default/config.h
deleted file mode 100644
index 4e23fe7b14..0000000000
--- a/keyboards/meishi2/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Biacco42
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/meishi2/keymaps/default/keymap.c b/keyboards/meishi2/keymaps/default/keymap.c
index 11cfcf072a..303059863b 100644
--- a/keyboards/meishi2/keymaps/default/keymap.c
+++ b/keyboards/meishi2/keymaps/default/keymap.c
@@ -17,6 +17,6 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V) \
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
)
};
diff --git a/keyboards/meishi2/rules.mk b/keyboards/meishi2/rules.mk
index 0099557cbe..eae129b29b 100644
--- a/keyboards/meishi2/rules.mk
+++ b/keyboards/meishi2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/meletrix/zoom65/config.h b/keyboards/meletrix/zoom65/config.h
index 4eb85aeb49..6d6f6d18eb 100644
--- a/keyboards/meletrix/zoom65/config.h
+++ b/keyboards/meletrix/zoom65/config.h
@@ -42,6 +42,9 @@
#define ENCODERS_PAD_B { B0 }
#define ENCODERS 1
+
+#define ENCODER_RESOLUTION 2
+
// Note: array is { col, row )
#define ENCODERS_CW_KEY { { 5, 4 } }
#define ENCODERS_CCW_KEY { { 3, 4 } }
diff --git a/keyboards/meletrix/zoom65/rules.mk b/keyboards/meletrix/zoom65/rules.mk
index 4ae48737a4..05b56f4c10 100644
--- a/keyboards/meletrix/zoom65/rules.mk
+++ b/keyboards/meletrix/zoom65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/meletrix/zoom65_lite/config.h b/keyboards/meletrix/zoom65_lite/config.h
new file mode 100644
index 0000000000..1f98a4dfda
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x806C
+#define PRODUCT_ID 0x0005
+#define DEVICE_VER 0x0001
+#define MANUFACTURER meletrix
+#define PRODUCT zoom65_lite
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { F0, E6, D5, F1, F4 }
+#define MATRIX_COL_PINS { C7, D3, D2, D1, D0, B7, B3, B2, C6, B6, B5, B4, D7, D6, D4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Enable encoder */
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B0 }
+
+#define ENCODERS 1
+
+#define ENCODER_RESOLUTION 2
+
+// Note: array is { col, row )
+#define ENCODERS_CW_KEY { { 5, 4 } }
+#define ENCODERS_CCW_KEY { { 3, 4 } }
+
+#define LED_CAPS_LOCK_PIN F7
+#define LED_PIN_ON_STATE 0
+
diff --git a/keyboards/meletrix/zoom65_lite/info.json b/keyboards/meletrix/zoom65_lite/info.json
new file mode 100644
index 0000000000..5bfddbd095
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/info.json
@@ -0,0 +1,623 @@
+{
+ "keyboard_name": "zoom65_lite",
+ "url": "https://zoom65.com/",
+ "maintainer": "spbgzh",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"EncoderRotateL", "x":15, "y":0, "w":0.5},
+ {"label":"EncoderClick", "x":15.5, "y":0},
+ {"label":"EncoderRotateR", "x":16.5, "y":0, "w":0.5},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift1", "x":0, "y":3, "w":1.25},
+ {"label":"Shift2", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space1", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space2", "x":6, "y":4, "w":1.25},
+ {"label":"Space3", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_lshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift1", "x":0, "y":3, "w":1.25},
+ {"label":"Shift2", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_space": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space1", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space2", "x":6, "y":4, "w":1.25},
+ {"label":"Space3", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker_split_space": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Encode", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"Delete", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"PageUp", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space1", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space2", "x":6, "y":4, "w":1.25},
+ {"label":"Space3", "x":7.25, "y":4, "w":2.75},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c
new file mode 100644
index 0000000000..07d58e9d2b
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/readme.md
new file mode 100644
index 0000000000..d15fff8ad0
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/readme.md
@@ -0,0 +1 @@
+# The 65_ansi_blocker keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/keymap.c
new file mode 100644
index 0000000000..7580e22f95
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker_split_bs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/readme.md
new file mode 100644
index 0000000000..1ec5b96442
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/readme.md
@@ -0,0 +1 @@
+# The 65_ansi_blocker_split_bs keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/keymap.c
new file mode 100644
index 0000000000..29bf8fb543
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker_split_lshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker_split_lshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/readme.md
new file mode 100644
index 0000000000..e0816ba218
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/readme.md
@@ -0,0 +1 @@
+# The 65_ansi_blocker_split_lshift keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/keymap.c
new file mode 100644
index 0000000000..9ab31d62f7
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi_blocker_split_space(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker_split_space(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/readme.md
new file mode 100644
index 0000000000..b0dc099a5c
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/readme.md
@@ -0,0 +1 @@
+# The 65_ansi_blocker_split_space keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c
new file mode 100644
index 0000000000..cc7967446d
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_iso_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/readme.md
new file mode 100644
index 0000000000..4f6f7de019
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/readme.md
@@ -0,0 +1 @@
+# The 65_iso_blocker keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/keymap.c
new file mode 100644
index 0000000000..af549a744b
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix, James Young for QMK (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_iso_blocker_split_bs(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/readme.md
new file mode 100644
index 0000000000..260836b6c9
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/readme.md
@@ -0,0 +1 @@
+# The 65_iso_blocker_split_bs keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/keymap.c
new file mode 100644
index 0000000000..7ab65bbf2d
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix, James Young for QMK (@noroadsleft)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_iso_blocker_split_space(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker_split_space(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/readme.md
new file mode 100644
index 0000000000..c4983514b1
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/readme.md
@@ -0,0 +1 @@
+# The 65_iso_blocker_split_space keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/default/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/default/keymap.c
new file mode 100644
index 0000000000..be205e059a
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_VOLU, KC_MUTE, KC_VOLD,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MNXT, KC_MPLY, KC_MPRV,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/default/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/default/readme.md
new file mode 100644
index 0000000000..47c3be8e30
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/via/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9fc9964679
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/via/keymap.c
@@ -0,0 +1,91 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#ifdef VIA_ENABLE
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+
+void encoder_action_unregister(void)
+{
+ for (int index = 0; index < ENCODERS; ++index)
+ {
+ if (encoder_state[index])
+ {
+ keyevent_t encoder_event = (keyevent_t){
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+void encoder_action_register(uint8_t index, bool clockwise)
+{
+ keyevent_t encoder_event = (keyevent_t){
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_kb(void)
+{
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise)
+{
+ encoder_action_register(index, clockwise);
+ return true;
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_VOLU, KC_MUTE, KC_VOLD,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_MNXT, KC_MPLY, KC_MPRV,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/via/readme.md b/keyboards/meletrix/zoom65_lite/keymaps/via/readme.md
new file mode 100644
index 0000000000..e605d45875
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for zoom65_lite
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/via/rules.mk b/keyboards/meletrix/zoom65_lite/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/meletrix/zoom65_lite/readme.md b/keyboards/meletrix/zoom65_lite/readme.md
new file mode 100644
index 0000000000..21f55a2083
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/readme.md
@@ -0,0 +1,26 @@
+# zoom65_lite
+
+![zoom65_lite](https://i.imgur.com/NIbreqdh.jpeg)
+
+Meletrix's first mass-produced mechanical keyboard.
+More Info at [zoom](https://zoom65.com/).
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: zoom65 Standard
+* Hardware Availability: [zoom](https://zoom65.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make meletrix/zoom65_lite:default
+
+Flashing example for this keyboard:
+
+ make meletrix/zoom65_lite:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + End
+* Hold the Esc key while connecting the USB cable (also erases persistent settings)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/meletrix/zoom65_lite/rules.mk b/keyboards/meletrix/zoom65_lite/rules.mk
new file mode 100644
index 0000000000..05b56f4c10
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+
+LAYOUTS = 65_ansi_blocker 65_iso_blocker 65_ansi_blocker_split_bs 65_iso_blocker_split_bs
diff --git a/keyboards/meletrix/zoom65_lite/zoom65_lite.c b/keyboards/meletrix/zoom65_lite/zoom65_lite.c
new file mode 100644
index 0000000000..1e1100a207
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/zoom65_lite.c
@@ -0,0 +1,25 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "zoom65_lite.h"
+
+#ifndef VIA_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10);
+ return true;
+}
+#endif
diff --git a/keyboards/meletrix/zoom65_lite/zoom65_lite.h b/keyboards/meletrix/zoom65_lite/zoom65_lite.h
new file mode 100644
index 0000000000..81948ba1da
--- /dev/null
+++ b/keyboards/meletrix/zoom65_lite/zoom65_lite.h
@@ -0,0 +1,243 @@
+/* Copyright 2021 meletrix
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+
+/* Standard Arrangement
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ ISO
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ ┌─────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐ │
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ │2c │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K43, K0E, K45, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_blocker
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_iso_blocker
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_iso_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_blocker_split_bs
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_blocker_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_iso_blocker_split_bs
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_iso_blocker_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_blocker_split_lshift
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_blocker_split_lshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_blocker_split_space
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_blocker_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_iso_blocker_split_space
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_iso_blocker_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
diff --git a/keyboards/melgeek/mach80/config.h b/keyboards/melgeek/mach80/config.h
index f598751418..8f8377941f 100755
--- a/keyboards/melgeek/mach80/config.h
+++ b/keyboards/melgeek/mach80/config.h
@@ -75,7 +75,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/melgeek/mach80/rev1/rules.mk b/keyboards/melgeek/mach80/rev1/rules.mk
index 73d5710eb8..56ba67e632 100755
--- a/keyboards/melgeek/mach80/rev1/rules.mk
+++ b/keyboards/melgeek/mach80/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mach80/rev2/config.h b/keyboards/melgeek/mach80/rev2/config.h
new file mode 100755
index 0000000000..3ac1b87ab5
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/config.h
@@ -0,0 +1,42 @@
+/* Copyright 2020 MelGeek <melgeek001365@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, E6 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, D3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+#define DRIVER_LED_TOTAL 94
+#define DRIVER_INDICATOR_LED_TOTAL 3
+
+
+#define RGB_MATRIX_CENTER { 108, 30 }
+
diff --git a/keyboards/melgeek/mach80/rev2/rev2.c b/keyboards/melgeek/mach80/rev2/rev2.c
new file mode 100755
index 0000000000..09250b1565
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/rev2.c
@@ -0,0 +1,191 @@
+/* Copyright 2020 MelGeek <melgeek001365@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "mach80.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
+ {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
+ {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
+ {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB4 */
+ {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB5 */
+ {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB6 */
+ {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB7 */
+ {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */
+ {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */
+ {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB65 */
+ {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB56 */
+ {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB57 */
+ {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB58 */
+ {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB59 */
+ {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB67 */
+ {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB68 */
+ {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */
+ {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */
+ {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB12 */
+ {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB13 */
+ {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB14 */
+ {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB15 */
+ {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB16 */
+ {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB17 */
+ {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB18 */
+ {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB69 */
+ {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB70 */
+ {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */
+ {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB55 */
+ {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB71 */
+ {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB72 */
+ {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB66 */
+ {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB60 */
+ {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB61 */
+ {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB73 */
+ {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB19 */
+ {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20 */
+ {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB21 */
+ {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB22 */
+ {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB23 */
+ {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB24 */
+ {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB25 */
+ {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB26 */
+ {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */
+ {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB74 */
+ {0, CS33_SW1, CS32_SW1, CS31_SW1}, /* RGB75 */
+ {0, CS33_SW2, CS32_SW2, CS31_SW2}, /* RGB76 */
+ {0, CS33_SW3, CS32_SW3, CS31_SW3}, /* RGB77 */
+ {0, CS33_SW4, CS32_SW4, CS31_SW4}, /* RGB78 */
+ {0, CS33_SW5, CS32_SW5, CS31_SW5}, /* RGB79 */
+ {0, CS33_SW6, CS32_SW6, CS31_SW6}, /* RGB80 */
+ {0, CS33_SW7, CS32_SW7, CS31_SW7}, /* RGB83 */
+ {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */
+ {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */
+ {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */
+ {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */
+ {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB32 */
+ {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB33 */
+ {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB34 */
+ {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB35 */
+ {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */
+ {0, CS33_SW8, CS32_SW8, CS31_SW8}, /* RGB81 */
+ {0, CS33_SW9, CS32_SW9, CS31_SW9}, /* RGB82 */
+ {0, CS36_SW1, CS35_SW1, CS34_SW1}, /* RGB89 */
+ {0, CS36_SW2, CS35_SW2, CS34_SW2}, /* RGB90 */
+ {0, CS36_SW3, CS35_SW3, CS34_SW3}, /* RGB91 */
+ {0, CS36_SW4, CS35_SW4, CS34_SW4}, /* RGB92 */
+ {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */
+ {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB38 */
+ {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB39 */
+ {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB40 */
+ {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */
+ {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB42 */
+ {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB43 */
+ {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB44 */
+ {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB45 */
+ {0, CS36_SW5, CS35_SW5, CS34_SW5}, /* RGB84 */
+ {0, CS36_SW6, CS35_SW6, CS34_SW6}, /* RGB85 */
+ {0, CS36_SW7, CS35_SW7, CS34_SW7}, /* RGB88 */
+ {0, CS36_SW8, CS35_SW8, CS34_SW8}, /* RGB86 */
+ {0, CS36_SW9, CS35_SW9, CS34_SW9}, /* RGB87 */
+ {0, CS39_SW1, CS38_SW1, CS37_SW1}, /* RGB98 */
+ {0, CS39_SW2, CS38_SW2, CS37_SW2}, /* RGB99 */
+ {0, CS39_SW3, CS38_SW3, CS37_SW3}, /* RGB100 */
+ {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB46 */
+ {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB47 */
+ {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB48 */
+ {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB49 */
+ {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB50 */
+ {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB51 */
+ {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB52 */
+ {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB53 */
+ {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */
+ {0, CS39_SW4, CS38_SW4, CS37_SW4}, /* RGB101 */
+};
+led_config_t g_led_config = {
+ {
+ /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 */
+ { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* R0 */
+ { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33 }, /* R1 */
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }, /* R2 */
+ { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 15, 34, 51 }, /* R3 */
+ { 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, NO_LED, NO_LED, 83, NO_LED }, /* R4 */
+ { 84, NO_LED, 85, NO_LED, NO_LED, 87, NO_LED, NO_LED, NO_LED, 89, NO_LED, NO_LED, 90, 91, 92, 93 } /* R5 */
+ }, {
+ {0, 0}, {12, 0}, {24, 0}, {36, 0}, {48, 0}, {60, 0}, {72, 0}, {84, 0}, {96, 0}, {108, 0}, {120, 0}, {132, 0}, {144, 0}, {156, 0}, {168, 0}, {180, 0}, //16
+ {0, 12}, {12, 12}, {24, 12}, {36, 12}, {48, 12}, {60, 12}, {72, 12}, {84, 12}, {96, 12}, {108, 12}, {120, 12}, {132, 12}, {144, 12}, {156, 12}, {168, 12}, {180, 12}, {192, 12}, {204, 12}, {216, 12}, //19
+ {0, 24}, {12, 24}, {24, 24}, {36, 24}, {48, 24}, {60, 24}, {72, 24}, {84, 24}, {96, 24}, {108, 24}, {120, 24}, {132, 24}, {144, 24}, {156, 24}, {168, 24}, {180, 24}, {192, 24}, //17
+ {0, 36}, {12, 36}, {24, 36}, {36, 36}, {48, 36}, {60, 36}, {72, 36}, {84, 36}, {96, 36}, {108, 36}, {120, 36}, {132, 36}, {144, 36}, {156, 36}, {168, 36}, //15
+ {0, 48}, {12, 48}, {24, 48}, {36, 48}, {48, 48}, {60, 48}, {72, 48}, {84, 48}, {96, 48}, {108, 48}, {120, 48}, {132, 48}, {144, 48}, {156, 48}, {168, 48}, {180, 48}, {192, 48}, //17
+ {0, 60}, {12, 60}, {24, 60}, {36, 60}, {48, 60}, {60, 60}, {72, 60}, {84, 60}, {96, 60}, {108, 60}
+ //10
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+
+const is31_led g_is31_indicator_leds[3] = {
+ {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB107 */
+ {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB108 */
+ {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB109 */
+};
+
+bool led_update_kb(led_t led_state) {
+ if (led_update_user(led_state)) {
+ if (led_state.caps_lock) {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0xff);
+ } else {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0x00);
+ }
+
+ if (led_state.num_lock) {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0xff, 0x00, 0x00);
+ } else {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0x00, 0x00);
+ }
+
+ if (led_state.scroll_lock) {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0xff, 0x00);
+ } else {
+ IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0x00);
+ }
+ }
+ return true;
+}
+
+void matrix_init_kb(void) {
+ for (int i = 0; i < DRIVER_INDICATOR_LED_TOTAL; ++i) {
+ is31_led led = g_is31_indicator_leds[i];
+ IS31FL3741_set_scaling_registers(&led, 0xFF, 0xFF, 0xFF);
+ }
+
+ IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
+
+ matrix_init_user();
+}
+
+
+void keyboard_pre_init_kb(void) {
+ setPinOutput(B7);
+ writePinHigh(B7);
+ keyboard_pre_init_user();
+}
+#endif
diff --git a/keyboards/melgeek/mach80/rev2/rules.mk b/keyboards/melgeek/mach80/rev2/rules.mk
new file mode 100755
index 0000000000..56ba67e632
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = IS31FL3741
+
+LTO_ENABLE = yes
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/melgeek/mj61/rev1/rules.mk b/keyboards/melgeek/mj61/rev1/rules.mk
index ea75197f8f..bd31b34dc1 100644
--- a/keyboards/melgeek/mj61/rev1/rules.mk
+++ b/keyboards/melgeek/mj61/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk
index ea75197f8f..bd31b34dc1 100644
--- a/keyboards/melgeek/mj61/rev2/rules.mk
+++ b/keyboards/melgeek/mj61/rev2/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj63/rev1/rules.mk b/keyboards/melgeek/mj63/rev1/rules.mk
index 59359784c0..698c51ea6f 100644
--- a/keyboards/melgeek/mj63/rev1/rules.mk
+++ b/keyboards/melgeek/mj63/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj63/rev2/rules.mk b/keyboards/melgeek/mj63/rev2/rules.mk
index 59359784c0..698c51ea6f 100644
--- a/keyboards/melgeek/mj63/rev2/rules.mk
+++ b/keyboards/melgeek/mj63/rev2/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj64/rev1/rules.mk b/keyboards/melgeek/mj64/rev1/rules.mk
index 581d808f64..4a33c96c31 100644
--- a/keyboards/melgeek/mj64/rev1/rules.mk
+++ b/keyboards/melgeek/mj64/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj64/rev2/rules.mk b/keyboards/melgeek/mj64/rev2/rules.mk
index 581d808f64..4a33c96c31 100644
--- a/keyboards/melgeek/mj64/rev2/rules.mk
+++ b/keyboards/melgeek/mj64/rev2/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj64/rev3/rules.mk b/keyboards/melgeek/mj64/rev3/rules.mk
index 581d808f64..4a33c96c31 100644
--- a/keyboards/melgeek/mj64/rev3/rules.mk
+++ b/keyboards/melgeek/mj64/rev3/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj65/rev3/rules.mk b/keyboards/melgeek/mj65/rev3/rules.mk
index 67dab4c8bd..9eb4988015 100644
--- a/keyboards/melgeek/mj65/rev3/rules.mk
+++ b/keyboards/melgeek/mj65/rev3/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mj6xy/rev3/rules.mk b/keyboards/melgeek/mj6xy/rev3/rules.mk
index 54f7c83ac3..4b316fa04f 100755
--- a/keyboards/melgeek/mj6xy/rev3/rules.mk
+++ b/keyboards/melgeek/mj6xy/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/melgeek/mojo68/rev1/rules.mk b/keyboards/melgeek/mojo68/rev1/rules.mk
index f802330c18..4bb0344652 100755
--- a/keyboards/melgeek/mojo68/rev1/rules.mk
+++ b/keyboards/melgeek/mojo68/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/mojo75/rev1/rules.mk b/keyboards/melgeek/mojo75/rev1/rules.mk
index 2c8ef27319..e8f81144f9 100644
--- a/keyboards/melgeek/mojo75/rev1/rules.mk
+++ b/keyboards/melgeek/mojo75/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melgeek/z70ultra/rev1/rules.mk b/keyboards/melgeek/z70ultra/rev1/rules.mk
index bfac26d190..5ba2059b29 100644
--- a/keyboards/melgeek/z70ultra/rev1/rules.mk
+++ b/keyboards/melgeek/z70ultra/rev1/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/melody96/rules.mk b/keyboards/melody96/rules.mk
index d45a04dedf..9ccce6abf4 100644
--- a/keyboards/melody96/rules.mk
+++ b/keyboards/melody96/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/meme/keymaps/default/config.h b/keyboards/meme/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/meme/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/meme/keymaps/default/keymap.c b/keyboards/meme/keymaps/default/keymap.c
index f7df8aa4fc..4ae5749205 100644
--- a/keyboards/meme/keymaps/default/keymap.c
+++ b/keyboards/meme/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_spicy(\
+[0] = LAYOUT_spicy(
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_INS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
KC_RCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
diff --git a/keyboards/meme/rules.mk b/keyboards/meme/rules.mk
index 9008320b15..a95b6c06d8 100644
--- a/keyboards/meme/rules.mk
+++ b/keyboards/meme/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/meow65/config.h b/keyboards/meow65/config.h
new file mode 100644
index 0000000000..54af798314
--- /dev/null
+++ b/keyboards/meow65/config.h
@@ -0,0 +1,147 @@
+/*
+Copyright 2021 mrninhvn
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6E64 // Hai-Ninh Dang
+#define PRODUCT_ID 0x4D36
+#define DEVICE_VER 0x0001
+#define MANUFACTURER mrninhvn
+#define PRODUCT Meow65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { C6, B6, B5, B7, F7 }
+#define MATRIX_COL_PINS { F5, F6, B0, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, C7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/meow65/info.json b/keyboards/meow65/info.json
new file mode 100644
index 0000000000..7221a518bd
--- /dev/null
+++ b/keyboards/meow65/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "meow65",
+ "url": "https://github.com/mrninhvn/meow65-pcb",
+ "maintainer": "mrninhvn",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_65_ansi_blocker"
+ },
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1!", "x": 1, "y": 0 },
+ { "label": "2@", "x": 2, "y": 0 },
+ { "label": "3#", "x": 3, "y": 0 },
+ { "label": "4$", "x": 4, "y": 0 },
+ { "label": "5%", "x": 5, "y": 0 },
+ { "label": "6^", "x": 6, "y": 0 },
+ { "label": "7&", "x": 7, "y": 0 },
+ { "label": "8*", "x": 8, "y": 0 },
+ { "label": "9(", "x": 9, "y": 0 },
+ { "label": "0)", "x": 10, "y": 0 },
+ { "label": "-_", "x": 11, "y": 0 },
+ { "label": "=+", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Home", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[{", "x": 11.5, "y": 1 },
+ { "label": "]}", "x": 12.5, "y": 1 },
+ { "label": "\\|", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "PageUp", "x": 15, "y": 1 },
+
+ { "label": "Caps", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";:", "x": 10.75, "y": 2 },
+ { "label": "'\"", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "Page Down", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",<", "x": 9.25, "y": 3 },
+ { "label": ".>", "x": 10.25, "y": 3 },
+ { "label": "/?", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "GUI", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/meow65/keymaps/default/keymap.c b/keyboards/meow65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3a5c4b76a8
--- /dev/null
+++ b/keyboards/meow65/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 mrninhvn
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_65_ansi_blocker(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/meow65/keymaps/default/readme.md b/keyboards/meow65/keymaps/default/readme.md
new file mode 100644
index 0000000000..6da1fe875a
--- /dev/null
+++ b/keyboards/meow65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for meow65
diff --git a/keyboards/meow65/keymaps/via/keymap.c b/keyboards/meow65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ef7dd62071
--- /dev/null
+++ b/keyboards/meow65/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2020 kkatano
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _L0,
+ _L1,
+ _L2,
+ _L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_L0] = LAYOUT_65_ansi_blocker(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_L1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_L1] = LAYOUT_65_ansi_blocker(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L3] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/meow65/keymaps/via/readme.md b/keyboards/meow65/keymaps/via/readme.md
new file mode 100644
index 0000000000..717f08351e
--- /dev/null
+++ b/keyboards/meow65/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for meow65
diff --git a/keyboards/meow65/keymaps/via/rules.mk b/keyboards/meow65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/meow65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/meow65/meow65.c b/keyboards/meow65/meow65.c
new file mode 100644
index 0000000000..4d03f6a460
--- /dev/null
+++ b/keyboards/meow65/meow65.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 mrninhvn
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "meow65.h"
diff --git a/keyboards/meow65/meow65.h b/keyboards/meow65/meow65.h
new file mode 100644
index 0000000000..2643158342
--- /dev/null
+++ b/keyboards/meow65/meow65.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 mrninhvn
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_65_ansi_blocker( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k214, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k312, k313, k314, \
+ k400, k401, k402, k405, k409, k410, k412, k413, k414 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, k214 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, KC_NO, k312, k313, k314 }, \
+ { k400, k401, k402, KC_NO, KC_NO, k405, KC_NO, KC_NO, KC_NO, k409, k410, KC_NO, k412, k413, k414 } \
+}
diff --git a/keyboards/meow65/readme.md b/keyboards/meow65/readme.md
new file mode 100644
index 0000000000..734a278082
--- /dev/null
+++ b/keyboards/meow65/readme.md
@@ -0,0 +1,27 @@
+# meow65
+
+![meow65](https://i.imgur.com/M6PmjPGh.png)
+
+Meow65 Hotswap PCB, compatible with Meow65 & Bakeneko65 V3 Keyboard
+
+* Keyboard Maintainer: [mrninhvn](https://github.com/mrninhvn)
+* Hardware Supported: Meow65, Bakeneko65 V3
+* Hardware Availability: https://github.com/mrninhvn/meow65-pcb
+
+Make example for this keyboard (after setting up your build environment):
+
+ make meow65:default
+
+Flashing example for this keyboard:
+
+ make meow65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down ESC key (the top left key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/meow65/rules.mk b/keyboards/meow65/rules.mk
new file mode 100644
index 0000000000..22b16cb763
--- /dev/null
+++ b/keyboards/meow65/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/merge/iso_macro/rules.mk b/keyboards/merge/iso_macro/rules.mk
index a455a828a6..a220ff6f85 100644
--- a/keyboards/merge/iso_macro/rules.mk
+++ b/keyboards/merge/iso_macro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/merge/uc1/rules.mk b/keyboards/merge/uc1/rules.mk
index 704eeb1217..a3f7ea0f8d 100644
--- a/keyboards/merge/uc1/rules.mk
+++ b/keyboards/merge/uc1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/merge/um70/rules.mk b/keyboards/merge/um70/rules.mk
index 3347a8ebbf..8865137009 100644
--- a/keyboards/merge/um70/rules.mk
+++ b/keyboards/merge/um70/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/merge/uma/config.h b/keyboards/merge/uma/config.h
new file mode 100644
index 0000000000..46bad7185f
--- /dev/null
+++ b/keyboards/merge/uma/config.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 duoshock
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config_common.h"
+
+#define VENDOR_ID 0x4D65
+#define PRODUCT_ID 0x3232
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Merge
+#define PRODUCT UM-A
+
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN C6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define SOFT_SERIAL_PIN D2
+#define SPLIT_USB_DETECT
+#define SPLIT_MODS_ENABLE
+
+#define DEBOUNCE 5
+
+#define ENCODERS_PAD_A { B4 }
+#define ENCODERS_PAD_B { B5 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file
diff --git a/keyboards/merge/uma/info.json b/keyboards/merge/uma/info.json
new file mode 100644
index 0000000000..8cd1ca3ddd
--- /dev/null
+++ b/keyboards/merge/uma/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "UM-A",
+ "url": "https://mergedesign.store/products/um-a",
+ "maintainer": "duoshock",
+ "layouts": {
+ "LAYOUT_ansi_rspace_2u_bksp": {
+ "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10.5, "y":0}, {"label":"*", "x":11.5, "y":0}, {"label":"(", "x":12.5, "y":0}, {"label":")", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"label":"Backspace", "x":16.5, "y":0, "w":2}, {"label":"Encoder", "x":19, "y":0}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Home", "x":19, "y":1}, {"label":"M0", "x":0, "y":2}, {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"Enter", "x":16.25, "y":2, "w":2.25}, {"label":"End", "x":19, "y":2}, {"label":"M1", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"M2", "x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Win", "x":2.75, "y":4, "w":1.25}, {"label":"Alt", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.75, "y":4, "w":2.75}, {"label":"Alt", "x":13.5, "y":4, "w":1.5}, {"label":"Ctrl", "x":15, "y":4, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
+ },
+ "LAYOUT_ansi_rspace_split_bksp": {
+ "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10.5, "y":0}, {"label":"*", "x":11.5, "y":0}, {"label":"(", "x":12.5, "y":0}, {"label":")", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"label":"~", "x":16.5, "y":0}, {"label":"Backspace", "x":17.5, "y":0}, {"label":"Encoder", "x":19, "y":0}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Home", "x":19, "y":1}, {"label":"M0", "x":0, "y":2}, {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"Enter", "x":16.25, "y":2, "w":2.25}, {"label":"End", "x":19, "y":2}, {"label":"M1", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"M2", "x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Win", "x":2.75, "y":4, "w":1.25}, {"label":"Alt", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.75, "y":4, "w":2.75}, {"label":"Alt", "x":13.5, "y":4, "w":1.5}, {"label":"Ctrl", "x":15, "y":4, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
+ },
+ "LAYOUT_ansi_lspace_2u_bksp": {
+ "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10.5, "y":0}, {"label":"*", "x":11.5, "y":0}, {"label":"(", "x":12.5, "y":0}, {"label":")", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"label":"Backspace", "x":16.5, "y":0, "w":2}, {"label":"Encoder", "x":19, "y":0}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Home", "x":19, "y":1}, {"label":"M0", "x":0, "y":2}, {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"Enter", "x":16.25, "y":2, "w":2.25}, {"label":"End", "x":19, "y":2}, {"label":"M1", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"M2", "x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Win", "x":2.75, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"label":"Alt", "x":7.5, "y":4, "w":1.25}, {"x":9.75, "y":4, "w":2.75}, {"label":"Alt", "x":13.5, "y":4, "w":1.5}, {"label":"Ctrl", "x":15, "y":4, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
+ },
+ "LAYOUT_ansi_lspace_split_bksp": {
+ "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"!", "x":2.5, "y":0}, {"label":"@", "x":3.5, "y":0}, {"label":"#", "x":4.5, "y":0}, {"label":"$", "x":5.5, "y":0}, {"label":"%", "x":6.5, "y":0}, {"label":"^", "x":7.5, "y":0}, {"label":"&", "x":10.5, "y":0}, {"label":"*", "x":11.5, "y":0}, {"label":"(", "x":12.5, "y":0}, {"label":")", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"label":"~", "x":16.5, "y":0}, {"label":"Backspace", "x":17.5, "y":0}, {"label":"Encoder", "x":19, "y":0}, {"label":"Tab", "x":1.5, "y":1, "w":1.5}, {"label":"Q", "x":3, "y":1}, {"label":"W", "x":4, "y":1}, {"label":"E", "x":5, "y":1}, {"label":"R", "x":6, "y":1}, {"label":"T", "x":7, "y":1}, {"label":"Y", "x":10, "y":1}, {"label":"U", "x":11, "y":1}, {"label":"I", "x":12, "y":1}, {"label":"O", "x":13, "y":1}, {"label":"P", "x":14, "y":1}, {"label":"{", "x":15, "y":1}, {"label":"}", "x":16, "y":1}, {"label":"|", "x":17, "y":1, "w":1.5}, {"label":"Home", "x":19, "y":1}, {"label":"M0", "x":0, "y":2}, {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75}, {"label":"A", "x":3.25, "y":2}, {"label":"S", "x":4.25, "y":2}, {"label":"D", "x":5.25, "y":2}, {"label":"F", "x":6.25, "y":2}, {"label":"G", "x":7.25, "y":2}, {"label":"H", "x":10.25, "y":2}, {"label":"J", "x":11.25, "y":2}, {"label":"K", "x":12.25, "y":2}, {"label":"L", "x":13.25, "y":2}, {"label":":", "x":14.25, "y":2}, {"label":"\"", "x":15.25, "y":2}, {"label":"Enter", "x":16.25, "y":2, "w":2.25}, {"label":"End", "x":19, "y":2}, {"label":"M1", "x":0, "y":3}, {"label":"Shift", "x":1.5, "y":3, "w":2.25}, {"label":"Z", "x":3.75, "y":3}, {"label":"X", "x":4.75, "y":3}, {"label":"C", "x":5.75, "y":3}, {"label":"V", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"B", "x":9.75, "y":3}, {"label":"N", "x":10.75, "y":3}, {"label":"M", "x":11.75, "y":3}, {"label":"<", "x":12.75, "y":3}, {"label":">", "x":13.75, "y":3}, {"label":"?", "x":14.75, "y":3}, {"label":"Shift", "x":15.75, "y":3, "w":1.75}, {"label":"\u2191", "x":17.75, "y":3.25}, {"label":"M2", "x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Win", "x":2.75, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":2.25}, {"label":"Alt", "x":7.5, "y":4, "w":1.25}, {"x":9.75, "y":4, "w":2.75}, {"label":"Alt", "x":13.5, "y":4, "w":1.5}, {"label":"Ctrl", "x":15, "y":4, "w":1.5}, {"label":"\u2190", "x":16.75, "y":4.25}, {"label":"\u2193", "x":17.75, "y":4.25}, {"label":"\u2192", "x":18.75, "y":4.25}]
+ }
+ }
+}
diff --git a/keyboards/merge/uma/keymaps/default/keymap.c b/keyboards/merge/uma/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7105d1e0a9
--- /dev/null
+++ b/keyboards/merge/uma/keymaps/default/keymap.c
@@ -0,0 +1,65 @@
+/* Copyright 2021 duoshock
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * .---------------------------. .-------------------------------. .---.
+ * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =| Bsp | |EC |
+ * |-------------------------. .---------------------------------| |---|
+ * |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom|
+ * .---. |-------------------------. '---------------------------------| |---|
+ * |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End|
+ * |---| |----------------------------. '--------------------------------| .---. '---'
+ * |M1 | |Shft|ISO\| Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
+ * |---| |------------------- ---------| |---------------------------' .-----------.
+ * |M2 | |Ctl |Gui| |Alt |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
+ * '---' '----------- -----------------' '-----------------------' '-----------'
+ */
+
+[0] = LAYOUT_ansi_rspace_2u_bksp(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
+ KC_2, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[1] = LAYOUT_ansi_rspace_2u_bksp(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[2] = LAYOUT_ansi_rspace_2u_bksp(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[3] = LAYOUT_ansi_rspace_2u_bksp(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
diff --git a/keyboards/merge/uma/keymaps/default/readme.md b/keyboards/merge/uma/keymaps/default/readme.md
new file mode 100644
index 0000000000..2ef78dd3aa
--- /dev/null
+++ b/keyboards/merge/uma/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default UM-A Layout
+
+![UM-A Layout Image](https://i.imgur.com/bKkO3gS.jpg)
diff --git a/keyboards/merge/uma/keymaps/default/rules.mk b/keyboards/merge/uma/keymaps/default/rules.mk
new file mode 100644
index 0000000000..90fc9b184b
--- /dev/null
+++ b/keyboards/merge/uma/keymaps/default/rules.mk
@@ -0,0 +1 @@
+WPM_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/merge/uma/keymaps/via/keymap.c b/keyboards/merge/uma/keymaps/via/keymap.c
new file mode 100644
index 0000000000..46688d4a76
--- /dev/null
+++ b/keyboards/merge/uma/keymaps/via/keymap.c
@@ -0,0 +1,65 @@
+/* Copyright 2021 duoshock
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * .---------------------------. .-------------------------------. .---.
+ * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =| Bsp | |EC |
+ * |-------------------------. .---------------------------------| |---|
+ * |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |Hom|
+ * .---. |-------------------------. '---------------------------------| |---|
+ * |M0 | |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |End|
+ * |---| |----------------------------. '--------------------------------| .---. '---'
+ * |M1 | |Shft|ISO\| Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
+ * |---| |------------------- ---------| |---------------------------' .-----------.
+ * |M2 | |Ctl |Gui| |Alt |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
+ * '---' '----------- -----------------' '-----------------------' '-----------'
+ */
+
+[0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_1, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
+ KC_2, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+[3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+),
+};
+
diff --git a/keyboards/merge/uma/keymaps/via/rules.mk b/keyboards/merge/uma/keymaps/via/rules.mk
new file mode 100644
index 0000000000..d03b5f1ca7
--- /dev/null
+++ b/keyboards/merge/uma/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+WPM_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/merge/uma/readme.md b/keyboards/merge/uma/readme.md
new file mode 100644
index 0000000000..7a7958b169
--- /dev/null
+++ b/keyboards/merge/uma/readme.md
@@ -0,0 +1,22 @@
+# UM-A
+
+![UM-A](https://i.imgur.com/Bm1mRDbl.jpg)
+
+A Alice like layout keyboard with arrow keys, encoder and OLED screen sold by Merge. [Product page](https://mergedesign.store/products/um-70)
+
+* Keyboard Maintainer: [duoshock](https://github.com/duoshock)
+* Hardware Availability: [Merge Store](https://mergedesign.store/products/um-a)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make merge/uma:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the Esc key on the left side or '7' key on the right side and plug in the keyboard.
+
+* **Physical reset button**: Briefly press the button on the back of the PCB.
diff --git a/keyboards/merge/uma/rules.mk b/keyboards/merge/uma/rules.mk
new file mode 100644
index 0000000000..27f0425b4f
--- /dev/null
+++ b/keyboards/merge/uma/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+SPLIT_KEYBOARD = yes
+LTO_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/merge/uma/uma.c b/keyboards/merge/uma/uma.c
new file mode 100644
index 0000000000..376cdfd3fe
--- /dev/null
+++ b/keyboards/merge/uma/uma.c
@@ -0,0 +1,109 @@
+/* Copyright 2021 duoshock
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "uma.h"
+
+#ifdef OLED_ENABLE
+void suspend_power_down_user(void) {
+ oled_off();
+}
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_90;
+ }
+
+ return rotation;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192,192,128,128,192,192,224,224,224,224,224,224,224,224,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 3, 1, 0, 1,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0, 0, 0, 0,254,254,254, 0, 0, 0,254,254,254,252,240,224,128,128,224,240,252,254,254,254, 0, 0,128,128,128,128,128,128, 0, 0, 0, 0, 0,224,248,252, 62, 62,252,240,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,240,192,128, 0,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 31, 63,120,112,112,112,112,120, 63, 31, 15, 0, 0, 0,127,127,127, 0, 1, 7, 7, 7, 7, 1, 0,127,127,127, 0, 0, 3, 3, 3, 3, 3, 3, 1, 0,112,124,127, 31, 15, 14, 14, 14, 15, 15, 31,127,124, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 1, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+
+// 32 * 18 Merge logos
+static const char PROGMEM merge_logo[] = {
+ 0xf8, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0e,
+ 0x06, 0x04, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0xf0, 0xc0,
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0,
+ 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f,
+ 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01,
+ 0x01, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
+};
+
+int current_wpm = 0;
+
+static void print_status_narrow(void) {
+ oled_set_cursor(0,1);
+ oled_write_raw_P(merge_logo, sizeof(merge_logo));
+ oled_set_cursor(0,5);
+ oled_write_P(PSTR("-----"), false);
+ oled_set_cursor(0,6);
+ oled_write_P(PSTR("LYR "), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("0"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("1"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("2"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("3"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_ln_P(PSTR(" "), false);
+ oled_write_P(PSTR("CAP "), false);
+ oled_write_P(PSTR("."), led_usb_state.caps_lock);
+ oled_write_P(PSTR("NUM "), false);
+ oled_write_P(PSTR("."), led_usb_state.num_lock);
+ oled_write_P(PSTR("SCR "), false);
+ oled_write_P(PSTR("."), led_usb_state.scroll_lock);
+ //oled_write_ln_P(PSTR(" "), false);
+ oled_write_P(PSTR("-----"), false);
+
+ // WPM counter Start
+ oled_set_cursor(0,13);
+ oled_write(" ", false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ oled_set_cursor(0,14);
+ oled_write(" WPM ", false);
+ // WPM counter End
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_master()) {
+ print_status_narrow();
+ //render_logo();
+ } else {
+ render_logo();
+ //print_status_narrow();
+ }
+ return false;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/merge/uma/uma.h b/keyboards/merge/uma/uma.h
new file mode 100644
index 0000000000..b7fb9a5d61
--- /dev/null
+++ b/keyboards/merge/uma/uma.h
@@ -0,0 +1,192 @@
+/* Copyright 2021 duoshock
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L41, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, L41, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_ansi_rspace_split_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_ansi_rspace_2u_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, XXX, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_ansi_lspace_2u_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, XXX, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_ansi_lspace_split_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_iso_rspace_split_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L41, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_iso_rspace_2u_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L41, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L43, L44, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, XXX, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_iso_lspace_2u_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L41, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, XXX, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
+
+#define LAYOUT_iso_lspace_split_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R27, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L45, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R47, \
+ L46, L30, L41, L31, L32, L33, L34, L35, R46, R30, R31, R32, R33, R34, R35, R36,\
+ L47, L40, L42, L44, L43, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, XXX, L42, L43, L44, L45, L46, L47 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47 } \
+}
diff --git a/keyboards/mesa/mesa_tkl/rules.mk b/keyboards/mesa/mesa_tkl/rules.mk
index 2eb9369659..e0403a960b 100644
--- a/keyboards/mesa/mesa_tkl/rules.mk
+++ b/keyboards/mesa/mesa_tkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/meson/keymaps/default/config.h b/keyboards/meson/keymaps/default/config.h
deleted file mode 100644
index cb72945366..0000000000
--- a/keyboards/meson/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Luciano M
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here \ No newline at end of file
diff --git a/keyboards/meson/rules.mk b/keyboards/meson/rules.mk
index 52935ed9d8..e1f6caafc4 100644
--- a/keyboards/meson/rules.mk
+++ b/keyboards/meson/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/metamechs/timberwolf/rules.mk b/keyboards/metamechs/timberwolf/rules.mk
index 63c334e191..4f16ad1024 100644
--- a/keyboards/metamechs/timberwolf/rules.mk
+++ b/keyboards/metamechs/timberwolf/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mexsistor/ludmila/rules.mk b/keyboards/mexsistor/ludmila/rules.mk
index 971b22c783..0fbc73da48 100644
--- a/keyboards/mexsistor/ludmila/rules.mk
+++ b/keyboards/mexsistor/ludmila/rules.mk
@@ -14,10 +14,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mikeneko65/rev3/config.h b/keyboards/mikeneko65/rev3/config.h
new file mode 100644
index 0000000000..dad2532012
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/config.h
@@ -0,0 +1,109 @@
+/* Copyright 2020 kkatano
+ Copyright 2022 takishim
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7934
+#define PRODUCT_ID 0x6D53
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takishim
+#define PRODUCT Mikeneko 65 V3
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
+#define MATRIX_COL_PINS { F6, B0, F1, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mikeneko65/rev3/info.json b/keyboards/mikeneko65/rev3/info.json
new file mode 100644
index 0000000000..5eba021804
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Mikeneko 65 V3",
+ "url": "https://github.com/takishim/mikeneko65",
+ "maintainer": "takishim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0.25}, {"x":1, "y":0.25}, {"x":2, "y":0.25}, {"x":3, "y":0.25}, {"x":4, "y":0.25}, {"x":5, "y":0.25}, {"x":6, "y":0.25}, {"x":7, "y":0.25}, {"x":8, "y":0.25}, {"x":9, "y":0.25}, {"x":10, "y":0.25}, {"x":11, "y":0.25}, {"x":12, "y":0.25}, {"x":13, "y":0.25}, {"x":14, "y":0.25}, {"x":15, "y":0.25}, {"x":0, "y":1.25, "w":1.5}, {"x":1.5, "y":1.25}, {"x":2.5, "y":1.25}, {"x":3.5, "y":1.25}, {"x":4.5, "y":1.25}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25}, {"x":7.5, "y":1.25}, {"x":8.5, "y":1.25}, {"x":9.5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.25}, {"x":12.5, "y":1.25}, {"x":13.5, "y":1.25, "w":1.5}, {"x":15, "y":1.25}, {"x":0, "y":2.25, "w":1.75}, {"x":1.75, "y":2.25}, {"x":2.75, "y":2.25}, {"x":3.75, "y":2.25}, {"x":4.75, "y":2.25}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25, "w":2.25}, {"x":15, "y":2.25}, {"x":0, "y":3.25, "w":2.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":6.25, "y":3.25}, {"x":7.25, "y":3.25}, {"x":8.25, "y":3.25}, {"x":9.25, "y":3.25}, {"x":10.25, "y":3.25}, {"x":11.25, "y":3.25}, {"x":12.25, "y":3.25, "w":1.75}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25, "w":1.25}, {"x":3.75, "y":4.25, "w":6.25}, {"x":10, "y":4.25, "w":1.25}, {"x":11.25, "y":4.25, "w":1.25}, {"x":13, "y":4.25}, {"x":14, "y":4.25}, {"x":15, "y":4.25}]
+ }
+ }
+}
diff --git a/keyboards/mikeneko65/rev3/keymaps/default/keymap.c b/keyboards/mikeneko65/rev3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..69844b8c30
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mikeneko65/rev3/keymaps/default/readme.md b/keyboards/mikeneko65/rev3/keymaps/default/readme.md
new file mode 100644
index 0000000000..0771ea1f21
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Mikeneko 65 V3
diff --git a/keyboards/mikeneko65/rev3/keymaps/via/keymap.c b/keyboards/mikeneko65/rev3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2a456503ea
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _L0,
+ _L1,
+ _L2,
+ _L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_L0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_L1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mikeneko65/rev3/keymaps/via/rules.mk b/keyboards/mikeneko65/rev3/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mikeneko65/rev3/readme.md b/keyboards/mikeneko65/rev3/readme.md
new file mode 100644
index 0000000000..3722c91f25
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/readme.md
@@ -0,0 +1,23 @@
+# Mikeneko 65 V3
+
+A simple 65% keyboard
+
+* Keyboard Maintainer: [takishim](https://github.com/takishim)
+* Hardware Supported: Mikeneko 65 V4
+* Hardware Availability: [Open source on GitHub](https://github.com/takishim/mikeneko65/tree/v3)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mikeneko65/rev3:default
+
+Flashing example for this keyboard:
+
+ make mikeneko65/rev3:default:flash
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mikeneko65/rev3/rev3.c b/keyboards/mikeneko65/rev3/rev3.c
new file mode 100644
index 0000000000..6da33ff78f
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/rev3.c
@@ -0,0 +1,18 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev3.h"
diff --git a/keyboards/mikeneko65/rev3/rev3.h b/keyboards/mikeneko65/rev3/rev3.h
new file mode 100644
index 0000000000..cb490224fb
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/rev3.h
@@ -0,0 +1,34 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k115, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k215, \
+ k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k315, \
+ k400, k401, k402, k406, k409, k411, k412, k413, k415 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, KC_NO, k115 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO, k215 }, \
+ { k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, k315 }, \
+ { k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, KC_NO, k415 } \
+}
diff --git a/keyboards/mikeneko65/rev3/rules.mk b/keyboards/mikeneko65/rev3/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/mikeneko65/rev3/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mikeneko65/rev4/config.h b/keyboards/mikeneko65/rev4/config.h
new file mode 100644
index 0000000000..2e7efaf8db
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/config.h
@@ -0,0 +1,109 @@
+/* Copyright 2020 kkatano
+ Copyright 2022 takishim
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7934
+#define PRODUCT_ID 0x6D54
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takishim
+#define PRODUCT Mikeneko 65 V4
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D0, D2, D5, C6, C7 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, E6, B0, B7, D4, D6, D7, B6, B5, B4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mikeneko65/rev4/info.json b/keyboards/mikeneko65/rev4/info.json
new file mode 100644
index 0000000000..a0a16b8987
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Mikeneko 65 V4",
+ "url": "https://github.com/takishim/mikeneko65",
+ "maintainer": "takishim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0.25}, {"x":1, "y":0.25}, {"x":2, "y":0.25}, {"x":3, "y":0.25}, {"x":4, "y":0.25}, {"x":5, "y":0.25}, {"x":6, "y":0.25}, {"x":7, "y":0.25}, {"x":8, "y":0.25}, {"x":9, "y":0.25}, {"x":10, "y":0.25}, {"x":11, "y":0.25}, {"x":12, "y":0.25}, {"x":13, "y":0.25, "w":2}, {"x":15, "y":0.25}, {"x":0, "y":1.25, "w":1.5}, {"x":1.5, "y":1.25}, {"x":2.5, "y":1.25}, {"x":3.5, "y":1.25}, {"x":4.5, "y":1.25}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25}, {"x":7.5, "y":1.25}, {"x":8.5, "y":1.25}, {"x":9.5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.25}, {"x":12.5, "y":1.25}, {"x":13.5, "y":1.25, "w":1.5}, {"x":15, "y":1.25}, {"x":0, "y":2.25, "w":1.75}, {"x":1.75, "y":2.25}, {"x":2.75, "y":2.25}, {"x":3.75, "y":2.25}, {"x":4.75, "y":2.25}, {"x":5.75, "y":2.25}, {"x":6.75, "y":2.25}, {"x":7.75, "y":2.25}, {"x":8.75, "y":2.25}, {"x":9.75, "y":2.25}, {"x":10.75, "y":2.25}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2.25, "w":2.25}, {"x":15, "y":2.25}, {"x":0, "y":3.25, "w":2.25}, {"x":2.25, "y":3.25}, {"x":3.25, "y":3.25}, {"x":4.25, "y":3.25}, {"x":5.25, "y":3.25}, {"x":6.25, "y":3.25}, {"x":7.25, "y":3.25}, {"x":8.25, "y":3.25}, {"x":9.25, "y":3.25}, {"x":10.25, "y":3.25}, {"x":11.25, "y":3.25}, {"x":12.25, "y":3.25, "w":1.75}, {"x":14, "y":3.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25, "w":1.25}, {"x":3.75, "y":4.25, "w":6.25}, {"x":10, "y":4.25, "w":1.25}, {"x":11.25, "y":4.25, "w":1.25}, {"x":13, "y":4.25}, {"x":14, "y":4.25}, {"x":15, "y":4.25}]
+ }
+ }
+}
diff --git a/keyboards/mikeneko65/rev4/keymaps/default/keymap.c b/keyboards/mikeneko65/rev4/keymaps/default/keymap.c
new file mode 100644
index 0000000000..108ba0beb0
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN] = LAYOUT_all(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mikeneko65/rev4/keymaps/default/readme.md b/keyboards/mikeneko65/rev4/keymaps/default/readme.md
new file mode 100644
index 0000000000..13754c577f
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Mikeneko 65 V4
diff --git a/keyboards/mikeneko65/rev4/keymaps/via/keymap.c b/keyboards/mikeneko65/rev4/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2b9d125809
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _L0,
+ _L1,
+ _L2,
+ _L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_L0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_L1] = LAYOUT_all(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_L3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mikeneko65/rev4/keymaps/via/rules.mk b/keyboards/mikeneko65/rev4/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mikeneko65/rev4/readme.md b/keyboards/mikeneko65/rev4/readme.md
new file mode 100644
index 0000000000..5af268757e
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/readme.md
@@ -0,0 +1,23 @@
+# Mikeneko 65 V4
+
+A simple 65% keyboard
+
+* Keyboard Maintainer: [takishim](https://github.com/takishim)
+* Hardware Supported: Mikeneko 65 V4
+* Hardware Availability: [Open source on GitHub](https://github.com/takishim/mikeneko65/tree/v4)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mikeneko65/rev4:default
+
+Flashing example for this keyboard:
+
+ make mikeneko65/rev4:default:flash
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+ぶSee the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mikeneko65/rev4/rev4.c b/keyboards/mikeneko65/rev4/rev4.c
new file mode 100644
index 0000000000..35d8509a09
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/rev4.c
@@ -0,0 +1,18 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev4.h"
diff --git a/keyboards/mikeneko65/rev4/rev4.h b/keyboards/mikeneko65/rev4/rev4.h
new file mode 100644
index 0000000000..5f4a913fc9
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/rev4.h
@@ -0,0 +1,34 @@
+/* Copyright 2020 kkatano
+ * Copyright 2022 takishim
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k213, k214, \
+ k300, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, \
+ k400, k401, k402, k406, k409, k411, k412, k413, k414 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, k214 }, \
+ { k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314 }, \
+ { k400, k401, k402, KC_NO, KC_NO, KC_NO, k406, KC_NO, KC_NO, k409, KC_NO, k411, k412, k413, k414 } \
+}
diff --git a/keyboards/mikeneko65/rev4/rules.mk b/keyboards/mikeneko65/rev4/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/mikeneko65/rev4/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/miller/gm862/keymaps/default/keymap.c b/keyboards/miller/gm862/keymaps/default/keymap.c
index f508bcbb51..897d8f1f77 100644
--- a/keyboards/miller/gm862/keymaps/default/keymap.c
+++ b/keyboards/miller/gm862/keymaps/default/keymap.c
@@ -3,15 +3,15 @@
#define _LAYER1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_60_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,\
- CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL),
[_LAYER1] = LAYOUT_60_ansi( /* FN */
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,\
- KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
}; \ No newline at end of file
diff --git a/keyboards/miller/gm862/keymaps/via/keymap.c b/keyboards/miller/gm862/keymaps/via/keymap.c
index f508bcbb51..897d8f1f77 100644
--- a/keyboards/miller/gm862/keymaps/via/keymap.c
+++ b/keyboards/miller/gm862/keymaps/via/keymap.c
@@ -3,15 +3,15 @@
#define _LAYER1 1
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT_60_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,\
- CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH,
+ CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL),
[_LAYER1] = LAYOUT_60_ansi( /* FN */
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\
- KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,\
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,\
- KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
+ KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET ,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDOWN,KC_MNXT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
}; \ No newline at end of file
diff --git a/keyboards/miller/gm862/rules.mk b/keyboards/miller/gm862/rules.mk
index 41fdb211ed..036987413e 100644
--- a/keyboards/miller/gm862/rules.mk
+++ b/keyboards/miller/gm862/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/millipad/rules.mk b/keyboards/millipad/rules.mk
index 2af6060bf9..e73fd25b16 100644
--- a/keyboards/millipad/rules.mk
+++ b/keyboards/millipad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mini_elixivy/rules.mk b/keyboards/mini_elixivy/rules.mk
index c1b300af90..a6cce79bd5 100644
--- a/keyboards/mini_elixivy/rules.mk
+++ b/keyboards/mini_elixivy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mini_ten_key_plus/config.h b/keyboards/mini_ten_key_plus/config.h
new file mode 100644
index 0000000000..92ac355fe8
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/config.h
@@ -0,0 +1,110 @@
+/*
+Copyright 2021 minibois
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER minibois
+#define PRODUCT mini_ten_key_plus
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 5
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, B1, B5, B4, E6 }
+#define MATRIX_COL_PINS { F5, F4, B6, D7, C6 }
+#define ENCODERS_PAD_A { F7 }
+#define ENCODERS_PAD_B { F6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+#define ENCODER_RESOLUTION 2
diff --git a/keyboards/mini_ten_key_plus/info.json b/keyboards/mini_ten_key_plus/info.json
new file mode 100644
index 0000000000..7dd50afbf3
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "mini_ten_key_plus",
+ "url": "https://github.com/minibois/ten-key-plus",
+ "maintainer": "minibois",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout":[
+ {"label":"Esc", "x":0, "y":0} ,{"label":"Calculator", "x":1, "y":0},{"label":"/", "x":2, "y":0},{"label":"*", "x":3, "y":0},{"label":"-", "x":4, "y":0},
+ {"label":"Backspace", "x":0, "y":1},{"label":"7", "x":1, "y":1} ,{"label":"8", "x":2, "y":1},{"label":"9", "x":3, "y":1},{"label":"+", "x":4, "y":1},
+ {"label":"(", "x":0, "y":2} ,{"label":"4", "x":1, "y":2} ,{"label":"5", "x":2, "y":2},{"label":"6", "x":3, "y":2},{"label":"+", "x":4, "y":2},
+ {"label":")", "x":0, "y":3} ,{"label":"1", "x":1, "y":3} ,{"label":"2", "x":2, "y":3},{"label":"3", "x":3, "y":3},{"label":"Enter", "x":4, "y":3},
+ {"label":"y", "x":0, "y":4} ,{"label":"00", "x":1, "y":4} ,{"label":"0", "x":2, "y":4},{"label":".", "x":3, "y":4},{"label":"Enter", "x":4, "y":4}
+ ]
+ },
+ "LAYOUT_standard_numpad": {
+ "layout":[
+ {"label":"Esc", "x":0, "y":0} ,{"label":"Calculator", "x":1, "y":0},{"label":"/", "x":2, "y":0},{"label":"*", "x":3, "y":0},{"label":"-", "x":4, "y":0},
+ {"label":"Backspace", "x":0, "y":1},{"label":"7", "x":1, "y":1} ,{"label":"8", "x":2, "y":1},{"label":"9", "x":3, "y":1},
+ {"label":"(", "x":0, "y":2} ,{"label":"4", "x":1, "y":2} ,{"label":"5", "x":2, "y":2},{"label":"6", "x":3, "y":2},{"label":"+", "x":4, "y":2, "h":2},
+ {"label":")", "x":0, "y":3} ,{"label":"1", "x":1, "y":3} ,{"label":"2", "x":2, "y":3},{"label":"3", "x":3, "y":3},
+ {"label":"y", "x":0, "y":4} ,{"label":"0", "x":1, "y":4 ,"w":2} ,{"label":".", "x":3, "y":4},{"label":"Enter", "x":4, "y":3, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mini_ten_key_plus/keymaps/default/keymap.c b/keyboards/mini_ten_key_plus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dee77629aa
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2021 minibois (@minibois)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BASE: (Base Layer) Default Layer
+ * ,-------------------.
+ * |Esc|Cal| / | * | - |
+ * |--------------------
+ * | BS| 7 | 8 | 9 | + |
+ * |--------------------
+ * | ( | 4 | 5 | 6 | + |
+ * |--------------------
+ * | ) | 1 | 2 | 3 |Ent|
+ * |--------------------
+ * | Y | 00| 0 | . |Ent|
+ * `-------------------'
+ */
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_CALC, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_LEFT_PAREN, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_RIGHT_PAREN, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_Y, KC_P0, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mini_ten_key_plus/keymaps/default/readme.md b/keyboards/mini_ten_key_plus/keymaps/default/readme.md
new file mode 100644
index 0000000000..a8f697f2cb
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/keymaps/default/readme.md
@@ -0,0 +1,2 @@
+# The default 1u keymap for mini_ten_key_plus
+![mini_ten_key_plus](https://imgur.com/VuSTwfC.png) \ No newline at end of file
diff --git a/keyboards/mini_ten_key_plus/keymaps/standard_numpad/keymap.c b/keyboards/mini_ten_key_plus/keymaps/standard_numpad/keymap.c
new file mode 100644
index 0000000000..cc3fa03da1
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/keymaps/standard_numpad/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2021 minibois (@minibois)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BASE: (Base Layer) Default Layer
+ * ,-------------------.
+ * |Esc|Cal| / | * | - |
+ * |--------------------
+ * | BS| 7 | 8 | 9 | + |
+ * |---------------- |
+ * | ( | 4 | 5 | 6 | |
+ * |--------------------
+ * | ) | 1 | 2 | 3 |Ent|
+ * |---------------- |
+ * | Y | 0 | . | |
+ * `-------------------'
+ */
+ [_BASE] = LAYOUT_standard_numpad(
+ KC_ESC, KC_CALC, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_BSPC, KC_P7, KC_P8, KC_P9,
+ KC_LEFT_PAREN, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_RIGHT_PAREN, KC_P1, KC_P2, KC_P3,
+ KC_Y, KC_P0, KC_PDOT, KC_PENT
+ )
+};
diff --git a/keyboards/mini_ten_key_plus/keymaps/standard_numpad/readme.md b/keyboards/mini_ten_key_plus/keymaps/standard_numpad/readme.md
new file mode 100644
index 0000000000..2cb470bef8
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/keymaps/standard_numpad/readme.md
@@ -0,0 +1,2 @@
+# The standard numpad keymap for mini_ten_key_plus
+![mini_ten_key_plus](https://imgur.com/x2BUc9J.png) \ No newline at end of file
diff --git a/keyboards/mini_ten_key_plus/mini_ten_key_plus.c b/keyboards/mini_ten_key_plus/mini_ten_key_plus.c
new file mode 100644
index 0000000000..b2b7456b53
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/mini_ten_key_plus.c
@@ -0,0 +1,15 @@
+// Copyright 2021 minibois (@minibois)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "mini_ten_key_plus.h"
+
+/* Rotary Encoder's function (currently volume up/down) */
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code16(KC_RIGHT_PAREN);
+ } else {
+ tap_code16(KC_LEFT_PAREN);
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/mini_ten_key_plus/mini_ten_key_plus.h b/keyboards/mini_ten_key_plus/mini_ten_key_plus.h
new file mode 100644
index 0000000000..fef3b6a8c3
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/mini_ten_key_plus.h
@@ -0,0 +1,78 @@
+/* Copyright 2021 minibois
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+// readability
+#define ___ KC_NO
+
+/* Default
+ * ,-------------------.
+ * |00 |01 |02 |03 |04 |
+ * |-------------------|
+ * |10 |11 |12 |13 |14 |
+ * |-------------------|
+ * |20 |21 |22 |23 |24 |
+ * |-------------------|
+ * |30 |31 |32 |33 |34 |
+ * |-------------------|
+ * |40 |41 |42 |43 |44 |
+ * `-------------------'
+*/
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04 , \
+ k10, k11, k12, k13, k14 , \
+ k20, k21, k22, k23, k24 , \
+ k30, k31, k32, k33, k34 , \
+ k40, k41, k42, k43, k44 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, }, \
+ { k10, k11, k12, k13, k14, }, \
+ { k20, k21, k22, k23, k24, }, \
+ { k30, k31, k32, k33, k34, }, \
+ { k40, k41, k42, k43, k44, } \
+}
+
+/* Standard Numpad
+ * ,-------------------.
+ * |00 |01 |02 |03 |04 |
+ * |-------------------|
+ * |10 |11 |12 |13 | |
+ * |---------------|14 |
+ * |20 |21 |22 |23 | |
+ * |-------------------|
+ * |30 |31 |32 |33 | |
+ * |---------------|34 |
+ * |40 | 41 |43 | |
+ * `-------------------'
+*/
+#define LAYOUT_standard_numpad( \
+ k00, k01, k02, k03, k04 , \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, k24 , \
+ k30, k31, k32, k33, \
+ k40, k42, k43, k44 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, }, \
+ { k10, k11, k12, k13, ___, }, \
+ { k20, k21, k22, k23, k24, }, \
+ { k30, k31, k32, k33, ___, }, \
+ { k40, ___, k42, k43, k44, } \
+}
diff --git a/keyboards/mini_ten_key_plus/readme.md b/keyboards/mini_ten_key_plus/readme.md
new file mode 100644
index 0000000000..12afcc4f12
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/readme.md
@@ -0,0 +1,24 @@
+# mini_ten_key_plus
+
+![mini_ten_key_plus](https://imgur.com/QtFFONgl.jpg)
+
+A 5x5 numpad/macropad, with support for a rotary encoder running on a Pro Micro.
+
+* Keyboard Maintainer: [minibois](https://github.com/minibois)
+* Hardware Supported: mini_ten_key_plus PCB, Pro Micro (or equivalent), 3D printed case, 22 - 25 MX (like) switches, PCB mount stabilizers
+* Hardware Availability: https://github.com/minibois/ten-key-plus
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mini_ten_key_plus:default
+
+Flashing example for this keyboard:
+
+ make mini_ten_key_plus:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader:
+* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/mini_ten_key_plus/rules.mk b/keyboards/mini_ten_key_plus/rules.mk
new file mode 100644
index 0000000000..77d9fdb410
--- /dev/null
+++ b/keyboards/mini_ten_key_plus/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
diff --git a/keyboards/miniaxe/keymaps/default/keymap.c b/keyboards/miniaxe/keymaps/default/keymap.c
index cc77feeca5..8e9695220c 100644
--- a/keyboards/miniaxe/keymaps/default/keymap.c
+++ b/keyboards/miniaxe/keymaps/default/keymap.c
@@ -42,11 +42,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | GUI | LOWER|Ctrl/Esc| |Spc/Sft| RAISE|Alt/BkSp |
* `--------------------' `--------------------'
*/
-[_QWERTY] = LAYOUT_split_3x5_3( \
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
- KC_LGUI, LOWER, MT(MOD_LCTL, KC_ESC), MT(MOD_LSFT, KC_SPC), RAISE, MT(MOD_LALT, KC_BSPC) \
+[_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LGUI, LOWER, MT(MOD_LCTL, KC_ESC), MT(MOD_LSFT, KC_SPC), RAISE, MT(MOD_LALT, KC_BSPC)
),
/* Raise
@@ -61,11 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | LOWER| | | Esc | RAISE| |
* `--------------------' `--------------------'
*/
-[_RAISE] = LAYOUT_split_3x5_3( \
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \
- KC_TAB, KC_UNDS, KC_PLUS, KC_PIPE, KC_TILD, KC_COLN, KC_DQUO, KC_GT, KC_LCBR, KC_RCBR, \
- KC_CAPS, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_SCLN, KC_QUOT, KC_LT, KC_LBRC, KC_RBRC, \
- _______, _______, _______, _______, _______, _______\
+[_RAISE] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_TAB, KC_UNDS, KC_PLUS, KC_PIPE, KC_TILD, KC_COLN, KC_DQUO, KC_GT, KC_LCBR, KC_RCBR,
+ KC_CAPS, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_SCLN, KC_QUOT, KC_LT, KC_LBRC, KC_RBRC,
+ _______, _______, _______, _______, _______, _______
),
/* Lower
@@ -80,11 +80,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | LOWER| | | | RAISE| |
* `--------------------' `--------------------'
*/
-[_LOWER] = LAYOUT_split_3x5_3( \
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_TAB, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT, \
- KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, KC_DEL, KC_BSPC, KC_PGUP, KC_PGDN, KC_BSLS, KC_QUOT, \
- _______, _______, _______, _______, _______, _______ \
+[_LOWER] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_ENT,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, KC_DEL, KC_BSPC, KC_PGUP, KC_PGDN, KC_BSLS, KC_QUOT,
+ _______, _______, _______, _______, _______, _______
),
@@ -100,11 +100,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | LOWER| | | | RAISE| |
* `--------------------' `--------------------'
*/
-[_ADJUST] = LAYOUT_split_3x5_3( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, \
- RESET, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, \
- _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_split_3x5_3(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______,
+ RESET, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/miniaxe/rules.mk b/keyboards/miniaxe/rules.mk
index b501d791b1..d96cd3bfe5 100644
--- a/keyboards/miniaxe/rules.mk
+++ b/keyboards/miniaxe/rules.mk
@@ -12,16 +12,12 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
DEBUG_ENABLE = no
-CUSTOM_MATRIX = no # Use custom matrix code
SPLIT_KEYBOARD = yes # Use shared split_common code
LAYOUTS = split_3x5_3
diff --git a/keyboards/minidox/keymaps/default/keymap.c b/keyboards/minidox/keymaps/default/keymap.c
index d1e13c28d1..737b53d301 100644
--- a/keyboards/minidox/keymaps/default/keymap.c
+++ b/keyboards/minidox/keymaps/default/keymap.c
@@ -38,11 +38,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |
* `------' `------'
*/
-[_QWERTY] = LAYOUT_split_3x5_3( \
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
- KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT) \
+[_QWERTY] = LAYOUT_split_3x5_3(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, LOWER, KC_SPC, KC_BSPC, RAISE, OSM(MOD_LSFT)
),
/* Raise
@@ -60,11 +60,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |
* `------' `------'
*/
-[_RAISE] = LAYOUT_split_3x5_3( \
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \
- KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT, \
- _______, _______, _______, _______, _______, _______ \
+[_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, _______, _______, _______, _______, KC_BSLS, KC_QUOT,
+ _______, _______, _______, _______, _______, _______
),
/* Lower
@@ -82,11 +82,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |
* `------' `------'
*/
-[_LOWER] = LAYOUT_split_3x5_3( \
- KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \
- KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \
- KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT, \
- _______, _______, _______, KC_ENT, _______, KC_DEL \
+[_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_ESC, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR,
+ KC_CAPS, KC_TILD, _______, _______, _______, _______, _______, _______, KC_PIPE, KC_DQT,
+ _______, _______, _______, KC_ENT, _______, KC_DEL
),
/* Adjust (Lower + Raise)
@@ -104,11 +104,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |
* `------' `------'
*/
-[_ADJUST] = LAYOUT_split_3x5_3( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, \
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL, \
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______ \
+[_ADJUST] = LAYOUT_split_3x5_3(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, TSKMGR, CALTDEL,
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/minidox/rules.mk b/keyboards/minidox/rules.mk
index 4865b19799..69d7bcced4 100644
--- a/keyboards/minidox/rules.mk
+++ b/keyboards/minidox/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/minim/rules.mk b/keyboards/minim/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/minim/rules.mk
+++ b/keyboards/minim/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/minimacro5/rules.mk b/keyboards/minimacro5/rules.mk
index 8bed5bc2e1..2bb7b0b50a 100644
--- a/keyboards/minimacro5/rules.mk
+++ b/keyboards/minimacro5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/minimon/index_tab/rules.mk b/keyboards/minimon/index_tab/rules.mk
index dcc5fd8be8..60b6f3bfa3 100644
--- a/keyboards/minimon/index_tab/rules.mk
+++ b/keyboards/minimon/index_tab/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mint60/keymaps/default/keymap.c b/keyboards/mint60/keymaps/default/keymap.c
index a56bc5a1ad..ab7ead0b2c 100644
--- a/keyboards/mint60/keymaps/default/keymap.c
+++ b/keyboards/mint60/keymaps/default/keymap.c
@@ -20,19 +20,19 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1), \
- KC_ESC, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_ENT, LALT(KC_GRV), KC_LEFT,KC_DOWN,KC_RGHT \
+ [0] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_ESC, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_ENT, LALT(KC_GRV), KC_LEFT,KC_DOWN,KC_RGHT
),
- [1] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- RGB_TOG, RGBRST, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_PGUP, _______, \
- XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END \
+ [1] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ RGB_TOG, RGBRST, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_PGUP, _______,
+ XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END
)
};
diff --git a/keyboards/mint60/rules.mk b/keyboards/mint60/rules.mk
index cda78154a6..ab7b04be20 100644
--- a/keyboards/mint60/rules.mk
+++ b/keyboards/mint60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mio/rules.mk b/keyboards/mio/rules.mk
index 02ae236709..3ff392a61f 100644
--- a/keyboards/mio/rules.mk
+++ b/keyboards/mio/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/misonoworks/chocolatebar/rules.mk b/keyboards/misonoworks/chocolatebar/rules.mk
index c233b8461e..509b0dc71a 100644
--- a/keyboards/misonoworks/chocolatebar/rules.mk
+++ b/keyboards/misonoworks/chocolatebar/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/misonoworks/karina/rules.mk b/keyboards/misonoworks/karina/rules.mk
index ebde6cceac..271385424a 100644
--- a/keyboards/misonoworks/karina/rules.mk
+++ b/keyboards/misonoworks/karina/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/misterknife/knife66/rules.mk b/keyboards/misterknife/knife66/rules.mk
index f17458ffef..8a89ded585 100644
--- a/keyboards/misterknife/knife66/rules.mk
+++ b/keyboards/misterknife/knife66/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/misterknife/knife66_iso/rules.mk b/keyboards/misterknife/knife66_iso/rules.mk
index f17458ffef..8a89ded585 100644
--- a/keyboards/misterknife/knife66_iso/rules.mk
+++ b/keyboards/misterknife/knife66_iso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mitosis/rules.mk b/keyboards/mitosis/rules.mk
index c989d6d52e..6c7aa30d88 100644
--- a/keyboards/mitosis/rules.mk
+++ b/keyboards/mitosis/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/miuni32/keymaps/default/config.h b/keyboards/miuni32/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/miuni32/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/miuni32/rules.mk b/keyboards/miuni32/rules.mk
index a8a8ce7af8..71b0107189 100644
--- a/keyboards/miuni32/rules.mk
+++ b/keyboards/miuni32/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/mixi/rules.mk b/keyboards/mixi/rules.mk
index 8bb4aa970e..f0530f599c 100644
--- a/keyboards/mixi/rules.mk
+++ b/keyboards/mixi/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
diff --git a/keyboards/mlego/m48/config.h b/keyboards/mlego/m48/config.h
new file mode 100644
index 0000000000..6be2373d8f
--- /dev/null
+++ b/keyboards/mlego/m48/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBABA
+#define MANUFACTURER alin elena
+#define PRODUCT m48
+
+#define MATRIX_ROWS 4 // Rows are doubled-up
+#define MATRIX_COLS 12
+
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/mlego/m48/info.json b/keyboards/mlego/m48/info.json
new file mode 100644
index 0000000000..d22cfc54fd
--- /dev/null
+++ b/keyboards/mlego/m48/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "mlego/m48",
+ "url": "https://gitlab.com/m-lego/m48",
+ "maintainer": "alin elena",
+ "layouts": {
+ "LAYOUT_ortho_4x12": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/mlego/m48/keymaps/default/config.h b/keyboards/mlego/m48/keymaps/default/config.h
new file mode 100644
index 0000000000..b1aed18a18
--- /dev/null
+++ b/keyboards/mlego/m48/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
diff --git a/keyboards/mlego/m48/keymaps/default/keymap.c b/keyboards/mlego/m48/keymaps/default/keymap.c
new file mode 100644
index 0000000000..df9e1bb46e
--- /dev/null
+++ b/keyboards/mlego/m48/keymaps/default/keymap.c
@@ -0,0 +1,216 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QW] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_TRNS,KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LWR] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RSE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Adjust (Lower + Raise)
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJ] = LAYOUT_ortho_4x12(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m48/keymaps/via/config.h b/keyboards/mlego/m48/keymaps/via/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m48/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m48/keymaps/via/keymap.c b/keyboards/mlego/m48/keymaps/via/keymap.c
new file mode 100644
index 0000000000..af625ef207
--- /dev/null
+++ b/keyboards/mlego/m48/keymaps/via/keymap.c
@@ -0,0 +1,171 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT
+),
+
+[_LWR] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+[_RSE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+[_ADJ] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_G, RESET, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m48/keymaps/via/rules.mk b/keyboards/mlego/m48/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mlego/m48/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mlego/m48/m48.c b/keyboards/mlego/m48/m48.c
new file mode 100644
index 0000000000..79ba408cd9
--- /dev/null
+++ b/keyboards/mlego/m48/m48.c
@@ -0,0 +1,30 @@
+/* Copyright 2021-2022 alin elena <alin@elena.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "m48.h"
+
+/*
+void keyboard_pre_init_kb(void){
+
+ // Workaround for reversible pcb/mcu
+ palSetLineMode(C13, PAL_MODE_INPUT_PULLUP);
+ palSetLineMode(C15, PAL_MODE_INPUT_PULLUP);
+ palSetLineMode(B7, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A0, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A1, PAL_MODE_OUTPUT_OPENDRAIN);
+
+ keyboard_pre_init_user();
+ }
+*/
diff --git a/keyboards/mlego/m48/m48.h b/keyboards/mlego/m48/m48.h
new file mode 100644
index 0000000000..f9ef8aee39
--- /dev/null
+++ b/keyboards/mlego/m48/m48.h
@@ -0,0 +1,50 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_4x12( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311 } \
+}
+
+static inline void led_lwr(const bool on) {
+#ifdef LED_NUM_LOCK_PIN
+ writePin(LED_NUM_LOCK_PIN, on);
+#endif
+}
+
+static inline void led_rse(const bool on) {
+#ifdef LED_SCROLL_LOCK_PIN
+ writePin(LED_SCROLL_LOCK_PIN, on);
+#endif
+}
+static inline void led_caps(const bool on) {
+#ifdef LED_CAPS_LOCK_PIN
+ writePin(LED_CAPS_LOCK_PIN, !on);
+#endif
+}
+
diff --git a/keyboards/mlego/m48/readme.md b/keyboards/mlego/m48/readme.md
new file mode 100644
index 0000000000..c48cec9c8a
--- /dev/null
+++ b/keyboards/mlego/m48/readme.md
@@ -0,0 +1,50 @@
+# M48
+
+![M48](https://i.imgur.com/QLuCAlWh.jpg)
+
+A (12x4) ortholinear keyboard that can be hand wired or using a pcb.
+
+* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll))
+* Hardware Supported: custom pcb [see](https://gitlab.com/m-lego/m48) STM32F401 from we act (rev1)
+* Hardware Availability: [custom how to](https://gitlab.com/m-lego/m65)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mlego/m48/rev1:default
+
+Flashing example for this keyboard:
+
+ make mlego/m48/rev1:default
+
+To enter flashing mode, press Lower+Raise+1 or Lower+Raise+0 also on microcontroller keep pressed BOOT0 and then NRST, release NRST and then after 0.5s or so release BOOT0.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+
+## Pins for rev1 stm32f401
+
+the same for stm32f411
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Tab | q | w | e | r | t | y | u | i | o | p | BSpace| A6 |
+| R1 | Esc | a | s | d | f | g | h | j | k | l | ; | ' | A7 |
+| R2 | Shift | z | x | c | v | b | n | m | , | . | / | Enter | B0 |
+| R3 | Ctrl | Menu | Alt | Fn | Lower | Space | Space | Raise | Left | Down | Up | Right | B10 |
+| Pins | A10 | A15 | B3 | B4 | B5 | B7 | B6 | A1 | A2 | A3 | A4 | A5 | |
+
+### Encoders:
+
+ - Pad_A: A0
+ - Pad_B: B8
+
+### Leds
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
diff --git a/keyboards/mlego/m48/rev1/config.h b/keyboards/mlego/m48/rev1/config.h
new file mode 100644
index 0000000000..85da34f17a
--- /dev/null
+++ b/keyboards/mlego/m48/rev1/config.h
@@ -0,0 +1,58 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+
+#define MATRIX_ROW_PINS \
+ { A6, A7, B0, B10 }
+#define MATRIX_COL_PINS \
+ { A10, A15, B3, B4, B5, B7, B6, A1, A2, A3, A4, A5 }
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B8 }
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_IO_DELAY 5
+
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/mlego/m48/rev1/halconf.h b/keyboards/mlego/m48/rev1/halconf.h
new file mode 100644
index 0000000000..89815e23b7
--- /dev/null
+++ b/keyboards/mlego/m48/rev1/halconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m48/rev1/mcuconf.h b/keyboards/mlego/m48/rev1/mcuconf.h
new file mode 100644
index 0000000000..4d90ec07ea
--- /dev/null
+++ b/keyboards/mlego/m48/rev1/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/mlego/m48/rev1/rules.mk b/keyboards/mlego/m48/rev1/rules.mk
new file mode 100644
index 0000000000..066cfd4f8e
--- /dev/null
+++ b/keyboards/mlego/m48/rev1/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
+
+LAYOUTS = ortho_4x12
diff --git a/keyboards/mlego/m60/config.h b/keyboards/mlego/m60/config.h
new file mode 100644
index 0000000000..07698f7539
--- /dev/null
+++ b/keyboards/mlego/m60/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBABA
+#define MANUFACTURER alin elena
+#define PRODUCT m60
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 12
+
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/mlego/m60/info.json b/keyboards/mlego/m60/info.json
new file mode 100644
index 0000000000..12924b5ea6
--- /dev/null
+++ b/keyboards/mlego/m60/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "mlego/m60",
+ "url": "https://gitlab.com/m-lego/m60",
+ "maintainer": "alin elena",
+ "layouts": {
+ "LAYOUT_ortho_5x12": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/mlego/m60/keymaps/default/config.h b/keyboards/mlego/m60/keymaps/default/config.h
new file mode 100644
index 0000000000..b1aed18a18
--- /dev/null
+++ b/keyboards/mlego/m60/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
diff --git a/keyboards/mlego/m60/keymaps/default/keymap.c b/keyboards/mlego/m60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..18fdba688a
--- /dev/null
+++ b/keyboards/mlego/m60/keymaps/default/keymap.c
@@ -0,0 +1,175 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+[_LWR] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_RSE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_ADJ] = LAYOUT_ortho_5x12(
+ _______, RESET, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_G, RESET, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m60/keymaps/via/config.h b/keyboards/mlego/m60/keymaps/via/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m60/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m60/keymaps/via/keymap.c b/keyboards/mlego/m60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..18fdba688a
--- /dev/null
+++ b/keyboards/mlego/m60/keymaps/via/keymap.c
@@ -0,0 +1,175 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+[_LWR] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_RSE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_ADJ] = LAYOUT_ortho_5x12(
+ _______, RESET, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_G, RESET, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m60/keymaps/via/rules.mk b/keyboards/mlego/m60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mlego/m60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mlego/m60/m60.c b/keyboards/mlego/m60/m60.c
new file mode 100644
index 0000000000..cce37837c6
--- /dev/null
+++ b/keyboards/mlego/m60/m60.c
@@ -0,0 +1,30 @@
+/* Copyright 2021-2022 alin elena <alin@elena.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "m60.h"
+
+/*
+void keyboard_pre_init_kb(void){
+
+ // Workaround for reversible pcb/mcu
+ palSetLineMode(C13, PAL_MODE_INPUT_PULLUP);
+ palSetLineMode(C15, PAL_MODE_INPUT_PULLUP);
+ palSetLineMode(B7, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A0, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A1, PAL_MODE_OUTPUT_OPENDRAIN);
+
+ keyboard_pre_init_user();
+ }
+*/
diff --git a/keyboards/mlego/m60/m60.h b/keyboards/mlego/m60/m60.h
new file mode 100644
index 0000000000..732b8d2e41
--- /dev/null
+++ b/keyboards/mlego/m60/m60.h
@@ -0,0 +1,57 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_5x12( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411 \
+) { \
+ {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011}, \
+ {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111}, \
+ {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211}, \
+ {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311}, \
+ {K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411} \
+}
+
+static inline void led_lwr(const bool on) {
+#ifdef LED_NUM_LOCK_PIN
+ writePin(LED_NUM_LOCK_PIN, on);
+#endif
+}
+
+static inline void led_rse(const bool on) {
+#ifdef LED_SCROLL_LOCK_PIN
+ writePin(LED_SCROLL_LOCK_PIN, on);
+#endif
+}
+static inline void led_caps(const bool on) {
+#ifdef LED_CAPS_LOCK_PIN
+ if ((DEVICE_VER == 0x0001) || (DEVICE_VER == 0x0003)) {
+ writePin(LED_CAPS_LOCK_PIN, !on);
+ }
+ if (DEVICE_VER == 0x0002) {
+ writePin(LED_CAPS_LOCK_PIN, on);
+ }
+#endif
+}
+
diff --git a/keyboards/mlego/m60/readme.md b/keyboards/mlego/m60/readme.md
new file mode 100644
index 0000000000..f695c33cff
--- /dev/null
+++ b/keyboards/mlego/m60/readme.md
@@ -0,0 +1,49 @@
+# M60
+
+![M60](https://i.imgur.com/Zm7LaHih.jpg)
+
+A (12x5) ortholinear keyboard that can be hand wired or using a pcb.
+
+* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll))
+* Hardware Supported: custom pcb [see](https://gitlab.com/drFaustroll/m60) STM32F401 from we act (rev1)
+* Hardware Availability: [custom how to](https://gitlab.com/drFaustroll/m65)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mlego/m60/rev1:default
+
+Flashing example for this keyboard:
+
+ make mlego/m60/rev1:default
+
+To enter flashing mode, press Lower+Raise also on microcontroller keep pressed BOOT0 and then NRST, release NRST and then after 0.5s or so release BOOT0.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Layout and pins stm32f401
+
+similar for stm32f411
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BSpace| A6 |
+| R1 | Tab | q | w | e | r | t | y | u | i | o | p | Del | A7 |
+| R2 | # | a | s | d | f | g | h | j | k | l | ; | ' | B0 |
+| R3 | Shift | z | x | c | v | b | n | m | , | . | / | Enter | B1 |
+| R4 | Ctrl | Menu | Alt | Fn | Lower | Space | Space | Raise | Left | Down | Up | Right | B10 |
+| Pins | A10 | A15 | B3 | B4 | B5 | B7 | B6 | A1 | A2 | A3 | A4 | A5 | |
+
+### Encoders:
+
+ - Pad_A: A0
+ - Pad_B: B8
+
+### Leds
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_dI | B15 |
diff --git a/keyboards/mlego/m60/rev1/config.h b/keyboards/mlego/m60/rev1/config.h
new file mode 100644
index 0000000000..c05f30813a
--- /dev/null
+++ b/keyboards/mlego/m60/rev1/config.h
@@ -0,0 +1,58 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+
+#define MATRIX_ROW_PINS \
+ { A6, A7, B0, B1, B10 }
+#define MATRIX_COL_PINS \
+ { A10, A15, B3, B4, B5, B7, B6, A1, A2, A3, A4, A5 }
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B8 }
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_IO_DELAY 5
+
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/mlego/m60/rev1/halconf.h b/keyboards/mlego/m60/rev1/halconf.h
new file mode 100644
index 0000000000..89815e23b7
--- /dev/null
+++ b/keyboards/mlego/m60/rev1/halconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m60/rev1/mcuconf.h b/keyboards/mlego/m60/rev1/mcuconf.h
new file mode 100644
index 0000000000..4d90ec07ea
--- /dev/null
+++ b/keyboards/mlego/m60/rev1/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/mlego/m60/rev1/rules.mk b/keyboards/mlego/m60/rev1/rules.mk
new file mode 100644
index 0000000000..a3ccf0102d
--- /dev/null
+++ b/keyboards/mlego/m60/rev1/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
+
+LAYOUTS = ortho_5x12
diff --git a/keyboards/mlego/m60_split/config.h b/keyboards/mlego/m60_split/config.h
new file mode 100644
index 0000000000..6750d4d40b
--- /dev/null
+++ b/keyboards/mlego/m60_split/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBABA
+#define MANUFACTURER alin elena
+#define PRODUCT m60_split
+
+#define MATRIX_ROWS 10 // Rows are doubled-up
+#define MATRIX_COLS 6
+
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/mlego/m60_split/info.json b/keyboards/mlego/m60_split/info.json
new file mode 100644
index 0000000000..c6c5ee480d
--- /dev/null
+++ b/keyboards/mlego/m60_split/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "mlego/m60_split",
+ "url": "https://gitlab.com/m-lego/m65",
+ "maintainer": "alin elena",
+ "layouts": {
+ "LAYOUT_ortho_5x12": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/mlego/m60_split/keymaps/default/config.h b/keyboards/mlego/m60_split/keymaps/default/config.h
new file mode 100644
index 0000000000..b1aed18a18
--- /dev/null
+++ b/keyboards/mlego/m60_split/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
diff --git a/keyboards/mlego/m60_split/keymaps/default/keymap.c b/keyboards/mlego/m60_split/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e3912b0bd
--- /dev/null
+++ b/keyboards/mlego/m60_split/keymaps/default/keymap.c
@@ -0,0 +1,193 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = LAYOUT_ortho_5x12(
+
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC,
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_DEL ,
+ KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
+
+ ),
+
+[_LWR] = LAYOUT_ortho_5x12(
+
+ KC_TILD, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR , KC_ASTR , KC_LPRN, KC_RPRN, KC_DEL ,
+ KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_UNDS , KC_PLUS , KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , S(KC_NUHS), S(KC_NUBS), _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______ , KC_MNXT , KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______ , _______ , _______, _______, _______
+
+ ),
+
+[_RSE] = LAYOUT_ortho_5x12(
+
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DEL ,
+ KC_DEL , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+
+ ),
+
+[_ADJ] = LAYOUT_ortho_5x12(
+
+ _______, RESET , _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_G, RESET , _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI , _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD , _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, _______, _______
+
+ )
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+void matrix_slave_scan_user(void) {
+ matrix_scan_user();
+ if (IS_LAYER_ON(_LWR)) {
+ led_lwr(layer_state_is(_LWR));
+ }
+ if (IS_LAYER_ON(_RSE)) {
+ led_rse(layer_state_is(_RSE));
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0 || (index == 1)) { /* First encoder on each side*/
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m60_split/keymaps/via/config.h b/keyboards/mlego/m60_split/keymaps/via/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m60_split/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m60_split/keymaps/via/keymap.c b/keyboards/mlego/m60_split/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ccb0104748
--- /dev/null
+++ b/keyboards/mlego/m60_split/keymaps/via/keymap.c
@@ -0,0 +1,185 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#define LOWER TT(_LWR)
+#define RAISE TT(_RSE)
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_APP, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+[_LWR] = LAYOUT_ortho_5x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_RSE] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_ADJ] = LAYOUT_ortho_5x12(
+ _______, RESET, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_G, RESET, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+bool toggle_lwr = false;
+bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+void matrix_slave_scan_user(void) {
+ matrix_scan_user();
+ if (IS_LAYER_ON(_LWR)) {
+ led_lwr(layer_state_is(_LWR));
+ }
+ if (IS_LAYER_ON(_RSE)) {
+ led_rse(layer_state_is(_RSE));
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0 || (index == 1)) { /* First encoder on each side*/
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/mlego/m60_split/keymaps/via/rules.mk b/keyboards/mlego/m60_split/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mlego/m60_split/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mlego/m60_split/m60_split.c b/keyboards/mlego/m60_split/m60_split.c
new file mode 100644
index 0000000000..49fa10457a
--- /dev/null
+++ b/keyboards/mlego/m60_split/m60_split.c
@@ -0,0 +1,17 @@
+/* Copyright 2021-2022 alin elena <alin@elena.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "m60_split.h"
+
diff --git a/keyboards/mlego/m60_split/m60_split.h b/keyboards/mlego/m60_split/m60_split.h
new file mode 100644
index 0000000000..11cbd5be60
--- /dev/null
+++ b/keyboards/mlego/m60_split/m60_split.h
@@ -0,0 +1,57 @@
+/* Copyright 2021-2022 alin elena <alin@elena.space>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_5x12( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { R35, R34, R33, R32, R31, R30 }, \
+ { R45, R44, R43, R42, R41, R40 } \
+}
+
+
+static inline void led_lwr(const bool on) {
+#ifdef LED_NUM_LOCK_PIN
+ writePin(LED_NUM_LOCK_PIN, on);
+#endif
+}
+
+static inline void led_rse(const bool on) {
+#ifdef LED_SCROLL_LOCK_PIN
+ writePin(LED_SCROLL_LOCK_PIN, on);
+#endif
+}
+
+static inline void led_caps(const bool on) {
+#ifdef LED_CAPS_LOCK_PIN
+ writePin(LED_CAPS_LOCK_PIN, !on);
+#endif
+}
+
diff --git a/keyboards/mlego/m60_split/readme.md b/keyboards/mlego/m60_split/readme.md
new file mode 100644
index 0000000000..cb0214876f
--- /dev/null
+++ b/keyboards/mlego/m60_split/readme.md
@@ -0,0 +1,67 @@
+# M60 split
+
+![M60](https://i.imgur.com/3QfVLFRh.jpg)
+
+A (12x5) ortholinear split keyboard that can be hand wired or using a pcb.
+
+* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll))
+* Hardware Supported: custom pcb [see](https://gitlab.com/m-lego/m60_split) STM32F401 from we act (rev1)
+* Hardware Availability: [custom how to](https://gitlab.com/m-lego/m60_split)
+
+
+Make example for this keyboard (after setting up your uild environment):
+
+ make mlego/m60_split/rev1:default
+
+Flashing example for this keyboard:
+
+ make mlego/m60_split/rev1:default
+
+To enter flashing mode, press Lower+Raise+1 or Lower+Raise+0 also on microcontroller keep pressed BOOT0 and then NRST, release NRST and then after 0.5s or so release BOOT0.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## pins and leds rev1 and rev2
+
+### left
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | ` | 1 | 2 | 3 | 4 | 5 | B0 |
+| R1 | Tab | q | w | e | r | t | A6 |
+| R2 | Esc | a | s | d | f | g | A7 |
+| R3 | Shift | z | x | c | v | b | B1 |
+| R4 | Ctrl | Menu | Alt | Fn | Lower | Space | A5 |
+| Pins | B14 | A10 | A15 | B3 | B4 | B5 | |
+
+### right
+
+| Rows | C6 | C7 | C8 | C9 | C10 | C11 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | 6 | 7 | 8 | 9 | 0 | BSpace| B1 |
+| R1 | y | u | i | o | p | Del | A4 |
+| R2 | h | j | k | l | ; | ' | A5 |
+| R3 | n | m | , | . | / | Enter | A6 |
+| R4 | Space | Raise | Left | Down | Up | Right | A7 |
+| Pins | B5 | A7 | A1 | A2 | A3 | B0 | |
+
+### Encoders:
+
+ - Pad_A: A0
+ - Pad_B: B8
+
+### Leds
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
+### split pins
+
+| | Pin |
+| ------------------- | ---- |
+| SPLIT_HAND_PIN | B9 |
+| SERIAL_USART_TX_PIN | B6 |
diff --git a/keyboards/mlego/m60_split/rev1/config.h b/keyboards/mlego/m60_split/rev1/config.h
new file mode 100644
index 0000000000..6b7923ac12
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev1/config.h
@@ -0,0 +1,86 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+
+#define MATRIX_ROW_PINS \
+ { B0, A6, A7, B1, A5 }
+#define MATRIX_COL_PINS \
+ { B14, A10, A15, B3, B4, B5 }
+
+#define MATRIX_ROW_PINS_RIGHT \
+ { B1, A4, A5, A6, A7 }
+
+#define MATRIX_COL_PINS_RIGHT \
+ { B0, A3, A2, A1, B7, B5 } // cols are from right to left to match the layout
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B8 }
+#define ENCODER_RESOLUTIONS \
+ { 4 }
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+
+#define RGB_DI_PIN B15
+
+#define SPLIT_HAND_PIN B9
+#define SERIAL_USART_TX_PIN B6
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_LAYERS
+
+#define UNUSED_PINS
+#define SERIAL_USART_SPEED 921600
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_IO_DELAY 5
+
+#define RGBLIGHT_LIMIT_VAL 128
+#define RGBLIGHT_DEFAULT_HUE 213
+
+#define RGBLED_NUM 16
+#define RGBLED_SPLIT \
+ { 8, 8 }
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
diff --git a/keyboards/mlego/m60_split/rev1/halconf.h b/keyboards/mlego/m60_split/rev1/halconf.h
new file mode 100644
index 0000000000..89815e23b7
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev1/halconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m60_split/rev1/mcuconf.h b/keyboards/mlego/m60_split/rev1/mcuconf.h
new file mode 100644
index 0000000000..4d90ec07ea
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev1/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/mlego/m60_split/rev1/rules.mk b/keyboards/mlego/m60_split/rev1/rules.mk
new file mode 100644
index 0000000000..9e2c8d6570
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev1/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+SERIAL_DRIVER = usart
+ENCODER_ENABLE = yes # Enable encoder
+
+LAYOUTS = ortho_5x12
+
diff --git a/keyboards/mlego/m60_split/rev2/config.h b/keyboards/mlego/m60_split/rev2/config.h
new file mode 100644
index 0000000000..1e45e86d06
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev2/config.h
@@ -0,0 +1,82 @@
+/* Copyright 2021-2022 alin m elena <alinm.elena@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+
+#define MATRIX_ROW_PINS \
+ { B0, A6, A7, B1, A5 }
+#define MATRIX_COL_PINS \
+ { B14, A10, A15, B3, B4, B5 }
+
+#define MATRIX_ROW_PINS_RIGHT \
+ { B1, A4, A5, A6, A7 }
+
+#define MATRIX_COL_PINS_RIGHT \
+ { B0, A3, A2, A1, B7, B5 } // cols are from right to left to match the layout
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B8 }
+#define ENCODER_RESOLUTIONS \
+ { 4 }
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+
+#define RGB_DI_PIN B15
+
+#define SPLIT_HAND_PIN B9
+#define SERIAL_USART_TX_PIN B6
+#define RGBLIGHT_SPLIT
+
+#define UNUSED_PINS
+#define SERIAL_USART_SPEED 921600
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_IO_DELAY 5
+
+#define RGBLIGHT_LAYERS
+
+#define RGBLED_NUM 16
+#define RGBLED_SPLIT \
+ { 8, 8 }
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
diff --git a/keyboards/mlego/m60_split/rev2/halconf.h b/keyboards/mlego/m60_split/rev2/halconf.h
new file mode 100644
index 0000000000..89815e23b7
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev2/halconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m60_split/rev2/mcuconf.h b/keyboards/mlego/m60_split/rev2/mcuconf.h
new file mode 100644
index 0000000000..4d90ec07ea
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev2/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/mlego/m60_split/rev2/rules.mk b/keyboards/mlego/m60_split/rev2/rules.mk
new file mode 100644
index 0000000000..cb8f4bd951
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev2/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+SERIAL_DRIVER = usart
+ENCODER_ENABLE = yes # Enable encoder
+
+LAYOUTS = ortho_5x12
diff --git a/keyboards/mlego/m65/config.h b/keyboards/mlego/m65/config.h
new file mode 100644
index 0000000000..25d69d8b7a
--- /dev/null
+++ b/keyboards/mlego/m65/config.h
@@ -0,0 +1,33 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0xBABA
+#define MANUFACTURER Alin Elena
+#define PRODUCT m65
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 13
+
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/mlego/m65/info.json b/keyboards/mlego/m65/info.json
new file mode 100644
index 0000000000..175c6638c5
--- /dev/null
+++ b/keyboards/mlego/m65/info.json
@@ -0,0 +1,80 @@
+{
+ "keyboard_name": "M65",
+ "url": "https://gitlab.com/m-lego/m65",
+ "maintainer": "alin elena",
+ "layouts": {
+ "LAYOUT_ortho_5x13": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+ {"x": 5, "y": 1},
+ {"x": 6, "y": 1},
+ {"x": 7, "y": 1},
+ {"x": 8, "y": 1},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1},
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+ {"x": 7, "y": 2},
+ {"x": 8, "y": 2},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1, "y": 3},
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+ {"x": 5, "y": 3},
+ {"x": 6, "y": 3},
+ {"x": 7, "y": 3},
+ {"x": 8, "y": 3},
+ {"x": 9, "y": 3},
+ {"x": 10, "y": 3},
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+ {"x": 6, "y": 4},
+ {"x": 7, "y": 4},
+ {"x": 8, "y": 4},
+ {"x": 9, "y": 4},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mlego/m65/keymaps/default/config.h b/keyboards/mlego/m65/keymaps/default/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/default/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m65/keymaps/default/keymap.c b/keyboards/mlego/m65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..96a1ced900
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/default/keymap.c
@@ -0,0 +1,169 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QW] = LAYOUT_ortho_5x13(
+ KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC ,
+ KC_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC ,
+ KC_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
+ KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH ,
+ KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_LWR] = LAYOUT_ortho_5x13(
+ KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL ,
+ KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ ,
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
+
+ [_RSE] = LAYOUT_ortho_5x13(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R),
+
+ [_ADJ] = LAYOUT_ortho_5x13(
+ RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW,
+ RGB_HUI, RGB_HUD , RGB_M_P , _______, RESET , _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN,
+ RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K ,
+ RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X ,
+ RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G),
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+static bool toggle_lwr = false;
+static bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/m65/keymaps/default/readme.md b/keyboards/mlego/m65/keymaps/default/readme.md
index ae71342232..ae71342232 100644
--- a/keyboards/m65/keymaps/default/readme.md
+++ b/keyboards/mlego/m65/keymaps/default/readme.md
diff --git a/keyboards/mlego/m65/keymaps/dk/config.h b/keyboards/mlego/m65/keymaps/dk/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/dk/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m65/keymaps/dk/keymap.c b/keyboards/mlego/m65/keymaps/dk/keymap.c
new file mode 100644
index 0000000000..5461a354ba
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/dk/keymap.c
@@ -0,0 +1,170 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_danish.h"
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QW] = LAYOUT_ortho_5x13(
+ KC_ESC, DK_1 , DK_2 , DK_3 , DK_4 , DK_5 , DK_6 , DK_7 , DK_8 , DK_9 , DK_0 , DK_PLUS, KC_BSPC ,
+ KC_TAB, DK_Q , DK_W , DK_E , DK_R , DK_T , DK_Y , DK_U , DK_I , DK_O , DK_P , DK_ARNG, DK_DIAE ,
+ DK_QUOT, DK_A , DK_S , DK_D , DK_F , DK_G , DK_H , DK_J , DK_K , DK_L , DK_AE , DK_OSTR, KC_ENT ,
+ KC_LSPO, DK_LABK, DK_Z , DK_X , DK_C , DK_V , DK_B , DK_N , DK_M , DK_COMM, DK_DOT , KC_UP , DK_MINS ,
+ KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_LWR] = LAYOUT_ortho_5x13(
+ DK_HALF, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , DK_ACUT ,
+ KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ ,
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
+
+ [_RSE] = LAYOUT_ortho_5x13(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R),
+
+ [_ADJ] = LAYOUT_ortho_5x13(
+ RGB_MOD,RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T, RGB_M_SW ,
+ RGB_HUI, RGB_HUD, RGB_M_P , _______, RESET , _______, _______, _______, _______, _______, _______, _______, RGB_M_SN ,
+ RGB_SAI, RGB_SAD, RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_K ,
+ RGB_VAI, RGB_VAD, RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_X ,
+ RGB_TOG, _______, _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G),
+
+};
+// clang-format on
+
+// let us assume we start with both layers off
+static bool toggle_lwr = false;
+static bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
diff --git a/keyboards/m65/keymaps/dk/readme.md b/keyboards/mlego/m65/keymaps/dk/readme.md
index 06fed3bda6..06fed3bda6 100644
--- a/keyboards/m65/keymaps/dk/readme.md
+++ b/keyboards/mlego/m65/keymaps/dk/readme.md
diff --git a/keyboards/mlego/m65/keymaps/uk/config.h b/keyboards/mlego/m65/keymaps/uk/config.h
new file mode 100644
index 0000000000..7b5ced9ccb
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/uk/config.h
@@ -0,0 +1,29 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+
+#define UNICODE_SELECTED_MODES UC_LNX
+//#define UNICODE_SELECTED_MODES UC_LNX, UC_MAC, UC_WINC
+
+#ifdef WPM_ENABLE
+#define WPM_SAMPLE_SECONDS 10
+#define WPM_SAMPLE_PERIODS 100
+#define WPM_ALLOW_COUNT_REGRESSION
+#endif
diff --git a/keyboards/mlego/m65/keymaps/uk/keymap.c b/keyboards/mlego/m65/keymaps/uk/keymap.c
new file mode 100644
index 0000000000..b140ca08c6
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/uk/keymap.c
@@ -0,0 +1,462 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "keymap_uk.h"
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef CONSOLE_ENABLE
+
+#include "print.h"
+
+#endif
+
+#ifdef OLED_ENABLE
+static uint32_t oled_logo_timer = 0;
+static bool clear_logo = true;
+static const char PROGMEM m65_logo[] = {
+ 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+const uint32_t PROGMEM unicode_map[] = {
+ [la] = 0x03B1 , // α
+ [lA] = 0x0391 , // Α
+ [lb] = 0x03B2 , // β
+ [lB] = 0x0392 , // Β
+ [lc] = 0x03C7 , // χ
+ [lC] = 0x0307 , //
+ [ld] = 0x03B4 , // δ
+ [lD] = 0x2202 , // ∂
+ [le] = 0x03B5 , // ε
+ [lE] = 0x2107 , // ℇ
+ [lf] = 0x03C6 , // φ
+ [lF] = 0x03C8 , // ψ
+ [lg] = 0x03B3 , // γ
+ [lG] = 0x0393 , // Γ
+ [lh] = 0x210F , // ℏ
+ [lH] = 0x1D4D7, // 𝓗
+ [li] = 0x222B , // ∫
+ [lI] = 0x222E , // ∮
+ [lj] = 0x2208 , // ∈
+ [lJ] = 0x2209 , // ∉
+ [lk] = 0x03F0 , // ϰ
+ [lK] = 0x2206 , // ∆
+ [ll] = 0x03BB , // λ
+ [lL] = 0x039B , // Λ
+ [lm] = 0x03BC , // μ
+ [lM] = 0x2218 , // ∘
+ [ln] = 0x03B7 , // η
+ [lN] = 0x222A , // ∪
+ [lo] = 0x221E , // ∞
+ [lO] = 0x2297 , // ⊗
+ [lp] = 0x03C0 , // π
+ [lP] = 0x220F , // ∏
+ [lq] = 0x03C3 , // σ
+ [lQ] = 0x03D5 , // ϕ
+ [lr] = 0x03C1 , // ρ
+ [lR] = 0x2207 , // ∇
+ [ls] = 0x2211 , // ∑
+ [lS] = 0x2A0B , // ⨋
+ [lt] = 0x03D1 , // ϑ
+ [lT] = 0x03B8 , // θ
+ [lu] = 0x03C4 , // τ
+ [lU] = 0x2102 , // ℂ
+ [lv] = 0x03BD , // χ
+ [lV] = 0x039D , // Ν
+ [lw] = 0x03C9 , // ω
+ [lW] = 0x03A9 , // Ω
+ [lx] = 0x03BE , // ξ
+ [lX] = 0x039E , // Ξ
+ [ly] = 0x211d , // ℝ
+ [lY] = 0x2124 , // ℤ
+ [lz] = 0x03B6 , // ζ
+ [lZ] = 0x2221 , // ∡
+ [lc1] = 0x224A , // ≊
+ [lC1] = 0x2248 , // ≈
+ [lp1] = 0x00B1 , // ±
+ [lP1] = 0x2213 , // ∓
+ [lq1] = 0x00D7 , // ×
+ [lQ1] = 0x22C5 , // ⋅
+ [ll1] = 0x1D53C, // 𝔼
+ [lL1] = 0x212b , // Å
+ [lk1] = 0x221D , // ∝
+ [lK1] = 0x2112 , // ℒ
+ [ra] = 0x0103 , // ă
+ [rA] = 0x0102 , // Ă
+ [ra1] = 0x00E2 , // â
+ [rA1] = 0x00C2 , // Â
+ [rc] = 0x00E7 , // ç
+ [rC] = 0x00C7 , // Ç
+ [ri] = 0x00EE , // î
+ [rI] = 0x00CE , // Î
+ [rs] = 0x0219 , // ș
+ [rS] = 0x0218 , // Ș
+ [rt] = 0x021B , // ț
+ [rT] = 0x021A , // Ț
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ⎋ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ⌫ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ↹ │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ # │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ ⏎ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⇧(│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ , │ ↑ │ / │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⎈ │mnu│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ ← │ ↓ │ → │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ← │ ! │ " │ £ │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ~ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ @ │ ⏎ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⇧(│ | │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ │ / │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ ⇧)│ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+altgr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ← │ ¹ │ ² │ ³ │ € │ ½ │ ¾ │ { │ [ │ ] │ } │ \ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ @ │ ſ │ e │ ¶ │ ŧ │ ← │ ↓ │ → │ ø │ þ │ ä │ ã │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ~ │ æ │ ß │ ð │ đ │ ŋ │ ħ │ ả │ ĸ │ ł │ á │ â │ent│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ± │ | │ « │ » │ ¢ │ „ │ “ │ ” │ µ │ ─ │ · │ │ ạ̣̣ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ ° │ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+altgr shift symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ ¡ │ ⅛ │ £ │ ¼ │ ⅜ │ ⅝ │ ⅞ │ ™ │ ± │ ° │ ¿ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ Ω │ § │ E │ ® │ Ŧ │ ¥ │ ↑ │ ı │ Ø │ Þ │ å │ ā │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ Æ │ ẞ │ Ð │ ª │ Ŋ │ Ħ │ a │ & │ Ł │ ˝a│ ǎ │ent│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ± │ ¦ │ ‹ │ › │ © │ ‚ │ ‘ │ ’ │ º │ × │ ÷ │ │ ȧ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ ° │ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ *
+*/
+ [_QW] = LAYOUT_ortho_5x13(
+ KC_ESC, UK_1 , UK_2 , UK_3 , UK_4 , UK_5 , UK_6 , UK_7 , UK_8 , UK_9 , UK_0 , UK_MINS, KC_BSPC ,
+ KC_TAB, UK_Q , UK_W , UK_E , UK_R , UK_T , UK_Y , UK_U , UK_I , UK_O , UK_P , UK_LBRC, UK_RBRC ,
+ UK_HASH, UK_A , UK_S , UK_D , UK_F , UK_G , UK_H , UK_J , UK_K , UK_L , UK_SCLN, UK_QUOT, KC_ENT ,
+ KC_LSPO, UK_BSLS, UK_Z , UK_X , UK_C , UK_V , UK_B , UK_N , UK_M , UK_COMM, UK_DOT , KC_UP , UK_SLSH ,
+ KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
+
+/*
+lower layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ` │MUT│Vup│Vdn│prv│ply│nxt│EXT│SLP│WAK│PSC│ ⌫ │ = │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ σ │ ω │ ε │ ρ │ ϑ │ ℝ │ τ │ ∫ │ ∞ │ π │ [ │ ] │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ α │ ∑ │ δ │ φ │ γ │ ℏ │ ∈ │ ϰ │ λ │ 𝔼 │ ∝ │ ⏎ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⇧(│ │ ζ │ ξ │ χ │ ν │ β │ η │ μ │ ≊ │ ± │ │ × │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⎈ │ │lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+lower layer shifted
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ¬ │ │ │ │ │ │ │ │ │ │ │ ⌫ │ = │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │MB3│ ϕ │ Ω │ ℇ │ ∇ │ θ │ ℤ │ ℂ │ ∮ │ ⊗ │ ∏ │ { │ } │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │MB2│ Α │ ⨋ │ ∂ │ ψ │ Γ │ 𝓗 │ ∉ │ ∆ │ Λ │ Å │ ℒ │ ⏎ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⇧(│MB1│ ∡ │ Ξ │ ̇ │ Ν │ Β │ ∪ │ ∘ │ ≈ │ ∓ │MSU│ ⋅ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⎈ │MB4│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│MSL│MSD│MSR│
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+MB - mouse buttons
+MS - mouse directions
+*/
+ [_LWR] = LAYOUT_ortho_5x13(
+ KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL, UK_EQL,
+ KC_BTN3,XP(lq,lQ),XP(lw,lW),XP(le,lE),XP(lr,lR),XP(lt,lT),XP(ly,lY),XP(lu,lU),XP(li,lI), XP(lo,lO), XP(lp,lP), _______, _______,
+ KC_BTN2,XP(la,lA),XP(ls,lS),XP(ld,lD),XP(lf,lF),XP(lg,lG),XP(lh,lH),XP(lj,lJ),XP(lk,lK), XP(ll,lL),XP(ll1,lL1), XP(lk1,lK1), _______,
+ _______, KC_BTN1,XP(lz,lZ),XP(lx,lX),XP(lc,lC),XP(lv,lV),XP(lb,lB),XP(ln,lN),XP(lm,lM),XP(lc1,lC1),XP(lp1,lP1), KC_MS_U, XP(lq1,lQ1),
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
+
+/*
+raise layer
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ⎋ │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ â │ │ │ │ ț │ │ │ î │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ⇪ │ ă │ ș │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ ç │ │ │ │ │ │ │MWU│ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │MWL│MWD│MWR│
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+MW - mouse wheel
+raise layer shifted
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ Â │ │ │ │ Ț │ │ │ Î │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ Ă │ Ș │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ Ç │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+*/
+ [_RSE] = LAYOUT_ortho_5x13(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ _______,XP(ra1,rA1), _______, _______, _______,XP(rt,rT), _______, _______,XP(ri,rI), _______, _______, _______, _______ ,
+ KC_CAPS, XP(ra,rA), XP(rs,rS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______,XP(rc,rC), _______, _______, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R),
+/*
+adj layer
+ * ┌───┬────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┐
+ * │MOD│RMOD│ │ │ │ │ │ │ │ │ │M_T │M_SW│
+ * ├───┼────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┤
+ * │HUI│HUD │M_P│ │rst│ │ │ │ │ │ │ │M_SN│
+ * ├───┼────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┤
+ * │SAI│SAD │M_B│ │ │ │ │ │ │ │ │ │M_K │
+ * ├───┼────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┤
+ * │VAI│VAD │M_R│ │ │ │ │ │ │ │ │ │M_X │
+ * ├───┼────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┤
+ * │TOG│ │ │ │ │ │ │ │ │ │ │M_TW│M_G │
+ * └───┴────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────┴────┘
+*/
+ [_ADJ] = LAYOUT_ortho_5x13(
+ RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW,
+ RGB_HUI, RGB_HUD , RGB_M_P , _______, RESET , _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN,
+ RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K ,
+ RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X ,
+ RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G),
+};
+// clang-format on
+
+// let us assume we start with both layers off
+static bool toggle_lwr = false;
+static bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+#ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
+#endif
+
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+#ifdef OLED_ENABLE
+ oled_logo_timer = timer_read32();
+#endif
+
+#ifdef CONSOLE_ENABLE
+
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+#endif
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+static void render_logo(void) {
+ oled_write_P(m65_logo, false);
+}
+
+void user_oled_magic(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QW:
+ oled_write_P(PSTR("Default\n"), false);
+ break;
+ case _LWR:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case _RSE:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ case _ADJ:
+ oled_write_P(PSTR("ADJ\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("Lower ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("Raise ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CapsLock ") : PSTR(" "), false);
+#ifdef WPM_ENABLE
+ oled_write_P(PSTR("\nwpm: "), false);
+ uint8_t wpm = get_current_wpm();
+ oled_write_P(wpm != 0 ? get_u8_str(wpm,' ') : PSTR(" "), false);
+#endif
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+void clear_screen(void) {
+ if (clear_logo){
+ for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) {
+ for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) {
+ oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j);
+ }
+ }
+ clear_logo = false;
+ }
+}
+
+# define SHOW_LOGO 5000
+bool oled_task_user(void) {
+ if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){
+ render_logo();
+ }else{
+ clear_screen();
+ user_oled_magic();
+ }
+ return false;
+}
+
+#endif
diff --git a/keyboards/m65/keymaps/uk/readme.md b/keyboards/mlego/m65/keymaps/uk/readme.md
index bc29d23905..bc29d23905 100644
--- a/keyboards/m65/keymaps/uk/readme.md
+++ b/keyboards/mlego/m65/keymaps/uk/readme.md
diff --git a/keyboards/mlego/m65/keymaps/uk/rules.mk b/keyboards/mlego/m65/keymaps/uk/rules.mk
new file mode 100644
index 0000000000..502b2def76
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/uk/rules.mk
@@ -0,0 +1 @@
+UNICODEMAP_ENABLE = yes
diff --git a/keyboards/mlego/m65/keymaps/via/config.h b/keyboards/mlego/m65/keymaps/via/config.h
new file mode 100644
index 0000000000..637c0a8faf
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/mlego/m65/keymaps/via/keymap.c b/keyboards/mlego/m65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1422eed34e
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/via/keymap.c
@@ -0,0 +1,225 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QW = 0,
+ _LWR,
+ _RSE,
+ _ADJ
+};
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE});
+const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN});
+const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED});
+const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN});
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer);
+#endif
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QW] = LAYOUT_ortho_5x13(
+ KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC ,
+ KC_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC ,
+ KC_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
+ KC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH ,
+ KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_LWR] = LAYOUT_ortho_5x13(
+ KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL ,
+ KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ ,
+ _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
+
+ [_RSE] = LAYOUT_ortho_5x13(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R),
+
+ [_ADJ] = LAYOUT_ortho_5x13(
+ RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW,
+ RGB_HUI, RGB_HUD , RGB_M_P , _______, RESET , _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN,
+ RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K ,
+ RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X ,
+ RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G),
+};
+// clang-format on
+
+// let us assume we start with both layers off
+static bool toggle_lwr = false;
+static bool toggle_rse = false;
+
+bool led_update_user(led_t led_state) {
+ // Disable the default LED update code, so that lock LEDs could be reused to show layer status.
+ return false;
+}
+
+void matrix_scan_user(void) {
+ led_lwr(toggle_lwr);
+ led_rse(toggle_rse);
+ led_t led_state = host_keyboard_led_state();
+ led_caps(led_state.caps_lock);
+ if (layer_state_is(_ADJ)) {
+ led_lwr(true);
+ led_rse(true);
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case (TT(_LWR)):
+ if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle.
+ toggle_lwr = !layer_state_is(_LWR);
+ }
+ return true;
+ break;
+ case (TT(_RSE)):
+ if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) {
+ toggle_rse = !layer_state_is(_RSE);
+ }
+ return true;
+ break;
+ default:
+ return true;
+ }
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ));
+
+#endif
+ return update_tri_layer_state(state, _LWR, _RSE, _ADJ);
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
+ return state;
+}
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+
+# define MEDIA_KEY_DELAY 10
+
+static inline void my_encoders(const uint8_t index, const bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (IS_LAYER_ON(_LWR)) {
+ if (clockwise) {
+ rgblight_decrease_val_noeeprom();
+ } else {
+ rgblight_increase_val_noeeprom();
+ }
+ } else if (IS_LAYER_ON(_RSE)) {
+ if (clockwise) {
+ rgblight_decrease_hue_noeeprom();
+ } else {
+ rgblight_increase_hue_noeeprom();
+ }
+
+ } else {
+ if (clockwise) {
+ tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY);
+ } else {
+ tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY);
+ }
+ }
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ my_encoders(index, clockwise);
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+static void render_logo(void) {
+ static const char PROGMEM m65_logo[] = {
+// 'slon', 128x32px
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0xa0, 0xa0,
+0xa0, 0xd0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0c, 0xc3, 0x3c, 0x0f, 0x05, 0x14, 0x14,
+0x04, 0xfc, 0x9f, 0x88, 0x80, 0x81, 0xe7, 0xfc, 0x03, 0x03, 0x07, 0x05, 0x06, 0x06, 0x08, 0x0c,
+0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x04, 0x10, 0x18, 0x30, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xde, 0xc1, 0xf0, 0x89, 0x0b, 0x18, 0x08, 0x04, 0x04,
+0x01, 0x1a, 0x0f, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x20, 0x20, 0x60, 0x40, 0x40, 0x42, 0x40, 0x40,
+0x40, 0x40, 0x40, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x13, 0x7c, 0xe0, 0xc0, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x05,
+0x05, 0x05, 0x07, 0x05, 0x07, 0x07, 0x07, 0x07, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01,
+0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x07,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x04, 0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00
+ };
+
+ oled_write_raw_P(m65_logo, sizeof(m65_logo));
+
+}
+
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return rotation;
+}
+
+bool oled_task_user(void) {
+ //user_oled_magic();
+ render_logo();
+ return false;
+}
+
+#endif
diff --git a/keyboards/mlego/m65/keymaps/via/rules.mk b/keyboards/mlego/m65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mlego/m65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mlego/m65/lib/glcdfont.c b/keyboards/mlego/m65/lib/glcdfont.c
new file mode 100644
index 0000000000..4b354756b6
--- /dev/null
+++ b/keyboards/mlego/m65/lib/glcdfont.c
@@ -0,0 +1,231 @@
+// Copyright 2022 @filterpaper
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "progmem.h"
+
+static const unsigned char PROGMEM font[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x18, 0x02,
+ 0x00, 0x3C, 0x1E, 0x06, 0x0E, 0x0A,
+ 0x1A, 0x0E, 0x26, 0xFF, 0xBF, 0x0D,
+ 0x00, 0x80, 0x80, 0x81, 0xFF, 0xFE,
+ 0xF8, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x03, 0x05, 0x05, 0x02, 0x02, 0x0A,
+ 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
+ 0x0C, 0x04, 0x10, 0x18, 0x20, 0xC0,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xD0, 0x58, 0x78,
+ 0x68, 0x2C, 0x24, 0x34, 0xF4, 0xF4,
+ 0x3C, 0x3C, 0xFC, 0xF8, 0xF8, 0x70,
+ 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0x7C, 0x07, 0x80, 0xE0,
+ 0x60, 0x64, 0xE2, 0x60, 0x10, 0x10,
+ 0x20, 0x22, 0x12, 0x17, 0x3F, 0x0B,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
+ 0x6F, 0xFC, 0xE0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x60, 0x60, 0x70, 0x70, 0xF0, 0xF0,
+ 0xD0, 0xD0, 0xD0, 0xD0, 0x50, 0x50,
+ 0x50, 0x70, 0x78, 0x78, 0x78, 0x7C,
+ 0x7F, 0x7D, 0x7C, 0x5E, 0x4F, 0x44,
+ 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x58, 0x46, 0x47, 0x41,
+ 0x41, 0x01, 0x01, 0x03, 0x03, 0x42,
+ 0x42, 0x42, 0x46, 0x46, 0x46, 0x46,
+ 0x42, 0x43, 0x43, 0x73, 0x77, 0x72,
+ 0x70, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x61, 0x67, 0x6F, 0x7E, 0x78,
+ 0x78, 0x70, 0x70, 0x70, 0x70, 0x70,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x48, 0x58, 0x58,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/mlego/m65/m65.c b/keyboards/mlego/m65/m65.c
new file mode 100644
index 0000000000..153359f337
--- /dev/null
+++ b/keyboards/mlego/m65/m65.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m65.h"
diff --git a/keyboards/mlego/m65/m65.h b/keyboards/mlego/m65/m65.h
new file mode 100644
index 0000000000..f5ffd519fa
--- /dev/null
+++ b/keyboards/mlego/m65/m65.h
@@ -0,0 +1,133 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_ortho_5x13( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412 } \
+}
+
+enum unicode_names {
+ la = 0,
+ lA,
+ lb,
+ lB,
+ lc,
+ lC,
+ ld,
+ lD,
+ le,
+ lE,
+ lf,
+ lF,
+ lg,
+ lG,
+ lh,
+ lH,
+ li,
+ lI,
+ lj,
+ lJ,
+ lk,
+ lK,
+ ll,
+ lL,
+ lm,
+ lM,
+ ln,
+ lN,
+ lo,
+ lO,
+ lp,
+ lP,
+ lq,
+ lQ,
+ lr,
+ lR,
+ ls,
+ lS,
+ lt,
+ lT,
+ lu,
+ lU,
+ lv,
+ lV,
+ lw,
+ lW,
+ lx,
+ lX,
+ ly,
+ lY,
+ lz,
+ lZ,
+ lc1,
+ lC1,
+ lp1,
+ lP1,
+ lq1,
+ lQ1,
+ ll1,
+ lL1,
+ lk1,
+ lK1,
+ ra,
+ rA,
+ ra1,
+ rA1,
+ rc,
+ rC,
+ ri,
+ rI,
+ rs,
+ rS,
+ rt,
+ rT,
+};
+
+static inline void led_lwr(const bool on) {
+#ifdef LED_NUM_LOCK_PIN
+ writePin(LED_NUM_LOCK_PIN, on);
+#endif
+}
+
+static inline void led_rse(const bool on) {
+#ifdef LED_SCROLL_LOCK_PIN
+ writePin(LED_SCROLL_LOCK_PIN, on);
+#endif
+}
+static inline void led_caps(const bool on) {
+#ifdef LED_CAPS_LOCK_PIN
+ if ((DEVICE_VER == 0x0001) || (DEVICE_VER == 0x0003) || (DEVICE_VER == 0x0004)) {
+ writePin(LED_CAPS_LOCK_PIN, !on);
+ }
+ if (DEVICE_VER == 0x0002) {
+ writePin(LED_CAPS_LOCK_PIN, on);
+ }
+#endif
+}
diff --git a/keyboards/mlego/m65/readme.md b/keyboards/mlego/m65/readme.md
new file mode 100644
index 0000000000..8076697a2b
--- /dev/null
+++ b/keyboards/mlego/m65/readme.md
@@ -0,0 +1,172 @@
+# M65
+
+![M65](https://i.imgur.com/gXuecush.jpg)
+
+A (13x5) ortholinear keyboard that can be hand wired or using a pcb.
+
+* Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll))
+* Hardware Supported: custom pcb [see](https://gitlab.com/m-lego/m65) STM/APM32F103C8T6, aka Black Pill (rev1),
+ GD32F303CCT6 from we act aka Blue Pill Plus (rev2), STM32F401 from we act (rev3,rev4) STM32F411 can also be used just ask
+* Hardware Availability: [custom how to](https://alin.elena.space/blog/keeblego/)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+For rev1
+
+ make mlego/m65/rev1:default
+
+Flashing example for this keyboard:
+
+ make mlego/m65/rev1:default:flash
+
+To enter flashing mode, press Lower+Raise+R.
+
+For rev2
+
+ make mlego/m65/rev2:default
+
+Flashing example for this keyboard:
+
+ make mlego/m65/rev2:default:flash
+
+To enter flashing mode, on microcontroller keep pressed KEY and then NRST, release NRST and then after 1s release KEY.
+
+For rev3
+
+ make mlego/m65/rev3:default
+
+Flashing example for this keyboard:
+
+ make mlego/m65/rev3:default:flash
+
+To enter flashing mode, on microcontroller keep pressed BOOT0 and then NRST, release NRST and then after 0.5s or so release BOOT0.
+
+For rev4
+
+ make mlego/m65/rev4:default
+
+Flashing example for this keyboard:
+
+ make mlego/m65/rev4:default:flash
+
+To enter flashing mode, press in the same time, LWR+RSE+r, alternatively on microcontroller keep pressed BOOT0 and then NRST, release NRST and then after 0.5s or so release BOOT0.
+
+
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Pins and leds rev1 STM/APM32F103C8T6
+
+similar pinout for STM32F303
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bksp | B11 |
+| R1 | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | B0 |
+| R2 | # | a | s | d | f | g | h | j | k | l | ; | ' | Enter | B1 |
+| R3 | Shift | \ | z | x | c | v | b | n | m | , | . | Up | / | A2 |
+| R4 | Ctrl | Menu | Lower | Alt | Raise | Space | Space | Space | AltGr | Shift | Left | Down | Right | A3 |
+| | A10 | A15 | B3 | B4 | B5 | B9 | B8 | B7 | B6 | C15 | A0 | A7 | B10 | |
+
+### Encoders
+
+ - Pad_A: A8
+ - Pad_B: A9
+
+### Leds
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
+## Pins and leds rev2 GD32F303CCT6
+
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bksp | B11 |
+| R1 | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | B0 |
+| R2 | # | a | s | d | f | g | h | j | k | l | ; | ' | Enter | B1 |
+| R3 | Shift | \ | z | x | c | v | b | n | m | , | . | Up | / | A2 |
+| R4 | Ctrl | Menu | Lower | Alt | Raise | Space | Space | Space | AltGr | Shift | Left | Down | Right | A3 |
+| | A10 | A15 | B3 | B4 | B5 | B9 | B8 | B7 | B6 | C15 | A0 | A7 | B10 | |
+
+
+### Encoders
+
+ - Pad_A: A8
+ - Pad_B: A9
+
+### Leds
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | B2 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
+
+## Pins and leds rev3 stm32f401
+
+the pinout is the same for stm32f411
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bksp | B10 |
+| R1 | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | A5 |
+| R2 | # | a | s | d | f | g | h | j | k | l | ; | ' | Enter | A6 |
+| R3 | Shift | \ | z | x | c | v | b | n | m | , | . | Up | / | A7 |
+| R4 | Ctrl | Menu | Lower | Alt | Raise | Space | Space | Space | AltGr | Shift | Left | Down | Right | B0 |
+| | A10 | A15 | B3 | B4 | B5 | B9 | B8 | B7 | A1 | A2 | A3 | A4 | B1 | |
+
+### Encoders
+
+ - Pad_A: A0
+ - Pad_B: B6
+
+### LEDS
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
+## Pins and leds rev4 stm32f401
+
+the pinout is the same for stm32f411
+
+| Rows | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | Pins |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+| R0 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | Bksp | B10 |
+| R1 | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | A5 |
+| R2 | # | a | s | d | f | g | h | j | k | l | ; | ' | Enter | A6 |
+| R3 | Shift | \ | z | x | c | v | b | n | m | , | . | Up | / | A7 |
+| R4 | Ctrl | Menu | Lower | Alt | Raise | Space | Space | Space | AltGr | Shift | Left | Down | Right | B0 |
+| | B14 | A8 | A10 | A15 | B3 | B4 | B5 | B7 | A1 | A2 | A3 | A4 | B1 | |
+
+### Encoders
+
+ - Pad_A: A0
+ - Pad_B: B6
+
+### Oled
+
+ - SDA: B9
+ - SCL: B8
+
+### LEDS
+
+| Leds | Pin |
+| ----------- | --- |
+| NUM_LOCK | B12 |
+| CAPS_LOCK | C13 |
+| SCROLL_LOCK | B13 |
+| RBG_DI | B15 |
+
diff --git a/keyboards/mlego/m65/rev1/chconf.h b/keyboards/mlego/m65/rev1/chconf.h
new file mode 100644
index 0000000000..3ca88e0d2a
--- /dev/null
+++ b/keyboards/mlego/m65/rev1/chconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2021-2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/m65/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mlego/m65/rev1/config.h b/keyboards/mlego/m65/rev1/config.h
new file mode 100644
index 0000000000..e0a703c978
--- /dev/null
+++ b/keyboards/mlego/m65/rev1/config.h
@@ -0,0 +1,59 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DEVICE_VER 0x0001
+#define PRODUCT_ID 0x6060
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+// 0 1 2 3 4
+#define MATRIX_ROW_PINS \
+ { B11, B0, B1, A2, A3 }
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+#define MATRIX_COL_PINS \
+ { A10, A15, B3, B4, B5, B9, B8, B7, B6, C15, A0, A7, B10 }
+
+#define ENCODERS_PAD_A \
+ { A8 }
+#define ENCODERS_PAD_B \
+ { A9 }
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+#define ENCODER_RESOLUTION 4
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
diff --git a/keyboards/mlego/m65/rev1/mcuconf.h b/keyboards/mlego/m65/rev1/mcuconf.h
new file mode 100644
index 0000000000..6ba4f72b40
--- /dev/null
+++ b/keyboards/mlego/m65/rev1/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2021-2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 FALSE
diff --git a/keyboards/mlego/m65/rev1/rules.mk b/keyboards/mlego/m65/rev1/rules.mk
new file mode 100644
index 0000000000..5e456c2606
--- /dev/null
+++ b/keyboards/mlego/m65/rev1/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
diff --git a/keyboards/mlego/m65/rev2/board.h b/keyboards/mlego/m65/rev2/board.h
new file mode 100644
index 0000000000..e0d0865776
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/board.h
@@ -0,0 +1,20 @@
+/* Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+#include_next <board.h>
+#undef STM32F103xB
+#define STM32F103xE
diff --git a/keyboards/mlego/m65/rev2/chconf.h b/keyboards/mlego/m65/rev2/chconf.h
new file mode 100644
index 0000000000..3ca88e0d2a
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/chconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2021-2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/m65/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mlego/m65/rev2/config.h b/keyboards/mlego/m65/rev2/config.h
new file mode 100644
index 0000000000..a548b01827
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/config.h
@@ -0,0 +1,70 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DEVICE_VER 0x0002
+#define PRODUCT_ID 0x6060
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN B2
+
+// 0 1 2 3 4
+#define MATRIX_ROW_PINS \
+ { B11, B0, B1, A2, A3 }
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+#define MATRIX_COL_PINS \
+ { A10, A15, B3, B4, B5, B9, B8, B7, B6, C15, A0, A7, B10 }
+
+#define ENCODERS_PAD_A \
+ { A8 }
+#define ENCODERS_PAD_B \
+ { A9 }
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+#define ENCODER_RESOLUTION 4
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+
+#define EEPROM_PAGE_SIZE
+#define FEE_PAGE_SIZE 0x800
+#define FEE_PAGE_COUNT 4
+
+#define FEE_MCU_FLASH_SIZE_IGNORE_CHECK
+#define FEE_MCU_FLASH_SIZE \
+ ({ \
+ uint16_t flash_size = *(uint16_t*)FLASHSIZE_BASE; \
+ (flash_size <= 512) ? flash_size : 512; \
+ })
diff --git a/keyboards/mlego/m65/rev2/mcuconf.h b/keyboards/mlego/m65/rev2/mcuconf.h
new file mode 100644
index 0000000000..6ba4f72b40
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2021-2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 FALSE
diff --git a/keyboards/mlego/m65/rev2/rules.mk b/keyboards/mlego/m65/rev2/rules.mk
new file mode 100644
index 0000000000..1b7c586b71
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = STM32F103 #GD32F303CCT6 weact
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
diff --git a/keyboards/mlego/m65/rev3/config.h b/keyboards/mlego/m65/rev3/config.h
new file mode 100644
index 0000000000..97992ee844
--- /dev/null
+++ b/keyboards/mlego/m65/rev3/config.h
@@ -0,0 +1,59 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DEVICE_VER 0x0003
+#define PRODUCT_ID 0x6060
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+// 0 1 2 3 4
+#define MATRIX_ROW_PINS \
+ { B10, A5, A6, A7, B0 }
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+#define MATRIX_COL_PINS \
+ { A10, A15, B3, B4, B5, B9, B8, B7, A1, A2, A3, A4, B1 }
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B6 }
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+#define ENCODER_RESOLUTION 4
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
diff --git a/keyboards/mlego/m65/rev3/halconf.h b/keyboards/mlego/m65/rev3/halconf.h
new file mode 100644
index 0000000000..89815e23b7
--- /dev/null
+++ b/keyboards/mlego/m65/rev3/halconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m65/rev3/mcuconf.h b/keyboards/mlego/m65/rev3/mcuconf.h
new file mode 100644
index 0000000000..4d90ec07ea
--- /dev/null
+++ b/keyboards/mlego/m65/rev3/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/mlego/m65/rev3/rules.mk b/keyboards/mlego/m65/rev3/rules.mk
new file mode 100644
index 0000000000..25df19c15f
--- /dev/null
+++ b/keyboards/mlego/m65/rev3/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
diff --git a/keyboards/mlego/m65/rev4/config.h b/keyboards/mlego/m65/rev4/config.h
new file mode 100644
index 0000000000..ee47061a91
--- /dev/null
+++ b/keyboards/mlego/m65/rev4/config.h
@@ -0,0 +1,67 @@
+/*
+Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DEVICE_VER 0x0004
+#define PRODUCT_ID 0x6060
+
+#define LED_NUM_LOCK_PIN B12
+#define LED_SCROLL_LOCK_PIN B13
+#define LED_CAPS_LOCK_PIN C13
+
+// 0 1 2 3 4
+#define MATRIX_ROW_PINS \
+ { B10, A5, A6, A7, B0 }
+// 0 1 2 3 4 5 6 7 8 9 10 11 12
+#define MATRIX_COL_PINS \
+ { B14, A8, A10, A15, B3, B4, B5, B7, A1, A2, A3, A4, B1 }
+
+#define ENCODERS_PAD_A \
+ { A0 }
+#define ENCODERS_PAD_B \
+ { B6 }
+
+#define RGB_DI_PIN B15
+
+#define UNUSED_PINS
+#define RGBLIGHT_LAYERS
+
+#define ENCODER_RESOLUTION 4
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 20
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X32
+#define I2C1_SCL_PIN B9
+#define I2C1_SDA_PIN B8
+#define OLED_BRIGHTNESS 128
+#define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c"
+#endif
diff --git a/keyboards/mlego/m65/rev4/halconf.h b/keyboards/mlego/m65/rev4/halconf.h
new file mode 100644
index 0000000000..c1a060ad71
--- /dev/null
+++ b/keyboards/mlego/m65/rev4/halconf.h
@@ -0,0 +1,32 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/mlego/m65/rev4/mcuconf.h b/keyboards/mlego/m65/rev4/mcuconf.h
new file mode 100644
index 0000000000..ba1cd32fd3
--- /dev/null
+++ b/keyboards/mlego/m65/rev4/mcuconf.h
@@ -0,0 +1,33 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/mlego/m65/rev4/rules.mk b/keyboards/mlego/m65/rev4/rules.mk
new file mode 100644
index 0000000000..9e1e0ab23b
--- /dev/null
+++ b/keyboards/mlego/m65/rev4/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable encoder
+OLED_ENABLE = yes # Enable OLED
+OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
+WPM_ENABLE = yes # Enable WPM Counter
diff --git a/keyboards/mmkzoo65/config.h b/keyboards/mmkzoo65/config.h
new file mode 100644
index 0000000000..18d7c40ca6
--- /dev/null
+++ b/keyboards/mmkzoo65/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7BA1
+#define PRODUCT_ID 0x6505
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MWStudio
+#define PRODUCT MMKZOO65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B2, B3, B7, E6, B0 }
+#define MATRIX_COL_PINS { B1, F0, F1, F4, F5, F6, F7, D4, D6, D7, B4, B5, B6, C6, C7 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+#define FORCE_NKRO
+
+/* 将USB 轮询速率更改为 1000hz 并为精英游戏每次扫描使用更大的密钥*/
+#define USB_POLLING_INTERVAL_MS 2
+#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/mmkzoo65/info.json b/keyboards/mmkzoo65/info.json
new file mode 100644
index 0000000000..682c2238fc
--- /dev/null
+++ b/keyboards/mmkzoo65/info.json
@@ -0,0 +1,81 @@
+{
+ "keyboard_name": "MMKZOO65",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"ESC", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"\\", "x":13.5, "y":1, "w":1.5},
+ {"label":"PgUp", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PgDn", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mmkzoo65/keymaps/default/keymap.c b/keyboards/mmkzoo65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1d5d53f255
--- /dev/null
+++ b/keyboards/mmkzoo65/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/mmkzoo65/keymaps/via/keymap.c b/keyboards/mmkzoo65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..78ca824d29
--- /dev/null
+++ b/keyboards/mmkzoo65/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mmkzoo65/keymaps/via/rules.mk b/keyboards/mmkzoo65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mmkzoo65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mmkzoo65/mmkzoo65.c b/keyboards/mmkzoo65/mmkzoo65.c
new file mode 100644
index 0000000000..09da82dd89
--- /dev/null
+++ b/keyboards/mmkzoo65/mmkzoo65.c
@@ -0,0 +1,18 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "mmkzoo65.h"
+
diff --git a/keyboards/mmkzoo65/mmkzoo65.h b/keyboards/mmkzoo65/mmkzoo65.h
new file mode 100644
index 0000000000..59b2b7f56c
--- /dev/null
+++ b/keyboards/mmkzoo65/mmkzoo65.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K406, K410, K411, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO }, \
+ { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414 } \
+}
diff --git a/keyboards/mmkzoo65/readme.md b/keyboards/mmkzoo65/readme.md
new file mode 100644
index 0000000000..96a699769a
--- /dev/null
+++ b/keyboards/mmkzoo65/readme.md
@@ -0,0 +1,22 @@
+# MMKZOO65
+
+![MMKZOO65](https://i.imgur.com/f84vVr4.jpg?1)
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mmkzoo65:default
+
+Flashing example for this keyboard:
+
+ make mmkzoo65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/mmkzoo65/rules.mk b/keyboards/mmkzoo65/rules.mk
new file mode 100644
index 0000000000..b018a630b5
--- /dev/null
+++ b/keyboards/mmkzoo65/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no
diff --git a/keyboards/mnk1800s/rules.mk b/keyboards/mnk1800s/rules.mk
index a4cf8bab5a..169c45b479 100755
--- a/keyboards/mnk1800s/rules.mk
+++ b/keyboards/mnk1800s/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
@@ -14,11 +20,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/mnk50/rules.mk b/keyboards/mnk50/rules.mk
index 8d14f05b82..169c45b479 100755
--- a/keyboards/mnk50/rules.mk
+++ b/keyboards/mnk50/rules.mk
@@ -4,6 +4,9 @@ MCU = STM32F072
# Bootloader selection
BOOTLOADER = stm32-dfu
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
@@ -17,10 +20,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mnk75/config.h b/keyboards/mnk75/config.h
new file mode 100755
index 0000000000..a0aec085d3
--- /dev/null
+++ b/keyboards/mnk75/config.h
@@ -0,0 +1,76 @@
+/*
+Copyright 2021 Yiancar-Designs
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published byß
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4D37
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT MNK75
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { A2, A14, A15, B3, B4, B5 }
+#define MATRIX_COL_PINS { A1, B9, A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Ensure we jump to bootloader if the RESET keycode was pressed */
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mnk75/info.json b/keyboards/mnk75/info.json
new file mode 100755
index 0000000000..65b2100da5
--- /dev/null
+++ b/keyboards/mnk75/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "MNK75",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":15, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":15, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":2.75}, {"x":6.5, "y":5.5, "w":1.25}, {"x":7.75, "y":5.5, "w":2.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":13, "y":5.5}, {"x":14, "y":5.5}, {"x":15, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/mnk75/keymaps/default/keymap.c b/keyboards/mnk75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..acabed3ae8
--- /dev/null
+++ b/keyboards/mnk75/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT)
+};
diff --git a/keyboards/mnk75/keymaps/default/readme.md b/keyboards/mnk75/keymaps/default/readme.md
new file mode 100755
index 0000000000..934ada1fef
--- /dev/null
+++ b/keyboards/mnk75/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for MNK75.
diff --git a/keyboards/mnk75/keymaps/via/keymap.c b/keyboards/mnk75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5ef3086971
--- /dev/null
+++ b/keyboards/mnk75/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_all( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_all( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_all( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/mnk75/keymaps/via/readme.md b/keyboards/mnk75/keymaps/via/readme.md
new file mode 100755
index 0000000000..3cac4633fe
--- /dev/null
+++ b/keyboards/mnk75/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default keymap for MNK75. VIA support enabled.
diff --git a/keyboards/mnk75/keymaps/via/rules.mk b/keyboards/mnk75/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mnk75/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mnk75/mnk75.c b/keyboards/mnk75/mnk75.c
new file mode 100755
index 0000000000..357bb07823
--- /dev/null
+++ b/keyboards/mnk75/mnk75.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ #include "mnk75.h"
diff --git a/keyboards/mnk75/mnk75.h b/keyboards/mnk75/mnk75.h
new file mode 100644
index 0000000000..ad1c1119ae
--- /dev/null
+++ b/keyboards/mnk75/mnk75.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define XXX KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, XXX, K54, XXX, K56, XXX, K58, XXX, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/mnk75/readme.md b/keyboards/mnk75/readme.md
new file mode 100755
index 0000000000..631ca246e7
--- /dev/null
+++ b/keyboards/mnk75/readme.md
@@ -0,0 +1,32 @@
+# MNK75
+
+This is a 75% layout PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 75% keyboard with STM32F072CB
+* Hardware Availability: https://monokei.co/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mnk75:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or CLI (`make mnk75:<keymap>:flash`)
diff --git a/keyboards/mnk75/rules.mk b/keyboards/mnk75/rules.mk
new file mode 100755
index 0000000000..16600f5b66
--- /dev/null
+++ b/keyboards/mnk75/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mntre/config.h b/keyboards/mntre/config.h
new file mode 100644
index 0000000000..9ee3d3f272
--- /dev/null
+++ b/keyboards/mntre/config.h
@@ -0,0 +1,101 @@
+// Copyright 2021 Cedric Vincent (@cdc-mkb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x1302
+#define DEVICE_VER 0x0002
+#define MANUFACTURER MNT Research GmbH
+#define PRODUCT MNT Reform USB Keyboard (Standalone)
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4 }
+#define MATRIX_COL_PINS { D5, F7, E6, C7, B3, B2, B1, B0, F0, F1, F4, F5, F6, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_CUSTOM_RESOLUTION 0x400
+#define BACKLIGHT_LIMIT_VAL 84
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mntre/info.json b/keyboards/mntre/info.json
new file mode 100644
index 0000000000..cf3ce47394
--- /dev/null
+++ b/keyboards/mntre/info.json
@@ -0,0 +1,98 @@
+{
+ "keyboard_name": "MNT Reform USB Keyboard (Standalone)",
+ "url": "https://shop.mntmn.com/products/mnt-reform-usb-keyboard-standalone",
+ "maintainer": "cdc-mkb",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "ESC", "x": 0, "y": 0},
+ {"label": "F1", "x": 1, "y": 0},
+ {"label": "F2", "x": 2, "y": 0},
+ {"label": "F3", "x": 3, "y": 0},
+ {"label": "F4", "x": 4, "y": 0},
+ {"label": "F5", "x": 5, "y": 0},
+ {"label": "F6", "x": 6, "y": 0},
+ {"label": "F7", "x": 7, "y": 0},
+ {"label": "F8", "x": 8, "y": 0},
+ {"label": "F9", "x": 9, "y": 0},
+ {"label": "F10", "x": 10, "y": 0},
+ {"label": "F11", "x": 11, "y": 0},
+ {"label": "F12", "x": 12, "y": 0},
+ {"label": "NO", "x": 13, "y": 0, "w": 1.5},
+
+ {"label": "GRAVE", "x": 0, "y": 1},
+ {"label": "1", "x": 1, "y": 1},
+ {"label": "2", "x": 2, "y": 1},
+ {"label": "3", "x": 3, "y": 1},
+ {"label": "4", "x": 4, "y": 1},
+ {"label": "5", "x": 5, "y": 1},
+ {"label": "6", "x": 6, "y": 1},
+ {"label": "7", "x": 7, "y": 1},
+ {"label": "8", "x": 8, "y": 1},
+ {"label": "9", "x": 9, "y": 1},
+ {"label": "0", "x": 10, "y": 1},
+ {"label": "MINUS", "x": 11, "y": 1},
+ {"label": "EQUAL", "x": 12, "y": 1},
+ {"label": "BSPACE", "x": 13, "y": 1, "w": 1.5},
+
+ {"label": "TAB", "x": 0, "y": 2, "w": 1.5},
+ {"label": "Q", "x": 1.5, "y": 2},
+ {"label": "W", "x": 2.5, "y": 2},
+ {"label": "E", "x": 3.5, "y": 2},
+ {"label": "R", "x": 4.5, "y": 2},
+ {"label": "T", "x": 5.5, "y": 2},
+ {"label": "Y", "x": 6.5, "y": 2},
+ {"label": "U", "x": 7.5, "y": 2},
+ {"label": "I", "x": 8.5, "y": 2},
+ {"label": "O", "x": 9.5, "y": 2},
+ {"label": "P", "x": 10.5, "y": 2},
+ {"label": "LBRACKET", "x": 11.5, "y": 2},
+ {"label": "RBRACKET", "x": 12.5, "y": 2},
+ {"label": "BSLASH", "x": 13.5, "y": 2},
+
+ {"label": "LCTRL", "x": 0, "y": 3},
+ {"label": "APP", "x": 1, "y": 3},
+ {"label": "A", "x": 2, "y": 3},
+ {"label": "S", "x": 3, "y": 3},
+ {"label": "D", "x": 4, "y": 3},
+ {"label": "F", "x": 5, "y": 3},
+ {"label": "G", "x": 6, "y": 3},
+ {"label": "H", "x": 7, "y": 3},
+ {"label": "J", "x": 8, "y": 3},
+ {"label": "K", "x": 9, "y": 3},
+ {"label": "L", "x": 10, "y": 3},
+ {"label": "SCOLON", "x": 11, "y": 3},
+ {"label": "QUOTE", "x": 12, "y": 3},
+ {"label": "ENTER", "x": 13, "y": 3, "w": 1.5},
+
+ {"label": "LSHIFT", "x": 0, "y": 4, "w": 1.5},
+ {"label": "DEL", "x": 1.5, "y": 4},
+ {"label": "Z", "x": 2.5, "y": 4},
+ {"label": "X", "x": 3.5, "y": 4},
+ {"label": "C", "x": 4.5, "y": 4},
+ {"label": "V", "x": 5.5, "y": 4},
+ {"label": "B", "x": 6.5, "y": 4},
+ {"label": "N", "x": 7.5, "y": 4},
+ {"label": "M", "x": 8.5, "y": 4},
+ {"label": "COMMA", "x": 9.5, "y": 4},
+ {"label": "DOT", "x": 10.5, "y": 4},
+ {"label": "SLASH", "x": 11.5, "y": 4},
+ {"label": "UP", "x": 12.5, "y": 4},
+ {"label": "RSHIFT", "x": 13.5, "y": 4},
+
+ {"label": "RGUI", "x": 0, "y": 5, "w": 1.5},
+ {"label": "LGUI", "x": 1.5, "y": 5, "w": 1.5},
+ {"label": "RCTRL", "x": 3, "y": 5, "w": 1.5},
+ {"label": "SPACE", "x": 4.5, "y": 5, "w": 1.5},
+ {"label": "LALT", "x": 6, "y": 5},
+ {"label": "RALT", "x": 7, "y": 5},
+ {"label": "SPACE", "x": 8, "y": 5, "w": 1.5},
+ {"label": "PGUP", "x": 9.5, "y": 5},
+ {"label": "PGDOWN", "x": 10.5, "y": 5},
+ {"label": "LEFT", "x": 11.5, "y": 5},
+ {"label": "DOWN", "x": 12.5, "y": 5},
+ {"label": "RIGHT", "x": 13.5, "y": 5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mntre/keymaps/default/keymap.c b/keyboards/mntre/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4dcdebe31b
--- /dev/null
+++ b/keyboards/mntre/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+// Copyright 2021 Cedric Vincent (@cdc-mkb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(_FN),
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLASH,
+ KC_LCTRL, KC_APP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER,
+ KC_LSHIFT, KC_DEL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_UP, KC_RSHIFT,
+ KC_RGUI, KC_LGUI, KC_RCTRL, KC_SPACE, KC_LALT, KC_RALT, KC_SPACE, KC_PGUP, KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FN] = LAYOUT(
+ _______, BL_DEC, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mntre/keymaps/default/readme.md b/keyboards/mntre/keymaps/default/readme.md
new file mode 100644
index 0000000000..fecdb68ea4
--- /dev/null
+++ b/keyboards/mntre/keymaps/default/readme.md
@@ -0,0 +1,19 @@
+# Default layout of MNT Reform USB Keyboard (Standalone)
+
+This is exactly the same layout as in the original firmware.
+Backlight level can be decreased and increased using Fn+F1 and Fn+F2
+respectively.
+
+ ┏━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━┯━━━━━━━━━━┓
+ ┃ Esc │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Fn ┃
+ ┠──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────────┨
+ ┃ `~ │ 1! │ 2@ │ 3# │ 4$ │ 5% │ 6^ │ 7& │ 8* │ 9( │ 0) │ -_ │ =+ │ Backspace┃
+ ┠──────┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──────┨
+ ┃ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [{ │ ]} │ \| ┃
+ ┠──────┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──┬───┴──────┨
+ ┃ LCtrl│ App │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ;: │ '" │ Enter ┃
+ ┠──────┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──┴───┬──────┨
+ ┃ LShift │ Del │ Z │ X │ C │ V │ B │ N │ M │ ,< │ .> │ /? │ Up │RShift┃
+ ┠──────────┼──────┴──┬───┴──────┼──────┴──┬───┴──┬───┴──┬───┴──────┼──────┼──────┼──────┼──────┼──────┨
+ ┃ RGUI │ LGUI │ RCtrl │ Space │ LAlt │ RAlt │ Space │ PgUp │ PgDn │ Left │ Down │ Right┃
+ ┗━━━━━━━━━━┷━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━┷━━━━━━┷━━━━━━┷━━━━━━━━━━┷━━━━━━┷━━━━━━┷━━━━━━┷━━━━━━┷━━━━━━┛
diff --git a/keyboards/mntre/mntre.c b/keyboards/mntre/mntre.c
new file mode 100644
index 0000000000..c21070b23b
--- /dev/null
+++ b/keyboards/mntre/mntre.c
@@ -0,0 +1,19 @@
+// Copyright 2021 Cedric Vincent (@cdc-mkb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "mntre.h"
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+
+ static const char PROGMEM qmk_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
+ };
+
+ oled_write_P(qmk_logo, false);
+ return true;
+}
+#endif
diff --git a/keyboards/mntre/mntre.h b/keyboards/mntre/mntre.h
new file mode 100644
index 0000000000..8a48114423
--- /dev/null
+++ b/keyboards/mntre/mntre.h
@@ -0,0 +1,30 @@
+// Copyright 2021 Cedric Vincent (@cdc-mkb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, KC_NO, KC_NO } \
+}
diff --git a/keyboards/mntre/readme.md b/keyboards/mntre/readme.md
new file mode 100644
index 0000000000..4c827aeb25
--- /dev/null
+++ b/keyboards/mntre/readme.md
@@ -0,0 +1,27 @@
+# MNT Reform USB Keyboard (Standalone)
+
+![MNT Reform USB Keyboard (Standalone)](https://shop.mntmn.com/spree/products/117/large/reform-standalone-black-full.jpg)
+
+A compact and slim mechanical keyboard designed for comfort and portability.
+
+* Keyboard QMK port Maintainer: [cdc-mkb](https://github.com/cdc-mkb)
+* Hardware Supported: MNT Reform USB Keyboard (Standalone)
+* Hardware Availability: https://shop.mntmn.com/products/mnt-reform-usb-keyboard-standalone
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mntre:default
+
+Flashing example for this keyboard:
+
+ make mntre:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the "Esc" key and plug in the keyboard
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (default: "Circle" + "R")
+* **Physical reset button**: Remove the keyboard’s frame and toggle the programming DIP switch SW84 on the keyboard to “ON”. Then press the reset button SW83.
diff --git a/keyboards/mntre/rules.mk b/keyboards/mntre/rules.mk
new file mode 100644
index 0000000000..0159e4da7e
--- /dev/null
+++ b/keyboards/mntre/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+OLED_ENABLE = yes
+BACKLIGHT_DRIVER = pwm
+
diff --git a/keyboards/mode/eighty/eighty.c b/keyboards/mode/eighty/eighty.c
deleted file mode 100644
index bde91d35a5..0000000000
--- a/keyboards/mode/eighty/eighty.c
+++ /dev/null
@@ -1,14 +0,0 @@
- /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include "eighty.h"
diff --git a/keyboards/mode/eighty/eighty.h b/keyboards/mode/eighty/eighty.h
deleted file mode 100644
index b5f6328854..0000000000
--- a/keyboards/mode/eighty/eighty.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-#include "quantum.h"
-
-#if defined(KEYBOARD_mode_eighty_m80h)
- #include "m80h.h"
-#elif defined(KEYBOARD_mode_eighty_m80s)
- #include "m80s.h"
-#endif // Mode80 solderable "S" and hotswap "H" revisions
diff --git a/keyboards/mode/eighty/halconf.h b/keyboards/mode/eighty/halconf.h
deleted file mode 100644
index eab8a300a1..0000000000
--- a/keyboards/mode/eighty/halconf.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright 2020 QMK
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * This file was auto-generated by:
- * `qmk chibios-confmigrate -i keyboards/mode/eighty/halconf.h -r platforms/chibios/common/configs/halconf.h`
- */
-
-#pragma once
-
-#define HAL_USE_I2C TRUE
-
-#include_next <halconf.h>
-
diff --git a/keyboards/mode/eighty/m80h/m80h.h b/keyboards/mode/eighty/m80h/m80h.h
deleted file mode 100644
index 882099b1a3..0000000000
--- a/keyboards/mode/eighty/m80h/m80h.h
+++ /dev/null
@@ -1,32 +0,0 @@
- /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#pragma once
-
-#include "eighty.h"
-
-#define LAYOUT_eighty_m80h( \
- K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K415, K114, K115, K116, \
- K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
- K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K514, K314, K315, K316, \
- K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
- K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K515, \
- K601, K602, K603, K607, K610, K611, K612, K613, K614, K615, K616 \
-) { \
- { K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 , K115, K116 }, \
- { K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 , K215, K216 }, \
- { K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 , K315, K316 }, \
- { K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415 , KC_NO }, \
- { K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, KC_NO, K514 , K515, KC_NO }, \
- { K601, K602, K603, KC_NO, KC_NO, KC_NO, K607, KC_NO, KC_NO, K610, K611, K612, K613, K614 , K615, K616 } \
-}
diff --git a/keyboards/mode/eighty/m80h/rules.mk b/keyboards/mode/eighty/m80h/rules.mk
deleted file mode 100644
index bfe1e6eff5..0000000000
--- a/keyboards/mode/eighty/m80h/rules.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# MCU name
-MCU = STM32F072
-
-# Bootloader selection
-BOOTLOADER = stm32-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/mode/eighty/m80s/m80s.h b/keyboards/mode/eighty/m80s/m80s.h
deleted file mode 100644
index 3799b5f617..0000000000
--- a/keyboards/mode/eighty/m80s/m80s.h
+++ /dev/null
@@ -1,32 +0,0 @@
- /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#pragma once
-
-#include "eighty.h"
-
-#define LAYOUT_eighty_m80s( \
- K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K415, K114, K115, K116, \
- K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K414, K214, K215, K216, \
- K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K514, K314, K315, K316, \
- K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
- K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K515, \
- K601, K602, K603, K607, K610, K611, K612, K613, K614, K615, K616 \
-) { \
- { K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
- { K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
- { K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316 }, \
- { K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415 , KC_NO }, \
- { K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, KC_NO }, \
- { K601, K602, K603, KC_NO, KC_NO, KC_NO, K607, KC_NO, KC_NO, K610, K611, K612, K613, K614, K615, K616 } \
-}
diff --git a/keyboards/mode/eighty/m80s/rules.mk b/keyboards/mode/eighty/m80s/rules.mk
deleted file mode 100644
index bfe1e6eff5..0000000000
--- a/keyboards/mode/eighty/m80s/rules.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# MCU name
-MCU = STM32F072
-
-# Bootloader selection
-BOOTLOADER = stm32-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/mode/eighty/readme.md b/keyboards/mode/eighty/readme.md
deleted file mode 100644
index 40df5adb51..0000000000
--- a/keyboards/mode/eighty/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Mode Eighty
-
-![MODE80](https://i.imgur.com/26uzM3yl.jpg)\
-[Image Gallery](https://imgur.com/t/mechanicalkeyboards/8Uf6c2m?nc=1)
-
-The Mode80 is a tenkeyless high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
-
-* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
-* Hardware Supported: proprietary PCB using STM32F072 controller
-* Hardware Availability: you can get a Mode Eighty as of today (dec. 2020) through the in stock sales or special groupbuy editions at https://shop.modedesigns.com/
-
-Make example for this keyboard (after setting up your build environment):
-
- make mode/eighty/m80h:default # Hotswap
- make mode/eighty/m80s:default # Soldered
-
-Flashing example for this keyboard:
-
- make mode/eighty/m80h:default:flash # Hotswap
- make mode/eighty/m80s:default:flash # Soldered
-
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mode/m65ha_alpha/chconf.h b/keyboards/mode/m65ha_alpha/chconf.h
new file mode 100644
index 0000000000..cbbae31079
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/chconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mode/m65ha_alpha/config.h b/keyboards/mode/m65ha_alpha/config.h
new file mode 100644
index 0000000000..dc921fb335
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/config.h
@@ -0,0 +1,73 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00DE
+#define PRODUCT_ID 0x6566 // 65A + 1 since the pre-alpha version was 6565
+#define DEVICE_VER 0x0065 // A for release Alpha
+#define MANUFACTURER Mode
+#define PRODUCT SixtyFive HA
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { B10, B12, C8 , C4 , C5 , B0 , C10, B13, B14, B15, A15, C6 , C7 , A8 , C9}
+#define MATRIX_ROW_PINS { A7 , A10, D2 , C12, B1 , C11 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define EEPROM_I2C_24LC256
+//#define I2C1_CLOCK_SPEED 400000
+//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define STM32_HSECLK 8000000
+
+#define OPENDRAIN_INDICATORS
+#define LED_CAPS_LOCK_PIN A6
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/mode/m65ha_alpha/halconf.h b/keyboards/mode/m65ha_alpha/halconf.h
new file mode 100644
index 0000000000..41bddcb279
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/m65ha_alpha/info.json b/keyboards/mode/m65ha_alpha/info.json
new file mode 100644
index 0000000000..a25d22714e
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Mode SixtyFive HA",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00", "x": 0, "y": 0 },
+ { "label": "K01", "x": 1, "y": 0 },
+ { "label": "K02", "x": 2, "y": 0 },
+ { "label": "K03", "x": 3, "y": 0 },
+ { "label": "K04", "x": 4, "y": 0 },
+ { "label": "K05", "x": 5, "y": 0 },
+ { "label": "K06", "x": 6, "y": 0 },
+ { "label": "K07", "x": 7, "y": 0 },
+ { "label": "K08", "x": 8, "y": 0 },
+ { "label": "K09", "x": 9, "y": 0 },
+ { "label": "K0A", "x": 10, "y": 0 },
+ { "label": "K0B", "x": 11, "y": 0 },
+ { "label": "K0C", "x": 12, "y": 0 },
+ { "label": "K0D", "x": 13, "y": 0, "w": 2 },
+ { "label": "K0E", "x": 15, "y": 0 },
+
+ { "label": "K10", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K11", "x": 1.5, "y": 1 },
+ { "label": "K12", "x": 2.5, "y": 1 },
+ { "label": "K13", "x": 3.5, "y": 1 },
+ { "label": "K14", "x": 4.5, "y": 1 },
+ { "label": "K15", "x": 5.5, "y": 1 },
+ { "label": "K16", "x": 6.5, "y": 1 },
+ { "label": "K17", "x": 7.5, "y": 1 },
+ { "label": "K18", "x": 8.5, "y": 1 },
+ { "label": "K19", "x": 9.5, "y": 1 },
+ { "label": "K1A", "x": 10.5, "y": 1 },
+ { "label": "K1B", "x": 11.5, "y": 1 },
+ { "label": "K1C", "x": 12.5, "y": 1 },
+ { "label": "K1D", "x": 13.5, "y": 1, "w": 1.5},
+ { "label": "K1E", "x": 15, "y": 1 },
+
+ { "label": "K20", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K21", "x": 1.75, "y": 2 },
+ { "label": "K22", "x": 2.75, "y": 2 },
+ { "label": "K23", "x": 3.75, "y": 2 },
+ { "label": "K24", "x": 4.75, "y": 2 },
+ { "label": "K25", "x": 5.75, "y": 2 },
+ { "label": "K26", "x": 6.75, "y": 2 },
+ { "label": "K27", "x": 7.75, "y": 2 },
+ { "label": "K28", "x": 8.75, "y": 2 },
+ { "label": "K29", "x": 9.75, "y": 2 },
+ { "label": "K2A", "x": 10.75, "y": 2 },
+ { "label": "K2B", "x": 11.75, "y": 2 },
+ { "label": "K2D", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K2E", "x": 15, "y": 2 },
+
+ { "label": "K30", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K32", "x": 2.25, "y": 3 },
+ { "label": "K33", "x": 3.25, "y": 3 },
+ { "label": "K34", "x": 4.25, "y": 3 },
+ { "label": "K35", "x": 5.25, "y": 3 },
+ { "label": "K36", "x": 6.25, "y": 3 },
+ { "label": "K37", "x": 7.25, "y": 3 },
+ { "label": "K38", "x": 8.25, "y": 3 },
+ { "label": "K39", "x": 9.25, "y": 3 },
+ { "label": "K3A", "x": 10.25, "y": 3 },
+ { "label": "K3B", "x": 11.25, "y": 3 },
+ { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3D", "x": 14, "y": 3 },
+ { "label": "K3E", "x": 15, "y": 3 },
+
+ { "label": "K40", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K5A", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K5C", "x": 13, "y": 4 },
+ { "label": "K5D", "x": 14, "y": 4 },
+ { "label": "K5E", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c b/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c
new file mode 100755
index 0000000000..2a2e041536
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c b/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c
new file mode 100755
index 0000000000..2a2e041536
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk b/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m65ha_alpha/m65ha_alpha.c b/keyboards/mode/m65ha_alpha/m65ha_alpha.c
new file mode 100644
index 0000000000..93e0c06b73
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/m65ha_alpha.c
@@ -0,0 +1,67 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m65ha_alpha.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
+
+#define LED_PIN_ON_STATE 1
+void led_init_ports(void) {
+
+/** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator
+ pins default to push-pull output. Else, they are defined as open-drain. The
+ pin mode configuration is done through the INDICATOR_PIN_MODE which is
+ attributed right at the beggining. **/
+
+#ifndef OPENDRAIN_INDICATORS
+# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_PUSHPULL
+#else
+# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_OPENDRAIN
+#endif
+
+#ifdef LED_NUM_LOCK_PIN
+ palSetLineMode(LED_NUM_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_CAPS_LOCK_PIN
+ palSetLineMode(LED_CAPS_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_SCROLL_LOCK_PIN
+ palSetLineMode(LED_SCROLL_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_COMPOSE_PIN
+ palSetLineMode(LED_COMPOSE_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_KANA_PIN
+ palSetLineMode(LED_KANA_PIN, INDICATOR_PIN_MODE);
+#endif
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ // writePin sets the pin high for 1 and low for 0.
+ // In this example the pins are inverted, setting
+ // it low/0 turns it on, and high/1 turns the LED off.
+ // This behavior depends on whether the LED is between the pin
+ // and VCC or the pin and GND.
+ writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock);
+ }
+ return res;
+}
diff --git a/keyboards/mode/m65ha_alpha/m65ha_alpha.h b/keyboards/mode/m65ha_alpha/m65ha_alpha.h
new file mode 100644
index 0000000000..6b0c63c6be
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/m65ha_alpha.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K56, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, K2E }, \
+ { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/mode/m65ha_alpha/mcuconf.h b/keyboards/mode/m65ha_alpha/mcuconf.h
new file mode 100644
index 0000000000..e4cefd0b75
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/mcuconf.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+#undef STM32_PLLM_VALUE
+#undef STM32_PLLN_VALUE
+#undef STM32_PLLP_VALUE
+#undef STM32_PLLQ_VALUE
+#undef STM32_PPRE1
+#undef STM32_PPRE2
+
+#define STM32_PLLM_VALUE 4
+#define STM32_PLLN_VALUE 168
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/mode/m65ha_alpha/readme.md b/keyboards/mode/m65ha_alpha/readme.md
new file mode 100644
index 0000000000..ae8b489759
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/readme.md
@@ -0,0 +1,16 @@
+# Mode SixtyFive HA rev. Alpha
+
+![Image Gallery](https://cdn.shopify.com/s/files/1/0279/3426/1330/files/Group_95_1024x1024.jpg)
+
+The Mode SixtyFive is a 65% high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). The M65HA is the ANSI-layout variant of its PCB.
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Supported: proprietary PCB using STM32F401 controller
+* Hardware Availability: revision 1 public sales are over as of june 2021.
+
+Flashing example for this keyboard:
+
+ make mode/m65hi_alpha:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
diff --git a/keyboards/mode/m65ha_alpha/rules.mk b/keyboards/mode/m65ha_alpha/rules.mk
new file mode 100644
index 0000000000..191428572e
--- /dev/null
+++ b/keyboards/mode/m65ha_alpha/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/m65hi_alpha/chconf.h b/keyboards/mode/m65hi_alpha/chconf.h
new file mode 100644
index 0000000000..cbbae31079
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/chconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mode/m65hi_alpha/config.h b/keyboards/mode/m65hi_alpha/config.h
new file mode 100644
index 0000000000..1a048e94d2
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/config.h
@@ -0,0 +1,73 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00DE
+#define PRODUCT_ID 0x6574 // For 65I + 1 (for alpha, since pre-alpha 6573)
+#define DEVICE_VER 0x0065 // A for A (alpha)
+#define MANUFACTURER Mode
+#define PRODUCT SixtyFive HI
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { B10, B12, C8 , C4 , C5 , B0 , C10, B13, B14, B15, A15, C6 , C7 , A8 , C9 }
+#define MATRIX_ROW_PINS { A7 , A10, D2 , C12, B1 , C11 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define EEPROM_I2C_24LC256
+//#define I2C1_CLOCK_SPEED 400000
+//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define STM32_HSECLK 8000000
+
+#define OPENDRAIN_INDICATORS
+#define LED_CAPS_LOCK_PIN A6
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/mode/m65hi_alpha/halconf.h b/keyboards/mode/m65hi_alpha/halconf.h
new file mode 100644
index 0000000000..41bddcb279
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/m65hi_alpha/info.json b/keyboards/mode/m65hi_alpha/info.json
new file mode 100644
index 0000000000..aa5f98efc6
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Mode SixtyFive HI",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00", "x": 0, "y": 0 },
+ { "label": "K01", "x": 1, "y": 0 },
+ { "label": "K02", "x": 2, "y": 0 },
+ { "label": "K03", "x": 3, "y": 0 },
+ { "label": "K04", "x": 4, "y": 0 },
+ { "label": "K05", "x": 5, "y": 0 },
+ { "label": "K06", "x": 6, "y": 0 },
+ { "label": "K07", "x": 7, "y": 0 },
+ { "label": "K08", "x": 8, "y": 0 },
+ { "label": "K09", "x": 9, "y": 0 },
+ { "label": "K0A", "x": 10, "y": 0 },
+ { "label": "K0B", "x": 11, "y": 0 },
+ { "label": "K0C", "x": 12, "y": 0 },
+ { "label": "K0D", "x": 13, "y": 0, "w": 2 },
+ { "label": "K0E", "x": 15, "y": 0 },
+
+ { "label": "K10", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K11", "x": 1.5, "y": 1 },
+ { "label": "K12", "x": 2.5, "y": 1 },
+ { "label": "K13", "x": 3.5, "y": 1 },
+ { "label": "K14", "x": 4.5, "y": 1 },
+ { "label": "K15", "x": 5.5, "y": 1 },
+ { "label": "K16", "x": 6.5, "y": 1 },
+ { "label": "K17", "x": 7.5, "y": 1 },
+ { "label": "K18", "x": 8.5, "y": 1 },
+ { "label": "K19", "x": 9.5, "y": 1 },
+ { "label": "K1A", "x": 10.5, "y": 1 },
+ { "label": "K1B", "x": 11.5, "y": 1 },
+ { "label": "K1C", "x": 12.5, "y": 1 },
+ { "label": "K1E", "x": 15, "y": 1 },
+
+ { "label": "K20", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K21", "x": 1.75, "y": 2 },
+ { "label": "K22", "x": 2.75, "y": 2 },
+ { "label": "K23", "x": 3.75, "y": 2 },
+ { "label": "K24", "x": 4.75, "y": 2 },
+ { "label": "K25", "x": 5.75, "y": 2 },
+ { "label": "K26", "x": 6.75, "y": 2 },
+ { "label": "K27", "x": 7.75, "y": 2 },
+ { "label": "K28", "x": 8.75, "y": 2 },
+ { "label": "K29", "x": 9.75, "y": 2 },
+ { "label": "K2A", "x": 10.75, "y": 2 },
+ { "label": "K2B", "x": 11.75, "y": 2 },
+ { "label": "K2C", "x": 12.75, "y": 2 },
+ { "label": "K2D", "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "label": "K2E", "x": 15, "y": 2 },
+
+ { "label": "K30", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "K31", "x": 1.25, "y": 3 },
+ { "label": "K32", "x": 2.25, "y": 3 },
+ { "label": "K33", "x": 3.25, "y": 3 },
+ { "label": "K34", "x": 4.25, "y": 3 },
+ { "label": "K35", "x": 5.25, "y": 3 },
+ { "label": "K36", "x": 6.25, "y": 3 },
+ { "label": "K37", "x": 7.25, "y": 3 },
+ { "label": "K38", "x": 8.25, "y": 3 },
+ { "label": "K39", "x": 9.25, "y": 3 },
+ { "label": "K3A", "x": 10.25, "y": 3 },
+ { "label": "K3B", "x": 11.25, "y": 3 },
+ { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3D", "x": 14, "y": 3 },
+ { "label": "K3E", "x": 15, "y": 3 },
+
+ { "label": "K40", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K5A", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K5C", "x": 13, "y": 4 },
+ { "label": "K5D", "x": 14, "y": 4 },
+ { "label": "K5E", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c b/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c
new file mode 100755
index 0000000000..2159d5ffe8
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c b/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c
new file mode 100755
index 0000000000..6d84d38496
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk b/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m65hi_alpha/m65hi_alpha.c b/keyboards/mode/m65hi_alpha/m65hi_alpha.c
new file mode 100644
index 0000000000..db0ab7ca9a
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/m65hi_alpha.c
@@ -0,0 +1,67 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m65hi_alpha.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
+
+#define LED_PIN_ON_STATE 1
+void led_init_ports(void) {
+
+/** If the OPENDRAIN_INDICATORS option is not defined in config.h, the indicator
+ pins default to push-pull output. Else, they are defined as open-drain. The
+ pin mode configuration is done through the INDICATOR_PIN_MODE which is
+ attributed right at the beggining. **/
+
+#ifndef OPENDRAIN_INDICATORS
+# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_PUSHPULL
+#else
+# define INDICATOR_PIN_MODE PAL_MODE_OUTPUT_OPENDRAIN
+#endif
+
+#ifdef LED_NUM_LOCK_PIN
+ palSetLineMode(LED_NUM_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_CAPS_LOCK_PIN
+ palSetLineMode(LED_CAPS_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_SCROLL_LOCK_PIN
+ palSetLineMode(LED_SCROLL_LOCK_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_COMPOSE_PIN
+ palSetLineMode(LED_COMPOSE_PIN, INDICATOR_PIN_MODE);
+#endif
+#ifdef LED_KANA_PIN
+ palSetLineMode(LED_KANA_PIN, INDICATOR_PIN_MODE);
+#endif
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ // writePin sets the pin high for 1 and low for 0.
+ // In this example the pins are inverted, setting
+ // it low/0 turns it on, and high/1 turns the LED off.
+ // This behavior depends on whether the LED is between the pin
+ // and VCC or the pin and GND.
+ writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock);
+ }
+ return res;
+}
diff --git a/keyboards/mode/m65hi_alpha/m65hi_alpha.h b/keyboards/mode/m65hi_alpha/m65hi_alpha.h
new file mode 100644
index 0000000000..7d2b5cc68e
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/m65hi_alpha.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K56, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/mode/m65hi_alpha/mcuconf.h b/keyboards/mode/m65hi_alpha/mcuconf.h
new file mode 100644
index 0000000000..97f2ee51ee
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/mcuconf.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+#undef STM32_PLLM_VALUE
+#undef STM32_PLLN_VALUE
+#undef STM32_PLLP_VALUE
+#undef STM32_PLLQ_VALUE
+#undef STM32_PPRE1
+#undef STM32_PPRE2
+
+#define STM32_PLLM_VALUE 4
+#define STM32_PLLN_VALUE 168
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/mode/m65hi_alpha/readme.md b/keyboards/mode/m65hi_alpha/readme.md
new file mode 100644
index 0000000000..6dcc326565
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/readme.md
@@ -0,0 +1,15 @@
+# Mode SixtyFive HI rev. Alpha
+
+![Image Gallery](https://cdn.shopify.com/s/files/1/0279/3426/1330/files/Group_95_1024x1024.jpg)
+
+The Mode SixtyFive is a 65% high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/). The M65HI is the ISO-layout variant of its PCB.
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Supported: proprietary PCB using STM32F401 controller
+* Hardware Availability: revision 1 public sales are over as of june 2021.
+
+Flashing example for this keyboard:
+
+ make mode/m65hi_alpha:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mode/m65hi_alpha/rules.mk b/keyboards/mode/m65hi_alpha/rules.mk
new file mode 100644
index 0000000000..191428572e
--- /dev/null
+++ b/keyboards/mode/m65hi_alpha/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/m65s/rules.mk b/keyboards/mode/m65s/rules.mk
index d564e13142..ed43a7bc77 100644
--- a/keyboards/mode/m65s/rules.mk
+++ b/keyboards/mode/m65s/rules.mk
@@ -9,10 +9,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mode/m75h/chconf.h b/keyboards/mode/m75h/chconf.h
new file mode 100644
index 0000000000..dedd4d5e28
--- /dev/null
+++ b/keyboards/mode/m75h/chconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mode/m75h/config.h b/keyboards/mode/m75h/config.h
new file mode 100644
index 0000000000..980ebc5b66
--- /dev/null
+++ b/keyboards/mode/m75h/config.h
@@ -0,0 +1,75 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00DE
+#define PRODUCT_ID 0x7572 // For 75H
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mode
+#define PRODUCT Mode 75H
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 16
+ //C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+#define MATRIX_COL_PINS { C8, C7, A10, B13, B12, B10, B1, C10, C11, D2, C12, B3, B4, B5, B8, B9 }
+ //R0, R1, R2, R3, R4, R5 , R6
+#define MATRIX_ROW_PINS { C5, B0, B14, B15, A8 , C9 , A15}
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define EEPROM_I2C_24LC256
+//#define I2C1_CLOCK_SPEED 400000
+//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define STM32_HSECLK 8000000
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#define TAP_CODE_DELAY 50
+
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 16383 // Overriding to use more EEPROM
diff --git a/keyboards/mode/m75h/halconf.h b/keyboards/mode/m75h/halconf.h
new file mode 100644
index 0000000000..6c53f594c7
--- /dev/null
+++ b/keyboards/mode/m75h/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/m75h/info.json b/keyboards/mode/m75h/info.json
new file mode 100644
index 0000000000..91584e8863
--- /dev/null
+++ b/keyboards/mode/m75h/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "Mode 75H",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mode/m75h/keymaps/default/keymap.c b/keyboards/mode/m75h/keymaps/default/keymap.c
new file mode 100755
index 0000000000..1ad0eaba9d
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12, KC_DEL ,
+ KC_TILD , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6, KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL , KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75h/keymaps/via/keymap.c b/keyboards/mode/m75h/keymaps/via/keymap.c
new file mode 100755
index 0000000000..1ad0eaba9d
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12, KC_DEL ,
+ KC_TILD , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6, KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL , KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75h/keymaps/via/rules.mk b/keyboards/mode/m75h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m75h/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m75h/m75h.c b/keyboards/mode/m75h/m75h.c
new file mode 100644
index 0000000000..3306a6538b
--- /dev/null
+++ b/keyboards/mode/m75h/m75h.c
@@ -0,0 +1,23 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m75h.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
diff --git a/keyboards/mode/m75h/m75h.h b/keyboards/mode/m75h/m75h.h
new file mode 100644
index 0000000000..da01f25818
--- /dev/null
+++ b/keyboards/mode/m75h/m75h.h
@@ -0,0 +1,59 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐
+ * │00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0F │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │2F │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3E │3F │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4E │4F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │50 │51 │52 │66 │6A │6B │ │6D │6E │6F │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┐
+ * │50 │51 │52 │66 │6B │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
diff --git a/keyboards/mode/m75h/mcuconf.h b/keyboards/mode/m75h/mcuconf.h
new file mode 100644
index 0000000000..97f2ee51ee
--- /dev/null
+++ b/keyboards/mode/m75h/mcuconf.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+#undef STM32_PLLM_VALUE
+#undef STM32_PLLN_VALUE
+#undef STM32_PLLP_VALUE
+#undef STM32_PLLQ_VALUE
+#undef STM32_PPRE1
+#undef STM32_PPRE2
+
+#define STM32_PLLM_VALUE 4
+#define STM32_PLLN_VALUE 168
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/mode/m75h/readme.md b/keyboards/mode/m75h/readme.md
new file mode 100644
index 0000000000..a663847278
--- /dev/null
+++ b/keyboards/mode/m75h/readme.md
@@ -0,0 +1,19 @@
+# Mode SixtyFive M65S
+
+![MODE75](https://raw.githubusercontent.com/Gondolindrim/file_hosting/main/mode_sixtyfive/Group_95_1024x1024.jpg)
+
+The M65S is the solderable PCB for the Mode SixtyFive keyboard, a sixty-five-percent high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
+
+- Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+- Hardware Supported: proprietary PCB using STM32F401 controller
+- Hardware Availability: you can get a Mode SeventyFive via when preorders open in 2022 [Mode Designs](https://shop.modedesigns.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mode/m65s:default
+
+Flashing example for this keyboard:
+
+ make mode/m65s:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mode/m75h/rules.mk b/keyboards/mode/m75h/rules.mk
new file mode 100644
index 0000000000..f7659378cc
--- /dev/null
+++ b/keyboards/mode/m75h/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+LTO_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/m75s/chconf.h b/keyboards/mode/m75s/chconf.h
new file mode 100644
index 0000000000..dedd4d5e28
--- /dev/null
+++ b/keyboards/mode/m75s/chconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mode/m75s/config.h b/keyboards/mode/m75s/config.h
new file mode 100644
index 0000000000..8ac31b069e
--- /dev/null
+++ b/keyboards/mode/m75s/config.h
@@ -0,0 +1,75 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00DE
+#define PRODUCT_ID 0x7583 // For 75S
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mode
+#define PRODUCT Mode 75S
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 16
+ //C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+#define MATRIX_COL_PINS { C8, A8, A10, B13, B12, B10, B1, C10, C11, D2, C12, B3, B4, B5, B8, B9 }
+ //R0, R1, R2, R3, R4, R5 , R6
+#define MATRIX_ROW_PINS { C5, B0, B14, B15, C7 , C9 , A15}
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define EEPROM_I2C_24LC128
+//#define I2C1_CLOCK_SPEED 400000
+//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define STM32_HSECLK 8000000
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#define TAP_CODE_DELAY 50
+
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 16383 // Overriding to use more EEPROM
diff --git a/keyboards/mode/m75s/halconf.h b/keyboards/mode/m75s/halconf.h
new file mode 100644
index 0000000000..6c53f594c7
--- /dev/null
+++ b/keyboards/mode/m75s/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/m75s/info.json b/keyboards/mode/m75s/info.json
new file mode 100644
index 0000000000..d45cee20dc
--- /dev/null
+++ b/keyboards/mode/m75s/info.json
@@ -0,0 +1,824 @@
+{
+ "keyboard_name": "Mode 75S",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":3.5, "w":1.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_ansi_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.5},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.5},
+ {"label":"Space", "x":4, "y":5.5, "w":7},
+ {"label":"Fn", "x":11, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_ansi_tsangan_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.5},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.5},
+ {"label":"Space", "x":4, "y":5.5, "w":7},
+ {"label":"Fn", "x":11, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.5},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.5},
+ {"label":"Space", "x":4, "y":5.5, "w":7},
+ {"label":"Fn", "x":11, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso_tsangan_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"`~", "x":0, "y":1.5},
+ {"label":"1!", "x":1, "y":1.5},
+ {"label":"2@", "x":2, "y":1.5},
+ {"label":"3#", "x":3, "y":1.5},
+ {"label":"4$", "x":4, "y":1.5},
+ {"label":"5%", "x":5, "y":1.5},
+ {"label":"6^", "x":6, "y":1.5},
+ {"label":"7&", "x":7, "y":1.5},
+ {"label":"8*", "x":8, "y":1.5},
+ {"label":"9(", "x":9, "y":1.5},
+ {"label":"0)", "x":10, "y":1.5},
+ {"label":"-_", "x":11, "y":1.5},
+ {"label":"=+", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Home", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[{", "x":11.5, "y":2.5},
+ {"label":"]}", "x":12.5, "y":2.5},
+ {"label":"Page Up", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";:", "x":10.75, "y":3.5},
+ {"label":"'\"", "x":11.75, "y":3.5},
+ {"label":"#~", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",<", "x":9.25, "y":4.5},
+ {"label":".>", "x":10.25, "y":4.5},
+ {"label":"/?", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.5},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.5},
+ {"label":"Space", "x":4, "y":5.5, "w":7},
+ {"label":"Fn", "x":11, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mode/m75s/keymaps/default/keymap.c b/keyboards/mode/m75s/keymaps/default/keymap.c
new file mode 100755
index 0000000000..35db109a41
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_ansi/keymap.c b/keyboards/mode/m75s/keymaps/default_ansi/keymap.c
new file mode 100644
index 0000000000..5ca5384010
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_ansi/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_ansi_split_bs/keymap.c b/keyboards/mode/m75s/keymaps/default_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..0e74130e45
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_ansi_split_bs/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi_split_bs(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi_split_bs(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ansi_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_ansi_tsangan/keymap.c b/keyboards/mode/m75s/keymaps/default_ansi_tsangan/keymap.c
new file mode 100644
index 0000000000..ed2fd875b0
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_ansi_tsangan/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi_tsangan(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi_tsangan(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ansi_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_ansi_tsangan_split_bs/keymap.c b/keyboards/mode/m75s/keymaps/default_ansi_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..dda171515a
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_ansi_tsangan_split_bs/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi_tsangan_split_bs(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi_tsangan_split_bs(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_ansi_tsangan_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ansi_tsangan_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_iso/keymap.c b/keyboards/mode/m75s/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..6e21982e1b
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_iso/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_iso_split_bs/keymap.c b/keyboards/mode/m75s/keymaps/default_iso_split_bs/keymap.c
new file mode 100644
index 0000000000..5f1851472c
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_iso_split_bs/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso_split_bs(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso_split_bs(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_iso_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_iso_tsangan/keymap.c b/keyboards/mode/m75s/keymaps/default_iso_tsangan/keymap.c
new file mode 100644
index 0000000000..7bba870fc0
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_iso_tsangan/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso_tsangan(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso_tsangan(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_iso_tsangan(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/default_iso_tsangan_split_bs/keymap.c b/keyboards/mode/m75s/keymaps/default_iso_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..2ad104262b
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/default_iso_tsangan_split_bs/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso_tsangan_split_bs(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso_tsangan_split_bs(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso_tsangan_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_iso_tsangan_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/via/keymap.c b/keyboards/mode/m75s/keymaps/via/keymap.c
new file mode 100755
index 0000000000..35db109a41
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL ,
+ KC_TILD, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_NUHS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m75s/keymaps/via/rules.mk b/keyboards/mode/m75s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m75s/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m75s/m75s.c b/keyboards/mode/m75s/m75s.c
new file mode 100644
index 0000000000..e0424a6a64
--- /dev/null
+++ b/keyboards/mode/m75s/m75s.c
@@ -0,0 +1,23 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m75s.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
diff --git a/keyboards/mode/m75s/m75s.h b/keyboards/mode/m75s/m75s.h
new file mode 100644
index 0000000000..7306874a23
--- /dev/null
+++ b/keyboards/mode/m75s/m75s.h
@@ -0,0 +1,195 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┐
+ * │00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0F │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │2F │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐3E │ ISO Enter
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3E │3F │ │3D │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4E │4F │
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │50 │51 │52 │66 │6A │6B │ │6D │6E │6F │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┐
+ * │50 │51 │52 │66 │6B │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_ansi( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_ansi_tsangan( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_ansi_tsangan_split_bs( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, ___, K3E, K3F }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_iso( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_iso_split_bs( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6A, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, K6A, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_iso_tsangan( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
+}
+
+#define LAYOUT_iso_tsangan_split_bs( \
+ K00, K01, K02, K03, K04, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, K4F, \
+ K50, K51, K52, K66, K6B, K6D, K6E, K6F \
+) { \
+ { K00, K01, K02, K03, K04, ___, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, ___, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K66, ___, ___, ___, ___, K6B, ___, K6D, K6E, K6F } \
+}
diff --git a/keyboards/mode/m75s/mcuconf.h b/keyboards/mode/m75s/mcuconf.h
new file mode 100644
index 0000000000..97f2ee51ee
--- /dev/null
+++ b/keyboards/mode/m75s/mcuconf.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+#undef STM32_PLLM_VALUE
+#undef STM32_PLLN_VALUE
+#undef STM32_PLLP_VALUE
+#undef STM32_PLLQ_VALUE
+#undef STM32_PPRE1
+#undef STM32_PPRE2
+
+#define STM32_PLLM_VALUE 4
+#define STM32_PLLN_VALUE 168
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/mode/m75s/readme.md b/keyboards/mode/m75s/readme.md
new file mode 100644
index 0000000000..8ff9fb03b4
--- /dev/null
+++ b/keyboards/mode/m75s/readme.md
@@ -0,0 +1,17 @@
+# Mode SeventyFive M75S
+
+The M75S is the solderable PCB for the Mode SeventyFive keyboard, a seventy-five-percent high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
+
+- Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+- Hardware Supported: proprietary PCB using STM32F401 controller
+- Hardware Availability: you can get a Mode SeventyFive via when preorders open in 2022 [Mode Designs](https://shop.modedesigns.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mode/m75s:default
+
+Flashing example for this keyboard:
+
+ make mode/m75s:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mode/m75s/rules.mk b/keyboards/mode/m75s/rules.mk
new file mode 100644
index 0000000000..f7659378cc
--- /dev/null
+++ b/keyboards/mode/m75s/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+LTO_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/eighty/chconf.h b/keyboards/mode/m80v1/chconf.h
index fcc821b388..fcc821b388 100644
--- a/keyboards/mode/eighty/chconf.h
+++ b/keyboards/mode/m80v1/chconf.h
diff --git a/keyboards/mode/eighty/config.h b/keyboards/mode/m80v1/config.h
index d0c61d1193..d0c61d1193 100644
--- a/keyboards/mode/eighty/config.h
+++ b/keyboards/mode/m80v1/config.h
diff --git a/keyboards/mode/m80v1/halconf.h b/keyboards/mode/m80v1/halconf.h
new file mode 100644
index 0000000000..bd55942f8c
--- /dev/null
+++ b/keyboards/mode/m80v1/halconf.h
@@ -0,0 +1,19 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/eighty/m80h/config.h b/keyboards/mode/m80v1/m80h/config.h
index b119ad4fff..b119ad4fff 100644
--- a/keyboards/mode/eighty/m80h/config.h
+++ b/keyboards/mode/m80v1/m80h/config.h
diff --git a/keyboards/mode/eighty/m80h/info.json b/keyboards/mode/m80v1/m80h/info.json
index 97d5881997..97d5881997 100644
--- a/keyboards/mode/eighty/m80h/info.json
+++ b/keyboards/mode/m80v1/m80h/info.json
diff --git a/keyboards/mode/eighty/m80h/keymaps/default/keymap.c b/keyboards/mode/m80v1/m80h/keymaps/default/keymap.c
index 95c2008ad1..95c2008ad1 100644
--- a/keyboards/mode/eighty/m80h/keymaps/default/keymap.c
+++ b/keyboards/mode/m80v1/m80h/keymaps/default/keymap.c
diff --git a/keyboards/mode/eighty/m80h/keymaps/via/keymap.c b/keyboards/mode/m80v1/m80h/keymaps/via/keymap.c
index f2b74cb6ef..f2b74cb6ef 100644
--- a/keyboards/mode/eighty/m80h/keymaps/via/keymap.c
+++ b/keyboards/mode/m80v1/m80h/keymaps/via/keymap.c
diff --git a/keyboards/mode/m80v1/m80h/keymaps/via/rules.mk b/keyboards/mode/m80v1/m80h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m80v1/m80h/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/eighty/m80h/m80h.c b/keyboards/mode/m80v1/m80h/m80h.c
index 6213a91363..6213a91363 100644
--- a/keyboards/mode/eighty/m80h/m80h.c
+++ b/keyboards/mode/m80v1/m80h/m80h.c
diff --git a/keyboards/mode/m80v1/m80h/m80h.h b/keyboards/mode/m80v1/m80h/m80h.h
new file mode 100644
index 0000000000..f3f4c53889
--- /dev/null
+++ b/keyboards/mode/m80v1/m80h/m80h.h
@@ -0,0 +1,32 @@
+ /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#pragma once
+
+#include "m80v1.h"
+
+#define LAYOUT_eighty_m80h( \
+ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K415, K114, K115, K116, \
+ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
+ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K514, K314, K315, K316, \
+ K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
+ K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K515, \
+ K601, K602, K603, K607, K610, K611, K612, K613, K614, K615, K616 \
+) { \
+ { K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 , K115, K116 }, \
+ { K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 , K215, K216 }, \
+ { K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 , K315, K316 }, \
+ { K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415 , KC_NO }, \
+ { K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, KC_NO, K514 , K515, KC_NO }, \
+ { K601, K602, K603, KC_NO, KC_NO, KC_NO, K607, KC_NO, KC_NO, K610, K611, K612, K613, K614 , K615, K616 } \
+}
diff --git a/keyboards/mode/eighty/m80h/readme.md b/keyboards/mode/m80v1/m80h/readme.md
index 02a3723b68..02a3723b68 100644
--- a/keyboards/mode/eighty/m80h/readme.md
+++ b/keyboards/mode/m80v1/m80h/readme.md
diff --git a/keyboards/mode/m80v1/m80h/rules.mk b/keyboards/mode/m80v1/m80h/rules.mk
new file mode 100644
index 0000000000..56294f95fd
--- /dev/null
+++ b/keyboards/mode/m80v1/m80h/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/mode/eighty/m80s/config.h b/keyboards/mode/m80v1/m80s/config.h
index 3e7f2ec3a8..3e7f2ec3a8 100644
--- a/keyboards/mode/eighty/m80s/config.h
+++ b/keyboards/mode/m80v1/m80s/config.h
diff --git a/keyboards/mode/eighty/m80s/info.json b/keyboards/mode/m80v1/m80s/info.json
index c586614a78..c586614a78 100644
--- a/keyboards/mode/eighty/m80s/info.json
+++ b/keyboards/mode/m80v1/m80s/info.json
diff --git a/keyboards/mode/eighty/m80s/keymaps/default/keymap.c b/keyboards/mode/m80v1/m80s/keymaps/default/keymap.c
index 49fab527c5..49fab527c5 100644
--- a/keyboards/mode/eighty/m80s/keymaps/default/keymap.c
+++ b/keyboards/mode/m80v1/m80s/keymaps/default/keymap.c
diff --git a/keyboards/mode/eighty/m80s/keymaps/via/keymap.c b/keyboards/mode/m80v1/m80s/keymaps/via/keymap.c
index 6db2185949..6db2185949 100644
--- a/keyboards/mode/eighty/m80s/keymaps/via/keymap.c
+++ b/keyboards/mode/m80v1/m80s/keymaps/via/keymap.c
diff --git a/keyboards/mode/m80v1/m80s/keymaps/via/rules.mk b/keyboards/mode/m80v1/m80s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/eighty/m80s/m80s.c b/keyboards/mode/m80v1/m80s/m80s.c
index 1f532d0ce4..1f532d0ce4 100644
--- a/keyboards/mode/eighty/m80s/m80s.c
+++ b/keyboards/mode/m80v1/m80s/m80s.c
diff --git a/keyboards/mode/m80v1/m80s/m80s.h b/keyboards/mode/m80v1/m80s/m80s.h
new file mode 100644
index 0000000000..b5d1e4dd06
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/m80s.h
@@ -0,0 +1,32 @@
+ /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#pragma once
+
+#include "m80v1.h"
+
+#define LAYOUT_eighty_m80s( \
+ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K415, K114, K115, K116, \
+ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K414, K214, K215, K216, \
+ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K514, K314, K315, K316, \
+ K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, \
+ K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K515, \
+ K601, K602, K603, K607, K610, K611, K612, K613, K614, K615, K616 \
+) { \
+ { K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
+ { K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
+ { K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316 }, \
+ { K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415 , KC_NO }, \
+ { K501, K502, K503, K504, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, KC_NO }, \
+ { K601, K602, K603, KC_NO, KC_NO, KC_NO, K607, KC_NO, KC_NO, K610, K611, K612, K613, K614, K615, K616 } \
+}
diff --git a/keyboards/mode/eighty/m80s/readme.md b/keyboards/mode/m80v1/m80s/readme.md
index 408401b565..408401b565 100644
--- a/keyboards/mode/eighty/m80s/readme.md
+++ b/keyboards/mode/m80v1/m80s/readme.md
diff --git a/keyboards/mode/m80v1/m80s/rules.mk b/keyboards/mode/m80v1/m80s/rules.mk
new file mode 100644
index 0000000000..56294f95fd
--- /dev/null
+++ b/keyboards/mode/m80v1/m80s/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/mode/m80v1/m80v1.c b/keyboards/mode/m80v1/m80v1.c
new file mode 100644
index 0000000000..225ed9cc8d
--- /dev/null
+++ b/keyboards/mode/m80v1/m80v1.c
@@ -0,0 +1,14 @@
+ /* Copyright 2020 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include "m80v1.h"
diff --git a/keyboards/mode/m80v1/m80v1.h b/keyboards/mode/m80v1/m80v1.h
new file mode 100644
index 0000000000..704ea28439
--- /dev/null
+++ b/keyboards/mode/m80v1/m80v1.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_mode_m80v1_m80h)
+ #include "m80h.h"
+#elif defined(KEYBOARD_mode_m80v1_m80s)
+ #include "m80s.h"
+#endif // Mode80 solderable "S" and hotswap "H" revisions
diff --git a/keyboards/mode/eighty/mcuconf.h b/keyboards/mode/m80v1/mcuconf.h
index e1aaa8df3f..e1aaa8df3f 100644
--- a/keyboards/mode/eighty/mcuconf.h
+++ b/keyboards/mode/m80v1/mcuconf.h
diff --git a/keyboards/mode/m80v1/readme.md b/keyboards/mode/m80v1/readme.md
new file mode 100644
index 0000000000..5435a02e61
--- /dev/null
+++ b/keyboards/mode/m80v1/readme.md
@@ -0,0 +1,38 @@
+# Mode Eighty V1 PCB QMK firmware
+
+![MODE80](https://i.imgur.com/26uzM3yl.jpg)\
+[Image Gallery](https://imgur.com/t/mechanicalkeyboards/8Uf6c2m?nc=1)
+
+The Mode80 is a tenkeyless high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Supported: proprietary PCB using STM32F072 controller
+* Hardware Availability: the Mode Eighty V1 was discontinued in 2021 in favour of its second revisions. You can still buy hardware (PCBs and plates) at the Mode Designs website.
+
+## How to flash
+
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (ESC key at layer 1 in the default layout)
+
+## Compile firmware
+
+After accessing the DFU state in your PCB, build the default layout using:
+
+ make mode/m80v1/m80h:default # Hotswap
+ make mode/m80v1/m80s:default # Soldered
+
+Then download the resulting binary `*bin` file using `dfu-util` or QMK Toolbox.
+
+## Compile and flash
+
+After accessing the DFU state in your PCB, you can compile-and-flash automatically usind `dfu-util` through
+
+ make mode/m80v1/m80h:default:flash # Hotswap
+ make mode/m80v1/m80s:default:flash # Soldered
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mode/m80v2/chconf.h b/keyboards/mode/m80v2/chconf.h
new file mode 100644
index 0000000000..cbbae31079
--- /dev/null
+++ b/keyboards/mode/m80v2/chconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mode/m80v2/config.h b/keyboards/mode/m80v2/config.h
new file mode 100644
index 0000000000..fbe5fb86df
--- /dev/null
+++ b/keyboards/mode/m80v2/config.h
@@ -0,0 +1,45 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x00DE
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Mode
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B12, B13, B14, B3, B4, B9 }
+#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, B0, B1, B10, A8, A10, B15, A15, B5, B8, C13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define LED_CAPS_LOCK_PIN A0
diff --git a/keyboards/mode/m80v2/halconf.h b/keyboards/mode/m80v2/halconf.h
new file mode 100644
index 0000000000..3aeb26b0e7
--- /dev/null
+++ b/keyboards/mode/m80v2/halconf.h
@@ -0,0 +1,18 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include_next <halconf.h>
diff --git a/keyboards/mode/m80v2/m80v2.c b/keyboards/mode/m80v2/m80v2.c
new file mode 100644
index 0000000000..faad98b7a7
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2.c
@@ -0,0 +1,18 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m80v2.h"
diff --git a/keyboards/mode/m80v2/m80v2.h b/keyboards/mode/m80v2/m80v2.h
new file mode 100644
index 0000000000..c00f148e62
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_mode_m80v2_m80v2h)
+ #include "m80v2h.h"
+#elif defined(KEYBOARD_mode_m80v2_m80v2s)
+ #include "m80v2s.h"
+#endif
diff --git a/keyboards/mode/m80v2/m80v2h/config.h b/keyboards/mode/m80v2/m80v2h/config.h
new file mode 100644
index 0000000000..f474e28453
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/config.h
@@ -0,0 +1,2 @@
+#define PRODUCT_ID 0x0083 // 81 was used for M80H V1
+#define PRODUCT M80H V2
diff --git a/keyboards/mode/m80v2/m80v2h/info.json b/keyboards/mode/m80v2/m80v2h/info.json
new file mode 100644
index 0000000000..251937c562
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "MODE80V2H",
+ "url": "https://shop.modedesigns.com/collections/eighty",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_m80v2h": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Bkspc", "x":13, "y":1.5, "w": 2},
+ {"label":"Mute", "x":15.25, "y":0},
+ {"label":"VolDn", "x":16.25, "y":0},
+ {"label":"VolUp", "x":17.25, "y":0},
+ {"label":"~", "x":0, "y":1.5},
+ {"label":"1", "x":1, "y":1.5},
+ {"label":"2", "x":2, "y":1.5},
+ {"label":"3", "x":3, "y":1.5},
+ {"label":"4", "x":4, "y":1.5},
+ {"label":"5", "x":5, "y":1.5},
+ {"label":"6", "x":6, "y":1.5},
+ {"label":"7", "x":7, "y":1.5},
+ {"label":"8", "x":8, "y":1.5},
+ {"label":"9", "x":9, "y":1.5},
+ {"label":"0", "x":10, "y":1.5},
+ {"label":"_", "x":11, "y":1.5},
+ {"label":"+", "x":12, "y":1.5},
+ {"label":"Insert", "x":15.25, "y":1.5},
+ {"label":"Home", "x":16.25, "y":1.5},
+ {"label":"PgUp", "x":17.25, "y":1.5},
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"{", "x":11.5, "y":2.5},
+ {"label":"}", "x":12.5, "y":2.5},
+ {"label":"|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.5},
+ {"label":"End", "x":16.25, "y":2.5},
+ {"label":"PgDn", "x":17.25, "y":2.5},
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":":", "x":10.75, "y":3.5},
+ {"label":"\"", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",", "x":9.25, "y":4.5},
+ {"label":".", "x":10.25, "y":4.5},
+ {"label":"/", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.5},
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"FN1", "x":12.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.5},
+ {"label":"\u2193", "x":16.25, "y":5.5},
+ {"label":"\u2192", "x":17.25, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/mode/m80v2/m80v2h/keymaps/default/keymap.c b/keyboards/mode/m80v2/m80v2h/keymaps/default/keymap.c
new file mode 100755
index 0000000000..f65309dfc7
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_m80v2h(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_MUTE, KC_VOLD , KC_VOLU ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_INS , KC_HOME , KC_PGUP ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_m80v2h(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_m80v2h(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_m80v2h(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/mode/m80v2/m80v2h/keymaps/via/keymap.c b/keyboards/mode/m80v2/m80v2h/keymaps/via/keymap.c
new file mode 100755
index 0000000000..f65309dfc7
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_m80v2h(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_MUTE, KC_VOLD , KC_VOLU ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_INS , KC_HOME , KC_PGUP ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_m80v2h(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_m80v2h(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_m80v2h(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/mode/m80v2/m80v2h/keymaps/via/rules.mk b/keyboards/mode/m80v2/m80v2h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m80v2/m80v2h/m80v2h.c b/keyboards/mode/m80v2/m80v2h/m80v2h.c
new file mode 100644
index 0000000000..0d4e533c30
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/m80v2h.c
@@ -0,0 +1,18 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m80v2h.h"
diff --git a/keyboards/mode/m80v2/m80v2h/m80v2h.h b/keyboards/mode/m80v2/m80v2h/m80v2h.h
new file mode 100644
index 0000000000..6a21b8cecc
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/m80v2h.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "m80v2.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_m80v2h( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+)\
+{\
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/mode/m80v2/m80v2h/rules.mk b/keyboards/mode/m80v2/m80v2h/rules.mk
new file mode 100644
index 0000000000..5422160c87
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2h/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/m80v2/m80v2s/config.h b/keyboards/mode/m80v2/m80v2s/config.h
new file mode 100644
index 0000000000..ad1871f8ab
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/config.h
@@ -0,0 +1,2 @@
+#define PRODUCT_ID 0x0082 // 81 was used for M80H V1
+#define PRODUCT M80S V2
diff --git a/keyboards/mode/m80v2/m80v2s/info.json b/keyboards/mode/m80v2/m80v2s/info.json
new file mode 100644
index 0000000000..6e0bd62d51
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/info.json
@@ -0,0 +1,101 @@
+{
+ "keyboard_name": "MODE80V2S",
+ "url": "https://shop.modedesigns.com/collections/eighty",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_m80v2s": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label": "LBkspc", "x":13, "y":1.5},
+ {"label":"Mute", "x":15.25, "y":0},
+ {"label":"VolDn", "x":16.25, "y":0},
+ {"label":"VolUp", "x":17.25, "y":0},
+ {"label":"~", "x":0, "y":1.5},
+ {"label":"1", "x":1, "y":1.5},
+ {"label":"2", "x":2, "y":1.5},
+ {"label":"3", "x":3, "y":1.5},
+ {"label":"4", "x":4, "y":1.5},
+ {"label":"5", "x":5, "y":1.5},
+ {"label":"6", "x":6, "y":1.5},
+ {"label":"7", "x":7, "y":1.5},
+ {"label":"8", "x":8, "y":1.5},
+ {"label":"9", "x":9, "y":1.5},
+ {"label":"0", "x":10, "y":1.5},
+ {"label":"_", "x":11, "y":1.5},
+ {"label":"+", "x":12, "y":1.5},
+ {"label": "RBkspc", "x":14, "y":1.5},
+ {"label":"Insert", "x":15.25, "y":1.5},
+ {"label":"Home", "x":16.25, "y":1.5},
+ {"label":"PgUp", "x":17.25, "y":1.5},
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"{", "x":11.5, "y":2.5},
+ {"label":"}", "x":12.5, "y":2.5},
+ {"label":"|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.5},
+ {"label":"End", "x":16.25, "y":2.5},
+ {"label":"PgDn", "x":17.25, "y":2.5},
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":":", "x":10.75, "y":3.5},
+ {"label":"\"", "x":11.75, "y":3.5},
+ {"label":"NUBS", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"Shift", "x":0, "y":4.5, "w":1.25},
+ {"label":"NUHS", "x":1.25, "y":4.5},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",", "x":9.25, "y":4.5},
+ {"label":".", "x":10.25, "y":4.5},
+ {"label":"/", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"FN1", "x":14, "y":4.5},
+ {"label":"\u2191", "x":16.25, "y":4.5},
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Win", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"FN1", "x":12.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.5},
+ {"label":"\u2193", "x":16.25, "y":5.5},
+ {"label":"\u2192", "x":17.25, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/mode/m80v2/m80v2s/keymaps/default/keymap.c b/keyboards/mode/m80v2/m80v2s/keymaps/default/keymap.c
new file mode 100755
index 0000000000..fcb05df0cf
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_m80v2s(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_MUTE, KC_VOLD , KC_VOLU ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME , KC_PGUP ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT ,
+ KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_m80v2s(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_m80v2s(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_m80v2s(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m80v2/m80v2s/keymaps/via/keymap.c b/keyboards/mode/m80v2/m80v2s/keymaps/via/keymap.c
new file mode 100755
index 0000000000..fcb05df0cf
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_m80v2s(
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_MUTE, KC_VOLD , KC_VOLU ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME , KC_PGUP ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT ,
+ KC_LSFT, KC_BSLS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , KC_UP ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_m80v2s(
+ RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_m80v2s(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_m80v2s(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/mode/m80v2/m80v2s/keymaps/via/rules.mk b/keyboards/mode/m80v2/m80v2s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mode/m80v2/m80v2s/m80v2s.c b/keyboards/mode/m80v2/m80v2s/m80v2s.c
new file mode 100644
index 0000000000..7be89b1288
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/m80v2s.c
@@ -0,0 +1,18 @@
+/*
+ Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "m80v2s.h"
diff --git a/keyboards/mode/m80v2/m80v2s/m80v2s.h b/keyboards/mode/m80v2/m80v2s/m80v2s.h
new file mode 100644
index 0000000000..440b54583a
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/m80v2s.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "m80v2.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_m80v2s( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+)\
+{\
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/mode/m80v2/m80v2s/rules.mk b/keyboards/mode/m80v2/m80v2s/rules.mk
new file mode 100644
index 0000000000..5422160c87
--- /dev/null
+++ b/keyboards/mode/m80v2/m80v2s/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE -DDEBUG_EEPROM_OUTPUT=TRUE
diff --git a/keyboards/mode/m80v2/mcuconf.h b/keyboards/mode/m80v2/mcuconf.h
new file mode 100644
index 0000000000..6d5ee13d30
--- /dev/null
+++ b/keyboards/mode/m80v2/mcuconf.h
@@ -0,0 +1,19 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
diff --git a/keyboards/mode/m80v2/readme.md b/keyboards/mode/m80v2/readme.md
new file mode 100644
index 0000000000..e94984f06b
--- /dev/null
+++ b/keyboards/mode/m80v2/readme.md
@@ -0,0 +1,38 @@
+# Mode Eighty V2 PCB QMK firmware
+
+![MODE80](https://i.imgur.com/26uzM3yl.jpg)\
+[Image Gallery](https://imgur.com/t/mechanicalkeyboards/8Uf6c2m?nc=1)
+
+The Mode80 is a tenkeyless high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Supported: proprietary PCB using STM32F072 controller
+* Hardware Availability: you can get a Mode Eighty as of today (dec. 2021) through the in stock sales or special groupbuy editions at https://shop.modedesigns.com/
+
+## How to flash
+
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available (ESC key at layer 1 in the default layout)
+
+## Compile firmware
+
+After accessing the DFU state in your PCB, build the default layout using:
+
+ make mode/m80v2/m80v2h:default # Hotswap
+ make mode/m80v2/m80v2s:default # Soldered
+
+Then download the resulting binary `*bin` file using `dfu-util` or QMK Toolbox.
+
+## Compile and flash
+
+After accessing the DFU state in your PCB, you can compile-and-flash automatically usind `dfu-util` through
+
+ make mode/m80v2/m80v2h:default:flash # Hotswap
+ make mode/m80v2/m80v2s:default:flash # Soldered
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/model_v/rules.mk b/keyboards/model_v/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/model_v/rules.mk
+++ b/keyboards/model_v/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/ginkgo65/rules.mk b/keyboards/mokey/ginkgo65/rules.mk
index 807d606d83..25fcaeb03c 100644
--- a/keyboards/mokey/ginkgo65/rules.mk
+++ b/keyboards/mokey/ginkgo65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/ginkgo65hot/config.h b/keyboards/mokey/ginkgo65hot/config.h
new file mode 100644
index 0000000000..5b73c4dc98
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/config.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 Kyle McCreery
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6653
+#define PRODUCT_ID 0x3366
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mokey
+#define PRODUCT ginkgo65hot
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { F7, B7, F5, F1, B0 }
+#define MATRIX_COL_PINS { C7, F6, B2, F4, B3, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
+#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_CAPS_LOCK
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 5
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/mokey/ginkgo65hot/ginkgo65hot.c b/keyboards/mokey/ginkgo65hot/ginkgo65hot.c
new file mode 100644
index 0000000000..1db0f9c22d
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/ginkgo65hot.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "ginkgo65hot.h"
+
diff --git a/keyboards/mokey/ginkgo65hot/ginkgo65hot.h b/keyboards/mokey/ginkgo65hot/ginkgo65hot.h
new file mode 100644
index 0000000000..1a599291b8
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/ginkgo65hot.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Ocean
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/*LAYOUT
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│ k0D │k0E│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ k1D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│ k2D │k2E│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ k30 │k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E }, \
+}
diff --git a/keyboards/mokey/ginkgo65hot/info.json b/keyboards/mokey/ginkgo65hot/info.json
new file mode 100644
index 0000000000..e2e96c167c
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "ginkgo65hot",
+ "url": "",
+ "maintainer": "mokey",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0, "w":2},
+ {"label":"k0e", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k1d", "x":13.5, "y":1, "w":1.5},
+ {"label":"k1e", "x":15, "y":1},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k2d", "x":12.75, "y":2, "w":2.25},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":2.25},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k44", "x":3.75, "y":4, "w":6.25},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/mokey/ginkgo65hot/keymaps/default/keymap.c b/keyboards/mokey/ginkgo65hot/keymaps/default/keymap.c
new file mode 100644
index 0000000000..df49aef256
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspace │Ins│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │PgD│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mokey/ginkgo65hot/keymaps/via/keymap.c b/keyboards/mokey/ginkgo65hot/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a8d5162e7e
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ BL_TOGG, BL_STEP, BL_DEC, BL_INC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mokey/ginkgo65hot/keymaps/via/rules.mk b/keyboards/mokey/ginkgo65hot/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mokey/ginkgo65hot/readme.md b/keyboards/mokey/ginkgo65hot/readme.md
new file mode 100644
index 0000000000..b3aa7ab562
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/readme.md
@@ -0,0 +1,20 @@
+# Ginkgo65hot Multi PCB
+
+![Ginkgo65hot](https://i.imgur.com/ty0prrR.png)
+
+Support Atmega32u4 keyboard,With a variety of configurations
+
+* Keyboard Maintainer: [mokey](https://github.com/rhmokey)
+* Hardware Supported: Atmega32u4
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mokey/ginkgo65hot:default
+
+Flashing example for this keyboard:
+
+ make mokey/ginkgo65hot:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/mokey/ginkgo65hot/rules.mk b/keyboards/mokey/ginkgo65hot/rules.mk
new file mode 100644
index 0000000000..02fbe72525
--- /dev/null
+++ b/keyboards/mokey/ginkgo65hot/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/mokey63/rules.mk b/keyboards/mokey/mokey63/rules.mk
index 3105d59b77..a61e60c8a4 100644
--- a/keyboards/mokey/mokey63/rules.mk
+++ b/keyboards/mokey/mokey63/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/mokey64/rules.mk b/keyboards/mokey/mokey64/rules.mk
index 22bcad10df..79ef16449d 100644
--- a/keyboards/mokey/mokey64/rules.mk
+++ b/keyboards/mokey/mokey64/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/xox70/info.json b/keyboards/mokey/xox70/info.json
index 95089f6fc3..5baa620bc6 100644
--- a/keyboards/mokey/xox70/info.json
+++ b/keyboards/mokey/xox70/info.json
@@ -3,245 +3,428 @@
"url": "",
"maintainer": "Mokey",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_all": {
"layout": [
- {"label":"k00", "x":0, "y":0},
- {"label":"k01", "x":1, "y":0},
- {"label":"k02", "x":2, "y":0},
- {"label":"k03", "x":3, "y":0},
- {"label":"k04", "x":4, "y":0},
- {"label":"k05", "x":5, "y":0},
- {"label":"k06", "x":6, "y":0},
- {"label":"k07", "x":7, "y":0},
- {"label":"k08", "x":8, "y":0},
- {"label":"k09", "x":9, "y":0},
- {"label":"k0a", "x":10, "y":0},
- {"label":"k0b", "x":11, "y":0},
- {"label":"k0c", "x":12, "y":0},
- {"label":"k0e", "x":13, "y":0, "w":2},
- {"label":"k0f", "x":15.25, "y":0},
- {"label":"k0g", "x":16.25, "y":0},
- {"label":"k0h", "x":17.25, "y":0},
-
- {"label":"k10", "x":0, "y":1, "w":1.5},
- {"label":"k12", "x":1.5, "y":1},
- {"label":"k13", "x":2.5, "y":1},
- {"label":"k14", "x":3.5, "y":1},
- {"label":"k15", "x":4.5, "y":1},
- {"label":"k16", "x":5.5, "y":1},
- {"label":"k17", "x":6.5, "y":1},
- {"label":"k18", "x":7.5, "y":1},
- {"label":"k19", "x":8.5, "y":1},
- {"label":"k1a", "x":9.5, "y":1},
- {"label":"k1b", "x":10.5, "y":1},
- {"label":"k1c", "x":11.5, "y":1},
- {"label":"k1d", "x":12.5, "y":1},
- {"label":"k1e", "x":13.5, "y":1, "w":1.5},
- {"label":"k1f", "x":15.25, "y":1},
- {"label":"k1g", "x":16.25, "y":1},
- {"label":"k1h", "x":17.25, "y":1},
-
- {"label":"k20", "x":0, "y":2, "w":1.75},
- {"label":"k22", "x":1.75, "y":2},
- {"label":"k23", "x":2.75, "y":2},
- {"label":"k24", "x":3.75, "y":2},
- {"label":"k25", "x":4.75, "y":2},
- {"label":"k26", "x":5.75, "y":2},
- {"label":"k27", "x":6.75, "y":2},
- {"label":"k28", "x":7.75, "y":2},
- {"label":"k29", "x":8.75, "y":2},
- {"label":"k2a", "x":9.75, "y":2},
- {"label":"k2b", "x":10.75, "y":2},
- {"label":"k2c", "x":11.75, "y":2},
- {"label":"k2d", "x":12.75, "y":2, "w":2.25},
-
- {"label":"k30", "x":0, "y":3, "w":2.25},
- {"label":"k32", "x":2.25, "y":3},
- {"label":"k33", "x":3.25, "y":3},
- {"label":"k34", "x":4.25, "y":3},
- {"label":"k35", "x":5.25, "y":3},
- {"label":"k36", "x":6.25, "y":3},
- {"label":"k37", "x":7.25, "y":3},
- {"label":"k38", "x":8.25, "y":3},
- {"label":"k39", "x":9.25, "y":3},
- {"label":"k3a", "x":10.25, "y":3},
- {"label":"k3b", "x":11.25, "y":3},
- {"label":"k3d", "x":12.25, "y":3, "w":2.75},
- {"label":"k3g", "x":16.25, "y":3},
-
- {"label":"k40", "x":0, "y":4, "w":1.25},
- {"label":"k41", "x":1.25, "y":4, "w":1.25},
- {"label":"k43", "x":2.5, "y":4, "w":1.25},
- {"label":"k46", "x":3.75, "y":4, "w":6.25},
- {"label":"k4a", "x":10, "y":4, "w":1.25},
- {"label":"k4b", "x":11.25, "y":4, "w":1.25},
- {"label":"k4d", "x":12.5, "y":4, "w":1.25},
- {"label":"k4e", "x":13.75, "y":4, "w":1.25},
- {"label":"k4f", "x":15.25, "y":4},
- {"label":"k4g", "x":16.25, "y":4},
- {"label":"k4h", "x":17.25, "y":4}
+ {"label":"k00", "x": 0, "y": 0},
+ {"label":"k01", "x": 1, "y": 0},
+ {"label":"k02", "x": 2, "y": 0},
+ {"label":"k03", "x": 3, "y": 0},
+ {"label":"k04", "x": 4, "y": 0},
+ {"label":"k05", "x": 5, "y": 0},
+ {"label":"k06", "x": 6, "y": 0},
+ {"label":"k07", "x": 7, "y": 0},
+ {"label":"k08", "x": 8, "y": 0},
+ {"label":"k09", "x": 9, "y": 0},
+ {"label":"k0A", "x": 10, "y": 0},
+ {"label":"k0B", "x": 11, "y": 0},
+ {"label":"k0C", "x": 12, "y": 0},
+ {"label":"k0D", "x": 13, "y": 0},
+ {"label":"k0E", "x": 14, "y": 0},
+
+ {"label":"k0F", "x": 15.25, "y": 0},
+ {"label":"k0G", "x": 16.25, "y": 0},
+ {"label":"k0H", "x": 17.25, "y": 0},
+
+ {"label":"k10", "x": 0, "y": 1, "w": 1.5},
+ {"label":"k12", "x": 1.5, "y": 1},
+ {"label":"k13", "x": 2.5, "y": 1},
+ {"label":"k14", "x": 3.5, "y": 1},
+ {"label":"k15", "x": 4.5, "y": 1},
+ {"label":"k16", "x": 5.5, "y": 1},
+ {"label":"k17", "x": 6.5, "y": 1},
+ {"label":"k18", "x": 7.5, "y": 1},
+ {"label":"k19", "x": 8.5, "y": 1},
+ {"label":"k1A", "x": 9.5, "y": 1},
+ {"label":"k1B", "x": 10.5, "y": 1},
+ {"label":"k1C", "x": 11.5, "y": 1},
+ {"label":"k1D", "x": 12.5, "y": 1},
+ {"label":"k1E", "x": 13.5, "y": 1, "w": 1.5},
+
+ {"label":"k1F", "x": 15.25, "y": 1},
+ {"label":"k1G", "x": 16.25, "y": 1},
+ {"label":"k1H", "x": 17.25, "y": 1},
+
+ {"label":"k20", "x": 0, "y": 2, "w": 1.75},
+ {"label":"k22", "x": 1.75, "y": 2},
+ {"label":"k23", "x": 2.75, "y": 2},
+ {"label":"k24", "x": 3.75, "y": 2},
+ {"label":"k25", "x": 4.75, "y": 2},
+ {"label":"k26", "x": 5.75, "y": 2},
+ {"label":"k27", "x": 6.75, "y": 2},
+ {"label":"k28", "x": 7.75, "y": 2},
+ {"label":"k29", "x": 8.75, "y": 2},
+ {"label":"k2A", "x": 9.75, "y": 2},
+ {"label":"k2B", "x": 10.75, "y": 2},
+ {"label":"k2C", "x": 11.75, "y": 2},
+ {"label":"k2D", "x": 12.75, "y": 2, "w": 2.25},
+
+ {"label":"k30", "x": 0, "y": 3, "w": 1.25},
+ {"label":"k31", "x": 1.25, "y": 3},
+ {"label":"k32", "x": 2.25, "y": 3},
+ {"label":"k33", "x": 3.25, "y": 3},
+ {"label":"k34", "x": 4.25, "y": 3},
+ {"label":"k35", "x": 5.25, "y": 3},
+ {"label":"k36", "x": 6.25, "y": 3},
+ {"label":"k37", "x": 7.25, "y": 3},
+ {"label":"k38", "x": 8.25, "y": 3},
+ {"label":"k39", "x": 9.25, "y": 3},
+ {"label":"k3A", "x": 10.25, "y": 3},
+ {"label":"k3B", "x": 11.25, "y": 3},
+ {"label":"k3D", "x": 12.25, "y": 3, "w": 1.75},
+ {"label":"k3E", "x": 14, "y": 3},
+
+ {"label":"k3G", "x": 16.25, "y": 3},
+
+ {"label":"k40", "x": 0, "y": 4, "w": 1.5},
+ {"label":"k41", "x": 1.5, "y": 4},
+ {"label":"k43", "x": 2.5, "y": 4, "w": 1.5},
+ {"label":"k44", "x": 4, "y": 4, "w": 2.5},
+ {"label":"k46", "x": 6.5, "y": 4},
+ {"label":"k48", "x": 7.5, "y": 4, "w": 2.5},
+ {"label":"k4A", "x": 10, "y": 4, "w": 1.25},
+ {"label":"k4B", "x": 11.25, "y": 4, "w": 1.25},
+ {"label":"k4D", "x": 12.5, "y": 4, "w": 1.25},
+ {"label":"k4E", "x": 13.75, "y": 4, "w": 1.25},
+
+ {"label":"k4F", "x": 15.25, "y": 4},
+ {"label":"k4G", "x": 16.25, "y": 4},
+ {"label":"k4H", "x": 17.25, "y": 4}
+ ]
+ },
+ "LAYOUT_tkl_nofrow_ansi": {
+ "layout": [
+ {"label":"k00", "x": 0, "y": 0},
+ {"label":"k01", "x": 1, "y": 0},
+ {"label":"k02", "x": 2, "y": 0},
+ {"label":"k03", "x": 3, "y": 0},
+ {"label":"k04", "x": 4, "y": 0},
+ {"label":"k05", "x": 5, "y": 0},
+ {"label":"k06", "x": 6, "y": 0},
+ {"label":"k07", "x": 7, "y": 0},
+ {"label":"k08", "x": 8, "y": 0},
+ {"label":"k09", "x": 9, "y": 0},
+ {"label":"k0A", "x": 10, "y": 0},
+ {"label":"k0B", "x": 11, "y": 0},
+ {"label":"k0C", "x": 12, "y": 0},
+ {"label":"k0E", "x": 13, "y": 0, "w": 2},
+
+ {"label":"k0F", "x": 15.25, "y": 0},
+ {"label":"k0G", "x": 16.25, "y": 0},
+ {"label":"k0H", "x": 17.25, "y": 0},
+
+ {"label":"k10", "x": 0, "y": 1, "w": 1.5},
+ {"label":"k12", "x": 1.5, "y": 1},
+ {"label":"k13", "x": 2.5, "y": 1},
+ {"label":"k14", "x": 3.5, "y": 1},
+ {"label":"k15", "x": 4.5, "y": 1},
+ {"label":"k16", "x": 5.5, "y": 1},
+ {"label":"k17", "x": 6.5, "y": 1},
+ {"label":"k18", "x": 7.5, "y": 1},
+ {"label":"k19", "x": 8.5, "y": 1},
+ {"label":"k1A", "x": 9.5, "y": 1},
+ {"label":"k1B", "x": 10.5, "y": 1},
+ {"label":"k1C", "x": 11.5, "y": 1},
+ {"label":"k1D", "x": 12.5, "y": 1},
+ {"label":"k1E", "x": 13.5, "y": 1, "w": 1.5},
+
+ {"label":"k1F", "x": 15.25, "y": 1},
+ {"label":"k1G", "x": 16.25, "y": 1},
+ {"label":"k1H", "x": 17.25, "y": 1},
+
+ {"label":"k20", "x": 0, "y": 2, "w": 1.75},
+ {"label":"k22", "x": 1.75, "y": 2},
+ {"label":"k23", "x": 2.75, "y": 2},
+ {"label":"k24", "x": 3.75, "y": 2},
+ {"label":"k25", "x": 4.75, "y": 2},
+ {"label":"k26", "x": 5.75, "y": 2},
+ {"label":"k27", "x": 6.75, "y": 2},
+ {"label":"k28", "x": 7.75, "y": 2},
+ {"label":"k29", "x": 8.75, "y": 2},
+ {"label":"k2A", "x": 9.75, "y": 2},
+ {"label":"k2B", "x": 10.75, "y": 2},
+ {"label":"k2C", "x": 11.75, "y": 2},
+ {"label":"k2D", "x": 12.75, "y": 2, "w": 2.25},
+
+ {"label":"k30", "x": 0, "y": 3, "w": 2.25},
+ {"label":"k32", "x": 2.25, "y": 3},
+ {"label":"k33", "x": 3.25, "y": 3},
+ {"label":"k34", "x": 4.25, "y": 3},
+ {"label":"k35", "x": 5.25, "y": 3},
+ {"label":"k36", "x": 6.25, "y": 3},
+ {"label":"k37", "x": 7.25, "y": 3},
+ {"label":"k38", "x": 8.25, "y": 3},
+ {"label":"k39", "x": 9.25, "y": 3},
+ {"label":"k3A", "x": 10.25, "y": 3},
+ {"label":"k3B", "x": 11.25, "y": 3},
+ {"label":"k3D", "x": 12.25, "y": 3, "w": 2.75},
+
+ {"label":"k3G", "x": 16.25, "y": 3},
+
+ {"label":"k40", "x": 0, "y": 4, "w": 1.25},
+ {"label":"k41", "x": 1.25, "y": 4, "w": 1.25},
+ {"label":"k43", "x": 2.5, "y": 4, "w": 1.25},
+ {"label":"k46", "x": 3.75, "y": 4, "w": 6.25},
+ {"label":"k4A", "x": 10, "y": 4, "w": 1.25},
+ {"label":"k4B", "x": 11.25, "y": 4, "w": 1.25},
+ {"label":"k4D", "x": 12.5, "y": 4, "w": 1.25},
+ {"label":"k4E", "x": 13.75, "y": 4, "w": 1.25},
+
+ {"label":"k4F", "x": 15.25, "y": 4},
+ {"label":"k4G", "x": 16.25, "y": 4},
+ {"label":"k4H", "x": 17.25, "y": 4}
+ ]
+ },
+ "LAYOUT_tkl_nofrow_iso": {
+ "layout": [
+ {"label":"k00", "x": 0, "y": 0},
+ {"label":"k01", "x": 1, "y": 0},
+ {"label":"k02", "x": 2, "y": 0},
+ {"label":"k03", "x": 3, "y": 0},
+ {"label":"k04", "x": 4, "y": 0},
+ {"label":"k05", "x": 5, "y": 0},
+ {"label":"k06", "x": 6, "y": 0},
+ {"label":"k07", "x": 7, "y": 0},
+ {"label":"k08", "x": 8, "y": 0},
+ {"label":"k09", "x": 9, "y": 0},
+ {"label":"k0A", "x": 10, "y": 0},
+ {"label":"k0B", "x": 11, "y": 0},
+ {"label":"k0C", "x": 12, "y": 0},
+ {"label":"k0E", "x": 13, "y": 0, "w": 2},
+
+ {"label":"k0F", "x": 15.25, "y": 0},
+ {"label":"k0G", "x": 16.25, "y": 0},
+ {"label":"k0H", "x": 17.25, "y": 0},
+
+ {"label":"k10", "x": 0, "y": 1, "w": 1.5},
+ {"label":"k12", "x": 1.5, "y": 1},
+ {"label":"k13", "x": 2.5, "y": 1},
+ {"label":"k14", "x": 3.5, "y": 1},
+ {"label":"k15", "x": 4.5, "y": 1},
+ {"label":"k16", "x": 5.5, "y": 1},
+ {"label":"k17", "x": 6.5, "y": 1},
+ {"label":"k18", "x": 7.5, "y": 1},
+ {"label":"k19", "x": 8.5, "y": 1},
+ {"label":"k1A", "x": 9.5, "y": 1},
+ {"label":"k1B", "x": 10.5, "y": 1},
+ {"label":"k1C", "x": 11.5, "y": 1},
+ {"label":"k1D", "x": 12.5, "y": 1},
+
+ {"label":"k1F", "x": 15.25, "y": 1},
+ {"label":"k1G", "x": 16.25, "y": 1},
+ {"label":"k1H", "x": 17.25, "y": 1},
+
+ {"label":"k20", "x": 0, "y": 2, "w": 1.75},
+ {"label":"k22", "x": 1.75, "y": 2},
+ {"label":"k23", "x": 2.75, "y": 2},
+ {"label":"k24", "x": 3.75, "y": 2},
+ {"label":"k25", "x": 4.75, "y": 2},
+ {"label":"k26", "x": 5.75, "y": 2},
+ {"label":"k27", "x": 6.75, "y": 2},
+ {"label":"k28", "x": 7.75, "y": 2},
+ {"label":"k29", "x": 8.75, "y": 2},
+ {"label":"k2A", "x": 9.75, "y": 2},
+ {"label":"k2B", "x": 10.75, "y": 2},
+ {"label":"k2C", "x": 11.75, "y": 2},
+ {"label":"k1E", "x": 12.75, "y": 2},
+ {"label":"k2D", "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+
+ {"label":"k30", "x": 0, "y": 3, "w": 1.25},
+ {"label":"k31", "x": 1.25, "y": 3},
+ {"label":"k32", "x": 2.25, "y": 3},
+ {"label":"k33", "x": 3.25, "y": 3},
+ {"label":"k34", "x": 4.25, "y": 3},
+ {"label":"k35", "x": 5.25, "y": 3},
+ {"label":"k36", "x": 6.25, "y": 3},
+ {"label":"k37", "x": 7.25, "y": 3},
+ {"label":"k38", "x": 8.25, "y": 3},
+ {"label":"k39", "x": 9.25, "y": 3},
+ {"label":"k3A", "x": 10.25, "y": 3},
+ {"label":"k3B", "x": 11.25, "y": 3},
+ {"label":"k3D", "x": 12.25, "y": 3, "w": 2.75},
+
+ {"label":"k3G", "x": 16.25, "y": 3},
+
+ {"label":"k40", "x": 0, "y": 4, "w": 1.25},
+ {"label":"k41", "x": 1.25, "y": 4, "w": 1.25},
+ {"label":"k43", "x": 2.5, "y": 4, "w": 1.25},
+ {"label":"k46", "x": 3.75, "y": 4, "w": 6.25},
+ {"label":"k4A", "x": 10, "y": 4, "w": 1.25},
+ {"label":"k4B", "x": 11.25, "y": 4, "w": 1.25},
+ {"label":"k4D", "x": 12.5, "y": 4, "w": 1.25},
+ {"label":"k4E", "x": 13.75, "y": 4, "w": 1.25},
+
+ {"label":"k4F", "x": 15.25, "y": 4},
+ {"label":"k4G", "x": 16.25, "y": 4},
+ {"label":"k4H", "x": 17.25, "y": 4}
]
},
- "LAYOUT_division_backspace":{
+ "LAYOUT_tkl_nofrow_ansi_split_bs": {
"layout": [
- {"label":"k00", "x":0, "y":0},
- {"label":"k01", "x":1, "y":0},
- {"label":"k02", "x":2, "y":0},
- {"label":"k03", "x":3, "y":0},
- {"label":"k04", "x":4, "y":0},
- {"label":"k05", "x":5, "y":0},
- {"label":"k06", "x":6, "y":0},
- {"label":"k07", "x":7, "y":0},
- {"label":"k08", "x":8, "y":0},
- {"label":"k09", "x":9, "y":0},
- {"label":"k0a", "x":10, "y":0},
- {"label":"k0b", "x":11, "y":0},
- {"label":"k0c", "x":12, "y":0},
- {"label":"k0d", "x":13, "y":0},
- {"label":"k0e", "x":14, "y":0},
- {"label":"k0f", "x":15.25, "y":0},
- {"label":"k0g", "x":16.25, "y":0},
- {"label":"k0h", "x":17.25, "y":0},
-
- {"label":"k10", "x":0, "y":1, "w":1.5},
- {"label":"k12", "x":1.5, "y":1},
- {"label":"k13", "x":2.5, "y":1},
- {"label":"k14", "x":3.5, "y":1},
- {"label":"k15", "x":4.5, "y":1},
- {"label":"k16", "x":5.5, "y":1},
- {"label":"k17", "x":6.5, "y":1},
- {"label":"k18", "x":7.5, "y":1},
- {"label":"k19", "x":8.5, "y":1},
- {"label":"k1a", "x":9.5, "y":1},
- {"label":"k1b", "x":10.5, "y":1},
- {"label":"k1c", "x":11.5, "y":1},
- {"label":"k1d", "x":12.5, "y":1},
- {"label":"k1f", "x":15.25, "y":1},
- {"label":"k1g", "x":16.25, "y":1},
- {"label":"k1h", "x":17.25, "y":1},
-
- {"label":"k20", "x":0, "y":2, "w":1.75},
- {"label":"k22", "x":1.75, "y":2},
- {"label":"k23", "x":2.75, "y":2},
- {"label":"k24", "x":3.75, "y":2},
- {"label":"k25", "x":4.75, "y":2},
- {"label":"k26", "x":5.75, "y":2},
- {"label":"k27", "x":6.75, "y":2},
- {"label":"k28", "x":7.75, "y":2},
- {"label":"k29", "x":8.75, "y":2},
- {"label":"k2a", "x":9.75, "y":2},
- {"label":"k2b", "x":10.75, "y":2},
- {"label":"k2c", "x":11.75, "y":2},
- {"label":"k1e", "x":12.75, "y":2},
- {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h": 2},
-
- {"label":"k30", "x":0, "y":3, "w":1.25},
- {"label":"k31", "x":1.25, "y":3},
- {"label":"k32", "x":2.25, "y":3},
- {"label":"k33", "x":3.25, "y":3},
- {"label":"k34", "x":4.25, "y":3},
- {"label":"k35", "x":5.25, "y":3},
- {"label":"k36", "x":6.25, "y":3},
- {"label":"k37", "x":7.25, "y":3},
- {"label":"k38", "x":8.25, "y":3},
- {"label":"k39", "x":9.25, "y":3},
- {"label":"k3a", "x":10.25, "y":3},
- {"label":"k3b", "x":11.25, "y":3},
- {"label":"k3d", "x":12.25, "y":3, "w":1.75},
- {"label":"k3e", "x":14, "y":3},
- {"label":"k3g", "x":16.25, "y":3},
-
- {"label":"k40", "x":0, "y":4, "w":1.5},
- {"label":"k41", "x":1.25, "y":4},
- {"label":"k43", "x":2.5, "y":4, "w":1.5},
- {"label":"k46", "x":4, "y":4, "w":7},
- {"label":"k4b", "x":11, "y":4, "w":1.5},
- {"label":"k4d", "x":12.5, "y":4},
- {"label":"k4e", "x":13.75, "y":4, "w":1.5},
- {"label":"k4f", "x":15.25, "y":4},
- {"label":"k4g", "x":16.25, "y":4},
- {"label":"k4h", "x":17.25, "y":4}
+ {"label":"k00", "x": 0, "y": 0},
+ {"label":"k01", "x": 1, "y": 0},
+ {"label":"k02", "x": 2, "y": 0},
+ {"label":"k03", "x": 3, "y": 0},
+ {"label":"k04", "x": 4, "y": 0},
+ {"label":"k05", "x": 5, "y": 0},
+ {"label":"k06", "x": 6, "y": 0},
+ {"label":"k07", "x": 7, "y": 0},
+ {"label":"k08", "x": 8, "y": 0},
+ {"label":"k09", "x": 9, "y": 0},
+ {"label":"k0A", "x": 10, "y": 0},
+ {"label":"k0B", "x": 11, "y": 0},
+ {"label":"k0C", "x": 12, "y": 0},
+ {"label":"k0D", "x": 13, "y": 0},
+ {"label":"k0E", "x": 14, "y": 0},
+
+ {"label":"k0F", "x": 15.25, "y": 0},
+ {"label":"k0G", "x": 16.25, "y": 0},
+ {"label":"k0H", "x": 17.25, "y": 0},
+
+ {"label":"k10", "x": 0, "y": 1, "w": 1.5},
+ {"label":"k12", "x": 1.5, "y": 1},
+ {"label":"k13", "x": 2.5, "y": 1},
+ {"label":"k14", "x": 3.5, "y": 1},
+ {"label":"k15", "x": 4.5, "y": 1},
+ {"label":"k16", "x": 5.5, "y": 1},
+ {"label":"k17", "x": 6.5, "y": 1},
+ {"label":"k18", "x": 7.5, "y": 1},
+ {"label":"k19", "x": 8.5, "y": 1},
+ {"label":"k1A", "x": 9.5, "y": 1},
+ {"label":"k1B", "x": 10.5, "y": 1},
+ {"label":"k1C", "x": 11.5, "y": 1},
+ {"label":"k1D", "x": 12.5, "y": 1},
+ {"label":"k1E", "x": 13.5, "y": 1, "w": 1.5},
+
+ {"label":"k1F", "x": 15.25, "y": 1},
+ {"label":"k1G", "x": 16.25, "y": 1},
+ {"label":"k1H", "x": 17.25, "y": 1},
+
+ {"label":"k20", "x": 0, "y": 2, "w": 1.75},
+ {"label":"k22", "x": 1.75, "y": 2},
+ {"label":"k23", "x": 2.75, "y": 2},
+ {"label":"k24", "x": 3.75, "y": 2},
+ {"label":"k25", "x": 4.75, "y": 2},
+ {"label":"k26", "x": 5.75, "y": 2},
+ {"label":"k27", "x": 6.75, "y": 2},
+ {"label":"k28", "x": 7.75, "y": 2},
+ {"label":"k29", "x": 8.75, "y": 2},
+ {"label":"k2A", "x": 9.75, "y": 2},
+ {"label":"k2B", "x": 10.75, "y": 2},
+ {"label":"k2C", "x": 11.75, "y": 2},
+ {"label":"k2D", "x": 12.75, "y": 2, "w": 2.25},
+
+ {"label":"k30", "x": 0, "y": 3, "w": 2.25},
+ {"label":"k32", "x": 2.25, "y": 3},
+ {"label":"k33", "x": 3.25, "y": 3},
+ {"label":"k34", "x": 4.25, "y": 3},
+ {"label":"k35", "x": 5.25, "y": 3},
+ {"label":"k36", "x": 6.25, "y": 3},
+ {"label":"k37", "x": 7.25, "y": 3},
+ {"label":"k38", "x": 8.25, "y": 3},
+ {"label":"k39", "x": 9.25, "y": 3},
+ {"label":"k3A", "x": 10.25, "y": 3},
+ {"label":"k3B", "x": 11.25, "y": 3},
+ {"label":"k3D", "x": 12.25, "y": 3, "w": 2.75},
+
+ {"label":"k3G", "x": 16.25, "y": 3},
+
+ {"label":"k40", "x": 0, "y": 4, "w": 1.25},
+ {"label":"k41", "x": 1.25, "y": 4, "w": 1.25},
+ {"label":"k43", "x": 2.5, "y": 4, "w": 1.25},
+ {"label":"k46", "x": 3.75, "y": 4, "w": 6.25},
+ {"label":"k4A", "x": 10, "y": 4, "w": 1.25},
+ {"label":"k4B", "x": 11.25, "y": 4, "w": 1.25},
+ {"label":"k4D", "x": 12.5, "y": 4, "w": 1.25},
+ {"label":"k4E", "x": 13.75, "y": 4, "w": 1.25},
+
+ {"label":"k4F", "x": 15.25, "y": 4},
+ {"label":"k4G", "x": 16.25, "y": 4},
+ {"label":"k4H", "x": 17.25, "y": 4}
]
},
- "LAYOUT_iso":{
+ "LAYOUT_tkl_nofrow_iso_split_bs": {
"layout": [
- {"label":"k00", "x":0, "y":0},
- {"label":"k01", "x":1, "y":0},
- {"label":"k02", "x":2, "y":0},
- {"label":"k03", "x":3, "y":0},
- {"label":"k04", "x":4, "y":0},
- {"label":"k05", "x":5, "y":0},
- {"label":"k06", "x":6, "y":0},
- {"label":"k07", "x":7, "y":0},
- {"label":"k08", "x":8, "y":0},
- {"label":"k09", "x":9, "y":0},
- {"label":"k0a", "x":10, "y":0},
- {"label":"k0b", "x":11, "y":0},
- {"label":"k0c", "x":12, "y":0},
- {"label":"k0d", "x":13, "y":0},
- {"label":"k0e", "x":14, "y":0},
- {"label":"k0f", "x":15.25, "y":0},
- {"label":"k0g", "x":16.25, "y":0},
- {"label":"k0h", "x":17.25, "y":0},
-
- {"label":"k10", "x":0, "y":1, "w":1.5},
- {"label":"k12", "x":1.5, "y":1},
- {"label":"k13", "x":2.5, "y":1},
- {"label":"k14", "x":3.5, "y":1},
- {"label":"k15", "x":4.5, "y":1},
- {"label":"k16", "x":5.5, "y":1},
- {"label":"k17", "x":6.5, "y":1},
- {"label":"k18", "x":7.5, "y":1},
- {"label":"k19", "x":8.5, "y":1},
- {"label":"k1a", "x":9.5, "y":1},
- {"label":"k1b", "x":10.5, "y":1},
- {"label":"k1c", "x":11.5, "y":1},
- {"label":"k1d", "x":12.5, "y":1},
- {"label":"k1f", "x":15.25, "y":1},
- {"label":"k1g", "x":16.25, "y":1},
- {"label":"k1h", "x":17.25, "y":1},
-
- {"label":"k20", "x":0, "y":2, "w":1.75},
- {"label":"k22", "x":1.75, "y":2},
- {"label":"k23", "x":2.75, "y":2},
- {"label":"k24", "x":3.75, "y":2},
- {"label":"k25", "x":4.75, "y":2},
- {"label":"k26", "x":5.75, "y":2},
- {"label":"k27", "x":6.75, "y":2},
- {"label":"k28", "x":7.75, "y":2},
- {"label":"k29", "x":8.75, "y":2},
- {"label":"k2a", "x":9.75, "y":2},
- {"label":"k2b", "x":10.75, "y":2},
- {"label":"k2c", "x":11.75, "y":2},
- {"label":"k1e", "x":12.75, "y":2},
- {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h": 2},
-
- {"label":"k30", "x":0, "y":3, "w":1.25},
- {"label":"k31", "x":1.25, "y":3},
- {"label":"k32", "x":2.25, "y":3},
- {"label":"k33", "x":3.25, "y":3},
- {"label":"k34", "x":4.25, "y":3},
- {"label":"k35", "x":5.25, "y":3},
- {"label":"k36", "x":6.25, "y":3},
- {"label":"k37", "x":7.25, "y":3},
- {"label":"k38", "x":8.25, "y":3},
- {"label":"k39", "x":9.25, "y":3},
- {"label":"k3a", "x":10.25, "y":3},
- {"label":"k3b", "x":11.25, "y":3},
- {"label":"k3d", "x":12.25, "y":3, "w":1.75},
- {"label":"k3e", "x":14, "y":3},
- {"label":"k3g", "x":16.25, "y":3},
-
- {"label":"k40", "x":0, "y":4, "w":1.5},
- {"label":"k43", "x":2.5, "y":4, "w":1.5},
- {"label":"k44", "x":4, "y":4, "w":3},
- {"label":"k46", "x":7, "y":4},
- {"label":"k48", "x":8, "y":4, "w":3},
- {"label":"k4b", "x":11, "y":4, "w":1.5},
- {"label":"k4e", "x":13.5, "y":4, "w":1.5},
- {"label":"k4f", "x":15.25, "y":4},
- {"label":"k4g", "x":16.25, "y":4},
- {"label":"k4h", "x":17.25, "y":4}
+ {"label":"k00", "x": 0, "y": 0},
+ {"label":"k01", "x": 1, "y": 0},
+ {"label":"k02", "x": 2, "y": 0},
+ {"label":"k03", "x": 3, "y": 0},
+ {"label":"k04", "x": 4, "y": 0},
+ {"label":"k05", "x": 5, "y": 0},
+ {"label":"k06", "x": 6, "y": 0},
+ {"label":"k07", "x": 7, "y": 0},
+ {"label":"k08", "x": 8, "y": 0},
+ {"label":"k09", "x": 9, "y": 0},
+ {"label":"k0A", "x": 10, "y": 0},
+ {"label":"k0B", "x": 11, "y": 0},
+ {"label":"k0C", "x": 12, "y": 0},
+ {"label":"k0D", "x": 13, "y": 0},
+ {"label":"k0E", "x": 14, "y": 0},
+
+ {"label":"k0F", "x": 15.25, "y": 0},
+ {"label":"k0G", "x": 16.25, "y": 0},
+ {"label":"k0H", "x": 17.25, "y": 0},
+
+ {"label":"k10", "x": 0, "y": 1, "w": 1.5},
+ {"label":"k12", "x": 1.5, "y": 1},
+ {"label":"k13", "x": 2.5, "y": 1},
+ {"label":"k14", "x": 3.5, "y": 1},
+ {"label":"k15", "x": 4.5, "y": 1},
+ {"label":"k16", "x": 5.5, "y": 1},
+ {"label":"k17", "x": 6.5, "y": 1},
+ {"label":"k18", "x": 7.5, "y": 1},
+ {"label":"k19", "x": 8.5, "y": 1},
+ {"label":"k1A", "x": 9.5, "y": 1},
+ {"label":"k1B", "x": 10.5, "y": 1},
+ {"label":"k1C", "x": 11.5, "y": 1},
+ {"label":"k1D", "x": 12.5, "y": 1},
+
+ {"label":"k1F", "x": 15.25, "y": 1},
+ {"label":"k1G", "x": 16.25, "y": 1},
+ {"label":"k1H", "x": 17.25, "y": 1},
+
+ {"label":"k20", "x": 0, "y": 2, "w": 1.75},
+ {"label":"k22", "x": 1.75, "y": 2},
+ {"label":"k23", "x": 2.75, "y": 2},
+ {"label":"k24", "x": 3.75, "y": 2},
+ {"label":"k25", "x": 4.75, "y": 2},
+ {"label":"k26", "x": 5.75, "y": 2},
+ {"label":"k27", "x": 6.75, "y": 2},
+ {"label":"k28", "x": 7.75, "y": 2},
+ {"label":"k29", "x": 8.75, "y": 2},
+ {"label":"k2A", "x": 9.75, "y": 2},
+ {"label":"k2B", "x": 10.75, "y": 2},
+ {"label":"k2C", "x": 11.75, "y": 2},
+ {"label":"k1E", "x": 12.75, "y": 2},
+ {"label":"k2D", "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+
+ {"label":"k30", "x": 0, "y": 3, "w": 1.25},
+ {"label":"k31", "x": 1.25, "y": 3},
+ {"label":"k32", "x": 2.25, "y": 3},
+ {"label":"k33", "x": 3.25, "y": 3},
+ {"label":"k34", "x": 4.25, "y": 3},
+ {"label":"k35", "x": 5.25, "y": 3},
+ {"label":"k36", "x": 6.25, "y": 3},
+ {"label":"k37", "x": 7.25, "y": 3},
+ {"label":"k38", "x": 8.25, "y": 3},
+ {"label":"k39", "x": 9.25, "y": 3},
+ {"label":"k3A", "x": 10.25, "y": 3},
+ {"label":"k3B", "x": 11.25, "y": 3},
+ {"label":"k3D", "x": 12.25, "y": 3, "w": 2.75},
+
+ {"label":"k3G", "x": 16.25, "y": 3},
+
+ {"label":"k40", "x": 0, "y": 4, "w": 1.25},
+ {"label":"k41", "x": 1.25, "y": 4, "w": 1.25},
+ {"label":"k43", "x": 2.5, "y": 4, "w": 1.25},
+ {"label":"k46", "x": 3.75, "y": 4, "w": 6.25},
+ {"label":"k4A", "x": 10, "y": 4, "w": 1.25},
+ {"label":"k4B", "x": 11.25, "y": 4, "w": 1.25},
+ {"label":"k4D", "x": 12.5, "y": 4, "w": 1.25},
+ {"label":"k4E", "x": 13.75, "y": 4, "w": 1.25},
+
+ {"label":"k4F", "x": 15.25, "y": 4},
+ {"label":"k4G", "x": 16.25, "y": 4},
+ {"label":"k4H", "x": 17.25, "y": 4}
]
}
}
diff --git a/keyboards/mokey/xox70/keymaps/default/keymap.c b/keyboards/mokey/xox70/keymaps/default/keymap.c
index 710acc04cb..b19174948b 100644
--- a/keyboards/mokey/xox70/keymaps/default/keymap.c
+++ b/keyboards/mokey/xox70/keymaps/default/keymap.c
@@ -15,21 +15,12 @@
#include QMK_KEYBOARD_H
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN,
+ LAYOUT_tkl_nofrow_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-
- LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
diff --git a/keyboards/mokey/xox70/keymaps/via/keymap.c b/keyboards/mokey/xox70/keymaps/via/keymap.c
index 66e227e333..304fe3968c 100644
--- a/keyboards/mokey/xox70/keymaps/via/keymap.c
+++ b/keyboards/mokey/xox70/keymaps/via/keymap.c
@@ -16,36 +16,32 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- LAYOUT(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN,
+ LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
-
- LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
-
- LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
-
- LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/mokey/xox70/rules.mk b/keyboards/mokey/xox70/rules.mk
index 439452f177..aa86669dc3 100644
--- a/keyboards/mokey/xox70/rules.mk
+++ b/keyboards/mokey/xox70/rules.mk
@@ -12,10 +12,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = tkl_nofrow_ansi tkl_nofrow_iso
diff --git a/keyboards/mokey/xox70/xox70.h b/keyboards/mokey/xox70/xox70.h
index 8c54e630c5..3c0f15d2f7 100644
--- a/keyboards/mokey/xox70/xox70.h
+++ b/keyboards/mokey/xox70/xox70.h
@@ -13,53 +13,102 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#pragma once
#include "quantum.h"
-#define xxx KC_NO
+#define XXX KC_NO
+
+/*
+ * ┌───────┐
+ * │0E │ 2u Backspace
+ * └───────┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0F │0G │0H │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ┌─────┐
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │1F │1G │1H │ │2D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐ │ ISO Enter
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │1E │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ├───┴────┴─┐
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ │3G │ │3D │
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘
+ * │40 │41 │43 │46 │4A │4B │4D │4E │ │4F │4G │4H │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │40 │41 │43 │46 │4B │4D │4E │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌─────┐ ┌─────┬───────────┬───┬───────────┬─────┐ ┌─────┐
+ * │40 │ │43 │44 │46 │48 │4B │ │4E │
+ * └─────┘ └─────┴───────────┴───┴───────────┴─────┘ └─────┘
+ */
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3E, k3G, \
+ k40, k41, k43, k44, k46, k48, k4A, k4B, k4D, k4E, k4F, k4G, k4H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, k3E, XXX, k3G, XXX }, \
+ { k40, k41, XXX, k43, k44, XXX, k46, XXX, k48, XXX, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H } \
+}
+
+#define LAYOUT_tkl_nofrow_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, k0G, k0H, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, \
+ k40, k41, k43, k46, k4A, k4B, k4D, k4E, k4F, k4G, k4H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F, k0G, k0H }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, XXX, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX, XXX, k3G, XXX }, \
+ { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H } \
+}
-#define LAYOUT(\
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, k0g, k0h, \
- k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
- k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
- k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3g, \
- k40, k41, k43, k46, k4a, k4b, k4d, k4e, k4f, k4g, k4h \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, k0f, k0g, k0h }, \
- { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
- { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, KC_NO, KC_NO,KC_NO }, \
- { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, KC_NO, KC_NO, k3g, KC_NO }, \
- { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, KC_NO, k4d, k4e, k4f, k4g, k4h } \
+#define LAYOUT_tkl_nofrow_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0E, k0F, k0G, k0H, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k1E, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, \
+ k40, k41, k43, k46, k4A, k4B, k4D, k4E, k4F, k4G, k4H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, XXX, k0E, k0F, k0G, k0H }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX, XXX, k3G, XXX }, \
+ { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H } \
}
-#define LAYOUT_division_backspace(\
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h, \
- k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, \
- k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, k3g, \
- k40, k41, k43, k46, k4b, k4d, k4e, k4f, k4g, k4h \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
- { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, KC_NO }, \
- { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, KC_NO, KC_NO, KC_NO }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e, KC_NO, k3g, KC_NO }, \
- { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, KC_NO,k4b, KC_NO, k4d, k4e, k4f, k4g, k4h } \
+#define LAYOUT_tkl_nofrow_ansi_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, \
+ k40, k41, k43, k46, k4A, k4B, k4D, k4E, k4F, k4G, k4H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, XXX, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX, XXX, k3G, XXX }, \
+ { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H } \
}
-#define LAYOUT_iso(\
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h, \
- k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, \
- k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, k3g, \
- k40, k43, k44, k46, k48, k4b, k4e, k4f, k4g, k4h \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
- { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, k1g, k1h, KC_NO }, \
- { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1e, k2d, KC_NO, KC_NO, KC_NO }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e, KC_NO, k3g, KC_NO }, \
- { k40, KC_NO, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, KC_NO, k4a, KC_NO, k4d, k4e, k4f, k4g, k4h } \
+#define LAYOUT_tkl_nofrow_iso_split_bs( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1F, k1G, k1H, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k1E, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, k3G, \
+ k40, k41, k43, k46, k4A, k4B, k4D, k4E, k4F, k4G, k4H \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, XXX, XXX, XXX, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, XXX, k3D, XXX, XXX, k3G, XXX }, \
+ { k40, k41, XXX, k43, XXX, XXX, k46, XXX, XXX, XXX, k4A, k4B, XXX, k4D, k4E, k4F, k4G, k4H } \
}
diff --git a/keyboards/mokey/xox70hot/config.h b/keyboards/mokey/xox70hot/config.h
new file mode 100644
index 0000000000..bc2279e3d1
--- /dev/null
+++ b/keyboards/mokey/xox70hot/config.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2021 Kyle McCreery
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6653
+#define PRODUCT_ID 0x3371
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mokey
+#define PRODUCT xox70hot
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+#define MATRIX_ROW_PINS { F7, B7, F5, F1, B0 }
+#define MATRIX_COL_PINS { F6, C7, F4, F5, F1, B6, D0, D2, D3, D1, D7, D4, D5, D6, B4, B5, C6, B7 }
+#define UNUSED_PINS
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/mokey/xox70hot/info.json b/keyboards/mokey/xox70hot/info.json
new file mode 100644
index 0000000000..a1fc86924f
--- /dev/null
+++ b/keyboards/mokey/xox70hot/info.json
@@ -0,0 +1,88 @@
+{
+ "keyboard_name": "xox70hot",
+ "url": "",
+ "maintainer": "rhmokey",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_tkl_nofrow_ansi_tsangan"
+ },
+ "layouts": {
+ "LAYOUT_tkl_nofrow_ansi_tsangan": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0e", "x":13, "y":0, "w":2},
+ {"label":"k0f", "x":15.25, "y":0},
+ {"label":"k0g", "x":16.25, "y":0},
+ {"label":"k0h", "x":17.25, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k12", "x":1.5, "y":1},
+ {"label":"k13", "x":2.5, "y":1},
+ {"label":"k14", "x":3.5, "y":1},
+ {"label":"k15", "x":4.5, "y":1},
+ {"label":"k16", "x":5.5, "y":1},
+ {"label":"k17", "x":6.5, "y":1},
+ {"label":"k18", "x":7.5, "y":1},
+ {"label":"k19", "x":8.5, "y":1},
+ {"label":"k1a", "x":9.5, "y":1},
+ {"label":"k1b", "x":10.5, "y":1},
+ {"label":"k1c", "x":11.5, "y":1},
+ {"label":"k1d", "x":12.5, "y":1},
+ {"label":"k1e", "x":13.5, "y":1, "w":1.5},
+ {"label":"k1f", "x":15.25, "y":1},
+ {"label":"k1g", "x":16.25, "y":1},
+ {"label":"k1h", "x":17.25, "y":1},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k22", "x":1.75, "y":2},
+ {"label":"k23", "x":2.75, "y":2},
+ {"label":"k24", "x":3.75, "y":2},
+ {"label":"k25", "x":4.75, "y":2},
+ {"label":"k26", "x":5.75, "y":2},
+ {"label":"k27", "x":6.75, "y":2},
+ {"label":"k28", "x":7.75, "y":2},
+ {"label":"k29", "x":8.75, "y":2},
+ {"label":"k2a", "x":9.75, "y":2},
+ {"label":"k2b", "x":10.75, "y":2},
+ {"label":"k2c", "x":11.75, "y":2},
+ {"label":"k2d", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"k30", "x":0, "y":3, "w":2.25},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3d", "x":12.25, "y":3, "w":2.75},
+ {"label":"k3g", "x":16.25, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.5},
+ {"label":"k41", "x":1.5, "y":4},
+ {"label":"k43", "x":2.5, "y":4, "w":1.5},
+ {"label":"k46", "x":4, "y":4, "w":7},
+ {"label":"k4a", "x":11, "y":4, "w":1.5},
+ {"label":"k4b", "x":12.5, "y":4},
+ {"label":"k4e", "x":13.5, "y":4, "w":1.5},
+ {"label":"k4f", "x":15.25, "y":4},
+ {"label":"k4g", "x":16.25, "y":4},
+ {"label":"k4h", "x":17.25, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mokey/xox70hot/keymaps/default/keymap.c b/keyboards/mokey/xox70hot/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e7955ce89b
--- /dev/null
+++ b/keyboards/mokey/xox70hot/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mokey/xox70hot/keymaps/via/keymap.c b/keyboards/mokey/xox70hot/keymaps/via/keymap.c
new file mode 100644
index 0000000000..53f66e5214
--- /dev/null
+++ b/keyboards/mokey/xox70hot/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INSERT, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DELETE, KC_END, KC_PGDOWN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_GRV, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ LAYOUT_tkl_nofrow_ansi_tsangan(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mokey/xox70hot/keymaps/via/rules.mk b/keyboards/mokey/xox70hot/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mokey/xox70hot/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mokey/xox70hot/readme.md b/keyboards/mokey/xox70hot/readme.md
new file mode 100644
index 0000000000..eb5848917d
--- /dev/null
+++ b/keyboards/mokey/xox70hot/readme.md
@@ -0,0 +1,19 @@
+# xox70hot
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [rhmokey](https://github.com/rhmokey)
+* Hardware Supported: Atmega32u4
+
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mokey/xox70hot:default
+
+Flashing example for this keyboard:
+
+ make mokey/xox70hot:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mokey/xox70hot/rules.mk b/keyboards/mokey/xox70hot/rules.mk
new file mode 100644
index 0000000000..72aebf2d0b
--- /dev/null
+++ b/keyboards/mokey/xox70hot/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/mokey/xox70hot/xox70hot.c b/keyboards/mokey/xox70hot/xox70hot.c
new file mode 100644
index 0000000000..728b5e4e39
--- /dev/null
+++ b/keyboards/mokey/xox70hot/xox70hot.c
@@ -0,0 +1,15 @@
+/* Copyright 2021 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "xox70hot.h" \ No newline at end of file
diff --git a/keyboards/mokey/xox70hot/xox70hot.h b/keyboards/mokey/xox70hot/xox70hot.h
new file mode 100644
index 0000000000..5e6f9665c8
--- /dev/null
+++ b/keyboards/mokey/xox70hot/xox70hot.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 Ocean
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define xxx KC_NO
+
+#define LAYOUT_tkl_nofrow_ansi_tsangan(\
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0f, k0g, k0h, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3g, \
+ k40, k41, k43, k46, k4a, k4b, k4e, k4f, k4g, k4h \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, k0e, k0f, k0g, k0h }, \
+ { k10, KC_NO, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
+ { k20, KC_NO, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, KC_NO, KC_NO,KC_NO }, \
+ { k30, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, KC_NO, KC_NO, k3g, KC_NO }, \
+ { k40, k41, KC_NO, k43, KC_NO, KC_NO, k46, KC_NO, KC_NO, KC_NO, k4a, k4b, KC_NO, KC_NO,k4e, k4f, k4g, k4h } \
+}
+
diff --git a/keyboards/molecule/rules.mk b/keyboards/molecule/rules.mk
index 2e48304f76..c4e48dfa15 100755
--- a/keyboards/molecule/rules.mk
+++ b/keyboards/molecule/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/momoka_ergo/rules.mk b/keyboards/momoka_ergo/rules.mk
index 613ac4cb94..509dcc85c5 100644
--- a/keyboards/momoka_ergo/rules.mk
+++ b/keyboards/momoka_ergo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/monarch/rules.mk b/keyboards/monarch/rules.mk
index 5b68b7aeb5..c62230982f 100644
--- a/keyboards/monarch/rules.mk
+++ b/keyboards/monarch/rules.mk
@@ -12,13 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
ENCODER_ENABLE = yes
BACKLIGHT_DRIVER = pwm
diff --git a/keyboards/monoflex60/config.h b/keyboards/monoflex60/config.h
new file mode 100644
index 0000000000..6e02810027
--- /dev/null
+++ b/keyboards/monoflex60/config.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2022 Ivan Gromov (@key10iq)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xDEB4
+#define PRODUCT_ID 0x60EB
+#define DEVICE_VER 0x0001
+#define MANUFACTURER SanitGo Customs
+#define PRODUCT Monoflex 60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D1, D0, D3, D2, D5 }
+#define MATRIX_COL_PINS { B7, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4}
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/monoflex60/info.json b/keyboards/monoflex60/info.json
new file mode 100644
index 0000000000..7a4fb99447
--- /dev/null
+++ b/keyboards/monoflex60/info.json
@@ -0,0 +1,217 @@
+{
+ "keyboard_name": "Monoflex 60",
+ "url": "",
+ "maintainer": "keyten",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":0, "y":3, "w":1.25},
+
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":7},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/monoflex60/keymaps/60_iso_tsangan/keymap.c b/keyboards/monoflex60/keymaps/60_iso_tsangan/keymap.c
new file mode 100644
index 0000000000..deb9f95b22
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/60_iso_tsangan/keymap.c
@@ -0,0 +1,34 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_iso_tsangan(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, MO(1),
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_60_iso_tsangan(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/monoflex60/keymaps/60_tsangan_hhkb/keymap.c b/keyboards/monoflex60/keymaps/60_tsangan_hhkb/keymap.c
new file mode 100644
index 0000000000..8a5630554e
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/60_tsangan_hhkb/keymap.c
@@ -0,0 +1,34 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_tsangan_hhkb(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_60_tsangan_hhkb(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/monoflex60/keymaps/default/keymap.c b/keyboards/monoflex60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2572aad355
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_all(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/monoflex60/keymaps/default/readme.md b/keyboards/monoflex60/keymaps/default/readme.md
new file mode 100644
index 0000000000..146f52292d
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Monoflex 60
diff --git a/keyboards/monoflex60/keymaps/via/keymap.c b/keyboards/monoflex60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..92fee8dd1e
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
+
+ [1] = LAYOUT_all(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/monoflex60/keymaps/via/readme.md b/keyboards/monoflex60/keymaps/via/readme.md
new file mode 100644
index 0000000000..29862d748b
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for Monoflex 60
diff --git a/keyboards/monoflex60/keymaps/via/rules.mk b/keyboards/monoflex60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/monoflex60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/monoflex60/monoflex60.c b/keyboards/monoflex60/monoflex60.c
new file mode 100644
index 0000000000..075a79125e
--- /dev/null
+++ b/keyboards/monoflex60/monoflex60.c
@@ -0,0 +1,17 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "monoflex60.h"
diff --git a/keyboards/monoflex60/monoflex60.h b/keyboards/monoflex60/monoflex60.h
new file mode 100644
index 0000000000..cac9300863
--- /dev/null
+++ b/keyboards/monoflex60/monoflex60.h
@@ -0,0 +1,102 @@
+ /* Copyright 2022 Ivan Gromov (@key10iq)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* LAYOUT_all
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
+ * │40 │41 │43 │47 │4b │4c │4d │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k43, k47, k4b, k4c, k4d \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, XXX, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, k4d } \
+}
+
+/* LAYOUT_60_tsangan_hhkb
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
+ * │40 │41 │43 │47 │4b │4c │4d │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+#define LAYOUT_60_tsangan_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k43, k47, k4b, k4c, k4d \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { k40, k41, XXX, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, k4d } \
+}
+
+/* LAYOUT_60_iso_tsangan
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ 1d │
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤
+ * │40 │41 │43 │47 │4b │4c │4d │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+#define LAYOUT_60_iso_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k41, k43, k47, k4b, k4c, k4d \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX }, \
+ { k40, k41, XXX, k43, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, k4d } \
+}
diff --git a/keyboards/monoflex60/readme.md b/keyboards/monoflex60/readme.md
new file mode 100644
index 0000000000..cfb4e31d15
--- /dev/null
+++ b/keyboards/monoflex60/readme.md
@@ -0,0 +1,29 @@
+# Monoflex 60
+
+Monoflex 60 is a 60% keyboard with leafsping plate. The project failed because of a stupid runner (SantiGo Customs) who didn't know how to manage money.
+
+Case designed by [Bizunow](https://github.com/Bizunow) and PCB designed by [keyten](https://github.com/key10iq). Also [ILWrites](https://github.com/pikeeb) helped with PCBs production.
+
+![Monoflex 60 image](https://i.imgur.com/ip3J0y6l.jpeg)
+
+* Keyboard Maintainer: [keyten](https://github.com/key10iq)
+* Hardware Supported: Monoflex 60 PCB
+* Hardware Availability: [GB](https://geekhack.org/index.php?topic=110738.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make monoflex60:default
+
+Flashing example for this keyboard:
+
+ make monoflex60:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* Keycode in layout: Press the key mapped to RESET if it is available
+* Physical reset button: Press the button on the back of the PCB
diff --git a/keyboards/monoflex60/rules.mk b/keyboards/monoflex60/rules.mk
new file mode 100644
index 0000000000..6983d5c803
--- /dev/null
+++ b/keyboards/monoflex60/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/monstargear/xo87/rgb/rules.mk b/keyboards/monstargear/xo87/rgb/rules.mk
index 3833c1a46e..9447e17dea 100644
--- a/keyboards/monstargear/xo87/rgb/rules.mk
+++ b/keyboards/monstargear/xo87/rgb/rules.mk
@@ -12,9 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/monstargear/xo87/solderable/rules.mk b/keyboards/monstargear/xo87/solderable/rules.mk
index 4c61124882..3ceb217bf2 100644
--- a/keyboards/monstargear/xo87/solderable/rules.mk
+++ b/keyboards/monstargear/xo87/solderable/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montex/rules.mk b/keyboards/montex/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/montex/rules.mk
+++ b/keyboards/montex/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montsinger/rebound/rev1/rules.mk b/keyboards/montsinger/rebound/rev1/rules.mk
index 4e41713e2f..f914cd14cb 100644
--- a/keyboards/montsinger/rebound/rev1/rules.mk
+++ b/keyboards/montsinger/rebound/rev1/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montsinger/rebound/rev2/rules.mk b/keyboards/montsinger/rebound/rev2/rules.mk
index ad3cbd0df1..211b7290b5 100644
--- a/keyboards/montsinger/rebound/rev2/rules.mk
+++ b/keyboards/montsinger/rebound/rev2/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montsinger/rebound/rev3/rules.mk b/keyboards/montsinger/rebound/rev3/rules.mk
index ad3cbd0df1..211b7290b5 100644
--- a/keyboards/montsinger/rebound/rev3/rules.mk
+++ b/keyboards/montsinger/rebound/rev3/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c
new file mode 100644
index 0000000000..59f2a23733
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,101 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "ericgebhart.h"
+#include "layouts.h"
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // Qwerty based Base layers
+ [_DVORAK] = Rebound_base(___DVORAK___),
+ [_BEAKL] = Rebound_base(___BEAKL15___),
+ [_COLEMAK] = Rebound_base(___COLEMAK_DH___),
+ [_QWERTY] = Rebound_base(___QWERTY___),
+
+ // Bepo base layers
+ [_BEAKL_BP] = Rebound_base_bepo(___BEAKL15_FR___),
+ [_DVORAK_BP] = Rebound_base_bepo(___DVORAK_FR___),
+ [_BEPO] = Rebound_base_bepo6(___BEPO6___),
+
+ // Transient layers.
+ [_SYMB] = Rebound_transient(___SYMB_BEAKLA_3x12___),
+ [_SYMB_BP] = Rebound_transient(___SYMB_BEAKLA_BP_3x12___),
+
+ [_KEYPAD] = Rebound_transient(___KP_C_3x12___),
+ [_KEYPAD_BP] = Rebound_transient(___KP_C_BP_3x12___),
+
+ [_TOPROWS] = Rebound_transient(___TOPROWS_3x12___),
+ [_TOPROWS_BP] = Rebound_transient(___TOPROWS_BP_3x12___),
+ [_NAV] = Rebound_transient(___NAV_3x12___),
+ [_LAYERS] = Rebound_transient(___LAYERS_3x12___),
+};
+
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ switch(get_highest_layer(layer_state)){
+ case _DVORAK:
+ if (clockwise) {
+ tap_code16(KC_VOLD);
+ } else {
+ tap_code16(KC_VOLU);
+ }
+ break;
+
+ case _NAV:
+ if (clockwise) {
+ tap_code16(S(KC_TAB));
+ } else {
+ tap_code16(KC_TAB);
+ }
+ break;
+ }
+ return true;
+}
+
+#ifdef OLED_ENABLE
+void oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR(""), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Rebound\n"), false);
+ oled_write_P(PSTR("Rev4\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYMB_BEAKL:
+ case _SYMB:
+ oled_write_P(PSTR("Symbols\n"), false);
+ break;
+ case _KEYPAD:
+ oled_write_P(PSTR("Top Rows\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+}
+
+#endif
diff --git a/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h
new file mode 100644
index 0000000000..f6b7fc1513
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h
@@ -0,0 +1,113 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/********************************************************************/
+/* Rebound 4 rows, 1x12, 3x13 */
+/********************************************************************/
+
+#define LVARG_rebound(...) LAYOUT_all(__VA_ARGS__)
+#define LAYOUT_rebound_base( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LVARG_rebound( \
+ ROW1_LEFT(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT(K11, K12, K13, K14, K15), \
+ KC_CCCV, \
+ ROW2_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT(K21, K22, K23, K24, K25), \
+ MO(_ADJUST), \
+ ROW3_RIGHT(K26, K27, K28, K29, K2A), \
+ ___13_BOTTOM___ \
+ )
+
+#define LAYOUT_rebound_base_bepo( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LVARG_rebound( \
+ ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
+ KC_CCCV, \
+ ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
+ MO(_ADJUST), \
+ ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
+ ___13_BOTTOM_BP___ \
+ )
+
+// Just for bepo because it's a 3x6 matrix on each side.
+// So 3 pairs of 6 keys, left and right.
+#define LAYOUT_rebound_base_bepo6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_rebound( \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ KC_CCCV, \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ MO(_ADJUST), \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___13_BOTTOM_BP___ \
+ )
+
+#define LAYOUT_rebound_transient( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_rebound( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ ___, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ ___, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ ___, ___12___)
+
+#define Rebound_base(...) LAYOUT_rebound_base(__VA_ARGS__)
+#define Rebound_base_bepo(...) LAYOUT_rebound_base_bepo(__VA_ARGS__)
+#define Rebound_base_bepo6(...) LAYOUT_rebound_base_bepo6(__VA_ARGS__)
+#define Rebound_transient(...) LAYOUT_rebound_transient(__VA_ARGS__)
diff --git a/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/readme.md b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/readme.md
new file mode 100644
index 0000000000..3a47968596
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/readme.md
@@ -0,0 +1,5 @@
+Overview
+========
+
+These are my keymaps. There isn't much here. Go take a look at my Userspace readme.
+That's where all the code is.
diff --git a/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk
new file mode 100644
index 0000000000..cf27df39b8
--- /dev/null
+++ b/keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk
@@ -0,0 +1,16 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output
+UNICODE_ENABLE = no # Unicode
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
diff --git a/keyboards/montsinger/rebound/rev4/rules.mk b/keyboards/montsinger/rebound/rev4/rules.mk
index 6713705c5a..e0e8339713 100644
--- a/keyboards/montsinger/rebound/rev4/rules.mk
+++ b/keyboards/montsinger/rebound/rev4/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/montsinger/rewind/rules.mk b/keyboards/montsinger/rewind/rules.mk
index 6762197940..33d28b3a89 100644
--- a/keyboards/montsinger/rewind/rules.mk
+++ b/keyboards/montsinger/rewind/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/moon/keymaps/default/config.h b/keyboards/moon/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/moon/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/moon/keymaps/default_tkl_ansi/config.h b/keyboards/moon/keymaps/default_tkl_ansi/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/moon/keymaps/default_tkl_ansi/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/moon/keymaps/default_tkl_ansi_wkl/config.h b/keyboards/moon/keymaps/default_tkl_ansi_wkl/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/moon/keymaps/default_tkl_ansi_wkl/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/moon/keymaps/default_tkl_iso/config.h b/keyboards/moon/keymaps/default_tkl_iso/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/moon/keymaps/default_tkl_iso/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/moon/keymaps/default_tkl_iso_wkl/config.h b/keyboards/moon/keymaps/default_tkl_iso_wkl/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/moon/keymaps/default_tkl_iso_wkl/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk
index df5135333b..b906a8df24 100644
--- a/keyboards/moon/rules.mk
+++ b/keyboards/moon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/moonlander/config.h b/keyboards/moonlander/config.h
index 1c6cbb5c63..d6686425c4 100644
--- a/keyboards/moonlander/config.h
+++ b/keyboards/moonlander/config.h
@@ -141,6 +141,18 @@
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// #define RGB_MATRIX_LED_PROCESS_LIMIT 5
+// #define RGB_MATRIX_LED_FLUSH_LIMIT 26
+
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 400
+#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
+#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
+
#define MUSIC_MAP
#define FIRMWARE_VERSION_SIZE 17
diff --git a/keyboards/moonlander/keymaps/drashna/keymap.c b/keyboards/moonlander/keymaps/drashna/keymap.c
index 2d90a3172b..ba07834614 100644
--- a/keyboards/moonlander/keymaps/drashna/keymap.c
+++ b/keyboards/moonlander/keymaps/drashna/keymap.c
@@ -16,10 +16,6 @@
#include "drashna.h"
-#ifndef UNICODE_ENABLE
-# define UC(x) KC_NO
-#endif
-
enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
// clang-format off
@@ -32,10 +28,10 @@ enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
) \
LAYOUT_moonlander_wrapper( \
KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
- KC_TAB, K01, K02, K03, K04, K05, TG_DBLO,TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
- KC_C1R3, K11, K12, K13, K14, K15, TG_GAME,TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \
+ KC_TAB, K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
+ KC_C1R3, K11, K12, K13, K14, K15, TG_GAME, TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \
KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \
- KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
+ KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, UC_CLUE, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC_IRNY, \
KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \
)
@@ -67,27 +63,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_GAMEPAD] = LAYOUT_moonlander_wrapper(
- KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
- KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_TRNS, TG_GAME, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_ESC, XXXXXXX, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
+ KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, TG_GAME, KC_I, KC_O, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
- KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
+ KC_V, KC_SPC, KC_H, KC_NO, XXXXXXX,KC_SWAP_NUM
),
[_DIABLO] = LAYOUT_moonlander_wrapper(
- KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
- KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_1, KC_2, KC_3, KC_4, KC_G, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_L, KC_J, KC_F, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_ESC, KC_V, KC_D, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
+ KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_G, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ XXXXXXX, XXXXXXX, KC_L, KC_J, KC_F, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
KC_DIABLO_CLEAR, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_PGDN, KC_DEL, KC_ENT
),
[_DIABLOII] = LAYOUT_moonlander_wrapper(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
- KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, TG(_DIABLOII), KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_G, KC_F, KC_L, KC_V, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, XXXXXXX, _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_NO,
+ KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, TG(_DIABLOII), _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
+ XXXXXXX, XXXXXXX, KC_G, KC_F, KC_L, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NO,
KC_G, KC_LSFT, KC_LCTL, KC_PGDN, KC_DEL, KC_ENT
),
@@ -110,12 +106,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_moonlander_wrapper(
- KC_MAKE, _________________FUNC_LEFT_________________, UC_MOD, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
+ KC_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE,_______, KC_NUKE,KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, KC_RST,
VRSN, _________________ADJUST_L1_________________, TG(_DIABLOII), _______, _________________ADJUST_R1_________________, EEP_RST,
- _______, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL,
- KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
- _______, _______, _______, _______, _______, _______
+ KEYLOCK, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL,
+ UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, AUTO_CTN,
+ REBOOT, _______, _______, _______, _______, _______
),
};
@@ -168,7 +164,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
#ifdef RGB_MATRIX_ENABLE
-void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
if (layer_state_is(_GAMEPAD)) {
RGB_MATRIX_INDICATOR_SET_COLOR(11, 0x00, 0xFF, 0x00); // Q
RGB_MATRIX_INDICATOR_SET_COLOR(16, 0x00, 0xFF, 0xFF); // W
@@ -184,37 +180,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
RGB_MATRIX_INDICATOR_SET_COLOR(20, 0x7A, 0x00, 0xFF); // 3
}
- if (userspace_config.rgb_layer_change) {
- switch (get_highest_layer(layer_state|default_layer_state)) {
- case _DEFAULT_LAYER_1:
- rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_2:
- rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_3:
- rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_4:
- rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _GAMEPAD:
- rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DIABLO:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _RAISE:
- rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _LOWER:
- rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _ADJUST:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- }
- }
+ return true;
}
#endif
diff --git a/keyboards/moonlander/keymaps/drashna/rules.mk b/keyboards/moonlander/keymaps/drashna/rules.mk
index 2a6d20bed5..feb91c774b 100644
--- a/keyboards/moonlander/keymaps/drashna/rules.mk
+++ b/keyboards/moonlander/keymaps/drashna/rules.mk
@@ -1,4 +1,6 @@
-TAP_DANCE_ENABLE = yes
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-UNICODE_ENABLE = yes
-UNICODEMAP_ENABLE = no
+TAP_DANCE_ENABLE = yes
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+UNICODE_ENABLE = yes
+UNICODEMAP_ENABLE = no
+AUTOCORRECTION_ENABLE = yes
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/moonlander/matrix.c b/keyboards/moonlander/matrix.c
index 782f131a50..b6bac9515e 100644
--- a/keyboards/moonlander/matrix.c
+++ b/keyboards/moonlander/matrix.c
@@ -102,9 +102,9 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
print("trying to reset mcp23018\n");
mcp23018_init();
if (!mcp23018_initd) {
- print("left side not responding\n");
+ print("right side not responding\n");
} else {
- print("left side attached\n");
+ print("right side attached\n");
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_init();
#endif
diff --git a/keyboards/moonlander/moonlander.c b/keyboards/moonlander/moonlander.c
index 3f9b3d40a4..e2e163f116 100644
--- a/keyboards/moonlander/moonlander.c
+++ b/keyboards/moonlander/moonlander.c
@@ -19,9 +19,6 @@
#include "moonlander.h"
-#ifdef WEBUSB_ENABLE
-# include "webusb.h"
-#endif
keyboard_config_t keyboard_config;
@@ -83,50 +80,9 @@ void moonlander_led_task(void) {
wait_ms(155);
}
#endif
-#ifdef WEBUSB_ENABLE
- else if (webusb_state.pairing == true) {
- static uint8_t led_mask;
-
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
-
- if (!led_mask) {
- led_mask = 1;
- } else {
- led_mask++;
- if (led_mask > 12) led_mask = 1;
- }
- switch (led_mask) {
- case 1:
- case 12:
- ML_LED_1(true);
- break;
- case 2:
- case 11:
- ML_LED_2(true);
- break;
- case 3:
- case 10:
- ML_LED_3(true);
- break;
- case 4:
- case 9:
- ML_LED_4(true);
- break;
- case 5:
- case 8:
- ML_LED_5(true);
- break;
- case 6:
- case 7:
- ML_LED_6(true);
- break;
- }
- wait_ms(150);
+#if !defined(MOONLANDER_USER_LEDS)
+ else {
+ layer_state_set_kb(layer_state);
}
#endif
}
@@ -163,40 +119,55 @@ void keyboard_pre_init_kb(void) {
layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
if (is_launching || !keyboard_config.led_level) return state;
-
- ML_LED_1(false);
- ML_LED_2(false);
- ML_LED_3(false);
- ML_LED_4(false);
- ML_LED_5(false);
- ML_LED_6(false);
+ bool LED_1 = false;
+ bool LED_2 = false;
+ bool LED_3 = false;
+ bool LED_4 = false;
+ bool LED_5 = false;
+#if !defined(CAPS_LOCK_STATUS)
+ bool LED_6 = false;
+#endif
uint8_t layer = get_highest_layer(state);
switch (layer) {
case 1:
- ML_LED_1(1);
- ML_LED_4(1);
+ LED_1 = true;
+ LED_4 = true;
break;
case 2:
- ML_LED_2(1);
- ML_LED_5(1);
+ LED_2 = true;
+ LED_5 = true;
break;
case 3:
- ML_LED_3(1);
+ LED_3 = true;
+#if !defined(CAPS_LOCK_STATUS)
+ LED_6 = true;
+#endif
break;
case 4:
- ML_LED_4(1);
+ LED_4 = true;
break;
case 5:
- ML_LED_5(1);
+ LED_5 = true;
break;
case 6:
- ML_LED_6(1);
+#if !defined(CAPS_LOCK_STATUS)
+ LED_6 = true;
+#endif
break;
default:
break;
}
+ ML_LED_1(LED_1);
+ ML_LED_2(LED_2);
+ ML_LED_3(LED_3);
+ ML_LED_4(LED_4);
+ ML_LED_5(LED_5);
+#if !defined(CAPS_LOCK_STATUS)
+ ML_LED_6(LED_6);
+#endif
+
return state;
}
#endif
@@ -398,14 +369,19 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_moonlander(
// clang-format on
#endif
-#ifdef ORYX_CONFIGURATOR
+#ifdef CAPS_LOCK_STATUS
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ ML_LED_6(led_state.caps_lock);
+ }
+ return res;
+}
+#endif
+
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) { return false; }
switch (keycode) {
-#ifdef WEBUSB_ENABLE
- case WEBUSB_PAIR:
- if (!record->event.pressed && !webusb_state.pairing) layer_state_set_kb(layer_state);
- break;
-#endif
#if !defined(MOONLANDER_USER_LEDS)
case LED_LEVEL:
if (record->event.pressed) {
@@ -450,11 +426,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
return false;
#endif
}
- return process_record_user(keycode, record);
+ return true;
}
-#endif
-
void matrix_init_kb(void) {
keyboard_config.raw = eeconfig_read_kb();
@@ -470,6 +444,7 @@ void matrix_init_kb(void) {
rgb_matrix_set_flags(LED_FLAG_NONE);
}
#endif
+ matrix_init_user();
}
void eeconfig_init_kb(void) { // EEPROM is getting reset!
diff --git a/keyboards/moonlander/readme.md b/keyboards/moonlander/readme.md
index 0ad2e4775c..bf80f05569 100644
--- a/keyboards/moonlander/readme.md
+++ b/keyboards/moonlander/readme.md
@@ -31,7 +31,7 @@ By default, the Indicator LEDs are used to indicate the layer state for the keyb
### Oryx Configuration
-To enable the features from Oryx (ZSA's Configurator), either compile the the `default` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file.
+To enable the features from Oryx (ZSA's Configurator), either compile the `default` keymap, or add `#define ORYX_CONFIGURATOR` to your `config.h` file.
This enables the front Indicator LEDs, and the `TOGGLE_LAYER_COLOR` keycode. The `TOGGLE_LAYER_COLOR` keycode toggles the customized LED map configured on Oryx.
diff --git a/keyboards/moonlander/rules.mk b/keyboards/moonlander/rules.mk
index ed448ff434..72682d29b1 100644
--- a/keyboards/moonlander/rules.mk
+++ b/keyboards/moonlander/rules.mk
@@ -12,13 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
+AUDIO_DRIVER = dac_additive
CUSTOM_MATRIX = lite
SWAP_HANDS_ENABLE = yes
RGB_MATRIX_ENABLE = yes
@@ -28,3 +26,5 @@ EEPROM_DRIVER = i2c
#project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
+
+MOUSE_SHARED_EP = no
diff --git a/keyboards/mountainblocks/mb17/rules.mk b/keyboards/mountainblocks/mb17/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/mountainblocks/mb17/rules.mk
+++ b/keyboards/mountainblocks/mb17/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mschwingen/modelm/rules.mk b/keyboards/mschwingen/modelm/rules.mk
index 5e88410862..5a5a8e5587 100644
--- a/keyboards/mschwingen/modelm/rules.mk
+++ b/keyboards/mschwingen/modelm/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mt40/keymaps/default/keymap.c b/keyboards/mt40/keymaps/default/keymap.c
index 29a2b414b1..0feadbfb74 100644
--- a/keyboards/mt40/keymaps/default/keymap.c
+++ b/keyboards/mt40/keymaps/default/keymap.c
@@ -40,33 +40,33 @@
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_planck_mit(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- C_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, C_ENT, \
- KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ C_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, C_ENT,
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
C_LCTL, C_LGUI, MOD_LALT, MO(3), MO(1), KC_SPC, MO(2), MO(4), MOD_RALT, C_RGUI, C_RCTL),
[1] = LAYOUT_planck_mit(
- _______, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, RGB_MOD, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, \
- _______, KC_F5, KC_F6, KC_F7, KC_F8, RGB_VAD, RGB_VAI, KC_P4, KC_P5, KC_P6, KC_PAST, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, BL_TOGG, BL_INC, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PGUP, \
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, RGB_MOD, KC_P7, KC_P8, KC_P9, KC_PSLS, _______,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, RGB_VAD, RGB_VAI, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, BL_TOGG, BL_INC, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PGUP,
_______, _______, _______, _______, OOOOOOO, _______, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_PGDN),
[2] = LAYOUT_planck_mit(
- _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_EQL, KC_LBRC, KC_RBRC, KC_NUBS, \
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_EQL, KC_LBRC, KC_RBRC, KC_NUBS,
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, OOOOOOO, KC_HOME, KC_PGDOWN, KC_PGUP, KC_END),
[3] = LAYOUT_planck_mit(
- _______, _______, _______, _______, _______, _______, KC_COPY, KC_PGUP, _______, _______, KC_PASTE, KC_DEL, \
- _______, _______, _______, KC_PGDN, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, \
- _______, _______, KC_CUT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, KC_COPY, KC_PGUP, _______, _______, KC_PASTE, KC_DEL,
+ _______, _______, _______, KC_PGDN, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
+ _______, _______, KC_CUT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, OOOOOOO, _______, _______, _______, _______, _______, _______, _______),
[4] = LAYOUT_planck_mit(
- _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, \
- KC_PSCR, KC_INS, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______, \
- KC_CAPS, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______,
+ KC_PSCR, KC_INS, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, _______,
+ KC_CAPS, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______,
_______, _______, _______, _______, _______, _______, _______, OOOOOOO, _______, _______, _______),
diff --git a/keyboards/mt40/rules.mk b/keyboards/mt40/rules.mk
index 4c369aeccf..3024f40149 100644
--- a/keyboards/mt40/rules.mk
+++ b/keyboards/mt40/rules.mk
@@ -4,13 +4,15 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ # nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/mt64rgb/rules.mk b/keyboards/mt64rgb/rules.mk
index 668ce65eb9..56724f822a 100644
--- a/keyboards/mt64rgb/rules.mk
+++ b/keyboards/mt64rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/mt84/rules.mk b/keyboards/mt84/rules.mk
index 9a6a206000..0543099445 100644
--- a/keyboards/mt84/rules.mk
+++ b/keyboards/mt84/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGB_MATRIX_ENABLE = yes # Use RGB Matrix
RGB_MATRIX_DRIVER = IS31FL3737
diff --git a/keyboards/mt980/rules.mk b/keyboards/mt980/rules.mk
index c6039722ef..2ca5686493 100644
--- a/keyboards/mt980/rules.mk
+++ b/keyboards/mt980/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/mtbkeys/mtb60/hotswap/hotswap.h b/keyboards/mtbkeys/mtb60/hotswap/hotswap.h
index 7dae44b5da..e1e607e4c9 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/hotswap.h
+++ b/keyboards/mtbkeys/mtb60/hotswap/hotswap.h
@@ -18,16 +18,32 @@
#include "quantum.h"
-#define LAYOUT( \
- k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, ke0, \
- k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \
- k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \
- k03, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kd3, \
- k04, k14, k24, k64, ka4, kb4, kd4, ke4 \
+#define ___ KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │40 │41 │42 │46 │4a │4b │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+
+#define LAYOUT_60_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4d, k4e \
) { \
- { k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, KC_NO, ke0 }, \
- { KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \
- { k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \
- { k03, KC_NO, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, KC_NO, kd3, KC_NO }, \
- { k04, k14, k24, KC_NO, KC_NO, KC_NO, k64, KC_NO, KC_NO, KC_NO, ka4, kb4, kd4, KC_NO, ke4 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, ___, k0e }, \
+ { ___, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
+ { k20, ___, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, ___ }, \
+ { k30, ___, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___, k3d, ___ }, \
+ { k40, k41, k42, ___, ___, ___, k46, ___, ___, ___, k4a, k4b, k4d, ___, k4e } \
}
diff --git a/keyboards/mtbkeys/mtb60/hotswap/info.json b/keyboards/mtbkeys/mtb60/hotswap/info.json
index 5718d70507..9e4ae0be29 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/info.json
+++ b/keyboards/mtbkeys/mtb60/hotswap/info.json
@@ -1,71 +1,78 @@
{
"keyboard_name": "MTB60",
"url": "mtbkeys.com",
- "maintainer": "MTBKeys",
+ "maintainer": "kgieselman",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60_ansi"
+ },
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT_60_ansi": {
"layout": [
- {"label": "Esc" , "x": 0, "y": 0 },
- {"label": "!" , "x": 1, "y": 0 },
- {"label": "@" , "x": 2, "y": 0 },
- {"label": "#" , "x": 3, "y": 0 },
- {"label": "$" , "x": 4, "y": 0 },
- {"label": "%" , "x": 5, "y": 0 },
- {"label": "^" , "x": 6, "y": 0 },
- {"label": "&" , "x": 7, "y": 0 },
- {"label": "*" , "x": 8, "y": 0 },
- {"label": "(" , "x": 9, "y": 0 },
- {"label": ")" , "x": 10, "y": 0 },
- {"label": "_" , "x": 11, "y": 0 },
- {"label": "+" , "x": 12, "y": 0 },
- {"label": "Back Space", "x": 13, "y": 0, "w": 2},
- {"label": "Tab", "x": 0 , "y": 1, "w": 1.5},
- {"label": "Q" , "x": 1.5, "y": 1 },
- {"label": "W" , "x": 2.5, "y": 1 },
- {"label": "E" , "x": 3.5, "y": 1 },
- {"label": "R" , "x": 4.5, "y": 1 },
- {"label": "T" , "x": 5.5, "y": 1 },
- {"label": "Y" , "x": 6.5, "y": 1 },
- {"label": "U" , "x": 7.5, "y": 1 },
- {"label": "I" , "x": 8.5, "y": 1 },
- {"label": "O" , "x": 9.5, "y": 1 },
- {"label": "P" , "x": 10.5, "y": 1 },
- {"label": "{" , "x": 11.5, "y": 1 },
- {"label": "}" , "x": 12.5, "y": 1 },
- {"label": "|" , "x": 13.5, "y": 1, "w": 1.5},
- {"label": "Caps Lock", "x": 0 , "y": 2, "w": 1.75},
- {"label": "A" , "x": 1.75, "y": 2 },
- {"label": "S" , "x": 2.75, "y": 2 },
- {"label": "D" , "x": 3.75, "y": 2 },
- {"label": "F" , "x": 4.75, "y": 2 },
- {"label": "G" , "x": 5.75, "y": 2 },
- {"label": "H" , "x": 6.75, "y": 2 },
- {"label": "J" , "x": 7.75, "y": 2 },
- {"label": "K" , "x": 8.75, "y": 2 },
- {"label": "L" , "x": 9.75, "y": 2 },
- {"label": ":" , "x": 10.75, "y": 2 },
- {"label": "\"" , "x": 11.75, "y": 2 },
- {"label": "Enter" , "x": 12.75, "y": 2, "w": 2.25},
- {"label": "Left Shift" , "x": 0 , "y": 3, "w": 2.25},
- {"label": "Z" , "x": 2.25, "y": 3 },
- {"label": "X" , "x": 3.25, "y": 3 },
- {"label": "C" , "x": 4.25, "y": 3 },
- {"label": "V" , "x": 5.25, "y": 3 },
- {"label": "B" , "x": 6.25, "y": 3 },
- {"label": "N" , "x": 7.25, "y": 3 },
- {"label": "M" , "x": 8.25, "y": 3 },
- {"label": "<" , "x": 9.25, "y": 3 },
- {"label": ">" , "x": 10.25, "y": 3 },
- {"label": "?" , "x": 11.25, "y": 3 },
- {"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75},
- {"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25},
- {"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25},
- {"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25},
- {"label": "Space" , "x": 3.75, "y": 4, "w": 6.25},
- {"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25},
- {"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25},
- {"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25},
- {"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25}
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Back Space", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Left Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Right Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Left Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Left Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Right Ctrl", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"MO(1)", "x":12.5, "y":4, "w":1.25},
+ {"label":"Right Ctrl", "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c b/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c
index 648c8201f5..58dcf77414 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c
+++ b/keyboards/mtbkeys/mtb60/hotswap/keymaps/default/keymap.c
@@ -22,14 +22,14 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT(
+ [_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL
),
- [_FN] = LAYOUT(
+ [_FN] = LAYOUT_60_ansi(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
diff --git a/keyboards/mtbkeys/mtb60/hotswap/rules.mk b/keyboards/mtbkeys/mtb60/hotswap/rules.mk
index 02ae236709..0d092c2ef8 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/rules.mk
+++ b/keyboards/mtbkeys/mtb60/hotswap/rules.mk
@@ -12,10 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 60_ansi
diff --git a/keyboards/mtbkeys/mtb60/solder/info.json b/keyboards/mtbkeys/mtb60/solder/info.json
index e60d3eee2f..c2e49e8f77 100644
--- a/keyboards/mtbkeys/mtb60/solder/info.json
+++ b/keyboards/mtbkeys/mtb60/solder/info.json
@@ -2,73 +2,84 @@
"keyboard_name": "MTB60",
"url": "mtbkeys.com",
"maintainer": "MTBKeys",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_all"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label": "Esc" , "x": 0, "y": 0},
- {"label": "!" , "x": 1, "y": 0},
- {"label": "@" , "x": 2, "y": 0},
- {"label": "#" , "x": 3, "y": 0},
- {"label": "$" , "x": 4, "y": 0},
- {"label": "%" , "x": 5, "y": 0},
- {"label": "^" , "x": 6, "y": 0},
- {"label": "&" , "x": 7, "y": 0},
- {"label": "*" , "x": 8, "y": 0},
- {"label": "(" , "x": 9, "y": 0},
- {"label": ")" , "x": 10, "y": 0},
- {"label": "_" , "x": 11, "y": 0},
- {"label": "+" , "x": 12, "y": 0},
- {"label": "Back Space", "x": 13, "y": 0},
- {"label": "Delete" , "x": 14, "y": 0},
- {"label": "Tab", "x": 0 , "y": 1, "w": 1.5},
- {"label": "Q" , "x": 1.5, "y": 1 },
- {"label": "W" , "x": 2.5, "y": 1 },
- {"label": "E" , "x": 3.5, "y": 1 },
- {"label": "R" , "x": 4.5, "y": 1 },
- {"label": "T" , "x": 5.5, "y": 1 },
- {"label": "Y" , "x": 6.5, "y": 1 },
- {"label": "U" , "x": 7.5, "y": 1 },
- {"label": "I" , "x": 8.5, "y": 1 },
- {"label": "O" , "x": 9.5, "y": 1 },
- {"label": "P" , "x": 10.5, "y": 1 },
- {"label": "{" , "x": 11.5, "y": 1 },
- {"label": "}" , "x": 12.5, "y": 1 },
- {"label": "|" , "x": 13.5, "y": 1, "w": 1.5},
- {"label": "Caps Lock", "x": 0 , "y": 2, "w": 1.75},
- {"label": "A" , "x": 1.75, "y": 2 },
- {"label": "S" , "x": 2.75, "y": 2 },
- {"label": "D" , "x": 3.75, "y": 2 },
- {"label": "F" , "x": 4.75, "y": 2 },
- {"label": "G" , "x": 5.75, "y": 2 },
- {"label": "H" , "x": 6.75, "y": 2 },
- {"label": "J" , "x": 7.75, "y": 2 },
- {"label": "K" , "x": 8.75, "y": 2 },
- {"label": "L" , "x": 9.75, "y": 2 },
- {"label": ":" , "x": 10.75, "y": 2 },
- {"label": "\"" , "x": 11.75, "y": 2 },
- {"label": "Enter" , "x": 12.75, "y": 2, "w": 2.25},
- {"label": "Left Shift" , "x": 0 , "y": 3, "w": 2.25},
- {"label": "Z" , "x": 2.25, "y": 3 },
- {"label": "X" , "x": 3.25, "y": 3 },
- {"label": "C" , "x": 4.25, "y": 3 },
- {"label": "V" , "x": 5.25, "y": 3 },
- {"label": "B" , "x": 6.25, "y": 3 },
- {"label": "N" , "x": 7.25, "y": 3 },
- {"label": "M" , "x": 8.25, "y": 3 },
- {"label": "<" , "x": 9.25, "y": 3 },
- {"label": ">" , "x": 10.25, "y": 3 },
- {"label": "?" , "x": 11.25, "y": 3 },
- {"label": "Right Shift", "x": 12.25, "y": 3, "w": 2.75},
- {"label": "Left Ctrl" , "x": 0 , "y": 4, "w": 1.25},
- {"label": "GUI" , "x": 1.25, "y": 4, "w": 1.25},
- {"label": "Left Alt" , "x": 2.5 , "y": 4, "w": 1.25},
- {"label": "Space" , "x": 3.75, "y": 4, "w": 2.25},
- {"label": "Space" , "x": 6 , "y": 4, "w": 1.25},
- {"label": "Space" , "x": 7.25, "y": 4, "w": 2.75},
- {"label": "Right Ctrl", "x": 10 , "y": 4, "w": 1.25},
- {"label": "GUI" , "x": 11.25, "y": 4, "w": 1.25},
- {"label": "MO(1)" , "x": 12.5 , "y": 4, "w": 1.25},
- {"label": "Right Ctrl", "x": 13.75, "y": 4, "w": 1.25}
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Back Space", "x":13, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Left Shift", "x":0, "y":3},
+ {"label":"\\|", "x":1, "y":3},
+ {"label":"Z", "x":2, "y":3},
+ {"label":"X", "x":3, "y":3},
+ {"label":"C", "x":4, "y":3},
+ {"label":"V", "x":5, "y":3},
+ {"label":"B", "x":6, "y":3},
+ {"label":"N", "x":7, "y":3},
+ {"label":"M", "x":8, "y":3},
+ {"label":",<", "x":9, "y":3},
+ {"label":".>", "x":10, "y":3},
+ {"label":"/?", "x":11, "y":3},
+ {"label":"Right Shift", "x":12, "y":3},
+ {"label":"\u2191", "x":13, "y":3},
+ {"label":"End", "x":14, "y":3},
+
+ {"label":"Left Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Left Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":2.25},
+ {"label":"Space", "x":6, "y":4, "w":1.25},
+ {"label":"Space", "x":7.25, "y":4, "w":2.75},
+ {"label":"Right Alt", "x":10, "y":4},
+ {"label":"GUI", "x":11, "y":4},
+ {"label":"\u2190", "x":12, "y":4},
+ {"label":"\u2193", "x":13, "y":4},
+ {"label":"\u2192", "x":14, "y":4}
]
}
}
diff --git a/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c b/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c
index 6ed34b6432..a6ce02443a 100644
--- a/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c
+++ b/keyboards/mtbkeys/mtb60/solder/keymaps/default/keymap.c
@@ -23,14 +23,14 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [_BASE] = LAYOUT(
+ [_BASE] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(_FN), KC_RGUI, KC_RCTL
),
- [_FN] = LAYOUT(
+ [_FN] = LAYOUT_all(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
diff --git a/keyboards/mtbkeys/mtb60/solder/rules.mk b/keyboards/mtbkeys/mtb60/solder/rules.mk
index 33e1763375..1f52c37154 100644
--- a/keyboards/mtbkeys/mtb60/solder/rules.mk
+++ b/keyboards/mtbkeys/mtb60/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mtbkeys/mtb60/solder/solder.h b/keyboards/mtbkeys/mtb60/solder/solder.h
index 31756e7af7..6beed5154e 100644
--- a/keyboards/mtbkeys/mtb60/solder/solder.h
+++ b/keyboards/mtbkeys/mtb60/solder/solder.h
@@ -18,16 +18,32 @@
#include "quantum.h"
-#define LAYOUT( \
- k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0, \
- k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1, \
- k02, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, \
- k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3, \
- k04, k14, k34, k44, k64, k84, ka4, kb4, kc4, kd4, ke4 \
+#define ___ KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
+ * ├───┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├───┴┬──┴─┬─┴──┬┴───┴───┼───┴┬──┴───┴───┼───┼───┼───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘
+ */
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
+ k40, k41, k43, k44, k46, k48, k4a, k4b, k4c, k4d, k4e \
) { \
- { k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, ke0 }, \
- { KC_NO, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, ke1 }, \
- { k02, KC_NO, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, KC_NO }, \
- { k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, kd3, ke3 }, \
- { k04, k14, KC_NO, k34, k44, KC_NO, k64, KC_NO, k84, KC_NO, ka4, kb4, kc4, kd4, ke4 } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { ___, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
+ { k20, ___, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
+ { k40, k41, ___, k43, k44, ___, k46, ___, k48, ___, k4a, k4b, k4c, k4d, k4e } \
}
diff --git a/keyboards/murcielago/rev1/rules.mk b/keyboards/murcielago/rev1/rules.mk
index 2dcef560d9..765d29393c 100644
--- a/keyboards/murcielago/rev1/rules.mk
+++ b/keyboards/murcielago/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mwstudio/mw65_black/config.h b/keyboards/mwstudio/mw65_black/config.h
new file mode 100644
index 0000000000..9cd1aade78
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7BA1
+#define PRODUCT_ID 0x6500
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MWStudio
+#define PRODUCT MW65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D4, D7, B4, B3, B6 }
+#define MATRIX_COL_PINS { B0, B1, B2, D0, D1, D2, D3, D5, C6, F7, F4, F6, F5, F1, F0 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't neede */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN C7
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 21
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+#endif
+
+#define ENCODERS_PAD_A { E6 }
+#define ENCODERS_PAD_B { D6 }
diff --git a/keyboards/mwstudio/mw65_black/info.json b/keyboards/mwstudio/mw65_black/info.json
new file mode 100644
index 0000000000..1245157792
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "MW65_BLACK",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"ESC", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"\\", "x":13.5, "y":1, "w":1.5},
+ {"label":"PgUp", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"\\", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":2, "w":1.25},
+ {"label":"PgDn", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c b/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c
new file mode 100644
index 0000000000..620a39091e
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c b/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c
new file mode 100644
index 0000000000..620a39091e
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, RGB_TOG,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk b/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mwstudio/mw65_black/mw65_black.c b/keyboards/mwstudio/mw65_black/mw65_black.c
new file mode 100644
index 0000000000..e215abb804
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/mw65_black.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mw65_black.h"
diff --git a/keyboards/mwstudio/mw65_black/mw65_black.h b/keyboards/mwstudio/mw65_black/mw65_black.h
new file mode 100644
index 0000000000..be7f3e6f3c
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/mw65_black.h
@@ -0,0 +1,30 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
+ K400, K401, K402, K405, K409, K410, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314 }, \
+ { K400, K401, K402, K405, K409, K410, K412, K413, K414 } \
+}
diff --git a/keyboards/mwstudio/mw65_black/readme.md b/keyboards/mwstudio/mw65_black/readme.md
new file mode 100644
index 0000000000..4127469019
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/readme.md
@@ -0,0 +1,22 @@
+# MW65_BLACK
+
+![MW65_BLACK](https://i.imgur.com/vC93zq4.jpg?1)
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mwstudio/mw65_black:default
+
+Flashing example for this keyboard:
+
+ make mwstudio/mw65_black:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/mwstudio/mw65_black/rules.mk b/keyboards/mwstudio/mw65_black/rules.mk
new file mode 100644
index 0000000000..ed59e99abc
--- /dev/null
+++ b/keyboards/mwstudio/mw65_black/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
diff --git a/keyboards/mwstudio/mw65_rgb/config.h b/keyboards/mwstudio/mw65_rgb/config.h
index 8a320664a9..d484f7e351 100644
--- a/keyboards/mwstudio/mw65_rgb/config.h
+++ b/keyboards/mwstudio/mw65_rgb/config.h
@@ -26,11 +26,11 @@
#define PRODUCT MW65
/* key matrix size */
-#define MATRIX_ROWS 6
+#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* key matrix pins */
-#define MATRIX_ROW_PINS { D0, D1, D2, D3, B7, B0 }
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, B7 }
#define MATRIX_COL_PINS { C6, B6, B5, B4, D7, D6, D4, C7, F7, F6, F5, F4, F1, F0, E6 }
#define BOOTMAGIC_LITE_ROW 0
@@ -42,20 +42,59 @@
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
+/* Encoder pins */
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B2 }
+
+/* RGB Matrix config */
#define RGB_DI_PIN B3
-#ifdef RGB_DI_PIN
- #define RGBLIGHT_SLEEP
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL 83
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
- #define DRIVER_LED_TOTAL 83
- #define RGBLED_NUM 83
#define RGB_MATRIX_KEYPRESSES
- #define RGBLIGHT_HUE_STEP 8
- #define RGBLIGHT_SAT_STEP 8
- #define RGBLIGHT_VAL_STEP 8
-#endif
+ /* RGB Matrix effect */
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_BREATHING
+ #define ENABLE_RGB_MATRIX_BAND_SAT
+ #define ENABLE_RGB_MATRIX_BAND_VAL
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+ #define ENABLE_RGB_MATRIX_CYCLE_ALL
+ #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+ #define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+ #define ENABLE_RGB_MATRIX_DUAL_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+ #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #define ENABLE_RGB_MATRIX_RAINDROPS
+ #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #define ENABLE_RGB_MATRIX_HUE_BREATHING
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #define ENABLE_RGB_MATRIX_HUE_WAVE
+ #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-#define ENCODERS_PAD_A { B1 }
-#define ENCODERS_PAD_B { B2 }
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+ #define ENABLE_RGB_MATRIX_SPLASH
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c
index 7028a223c5..8153790b14 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, RGB_TOG,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- ),
+ ),
[1] = LAYOUT(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_HUI, _______,
@@ -31,21 +31,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
_______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- [3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
+ )
};
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
new file mode 100644
index 0000000000..13cffea4da
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #undef ENABLE_RGB_MATRIX_BAND_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+ #undef ENABLE_RGB_MATRIX_SPLASH
+ #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+#endif
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c
new file mode 100644
index 0000000000..2ca3152589
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c
@@ -0,0 +1,103 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#include "keymap_stuff.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ VolD ◯ VolU
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│Hom│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │End│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ ◯
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSht │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_HOME, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ◯
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Home │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │Pause│Ins│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ PrtSc │Del│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │ │ │ │ │ Fn │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUSE, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, MO(_RN), _______, _______, _______
+ ),
+
+/*
+ ◯
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │Rst│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │1Hd│1Hi│1Sd│1Si│1Vd│1Vi│ │Hud│Hui│ │C_E│ │ │Tog│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ │2Hd│2Hi│2Sd│2Si│2Vd│2Vi│ │Sad│Sai│ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ │Pre│Ref│Flp│ │ │ │Spd│Spi│ │ │ │Vai│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │ │ │ │ │ │ Rn │ │Rod│Vad│Mod│
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_RN] = LAYOUT(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, G1_HUD, G1_HUI, G1_SAD, G1_SAI, G1_VAD, G1_VAI, _______, RGB_HUD, RGB_HUI, _______, RGB_C_E, _______, _______, RGB_TOG,
+ _______, G2_HUD, G2_HUI, G2_SAD, G2_SAI, G2_VAD, G2_VAI, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______,
+ _______, G_PRE, REF_G, G_FLIP, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, RGB_VAI, _______,
+ _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+};
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap_stuff.h b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap_stuff.h
new file mode 100644
index 0000000000..c8b8015363
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap_stuff.h
@@ -0,0 +1,335 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1,
+ _RN = 2
+};
+
+// For CUSTOM_GRADIENT
+HSV gradient_0 = {205, 250, 255};
+HSV gradient_100 = {140, 215, 125};
+bool reflected_gradient = false;
+uint8_t gp_i = 0;
+
+typedef struct {
+ HSV gradient_0;
+ HSV gradient_1;
+ bool reflected;
+} CUSTOM_PRESETS;
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+enum layer_keycodes {
+ //Custom Gradient control keycode
+ G1_HUI = SAFE_RANGE, //Custom gradient color 1 hue increase
+ G1_HUD, //Custom gradient color 1 hue decrease
+ G1_SAI, //Custom gradient color 1 saturation increase
+ G1_SAD, //Custom gradient color 1 saturation decrease
+ G1_VAI, //Custom gradient color 1 value increase
+ G1_VAD, //Custom gradient color 1 value decrease
+ G2_HUI, //Custom gradient color 2 hue increase
+ G2_HUD, //Custom gradient color 2 hue decrease
+ G2_SAI, //Custom gradient color 2 saturation increase
+ G2_SAD, //Custom gradient color 2 saturation decrease
+ G2_VAI, //Custom gradient color 2 value increase
+ G2_VAD, //Custom gradient color 2 value decrease
+ G_PRE, //Gradient presets
+ REF_G, //Toggle between linear and reflected gradient
+ G_FLIP, //Flip the gradient colors
+
+ //Custom led effect keycode
+ RGB_C_E, //Cycle user effect
+};
+
+void keyboard_post_init_kb(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint8_t color_adj_step = 5;
+
+ CUSTOM_PRESETS gradient_presets[] = {
+ {{41 , 255, 255}, {233, 245, 255}, false },
+ {{45 , 245, 155}, {160, 255, 80}, false },
+ {{173, 245, 40}, {41 , 255, 205}, true },
+ {{32 , 255, 165}, {217, 185, 70}, false },
+ {{240, 255, 145}, {115, 255, 245}, true },
+ {{118, 255, 255}, {242, 255, 255}, false },
+ {{212, 0 , 0}, {223, 235, 165}, true },
+ {{205, 250, 255}, {140, 215, 125}, false },
+ };
+
+ uint8_t gp_length = sizeof(gradient_presets)/sizeof(gradient_presets[0]);
+
+ switch (keycode) {
+ case G1_HUI:
+ if (record->event.pressed) {
+ gradient_0.h += color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_HUD:
+ if (record->event.pressed) {
+ gradient_0.h -= color_adj_step;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAI:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s + color_adj_step * 2 <= 255) ? gradient_0.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_SAD:
+ if (record->event.pressed) {
+ gradient_0.s = (gradient_0.s - color_adj_step * 2 >= 0) ? gradient_0.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAI:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v + color_adj_step * 2 <= 255) ? gradient_0.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G1_VAD:
+ if (record->event.pressed) {
+ gradient_0.v = (gradient_0.v - color_adj_step * 2 >= 0) ? gradient_0.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 0 HSV: %d, %d, %d\n", gradient_0.h, gradient_0.s, gradient_0.v);
+ }
+ return false;
+ case G2_HUI:
+ if (record->event.pressed) {
+ gradient_100.h += color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_HUD:
+ if (record->event.pressed) {
+ gradient_100.h -= color_adj_step;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAI:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s + color_adj_step * 2 <= 255) ? gradient_100.s + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_SAD:
+ if (record->event.pressed) {
+ gradient_100.s = (gradient_100.s - color_adj_step * 2 >= 0) ? gradient_100.s - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAI:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v + color_adj_step * 2 <= 255) ? gradient_100.v + color_adj_step * 2 : 255;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G2_VAD:
+ if (record->event.pressed) {
+ gradient_100.v = (gradient_100.v - color_adj_step * 2 >= 0) ? gradient_100.v - color_adj_step * 2 : 0;
+ dprintf("Gradient 100 HSV: %d, %d, %d\n", gradient_100.h, gradient_100.s, gradient_100.v);
+ }
+ return false;
+ case G_PRE:
+ if (record->event.pressed) {
+ gp_i = (gp_i + gp_length ) % gp_length;
+
+ gradient_0 = gradient_presets[gp_i].gradient_0;
+ gradient_100 = gradient_presets[gp_i].gradient_1;
+ reflected_gradient = gradient_presets[gp_i].reflected;
+
+ gp_i += 1;
+ }
+ return false;
+ case REF_G:
+ if (record->event.pressed) {
+ reflected_gradient = !reflected_gradient;
+ }
+ return false;
+ case G_FLIP:
+ if (record->event.pressed) {
+ HSV temp_color = gradient_0;
+ gradient_0 = gradient_100;
+ gradient_100 = temp_color;
+ }
+ return false;
+ case RGB_C_E:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_mode()) {
+ case RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_COOL_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_COOL_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE);
+ return false;
+ case RGB_MATRIX_CUSTOM_RAINBOW_REACTIVE_SIMPLE:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_KITT);
+ return false;
+ case RGB_MATRIX_CUSTOM_KITT:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_RANDOM_BREATH_RAINBOW);
+ return false;
+ default:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_CUSTOM_GRADIENT);
+ return false;
+ }
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+ return true;
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 3));
+ } else {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 4));
+ }
+ }
+ return true;
+}
+#endif
+
+void rgb_matrix_indicators_user(void) {
+ switch (biton32(layer_state)) {
+ case _FN:
+ rgb_matrix_set_color(16, 0, 0, 0); rgb_matrix_set_color(17, 0, 0, 0); rgb_matrix_set_color(18, 0, 0, 0); rgb_matrix_set_color(21, 0, 0, 0);
+ rgb_matrix_set_color(22, 0, 0, 0); rgb_matrix_set_color(23, 0, 0, 0); rgb_matrix_set_color(24, 0, 0, 0); rgb_matrix_set_color(25, 0, 0, 0);
+ rgb_matrix_set_color(26, 0, 0, 0); rgb_matrix_set_color(27, 0, 0, 0); rgb_matrix_set_color(28, 0, 0, 0); rgb_matrix_set_color(29, 0, 0, 0);
+ rgb_matrix_set_color(30, 0, 0, 0); rgb_matrix_set_color(31, 0, 0, 0); rgb_matrix_set_color(32, 0, 0, 0); rgb_matrix_set_color(33, 0, 0, 0);
+ rgb_matrix_set_color(34, 0, 0, 0); rgb_matrix_set_color(35, 0, 0, 0); rgb_matrix_set_color(36, 0, 0, 0); rgb_matrix_set_color(37, 0, 0, 0);
+ rgb_matrix_set_color(38, 0, 0, 0); rgb_matrix_set_color(41, 0, 0, 0); rgb_matrix_set_color(42, 0, 0, 0); rgb_matrix_set_color(43, 0, 0, 0);
+ rgb_matrix_set_color(44, 0, 0, 0); rgb_matrix_set_color(45, 0, 0, 0); rgb_matrix_set_color(46, 0, 0, 0); rgb_matrix_set_color(47, 0, 0, 0);
+ rgb_matrix_set_color(48, 0, 0, 0); rgb_matrix_set_color(49, 0, 0, 0); rgb_matrix_set_color(50, 0, 0, 0); rgb_matrix_set_color(51, 0, 0, 0);
+ rgb_matrix_set_color(52, 0, 0, 0); rgb_matrix_set_color(53, 0, 0, 0); rgb_matrix_set_color(54, 0, 0, 0); rgb_matrix_set_color(55, 0, 0, 0);
+ rgb_matrix_set_color(56, 0, 0, 0); rgb_matrix_set_color(57, 0, 0, 0); rgb_matrix_set_color(58, 0, 0, 0); rgb_matrix_set_color(59, 0, 0, 0);
+ rgb_matrix_set_color(60, 0, 0, 0); rgb_matrix_set_color(61, 0, 0, 0); rgb_matrix_set_color(62, 0, 0, 0); rgb_matrix_set_color(63, 0, 0, 0);
+ rgb_matrix_set_color(64, 0, 0, 0); rgb_matrix_set_color(65, 0, 0, 0); rgb_matrix_set_color(68, 0, 0, 0);
+ break;
+ case _RN:
+ rgb_matrix_set_color(20, 0, 0, 0); rgb_matrix_set_color(21, 0, 0, 0); rgb_matrix_set_color(22, 0, 0, 0); rgb_matrix_set_color(23, 0, 0, 0);
+ rgb_matrix_set_color(24, 0, 0, 0); rgb_matrix_set_color(25, 0, 0, 0); rgb_matrix_set_color(29, 0, 0, 0); rgb_matrix_set_color(30, 0, 0, 0);
+ rgb_matrix_set_color(31, 0, 0, 0); rgb_matrix_set_color(34, 0, 0, 0); rgb_matrix_set_color(35, 0, 0, 0); rgb_matrix_set_color(36, 0, 0, 0);
+ rgb_matrix_set_color(38, 0, 0, 0); rgb_matrix_set_color(39, 0, 0, 0); rgb_matrix_set_color(40, 0, 0, 0); rgb_matrix_set_color(41, 0, 0, 0);
+ rgb_matrix_set_color(42, 0, 0, 0); rgb_matrix_set_color(45, 0, 0, 0); rgb_matrix_set_color(52, 0, 0, 0); rgb_matrix_set_color(53, 0, 0, 0);
+ rgb_matrix_set_color(60, 0, 0, 0); rgb_matrix_set_color(63, 0, 0, 0); rgb_matrix_set_color(65, 0, 0, 0); rgb_matrix_set_color(66, 0, 0, 0);
+ rgb_matrix_set_color(68, 0, 0, 0); rgb_matrix_set_color(69, 0, 0, 0); rgb_matrix_set_color(70, 0, 0, 0); rgb_matrix_set_color(71, 0, 0, 0);
+ rgb_matrix_set_color(72, 0, 0, 0); rgb_matrix_set_color(73, 0, 0, 0); rgb_matrix_set_color(74, 0, 0, 0); rgb_matrix_set_color(75, 0, 0, 0);
+ rgb_matrix_set_color(76, 0, 0, 0); rgb_matrix_set_color(77, 0, 0, 0); rgb_matrix_set_color(78, 0, 0, 0); rgb_matrix_set_color(79, 0, 0, 0);
+ rgb_matrix_set_color(80, 0, 0, 0); rgb_matrix_set_color(81, 0, 0, 0);
+ break;
+ }
+
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(52, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(52, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(52, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/cool_diagonal.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/cool_diagonal.c
new file mode 100644
index 0000000000..367b3d5720
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/cool_diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV COOL_DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = (g_led_config.point[i].x / 4) - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool COOL_DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &COOL_DIAGONAL_math); }
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/custom_gradient.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/custom_gradient.c
new file mode 100644
index 0000000000..49e4a242fb
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/custom_gradient.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+extern HSV gradient_0;
+extern HSV gradient_100;
+extern bool reflected_gradient;
+
+static HSV INTERPOLATE_HSV(float step, HSV gradient_0, HSV gradient_100) {
+ uint8_t cw, ccw;
+ HSV color;
+
+ cw = (gradient_0.h >= gradient_100.h) ? 255 + gradient_100.h - gradient_0.h : gradient_100.h - gradient_0.h; // Hue range is 0 to 255.
+ ccw = (gradient_0.h >= gradient_100.h) ? gradient_0.h - gradient_100.h : 255 + gradient_0.h - gradient_100.h;
+
+ if( cw < ccw ) { // going clockwise
+ color.h = gradient_0.h + (uint8_t)(step * cw);
+ } else { // Going counter clockwise
+ color.h = gradient_0.h - (uint8_t)(step * ccw);
+ }
+
+ color.s = gradient_0.s + step * (gradient_100.s - gradient_0.s);
+
+ // Scale V with global RGB Matrix's V, so users can still control overall brightness with RGB_VAI & RGB_VAD0
+ color.v = round((gradient_0.v + step * (gradient_100.v - gradient_0.v)) * ((float)rgb_matrix_config.hsv.v / 255));
+
+ return color;
+}
+
+static HSV CUSTOM_GRADIENT_math(uint8_t led_x, uint8_t min_x, uint8_t max_x) {
+ float step = (float)led_x / (max_x - min_x);
+ float mid_gradient_pos = 0.5;
+
+ if( reflected_gradient ) {
+ if( step <= mid_gradient_pos ) {
+ return INTERPOLATE_HSV(step * (1/mid_gradient_pos), gradient_0, gradient_100);
+ } else {
+ return INTERPOLATE_HSV((step - mid_gradient_pos) * (1/(1-mid_gradient_pos)), gradient_100, gradient_0);
+ }
+
+ } else {
+ return INTERPOLATE_HSV(step, gradient_0, gradient_100);
+ }
+}
+
+static bool CUSTOM_GRADIENT(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t min_x = 0; // X coordinate of the left-most LED
+ uint8_t max_x = 224; // X coordinate of the right-most LED
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+
+ HSV hsv_orig = CUSTOM_GRADIENT_math(g_led_config.point[i].x, min_x, max_x);
+ RGB rgb = hsv_to_rgb(hsv_orig);
+
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/diagonal.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/diagonal.c
new file mode 100644
index 0000000000..19e3791bd6
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/diagonal.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static HSV DIAGONAL_math(HSV hsv, uint8_t i, uint8_t time) {
+ hsv.h = g_led_config.point[i].x - g_led_config.point[i].y - time;
+ return hsv;
+}
+
+bool DIAGONAL(effect_params_t* params) { return effect_runner_i(params, &DIAGONAL_math); }
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/kitt.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/kitt.c
new file mode 100644
index 0000000000..7f45cc23e2
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/kitt.c
@@ -0,0 +1,68 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// variable for startup animation
+bool BASE_EFFECT_NOT_STARTED_YET = true;
+uint8_t base_effect_startup_counter = 255;
+
+uint8_t led_count = 10;
+uint8_t led_first = 41;
+
+static uint8_t time_to_led(uint8_t time, uint8_t led_behind) {
+ uint16_t led_time = led_count * time;
+ uint16_t step = ((2 * led_count + (led_time / 128)) - led_behind) % (2 * led_count);
+ uint8_t led;
+
+ if (step < led_count) {
+ led = step;
+ } else {
+ led = led_count - 1 - (step - led_count);
+ }
+
+ return led;
+}
+
+static HSV KITT_math(HSV hsv, uint8_t i, uint8_t time) {
+
+ // reset base effect startup
+ if (i == 0) {
+ BASE_EFFECT_NOT_STARTED_YET = true;
+ }
+
+ hsv.h = 0;
+ hsv.s = 255;
+
+ if (i >= led_first && i < led_first + led_count) {
+ uint8_t j = i - led_first;
+ if (j == time_to_led(time, 0)) {
+ hsv.v = hsv.v;
+ } else if (j == time_to_led(time, 1)) {
+ hsv.v = hsv.v/2;
+ } else if (j == time_to_led(time, 2)) {
+ hsv.v = hsv.v/4;
+ } else if (j == time_to_led(time, 3)) {
+ hsv.v = hsv.v/8;
+ } else {
+ hsv.v = 0;
+ }
+ } else {
+ hsv.v = 0;
+ }
+
+ return hsv;
+}
+
+bool KITT(effect_params_t* params) { return effect_runner_i(params, &KITT_math); }
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c
new file mode 100644
index 0000000000..ae33988721
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c
@@ -0,0 +1,25 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "led/rainbow_reactive_simple/rainbow_reactive_simple.h"
+
+static HSV RAINBOW_REACTIVE_SIMPLE_math(HSV hsv, uint8_t i, uint8_t time, uint16_t offset) {
+ hsv.h = g_led_config.point[i].x - time;
+ hsv.v = scale8(255 - offset, hsv.v);
+ return hsv;
+}
+
+bool RAINBOW_REACTIVE_SIMPLE(effect_params_t* params) { return effect_rainbow_reactive(params, &RAINBOW_REACTIVE_SIMPLE_math); }
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h
new file mode 100644
index 0000000000..56b204e0a9
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h
@@ -0,0 +1,45 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+typedef HSV (*rainbow_reactive_f)(HSV hsv, uint8_t i, uint8_t time, uint16_t offset);
+
+bool effect_rainbow_reactive(effect_params_t* params, rainbow_reactive_f effect_func) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 4);
+ uint16_t max_tick = 65535 / rgb_matrix_config.speed;
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ uint16_t tick = max_tick;
+
+ // Reverse search to find most recent key hit
+ for (int8_t j = g_last_hit_tracker.count - 1; j >= 0; j--) {
+ if (g_last_hit_tracker.index[j] == i && g_last_hit_tracker.tick[j] < tick) {
+ tick = g_last_hit_tracker.tick[j];
+ break;
+ }
+ }
+
+ uint16_t offset = scale16by8(tick, rgb_matrix_config.speed);
+ RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time, offset));
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/random_breath_rainbow.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/random_breath_rainbow.c
new file mode 100644
index 0000000000..041417477b
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/led/random_breath_rainbow.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static uint8_t offset[DRIVER_LED_TOTAL];
+
+static void doRandom_breath_rainbow(int i, effect_params_t* params) {
+ if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
+ uint16_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 6);
+
+ if (rand() * 50 == 1) {
+ if (rand() * 2 == 1) {
+ offset[i]++;
+ }
+ else {
+ offset[i]--;
+ }
+ }
+
+ //float val = (((float)sin8(time + offset[i]) / 256)/2.1) + .05;
+ HSV hsv = {0, 255, 255};
+ hsv.h = scale16by8(g_rgb_timer + offset[i], rgb_matrix_config.speed / 4) + (offset[i]*2);
+ hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+}
+
+bool RANDOM_BREATH_RAINBOW(effect_params_t* params) {
+
+ if (!params->init) {
+ // Change one LED every tick, make sure speed is not 0
+ doRandom_breath_rainbow(rand() % DRIVER_LED_TOTAL, params);
+ return false;
+ }
+
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ doRandom_breath_rainbow(i, params);
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/readme.md b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/readme.md
new file mode 100644
index 0000000000..2341d818ec
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/readme.md
@@ -0,0 +1,11 @@
+# My personal keymap with VIA and custom LED effect
+
+Keymap is default 67 qwerty, 65 ansi blocker layout
+
+It have new LED effect:
+
+- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt])
+- Diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Rainbow reactive simple
+- Knight Rider (ported from jumper149 code [https://github.com/jumper149/qmk_firmware/blob/jumper149/keyboards/dztech/dz65rgb/keymaps/jumper149/])
+- Random breath rainbow (based from daed code [https://github.com/daed/qmk_firmware/blob/master/keyboards/massdrop/alt/keymaps/daed] and modify by me)
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rgb_matrix_user.inc b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rgb_matrix_user.inc
new file mode 100644
index 0000000000..ea742af2d4
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rgb_matrix_user.inc
@@ -0,0 +1,17 @@
+RGB_MATRIX_EFFECT(CUSTOM_GRADIENT)
+RGB_MATRIX_EFFECT(DIAGONAL)
+RGB_MATRIX_EFFECT(COOL_DIAGONAL)
+RGB_MATRIX_EFFECT(RAINBOW_REACTIVE_SIMPLE)
+RGB_MATRIX_EFFECT(KITT)
+RGB_MATRIX_EFFECT(RANDOM_BREATH_RAINBOW)
+
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+#include "led/custom_gradient.c"
+#include "led/diagonal.c"
+#include "led/cool_diagonal.c"
+#include "led/rainbow_reactive_simple/rainbow_reactive_simple.c"
+#include "led/kitt.c"
+#include "led/random_breath_rainbow.c"
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rules.mk b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rules.mk
new file mode 100644
index 0000000000..c1f6494e2c
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/rules.mk
@@ -0,0 +1,6 @@
+MOUSEKEY_ENABLE = no # Mouse keys
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
+# can this go just in the keymap?
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
new file mode 100644
index 0000000000..ba574e1e3c
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 Thearesia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Change USB Polling Rate to 1000hz and a larger keys per scan for elite gaming */
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c
new file mode 100644
index 0000000000..70279c3347
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c
@@ -0,0 +1,201 @@
+/* Copyright 2021 Thearesia
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <math.h>
+
+#include <lib/lib8tion/lib8tion.h>
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum layer_names {
+ _BASE = 0,
+ _FN = 1
+};
+
+// enum layer_keycodes { };
+
+enum user_rgb_mode {
+ RGB_MODE_ALL,
+ RGB_MODE_KEYLIGHT,
+ RGB_MODE_UNDERGLOW,
+ RGB_MODE_NONE,
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t rgb_mode :8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ VolD ◯ VolU
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│Hom│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │End│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │LCrl│GUI │LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ ◯
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSht │ │ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_VOLD, KC_HOME, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ /────\
+ │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Home │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐ │ │
+ │Reset│ │ │ │ │ │ │ │ │Hud│Hui│ │ │Pause│Ins│ \────/
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ │ │ │ │ │ │ │ │ │ │Sad│Sai│ │ PrtSc │Del│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │Vai│Tog│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ │ │ │ │ │ │ Fn │ │Rod│Vad│Mod│
+ └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
+ [_FN] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_HOME, _______, _______, _______,
+ RESET, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, KC_PAUSE, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, _______, _______, KC_PSCR, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, RGB_VAI, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+};
+
+void keyboard_post_init_kb(void) {
+ user_config.raw = eeconfig_read_user();
+ switch (user_config.rgb_mode) {
+ case RGB_MODE_ALL:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ break;
+ case RGB_MODE_KEYLIGHT:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ case RGB_MODE_NONE:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_KEYLIGHT;
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_UNDERGLOW;
+ }
+ break;
+ case (LED_FLAG_UNDERGLOW): {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ user_config.rgb_mode = RGB_MODE_NONE;
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ user_config.rgb_mode = RGB_MODE_ALL;
+ }
+ break;
+ }
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ }
+ return true;
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 3));
+ } else {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 4));
+ }
+ }
+ return true;
+}
+#endif
+
+void rgb_matrix_indicators_user(void) {
+ HSV hsv = rgb_matrix_config.hsv;
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(32, 1));
+ hsv.h = time;
+ RGB rgb = hsv_to_rgb(hsv);
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(52, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(52, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(52, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/readme.md b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/readme.md
new file mode 100644
index 0000000000..0fb9e0a292
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/readme.md
@@ -0,0 +1,3 @@
+# Personal Layout with VIA
+
+Keymap is default 67 qwerty, 65 ansi blocker layout
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/rules.mk b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.c b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c
index e49944f1ce..5fd657c6b9 100644
--- a/keyboards/mwstudio/mw65_rgb/mw65_rgb.c
+++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c
@@ -18,28 +18,30 @@
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
- { 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68 },
- { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67 },
- { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, 40, 39 },
- { 25, NO_LED, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 },
- { 24, 23, 22, NO_LED, NO_LED, NO_LED, 21, NO_LED, NO_LED, 15, 20, 19, 18, 17, 16 },
-
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
+ { 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, 40, 39 },
+ { 25, NO_LED, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 },
+ { 24, 23, 22, NO_LED, NO_LED, NO_LED, 21, NO_LED, NO_LED, NO_LED, 20, 19, 18, 17, 16 }
}, {
- { 175, 45 },{ 130, 45 },{ 85, 45 }, { 50, 45 }, { 15, 45 }, { 15, 35 }, { 15, 25 }, { 15, 10 },
- { 50, 10 }, { 85, 10 }, { 130, 10 }, { 175, 10 }, { 210, 10 }, { 210, 25 }, { 210, 35 }, { 210, 45 },
- { 217, 54 }, { 203, 54 }, { 189, 54 }, { 166, 54 }, { 150, 54 }, { 95, 54 }, { 40, 54 }, { 24, 54 }, { 8, 54 },
- { 17, 42 }, { 39, 42 }, { 53, 42 }, { 67, 42 }, { 81, 42 }, { 95, 42 }, { 109, 42 }, { 123, 42 }, { 137, 42 }, { 151, 42 }, { 165, 42 }, { 184, 42 }, { 203, 42 }, { 217, 42 },
- { 217, 30 }, { 195, 30 }, { 172, 30 }, { 158, 30 }, { 144, 30 }, { 130, 30 }, { 116, 30 }, { 102, 30 }, { 88, 30 }, { 74, 30 }, { 60, 30 }, { 46, 30 }, { 32, 30 },{ 13, 30 },
- { 9, 18 }, { 25, 18 }, { 39, 18 }, { 53, 18 }, { 67, 18 }, { 81, 18 }, { 95, 18 }, { 109, 18 }, { 123, 18 }, { 137, 18 }, { 151, 18 }, { 165, 18 }, { 181, 18 }, { 199, 18 }, { 217, 18 },
- { 217, 6 }, { 196, 6 }, { 175, 6 }, { 161, 6 }, { 147, 6 }, { 133, 6 }, { 119, 6 }, { 105, 6 }, { 91, 6 }, { 77, 6 }, { 63, 6 }, { 49, 6 }, { 35, 6 }, { 21, 6 }, { 7, 6 },
+ //Underglow (0 -> 15)
+ {180, 52}, {146, 52}, {86 , 52}, {45 , 52}, {7 , 52}, {7 , 36}, {7 , 20}, {7 , 4}, {45 , 4}, {86 , 4}, {146, 4}, {180, 4}, {217, 4}, {217, 20}, {217, 36}, {217, 52},
+
+ //Key matrix (16 -> 83)
+ {224, 64}, {209, 64}, {194, 64}, {173, 64}, {156, 64}, {96 , 64}, {36 , 64}, {19 , 64}, {2 , 64},
+ {8 , 48}, {31 , 48}, {46 , 48}, {61 , 48}, {76 , 48}, {91 , 48}, {106, 48}, {121, 48}, {136, 48}, {151, 48}, {166, 48}, {188, 48}, {210, 48}, {224, 48},
+ {224, 32}, {200, 32}, {175, 32}, {160, 32}, {145, 32}, {130, 32}, {115, 32}, {100, 32}, {85 , 32}, {70 , 32}, {55 , 32}, {40 , 32}, {25 , 32}, {5 , 32},
+ {3 , 16}, {21 , 16}, {36 , 16}, {51 , 16}, {66 , 16}, {81 , 16}, {96 , 16}, {111, 16}, {126, 16}, {141, 16}, {156, 16}, {171, 16}, {186, 16}, {205, 16}, {224, 16},
+ {224, 0}, {202, 0}, {180, 0}, {165, 0}, {150, 0}, {135, 0}, {120, 0}, {105, 0}, {90 , 0}, {75 , 0}, {60 , 0}, {45 , 0}, {30 , 0}, {15 , 0}, {0 , 0},
}, {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ //Underglow (0 -> 15)
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+
+ //Key matrix (16 -> 82)
+ 4, 4, 4, 1, 1, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4,
+ 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
} };
#endif
-
diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.h b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h
index fb769eda08..3c49721df0 100644
--- a/keyboards/mwstudio/mw65_rgb/mw65_rgb.h
+++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h
@@ -13,6 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
#pragma once
#include "quantum.h"
@@ -34,16 +35,15 @@
*/
#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K44, K0E, K43, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
- K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
- K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K44, K0E, K43, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \
{ K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ K40, K41, K42, K43, K44, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D, K4E }, \
- { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
}
diff --git a/keyboards/mwstudio/mw65_rgb/rules.mk b/keyboards/mwstudio/mw65_rgb/rules.mk
index 58d8da3e89..e2e979fb68 100644
--- a/keyboards/mwstudio/mw65_rgb/rules.mk
+++ b/keyboards/mwstudio/mw65_rgb/rules.mk
@@ -12,13 +12,12 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
+
ENCODER_ENABLE = yes
diff --git a/keyboards/mwstudio/mw75/config.h b/keyboards/mwstudio/mw75/config.h
index 2853276653..1cc00618e8 100644
--- a/keyboards/mwstudio/mw75/config.h
+++ b/keyboards/mwstudio/mw75/config.h
@@ -78,7 +78,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/mwstudio/mw75/rules.mk b/keyboards/mwstudio/mw75/rules.mk
index 58d8da3e89..9407031ed8 100644
--- a/keyboards/mwstudio/mw75/rules.mk
+++ b/keyboards/mwstudio/mw75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mwstudio/mw75r2/config.h b/keyboards/mwstudio/mw75r2/config.h
new file mode 100644
index 0000000000..4430d12a91
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/config.h
@@ -0,0 +1,80 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7BA1
+#define PRODUCT_ID 0x7502
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MWStudio
+#define PRODUCT MW75R2
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, D5}
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D4, D6, F7, F6, E6, F0, F1, F4, F5 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN B3
+#define RGBLIGHT_SLEEP
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
+#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define DRIVER_LED_TOTAL 21
+#define RGBLED_NUM 21
+
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B2 }
diff --git a/keyboards/mwstudio/mw75r2/info.json b/keyboards/mwstudio/mw75r2/info.json
new file mode 100644
index 0000000000..ade25ee7b9
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "MW75R2",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"DEL", "x":15, "y":0},
+
+ {"label":"`", "x":0, "y":1.5},
+ {"label":"1", "x":1, "y":1.5},
+ {"label":"2", "x":2, "y":1.5},
+ {"label":"3", "x":3, "y":1.5},
+ {"label":"4", "x":4, "y":1.5},
+ {"label":"5", "x":5, "y":1.5},
+ {"label":"6", "x":6, "y":1.5},
+ {"label":"7", "x":7, "y":1.5},
+ {"label":"8", "x":8, "y":1.5},
+ {"label":"9", "x":9, "y":1.5},
+ {"label":"0", "x":10, "y":1.5},
+ {"label":"-", "x":11, "y":1.5},
+ {"label":"=", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Delete", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[", "x":11.5, "y":2.5},
+ {"label":"]", "x":12.5, "y":2.5},
+ {"label":"\\", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"PgUp", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";", "x":10.75, "y":3.5},
+ {"label":"'", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"PgDn", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",", "x":9.25, "y":4.5},
+ {"label":".", "x":10.25, "y":4.5},
+ {"label":"/", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"x":3.75, "y":5.5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw75r2/keymaps/default/keymap.c b/keyboards/mwstudio/mw75r2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..73fd380112
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
diff --git a/keyboards/mwstudio/mw75r2/keymaps/via/keymap.c b/keyboards/mwstudio/mw75r2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0648ac7bf6
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/keymaps/via/keymap.c
@@ -0,0 +1,171 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include QMK_KEYBOARD_H
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool top_rgb_change :1;
+ bool bottom_rgb_change :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, USER00, USER01, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+
+void keyboard_post_init_user(void) {
+ // Read the user config from EEPROM
+ user_config.raw = eeconfig_read_user();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case USER00:
+ if (record->event.pressed) {
+ // Do something when pressed
+ user_config.top_rgb_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ case USER01:
+ if (record->event.pressed) {
+ // Do something when pressed
+ user_config.bottom_rgb_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS 1
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{3, 5}};
+static keypos_t encoder_ccw[ENCODERS] = {{4, 5}};
+
+
+void encoder_action_unregister(void) {
+#ifdef ENCODERS
+ for (uint8_t index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+#endif
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return true;
+};
+#endif
+
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+
+ if (user_config.top_rgb_change)
+ {
+ for (size_t i = 14; i < 18; i++)
+ {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0);
+ }
+ }
+ if (host_keyboard_led_state().caps_lock) {
+ for (size_t i = 14; i < 18; i++)
+ {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 255, 255); // assuming caps lock is at led #5
+ }
+ }
+ if (user_config.bottom_rgb_change)
+ {
+ for (size_t i = 0; i < 21; i++)
+ {
+ if (i >= 14 && i <18)
+ continue;
+
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw75r2/keymaps/via/rules.mk b/keyboards/mwstudio/mw75r2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mwstudio/mw75r2/mw75r2.c b/keyboards/mwstudio/mw75r2/mw75r2.c
new file mode 100644
index 0000000000..0aa3874678
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/mw75r2.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "mw75r2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 8, 9, 10, 11, 12, 13, 14, 15 },
+ { 16, 17, 18, 19, 20 }
+}, {
+ { 105, 60 }, { 70, 60 }, { 35, 60 }, { 0, 60 }, { 0, 40 }, { 0, 20 }, { 0, 0 }, { 42, 0 }, { 84, 0 }, { 126, 0 }, { 168, 0 }, { 210, 0 }, { 210, 20 }, { 210, 40 }, { 40, 20 }, { 120, 20 }, { 40, 40 }, { 120, 40 }, { 210, 60 }, { 175, 60 },{ 140, 60 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+} };
+#endif
diff --git a/keyboards/mwstudio/mw75r2/mw75r2.h b/keyboards/mwstudio/mw75r2/mw75r2.h
new file mode 100644
index 0000000000..593b2ebb11
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/mw75r2.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 TW59420 <https://github.com/TW59420>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014,\
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114,\
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214,\
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314,\
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414,\
+ K500, K501, K502, K506, K510, K511, K512, K513, K514\
+) { \
+ { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 },\
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 },\
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 },\
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 },\
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414 },\
+ { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 }\
+}
diff --git a/keyboards/mwstudio/mw75r2/readme.md b/keyboards/mwstudio/mw75r2/readme.md
new file mode 100644
index 0000000000..ef2efb3734
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/readme.md
@@ -0,0 +1,22 @@
+# MW75R2
+
+![MW75R2](https://i.imgur.com/S9Gd81b.jpg?1)
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mwstudio/mw75r2:default
+
+Flashing example for this keyboard:
+
+ make mwstudio/mw75r2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/mwstudio/mw75r2/rules.mk b/keyboards/mwstudio/mw75r2/rules.mk
new file mode 100644
index 0000000000..9407031ed8
--- /dev/null
+++ b/keyboards/mwstudio/mw75r2/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+ENCODER_ENABLE = yes
diff --git a/keyboards/mxss/keymaps/default/config.h b/keyboards/mxss/keymaps/default/config.h
deleted file mode 100644
index bfbdb62297..0000000000
--- a/keyboards/mxss/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Jumail Mundekkat / MxBlue
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/mxss/rules.mk b/keyboards/mxss/rules.mk
index c5f1021417..002d99227a 100644
--- a/keyboards/mxss/rules.mk
+++ b/keyboards/mxss/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mysticworks/wyvern/rules.mk b/keyboards/mysticworks/wyvern/rules.mk
index 7831fa4b5b..8f4134d0b5 100644
--- a/keyboards/mysticworks/wyvern/rules.mk
+++ b/keyboards/mysticworks/wyvern/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nack/rules.mk b/keyboards/nack/rules.mk
index b1e261c894..7704d802ab 100644
--- a/keyboards/nack/rules.mk
+++ b/keyboards/nack/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/nafuda/rules.mk b/keyboards/nafuda/rules.mk
index 6ef5d58b1a..e9d90e7ad8 100644
--- a/keyboards/nafuda/rules.mk
+++ b/keyboards/nafuda/rules.mk
@@ -12,10 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_ENABLE = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/naiping/np64/rules.mk b/keyboards/naiping/np64/rules.mk
index d9ca1c51e7..55c914453e 100644
--- a/keyboards/naiping/np64/rules.mk
+++ b/keyboards/naiping/np64/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/naiping/nphhkb/rules.mk b/keyboards/naiping/nphhkb/rules.mk
index e8ba2cfa8f..64284e913b 100644
--- a/keyboards/naiping/nphhkb/rules.mk
+++ b/keyboards/naiping/nphhkb/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/naiping/npminila/rules.mk b/keyboards/naiping/npminila/rules.mk
index 8ac8fcb8be..bcc109f6d4 100644
--- a/keyboards/naiping/npminila/rules.mk
+++ b/keyboards/naiping/npminila/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/naked48/keymaps/scheiklp/config.h b/keyboards/naked48/keymaps/scheiklp/config.h
new file mode 100644
index 0000000000..8c11ad6078
--- /dev/null
+++ b/keyboards/naked48/keymaps/scheiklp/config.h
@@ -0,0 +1,9 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/* Select hand configuration */
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 180
diff --git a/keyboards/naked48/keymaps/scheiklp/keymap.c b/keyboards/naked48/keymaps/scheiklp/keymap.c
new file mode 100644
index 0000000000..d8549e0e8b
--- /dev/null
+++ b/keyboards/naked48/keymaps/scheiklp/keymap.c
@@ -0,0 +1,68 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+
+#include QMK_KEYBOARD_H
+#include "koy_keys_on_quertz_de_latin1.h"
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layer_number {
+ _1 = 0,
+ _3,
+ _4,
+ _7,
+};
+
+enum custom_keycodes {
+ RGB_RST = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_1] = LAYOUT( /* KOY */
+ KC_ESC, KC_K, KC_DOT, KC_O, KC_COMM, N_Y, KC_V, KC_G, KC_C, KC_L, N_SS, N_Z,
+ MO(_3), KC_H, KC_A, KC_E, KC_I, KC_U, KC_D, KC_T, KC_R, KC_N, KC_S, KC_F,
+ KC_LSFT, KC_X, KC_Q, N_AE, N_UE, N_OE, KC_B, KC_P, KC_W, KC_M, KC_J, KC_RSFT,
+ KC_LCTRL, MO(_4), KC_HOME, KC_LALT, KC_ENTER, N_COPY, N_PASTE, KC_SPC, MO(_4), KC_RCTL, KC_TRNS, MO(_7)
+ ),
+
+ [_3] = LAYOUT( /* Layer 3 */
+ KC_ESC, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, KC_TRNS,
+ KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
+ KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
+ KC_LCTRL, KC_TRNS, KC_HOME, KC_LALT, KC_ENTER, N_COPY, N_PASTE, KC_SPC, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS
+ ),
+
+ [_4] = LAYOUT( /* Layer 4 */
+ KC_ESC, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS,
+ KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
+ KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_SPC, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT,
+ KC_LCTRL, KC_TRNS, KC_HOME, KC_LALT, KC_ENTER, N_COPY, N_PASTE, KC_0, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_7] = LAYOUT( /* Layer 7 */
+ KC_ESC, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
+ KC_LCTRL, KC_TRNS, KC_HOME, KC_LALT, KC_ENTER, N_COPY, N_PASTE, KC_SPC, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS
+ )
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#ifdef RGBLIGHT_ENABLE
+ case RGB_RST:
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ break;
+#endif
+ }
+ return true;
+}
diff --git a/keyboards/naked48/keymaps/scheiklp/readme.md b/keyboards/naked48/keymaps/scheiklp/readme.md
new file mode 100644
index 0000000000..a28ad8c52c
--- /dev/null
+++ b/keyboards/naked48/keymaps/scheiklp/readme.md
@@ -0,0 +1,37 @@
+# The default keymap for naked48
+
+## Default
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| TAB | Q| W| E| R| T| | | Y| U| I| O| P| BSPC|
+| ESC | A| S| D| F| G| | | H| J| K| L| ;| '|
+| LSFT | Z| X| C| V| B| | | N| M| ,| .| /| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| LEFT| DOWN| UP| RIGHT| |
+
+
+## Lower
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ~| !| @| #| $| %| | | ^| &| *| (| )| DEL|
+| ESC| F1| F2| F3| F4| F5| | | F6| _| +| {| }| PIPE|
+| LSFT| F7| F8| F9| F10| F11| | | F12| SNUHS| SNUBS| ,| .| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+## Raise
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
+| ~| 1| 2| 3| 4| 5| | | 6| 7| 8| 9| 0| DEL|
+| DEL| F1| F2| F3| F4| F5| | | F6| -| =| [| ]| BSLS|
+| LSFT| F7| F8| F9| F10| F11| | | F12| NUHS| NUBS| ,| .| ENT|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| SPC| SPC| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
+
+## Adjust
+| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
+|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:------:|:------:|:------:|:------:|:-------:|:------:|
+| ~| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_RST| XXXXX| XXXXX| XXXXX| XXXXX| DEL|
+| ESC| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_TOG| RGB_MOD| XXXXX| C+A+D| Alt+PSCR| PSCR|
+| LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| | | RGB_VAD| RGB_VAI| RGB_HUD| RGB_HUI| RGB_SAD| RGB_SAI|
+| |ADJUST| LCTRL| LALT| LGUI| LOWER| RESET| RESET| RAISE| MNXT| VOLD| VOLU| MPLY| |
+
diff --git a/keyboards/naked48/keymaps/scheiklp/rules.mk b/keyboards/naked48/keymaps/scheiklp/rules.mk
new file mode 100644
index 0000000000..0b64091e58
--- /dev/null
+++ b/keyboards/naked48/keymaps/scheiklp/rules.mk
@@ -0,0 +1,5 @@
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+AUTO_SHIFT_ENABLE = yes
+
diff --git a/keyboards/naked48/rules.mk b/keyboards/naked48/rules.mk
index c7b5b7e81c..6e848a2815 100644
--- a/keyboards/naked48/rules.mk
+++ b/keyboards/naked48/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/naked60/rules.mk b/keyboards/naked60/rules.mk
index 1cdec19aa3..46aef17c7a 100644
--- a/keyboards/naked60/rules.mk
+++ b/keyboards/naked60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/naked64/keymaps/default/keymap.c b/keyboards/naked64/keymaps/default/keymap.c
index b71f554156..b26044507e 100644
--- a/keyboards/naked64/keymaps/default/keymap.c
+++ b/keyboards/naked64/keymaps/default/keymap.c
@@ -25,73 +25,73 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
+ [_QWERTY] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- KC_PGUP, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, \
+ KC_PGUP, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_PGDN, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LCBR, KC_RCBR, \
+ KC_PGDN, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LCBR, KC_RCBR,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
+ KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- MO(_ADJUST), KC_LALT, KC_SPC,MO(_LOWER), MO(_RAISE), KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN,KC_RIGHT \
+ MO(_ADJUST), KC_LALT, KC_SPC,MO(_LOWER), MO(_RAISE), KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN,KC_RIGHT
//`-----------------------------------------------------------------------------------------------------------------------------------'
),
- [_FLOCK] = LAYOUT( \
+ [_FLOCK] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- TG(_FLOCK), KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ TG(_FLOCK), KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`-----------------------------------------------------------------------------------------------------------------------------------'
),
- [_LOWER] = LAYOUT( \
+ [_LOWER] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- _______, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ _______, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______, \
+ _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,KC_VOLU,_______, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,KC_VOLU,_______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_MPLY \
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_MPLY
//`-----------------------------------------------------------------------------------------------------------------------------------'
),
- [_RAISE] = LAYOUT( \
+ [_RAISE] = LAYOUT(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- _______, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ _______, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, \
+ _______, KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`-----------------------------------------------------------------------------------------------------------------------------------'
),
[_ADJUST] = LAYOUT( /* Base */
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- TG(_FLOCK), RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ TG(_FLOCK), RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
+ _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX,LCA(KC_DEL),LALT(KC_PSCR),KC_PSCR,XXXXXXX,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX,
// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
//`-----------------------------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/naked64/rules.mk b/keyboards/naked64/rules.mk
index fc417211cf..7de80383e1 100644
--- a/keyboards/naked64/rules.mk
+++ b/keyboards/naked64/rules.mk
@@ -12,14 +12,12 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_ENABLE = no
USE_I2C = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/namecard2x4/keymaps/default/config.h b/keyboards/namecard2x4/keymaps/default/config.h
deleted file mode 100644
index dbacdcce58..0000000000
--- a/keyboards/namecard2x4/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/namecard2x4/rules.mk b/keyboards/namecard2x4/rules.mk
index a7f2822ce5..b1f04b15ec 100644
--- a/keyboards/namecard2x4/rules.mk
+++ b/keyboards/namecard2x4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nasu/config.h b/keyboards/nasu/config.h
new file mode 100644
index 0000000000..15ed75d5c0
--- /dev/null
+++ b/keyboards/nasu/config.h
@@ -0,0 +1,93 @@
+/*
+Copyright 2021 Yiancar-Designs
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x4E53
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT Nasu
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { A13, A10, B10, B2, A6 }
+#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, B11, B8, B7, B6, B5, B4, B3, A15, A14 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Ensure we jump to bootloader if the RESET keycode was pressed */
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN B1
+#define LED_NUM_LOCK_PIN B0
+#define LED_SCROLL_LOCK_PIN A7
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/nasu/info.json b/keyboards/nasu/info.json
new file mode 100644
index 0000000000..fb191dc1fd
--- /dev/null
+++ b/keyboards/nasu/info.json
@@ -0,0 +1,81 @@
+{
+ "keyboard_name": "Nasu",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "layouts": {
+ "LAYOUT_alice_split_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.25, "y":0},
+ {"x":6.25, "y":0},
+ {"x":7.25, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.25, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1},
+ {"x":1.25, "y":1, "w":1.5},
+ {"x":2.75, "y":1},
+ {"x":3.75, "y":1},
+ {"x":4.75, "y":1},
+ {"x":5.75, "y":1},
+ {"x":6.75, "y":1},
+ {"x":9.75, "y":1},
+ {"x":10.75, "y":1},
+ {"x":11.75, "y":1},
+ {"x":12.75, "y":1},
+ {"x":13.75, "y":1},
+ {"x":14.75, "y":1},
+ {"x":15.75, "y":1},
+ {"x":16.75, "y":1, "w":1.5},
+
+ {"x":0, "y":2},
+ {"x":1.25, "y":2, "w":1.75},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+ {"x":13, "y":2},
+ {"x":14, "y":2},
+ {"x":15, "y":2},
+ {"x":16, "y":2, "w":2.25},
+
+ {"x":1.25, "y":3, "w":2.25},
+ {"x":3.5, "y":3},
+ {"x":4.5, "y":3},
+ {"x":5.5, "y":3},
+ {"x":6.5, "y":3},
+ {"x":7.5, "y":3},
+ {"x":9.5, "y":3},
+ {"x":10.5, "y":3},
+ {"x":11.5, "y":3},
+ {"x":12.5, "y":3},
+ {"x":13.5, "y":3},
+ {"x":14.5, "y":3},
+ {"x":15.5, "y":3, "w":1.75},
+ {"x":17.25, "y":3},
+
+ {"x":1.25, "y":4, "w":1.5},
+ {"x":4.25, "y":4, "w":1.5},
+ {"x":5.75, "y":4, "w":2},
+ {"x":7.75, "y":4, "w":1.25},
+ {"x":9.5, "y":4, "w":2.75},
+ {"x":12.25, "y":4, "w":1.5},
+ {"x":16.75, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/nasu/keymaps/default/keymap.c b/keyboards/nasu/keymaps/default/keymap.c
new file mode 100644
index 0000000000..607d85a132
--- /dev/null
+++ b/keyboards/nasu/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_alice_split_bs( /* Base */
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL),
+
+[1] = LAYOUT_alice_split_bs( /* FN */
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/nasu/keymaps/default/readme.md b/keyboards/nasu/keymaps/default/readme.md
new file mode 100644
index 0000000000..b5985c8621
--- /dev/null
+++ b/keyboards/nasu/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for Nasu.
+
+![Layer 0](https://i.imgur.com/kiNbHIb.png)
+
+![Layer 1](https://i.imgur.com/ySPd0EL.png)
diff --git a/keyboards/nasu/keymaps/via/keymap.c b/keyboards/nasu/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5ac19c26f4
--- /dev/null
+++ b/keyboards/nasu/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_alice_split_bs( /* Base */
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL),
+
+[1] = LAYOUT_alice_split_bs( /* FN */
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_alice_split_bs( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_alice_split_bs( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
diff --git a/keyboards/nasu/keymaps/via/readme.md b/keyboards/nasu/keymaps/via/readme.md
new file mode 100644
index 0000000000..b52f9631cc
--- /dev/null
+++ b/keyboards/nasu/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for Nasu. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/kiNbHIb.png)
+
+![Layer 1](https://i.imgur.com/ySPd0EL.png)
diff --git a/keyboards/nasu/keymaps/via/rules.mk b/keyboards/nasu/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/nasu/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/nasu/nasu.c b/keyboards/nasu/nasu.c
new file mode 100644
index 0000000000..e7ae6a369e
--- /dev/null
+++ b/keyboards/nasu/nasu.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "nasu.h"
diff --git a/keyboards/nasu/nasu.h b/keyboards/nasu/nasu.h
new file mode 100644
index 0000000000..41bd1212f6
--- /dev/null
+++ b/keyboards/nasu/nasu.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define XXX KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_alice_split_bs( \
+ K10, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K20, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K30, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K41, K43, K45, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { XXX, K41, XXX, K43, XXX, K45, K46, XXX, K48, XXX, K4A, XXX, XXX, XXX, K4E } \
+}
+
+#define LAYOUT_alice( \
+ K10, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K20, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K30, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K41, K43, K45, K46, K48, K4A, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { XXX, K41, XXX, K43, XXX, K45, K46, XXX, K48, XXX, K4A, XXX, XXX, XXX, K4E } \
+}
diff --git a/keyboards/nasu/readme.md b/keyboards/nasu/readme.md
new file mode 100644
index 0000000000..e37095b399
--- /dev/null
+++ b/keyboards/nasu/readme.md
@@ -0,0 +1,32 @@
+# Nasu
+
+This is a standard Alice layout PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A Alice like keyboard with STM32F072CB
+* Hardware Availability: https://candykeys.com
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nasu:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or dfu-util (`make nasu:<keymap>:dfu-util`)
diff --git a/keyboards/nasu/rules.mk b/keyboards/nasu/rules.mk
new file mode 100644
index 0000000000..dac69f915b
--- /dev/null
+++ b/keyboards/nasu/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = alice alice_split_bs
diff --git a/keyboards/navi10/rev0/rules.mk b/keyboards/navi10/rev0/rules.mk
index 1aea059dc1..52a1cbb711 100644
--- a/keyboards/navi10/rev0/rules.mk
+++ b/keyboards/navi10/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/navi10/rev2/rules.mk b/keyboards/navi10/rev2/rules.mk
index 1aea059dc1..52a1cbb711 100644
--- a/keyboards/navi10/rev2/rules.mk
+++ b/keyboards/navi10/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/navi10/rev3/rules.mk b/keyboards/navi10/rev3/rules.mk
index 1aea059dc1..52a1cbb711 100644
--- a/keyboards/navi10/rev3/rules.mk
+++ b/keyboards/navi10/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ncc1701kb/rules.mk b/keyboards/ncc1701kb/rules.mk
index 46d10a1f92..d52e72b5b3 100644
--- a/keyboards/ncc1701kb/rules.mk
+++ b/keyboards/ncc1701kb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nebula12/rules.mk b/keyboards/nebula12/rules.mk
index f75c73dd6d..961d5a4915 100755
--- a/keyboards/nebula12/rules.mk
+++ b/keyboards/nebula12/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
RGBLIGHT_ENABLE = yes # Underglow RGB
diff --git a/keyboards/nebula68/rules.mk b/keyboards/nebula68/rules.mk
index 9994487945..b7d3ca2005 100755
--- a/keyboards/nebula68/rules.mk
+++ b/keyboards/nebula68/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
RGBLIGHT_ENABLE = yes # Underglow RGB
diff --git a/keyboards/nebula68b/config.h b/keyboards/nebula68b/config.h
new file mode 100755
index 0000000000..1c0d6db233
--- /dev/null
+++ b/keyboards/nebula68b/config.h
@@ -0,0 +1,134 @@
+/*
+Copyright 2021 Yiancar
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x5338
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT NEBULA68B
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { D4, D6, D7, B4, E6 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+// #define MATRIX_HAS_GHOST
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+// #define FORCE_NKRO
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* RGB options */
+
+#define RGB_DI_PIN B7
+#define DRIVER_LED_TOTAL 79
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+// // VIA lighting is handled by the keyboard-level code
+#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/nebula68b/info.json b/keyboards/nebula68b/info.json
new file mode 100755
index 0000000000..253e9682ed
--- /dev/null
+++ b/keyboards/nebula68b/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "NEBULA68B",
+ "url": "",
+ "maintainer": "yiancar",
+ "layouts": {
+ "LAYOUT_68_ansi_split_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15.25, "y":1},
+ {"x":16.25, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+ {"x":15.25, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":14.25, "y":4},
+ {"x":15.25, "y":4},
+ {"x":16.25, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/nebula68b/keymaps/default/keymap.c b/keyboards/nebula68b/keymaps/default/keymap.c
new file mode 100755
index 0000000000..efb16d920e
--- /dev/null
+++ b/keyboards/nebula68b/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2021 Yiancar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_68_ansi_split_bs( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_INS, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_68_ansi_split_bs( /* FN */
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/nebula68b/keymaps/default/readme.md b/keyboards/nebula68b/keymaps/default/readme.md
new file mode 100755
index 0000000000..699c741555
--- /dev/null
+++ b/keyboards/nebula68b/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for Nebula68. VIA support disabled.
+
+![Layer 0](https://i.imgur.com/dXyRwb1.png)
+
+![Layer 1](https://i.imgur.com/kxXnxVQ.png)
+
+Default layer is normal ANSI 68%
diff --git a/keyboards/nebula68b/keymaps/via/keymap.c b/keyboards/nebula68b/keymaps/via/keymap.c
new file mode 100755
index 0000000000..565e11bd36
--- /dev/null
+++ b/keyboards/nebula68b/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 Yiancar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_68_ansi_split_bs( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_INS, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_68_ansi_split_bs( /* FN */
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_68_ansi_split_bs( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_68_ansi_split_bs( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/nebula68b/keymaps/via/readme.md b/keyboards/nebula68b/keymaps/via/readme.md
new file mode 100755
index 0000000000..75cbcac25e
--- /dev/null
+++ b/keyboards/nebula68b/keymaps/via/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for Nebula68. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/dXyRwb1.png)
+
+![Layer 1](https://i.imgur.com/kxXnxVQ.png)
+
+Default layer is normal ANSI 68%
diff --git a/keyboards/nebula68b/keymaps/via/rules.mk b/keyboards/nebula68b/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/nebula68b/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/nebula68b/nebula68b.c b/keyboards/nebula68b/nebula68b.c
new file mode 100755
index 0000000000..4842d9be92
--- /dev/null
+++ b/keyboards/nebula68b/nebula68b.c
@@ -0,0 +1,111 @@
+/* Copyright 2021 Yiancar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "nebula68b.h"
+#include <lib/lib8tion/lib8tion.h>
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = { {
+ { 0, 1, 2, 4, 5, 6, 7, 9, 10, 11, 13, 14, 15, 18, 19 },
+ { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 16, 22 },
+ { 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 23, 50, 20 },
+ { 64, NO_LED, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 21 },
+ { 65, 66, 68, NO_LED, NO_LED, NO_LED, 70, NO_LED, NO_LED, 72, 73, 74, 76, 77, 78 }
+}, {
+ { 6, 10}, { 19, 10}, { 32, 10}, { 44, 13}, { 45, 10}, { 58, 10}, { 71, 10}, { 84, 10}, { 88, 13}, { 97, 10}, {110, 10}, {123, 10}, {132, 13}, {136, 10}, {149, 10}, {162, 10},
+ {175, 10}, {179, 13}, {188, 10}, {205, 10}, {218, 10}, {218, 23}, {205, 23}, {185, 23}, {169, 23}, {156, 23}, {143, 23}, {130, 23}, {117, 23}, {104, 23}, { 91, 23}, { 78, 23},
+ { 65, 23}, { 52, 23}, { 39, 23}, { 26, 23}, { 10, 23}, { 4, 26}, { 11, 35}, { 29, 35}, { 42, 35}, { 55, 35}, { 68, 35}, { 81, 35}, { 94, 35}, {107, 35}, {120, 35}, {133, 35},
+ {146, 35}, {159, 35}, {180, 35}, {220, 32}, {205, 48}, {177, 48}, {153, 48}, {140, 48}, {127, 48}, {114, 48}, {101, 48}, { 88, 48}, { 75, 48}, { 62, 48}, { 49, 48}, { 36, 48},
+ { 15, 48}, { 8, 61}, { 24, 61}, { 32, 52}, { 41, 61}, { 82, 56}, { 89, 61}, {132, 53}, {138, 61}, {154, 61}, {170, 61}, {179, 53}, {192, 61}, {205, 61}, {218, 61}
+}, {
+ 1, 4, 4, 2, 4, 4, 4, 4, 2, 4, 4, 4, 2, 4, 4, 4, 4, 2, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 2, 1, 2, 4, 2, 1, 1, 1, 2, 1, 1, 1
+} };
+// clang-format on
+#endif
+
+#if defined(RGB_MATRIX_ENABLE) && defined(VIA_ENABLE)
+void raw_hid_receive_kb(uint8_t *data, uint8_t length) {
+ uint8_t *command_id = &(data[0]);
+ uint8_t *command_data = &(data[1]);
+ switch (*command_id) {
+ case id_lighting_set_value: {
+ uint8_t *value_id = &(command_data[0]);
+ uint8_t *value_data = &(command_data[1]);
+ switch (*value_id) {
+ case id_qmk_rgblight_brightness: {
+ rgb_matrix_sethsv_noeeprom(rgb_matrix_get_hue(), rgb_matrix_get_sat(), scale8(value_data[0], RGB_MATRIX_MAXIMUM_BRIGHTNESS));
+ break;
+ }
+ case id_qmk_rgblight_effect: {
+ rgb_matrix_mode_noeeprom(value_data[0]);
+ if (value_data[0] == 0) {
+ rgb_matrix_disable_noeeprom();
+ } else {
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ case id_qmk_rgblight_effect_speed: {
+ rgb_matrix_set_speed_noeeprom(value_data[0] * 85);
+ break;
+ }
+ case id_qmk_rgblight_color: {
+ rgb_matrix_sethsv_noeeprom(value_data[0], value_data[1], rgb_matrix_get_val());
+ break;
+ }
+ }
+ break;
+ }
+ case id_lighting_get_value: {
+ uint8_t *value_id = &(command_data[0]);
+ uint8_t *value_data = &(command_data[1]);
+ switch (*value_id) {
+ case id_qmk_rgblight_brightness: {
+ value_data[0] = ((uint16_t)rgb_matrix_get_val() * 255) / RGB_MATRIX_MAXIMUM_BRIGHTNESS;
+ break;
+ }
+ case id_qmk_rgblight_effect: {
+ value_data[0] = rgb_matrix_get_mode();
+ break;
+ }
+ case id_qmk_rgblight_effect_speed: {
+ value_data[0] = rgb_matrix_get_speed() / 85;
+ break;
+ }
+ case id_qmk_rgblight_color: {
+ value_data[0] = rgb_matrix_get_hue();
+ value_data[1] = rgb_matrix_get_sat();
+ break;
+ }
+ }
+ break;
+ }
+ case id_lighting_save: {
+ eeconfig_update_rgb_matrix();
+ break;
+ }
+ default: {
+ *command_id = id_unhandled;
+ break;
+ }
+ }
+}
+#endif
diff --git a/keyboards/nebula68b/nebula68b.h b/keyboards/nebula68b/nebula68b.h
new file mode 100755
index 0000000000..dd3469c54e
--- /dev/null
+++ b/keyboards/nebula68b/nebula68b.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Yiancar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define XXX KC_NO
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+
+#define LAYOUT_68_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K1D, K0D, K0E, K2E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, K3E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, K49, K4A, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/nebula68b/readme.md b/keyboards/nebula68b/readme.md
new file mode 100755
index 0000000000..c0834e463a
--- /dev/null
+++ b/keyboards/nebula68b/readme.md
@@ -0,0 +1,32 @@
+# Nebula68B
+
+This is a standard fixed layout 68% PCB. It supports VIA, full per-key RGB and underglow RGB. This is revision B.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 68% keyboard with ATMEGA32U4
+* Hardware Availability: https://spaceholdings.net/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nebula68b:via
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or dfu-util (`make nebula65b:<keymap>:flash`)
diff --git a/keyboards/nebula68b/rules.mk b/keyboards/nebula68b/rules.mk
new file mode 100755
index 0000000000..92dd198801
--- /dev/null
+++ b/keyboards/nebula68b/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes # Enable Per-key RGB
+RGB_MATRIX_DRIVER = WS2812 # Per-key RGB Driver
+
+LTO_ENABLE = yes
diff --git a/keyboards/neito/rules.mk b/keyboards/neito/rules.mk
index 6d73c17332..6e98d9d811 100644
--- a/keyboards/neito/rules.mk
+++ b/keyboards/neito/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nek_type_a/keymaps/default/config.h b/keyboards/nek_type_a/keymaps/default/config.h
deleted file mode 100644
index 5c2aaa2f31..0000000000
--- a/keyboards/nek_type_a/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Mike Roberts
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/nek_type_a/keymaps/default/keymap.c b/keyboards/nek_type_a/keymaps/default/keymap.c
index 2c7812fe07..470afa6198 100644
--- a/keyboards/nek_type_a/keymaps/default/keymap.c
+++ b/keyboards/nek_type_a/keymaps/default/keymap.c
@@ -17,11 +17,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC__MUTE, KC__VOLDOWN, KC__VOLUP, \
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_INSERT, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLASH, KC_DELETE, KC_END, KC_PGDOWN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER, \
- KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT, KC_UP, \
- KC_LCTRL, KC_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RCMD, KC_RALT, KC_RCTRL, KC_APP, KC_LEFT, KC_DOWN, KC_RIGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC__MUTE, KC__VOLDOWN, KC__VOLUP,
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE, KC_INSERT, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLASH, KC_DELETE, KC_END, KC_PGDOWN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RSHIFT, KC_UP,
+ KC_LCTRL, KC_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RCMD, KC_RALT, KC_RCTRL, KC_APP, KC_LEFT, KC_DOWN, KC_RIGHT
),
};
diff --git a/keyboards/nek_type_a/rules.mk b/keyboards/nek_type_a/rules.mk
index 311f5a77e2..ea79c962da 100644
--- a/keyboards/nek_type_a/rules.mk
+++ b/keyboards/nek_type_a/rules.mk
@@ -7,15 +7,15 @@ F_CPU = 8000000
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nemui/rules.mk b/keyboards/nemui/rules.mk
index f68afca696..fd44980786 100644
--- a/keyboards/nemui/rules.mk
+++ b/keyboards/nemui/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/neokeys/g67/element_hs/rules.mk b/keyboards/neokeys/g67/element_hs/rules.mk
index bf105353e1..574f0067fb 100644
--- a/keyboards/neokeys/g67/element_hs/rules.mk
+++ b/keyboards/neokeys/g67/element_hs/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/neokeys/g67/hotswap/rules.mk b/keyboards/neokeys/g67/hotswap/rules.mk
index bf105353e1..574f0067fb 100644
--- a/keyboards/neokeys/g67/hotswap/rules.mk
+++ b/keyboards/neokeys/g67/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/neokeys/g67/soldered/rules.mk b/keyboards/neokeys/g67/soldered/rules.mk
index 8736f1580d..f8947e53c6 100644
--- a/keyboards/neokeys/g67/soldered/rules.mk
+++ b/keyboards/neokeys/g67/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/neopad/rev1/info.json b/keyboards/neopad/rev1/info.json
index 900f280df3..b5868084d1 100755
--- a/keyboards/neopad/rev1/info.json
+++ b/keyboards/neopad/rev1/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "neopad",
- "keyboard_folder": "neopad/rev1",
"url": "https://github.com/rookiebwoy/neopad)",
"maintainer": "rookiebwoy",
"layouts": {
diff --git a/keyboards/neopad/rev1/rules.mk b/keyboards/neopad/rev1/rules.mk
index 6302e98d3e..af19256136 100755
--- a/keyboards/neopad/rev1/rules.mk
+++ b/keyboards/neopad/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/neson_design/n6/rules.mk b/keyboards/neson_design/n6/rules.mk
index 6e14e0a32c..7567521f7e 100644
--- a/keyboards/neson_design/n6/rules.mk
+++ b/keyboards/neson_design/n6/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/newgame40/keymaps/default/config.h b/keyboards/newgame40/keymaps/default/config.h
deleted file mode 100644
index d533d806c9..0000000000
--- a/keyboards/newgame40/keymaps/default/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/newgame40/keymaps/default/keymap.c b/keyboards/newgame40/keymaps/default/keymap.c
index 282a06c102..1388b81363 100644
--- a/keyboards/newgame40/keymaps/default/keymap.c
+++ b/keyboards/newgame40/keymaps/default/keymap.c
@@ -53,11 +53,11 @@ enum layers {
* |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
* `---------------------------------------------------------------------'
*/
- [_QWERTY] = LAYOUT_ortho_4x10( \
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
- KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
+ [_QWERTY] = LAYOUT_ortho_4x10(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT
),
/* Colemak
@@ -71,11 +71,11 @@ enum layers {
* |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
* `---------------------------------------------------------------------'
*/
- [_COLEMAK] = LAYOUT_ortho_4x10( \
- KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_MINS, \
- KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, \
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
- KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
+ [_COLEMAK] = LAYOUT_ortho_4x10(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_MINS,
+ KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT
),
/* Dvorak
@@ -89,11 +89,11 @@ enum layers {
* |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
* `---------------------------------------------------------------------'
*/
- [_DVORAK] = LAYOUT_ortho_4x10( \
- KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \
- KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, \
- KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, \
- KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
+ [_DVORAK] = LAYOUT_ortho_4x10(
+ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
+ KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S,
+ KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z,
+ KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT
),
/* Lower
@@ -107,11 +107,11 @@ enum layers {
* | F1 | F2 | | F3 | F4 | F5 | F6 | | F7 | F8 |
* `---------------------------------------------------------------------'
*/
- [_LOWER] = LAYOUT_ortho_4x10( \
- KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, \
- KC_F1, KC_F2, _______, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8 \
+ [_LOWER] = LAYOUT_ortho_4x10(
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22,
+ KC_F1, KC_F2, _______, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8
),
/* Raise
@@ -125,11 +125,11 @@ enum layers {
* | F1 | Alt | | [ | ] | ; | : | | \ | / |
* `---------------------------------------------------------------------'
*/
- [_RAISE] = LAYOUT_ortho_4x10( \
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
- KC_EXLM, KC_DQT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_UNDS, \
- KC_EQL, KC_JYEN, KC_LCBR, KC_RCBR, KC_ASTR, KC_TILD, KC_PIPE, KC_LABK, KC_RABK, KC_QUES, \
- KC_F1, KC_LALT, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, _______, KC_BSLS, KC_SLSH \
+ [_RAISE] = LAYOUT_ortho_4x10(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_DQT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_UNDS,
+ KC_EQL, KC_JYEN, KC_LCBR, KC_RCBR, KC_ASTR, KC_TILD, KC_PIPE, KC_LABK, KC_RABK, KC_QUES,
+ KC_F1, KC_LALT, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, _______, KC_BSLS, KC_SLSH
),
/* EUCALYN
@@ -143,11 +143,11 @@ enum layers {
* |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
* `---------------------------------------------------------------------'
*/
- [_EUCALYN] = LAYOUT_ortho_4x10( \
- KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P, \
- KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N, \
- KC_Z, KC_X, KC_C, KC_V, KC_F, KC_B, KC_H, KC_J, KC_L, KC_SLSH, \
- KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
+ [_EUCALYN] = LAYOUT_ortho_4x10(
+ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P,
+ KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N,
+ KC_Z, KC_X, KC_C, KC_V, KC_F, KC_B, KC_H, KC_J, KC_L, KC_SLSH,
+ KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT
),
/* Adjust (Lower + Raise)
@@ -161,11 +161,11 @@ enum layers {
* | | | | | | | | | | |
* `---------------------------------------------------------------------'
*/
- [_ADJUST] = LAYOUT_ortho_4x10( \
- _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP, \
- QWERTY, COLEMAK, DVORAK, EUCALYN, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT_ortho_4x10(
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP,
+ QWERTY, COLEMAK, DVORAK, EUCALYN, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/newgame40/rules.mk b/keyboards/newgame40/rules.mk
index 7cbe09e69e..56ab17605f 100644
--- a/keyboards/newgame40/rules.mk
+++ b/keyboards/newgame40/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
IOS_DEVICE_ENABLE = no # connect to IOS Device
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x10
diff --git a/keyboards/nibiria/stream15/rules.mk b/keyboards/nibiria/stream15/rules.mk
index 7bb517154d..aefc49d3c1 100644
--- a/keyboards/nibiria/stream15/rules.mk
+++ b/keyboards/nibiria/stream15/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nightingale_studios/hailey/rules.mk b/keyboards/nightingale_studios/hailey/rules.mk
index d430bd9318..4dc4b3490e 100644
--- a/keyboards/nightingale_studios/hailey/rules.mk
+++ b/keyboards/nightingale_studios/hailey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nightly_boards/adellein/rules.mk b/keyboards/nightly_boards/adellein/rules.mk
index c3e7be7b86..84d2a87564 100644
--- a/keyboards/nightly_boards/adellein/rules.mk
+++ b/keyboards/nightly_boards/adellein/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable Rotary Encoders
diff --git a/keyboards/nightly_boards/alter/rev1/rules.mk b/keyboards/nightly_boards/alter/rev1/rules.mk
index 550efe2811..c16796046c 100644
--- a/keyboards/nightly_boards/alter/rev1/rules.mk
+++ b/keyboards/nightly_boards/alter/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nightly_boards/n2/rules.mk b/keyboards/nightly_boards/n2/rules.mk
index 98872ee082..a0a1e94e36 100644
--- a/keyboards/nightly_boards/n2/rules.mk
+++ b/keyboards/nightly_boards/n2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nightly_boards/n40_o/rules.mk b/keyboards/nightly_boards/n40_o/rules.mk
index 4d3958202c..e8d7ea59ba 100644
--- a/keyboards/nightly_boards/n40_o/rules.mk
+++ b/keyboards/nightly_boards/n40_o/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/nightly_boards/n60_s/rules.mk b/keyboards/nightly_boards/n60_s/rules.mk
index d7e8e4b0a6..8bdff099b2 100644
--- a/keyboards/nightly_boards/n60_s/rules.mk
+++ b/keyboards/nightly_boards/n60_s/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/nightly_boards/n87/rules.mk b/keyboards/nightly_boards/n87/rules.mk
index 44a9dbc15f..f0d05967ab 100644
--- a/keyboards/nightly_boards/n87/rules.mk
+++ b/keyboards/nightly_boards/n87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/nightly_boards/n9/rules.mk b/keyboards/nightly_boards/n9/rules.mk
index 14b73e2ce9..051e6296bc 100644
--- a/keyboards/nightly_boards/n9/rules.mk
+++ b/keyboards/nightly_boards/n9/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/nightly_boards/octopad/rules.mk b/keyboards/nightly_boards/octopad/rules.mk
index f4e4d75591..357a293a8c 100644
--- a/keyboards/nightly_boards/octopad/rules.mk
+++ b/keyboards/nightly_boards/octopad/rules.mk
@@ -12,11 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
LTO_ENABLE = yes # Link Time Optimization, makes the firmware smaller but some features may not work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/nightly_boards/ph_arisu/rules.mk b/keyboards/nightly_boards/ph_arisu/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/nightly_boards/ph_arisu/rules.mk
+++ b/keyboards/nightly_boards/ph_arisu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nightmare/keymaps/default/config.h b/keyboards/nightmare/keymaps/default/config.h
deleted file mode 100644
index c3addafcc2..0000000000
--- a/keyboards/nightmare/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 cfbender
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/nightmare/rules.mk b/keyboards/nightmare/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/nightmare/rules.mk
+++ b/keyboards/nightmare/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nimrod/rules.mk b/keyboards/nimrod/rules.mk
index 1b29312ff4..51a8edc602 100644
--- a/keyboards/nimrod/rules.mk
+++ b/keyboards/nimrod/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/niu_mini/keymaps/readme.md b/keyboards/niu_mini/keymaps/readme.md
deleted file mode 100644
index 6cfda6fe04..0000000000
--- a/keyboards/niu_mini/keymaps/readme.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of keymaps
-- **default** default layout from KBDFans
-- **mason**
-- **planck** Planck default layout
-- **xtonhasvim** A Planck-like layout with a few tweaks and a vim emulation layer.
-- **nosarthur** Custom Colemak-dh layout and qwerty layout
diff --git a/keyboards/niu_mini/rules.mk b/keyboards/niu_mini/rules.mk
index 38d3e225aa..ae86d2019e 100644
--- a/keyboards/niu_mini/rules.mk
+++ b/keyboards/niu_mini/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/nix_studio/oxalys80/rules.mk b/keyboards/nix_studio/oxalys80/rules.mk
index b30d9f3301..6649c2ac75 100644
--- a/keyboards/nix_studio/oxalys80/rules.mk
+++ b/keyboards/nix_studio/oxalys80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nk1/rules.mk b/keyboards/nk1/rules.mk
index 98e1ade790..16d3dfedd0 100644
--- a/keyboards/nk1/rules.mk
+++ b/keyboards/nk1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nk65/keymaps/default/keymap.c b/keyboards/nk65/keymaps/default/keymap.c
index b4ea68e0e8..f0fcda4674 100755
--- a/keyboards/nk65/keymaps/default/keymap.c
+++ b/keyboards/nk65/keymaps/default/keymap.c
@@ -17,30 +17,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_65_ansi( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/nk65/keymaps/via/keymap.c b/keyboards/nk65/keymaps/via/keymap.c
index b4ea68e0e8..f0fcda4674 100755
--- a/keyboards/nk65/keymaps/via/keymap.c
+++ b/keyboards/nk65/keymaps/via/keymap.c
@@ -17,30 +17,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_65_ansi( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,\
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,\
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_65_ansi( /* FN */
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[2] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[3] = LAYOUT_65_ansi( /* Empty for dynamic keymaps */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/nk65/rules.mk b/keyboards/nk65/rules.mk
index fcb2fca0e8..d64ce8e1f6 100755
--- a/keyboards/nk65/rules.mk
+++ b/keyboards/nk65/rules.mk
@@ -11,7 +11,7 @@ BOOTLOADER = stm32-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -19,8 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/nk87/rules.mk b/keyboards/nk87/rules.mk
index 4018d3cf17..fb3055a2a8 100755
--- a/keyboards/nk87/rules.mk
+++ b/keyboards/nk87/rules.mk
@@ -18,10 +18,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nknl7en/rules.mk b/keyboards/nknl7en/rules.mk
index 9bdc73b761..aba3644c9e 100644
--- a/keyboards/nknl7en/rules.mk
+++ b/keyboards/nknl7en/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nknl7jp/rules.mk b/keyboards/nknl7jp/rules.mk
index 9bdc73b761..aba3644c9e 100644
--- a/keyboards/nknl7jp/rules.mk
+++ b/keyboards/nknl7jp/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nomu30/rev1/rules.mk b/keyboards/nomu30/rev1/rules.mk
index da812eb7d0..df6d769aec 100644
--- a/keyboards/nomu30/rev1/rules.mk
+++ b/keyboards/nomu30/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nomu30/rev2/rules.mk b/keyboards/nomu30/rev2/rules.mk
index 167188e2bd..eca6e85311 100644
--- a/keyboards/nomu30/rev2/rules.mk
+++ b/keyboards/nomu30/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nopunin10did/jabberwocky/readme.md b/keyboards/nopunin10did/jabberwocky/readme.md
index d3557be61d..98c514caa8 100644
--- a/keyboards/nopunin10did/jabberwocky/readme.md
+++ b/keyboards/nopunin10did/jabberwocky/readme.md
@@ -10,7 +10,7 @@ Both the Dexterous and Sinister use the same firmware. The numpad and the four
For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w).
-* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as NoPunIn10Did.
+* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did)
* Hardware Supported: Dexterous Jabberwocky and Sinister Jabberwocky (2021 March)
* Hardware Availability: Currently by request only
diff --git a/keyboards/nopunin10did/jabberwocky/rules.mk b/keyboards/nopunin10did/jabberwocky/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/nopunin10did/jabberwocky/rules.mk
+++ b/keyboards/nopunin10did/jabberwocky/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nopunin10did/kastenwagen1840/config.h b/keyboards/nopunin10did/kastenwagen1840/config.h
new file mode 100644
index 0000000000..a9926aded4
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E50 // "NP"
+#define PRODUCT_ID 0x4B57 // "KW"
+#define DEVICE_VER 0x0001
+#define MANUFACTURER NoPunIn10Did
+#define PRODUCT Kastenwagen 1840
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 9
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B4, B5, B7, D5, C7, F1, F0, B6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6, D7 }
+#define UNUSED_PINS
+
+/* Indicator LEDs */
+#define LED_INDICATOR_TOP B0
+#define LED_INDICATOR_MID D4
+#define LED_INDICATOR_BOT C6
+
+/* Rotary encoder rotation pins */
+#define ENCODERS_PAD_A { D0, D3 }
+#define ENCODERS_PAD_B { D1, D2 }
+
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
diff --git a/keyboards/nopunin10did/kastenwagen1840/info.json b/keyboards/nopunin10did/kastenwagen1840/info.json
new file mode 100644
index 0000000000..fabfd31aea
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/info.json
@@ -0,0 +1,76 @@
+{
+ "keyboard_name": "Kastenwagen 1840",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen1840",
+ "maintainer": "NoPunIn10Did",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0 , "y":0, "label":"Esc"},
+ {"x":1 , "y":0, "label":"Q"},
+ {"x":2 , "y":0, "label":"W"},
+ {"x":3 , "y":0, "label":"E"},
+ {"x":4 , "y":0, "label":"R"},
+ {"x":5 , "y":0, "label":"T"},
+ {"x":6 , "y":0, "label":"Y"},
+ {"x":7 , "y":0, "label":"U"},
+ {"x":8 , "y":0, "label":"I"},
+ {"x":9 , "y":0, "label":"O"},
+ {"x":10 , "y":0, "label":"P"},
+ {"x":11 , "y":0, "label":"L Bracket"},
+ {"x":12 , "y":0, "label":"Backspace", "w":1.75},
+ {"x":14.25, "y":0, "label":"P-7"},
+ {"x":15.25, "y":0, "label":"P-8"},
+ {"x":16.25, "y":0, "label":"P-9"},
+ {"x":17.25, "y":0, "label":"P-Minus"},
+ {"x":0 , "y":1, "label":"Tab", "w":1.25},
+ {"x":1.25, "y":1, "label":"A"},
+ {"x":2.25, "y":1, "label":"S"},
+ {"x":3.25, "y":1, "label":"D"},
+ {"x":4.25, "y":1, "label":"F"},
+ {"x":5.25, "y":1, "label":"G"},
+ {"x":6.25, "y":1, "label":"H"},
+ {"x":7.25, "y":1, "label":"J"},
+ {"x":8.25, "y":1, "label":"K"},
+ {"x":9.25, "y":1, "label":"L"},
+ {"x":10.25, "y":1, "label":"Semicolon"},
+ {"x":11.25, "y":1, "label":"Quote"},
+ {"x":12.25, "y":1, "label":"Enter", "w":1.5},
+ {"x":14.25, "y":1, "label":"P-4"},
+ {"x":15.25, "y":1, "label":"P-5"},
+ {"x":16.25, "y":1, "label":"P-6"},
+ {"x":17.25, "y":1, "label":"P-Plus"},
+ {"x":0 , "y":2, "label":"Left Shift", "w":1.75},
+ {"x":1.75, "y":2, "label":"Z"},
+ {"x":2.75, "y":2, "label":"X"},
+ {"x":3.75, "y":2, "label":"C"},
+ {"x":4.75, "y":2, "label":"V"},
+ {"x":5.75, "y":2, "label":"B"},
+ {"x":6.75, "y":2, "label":"N"},
+ {"x":7.75, "y":2, "label":"M"},
+ {"x":8.75, "y":2, "label":"Comma"},
+ {"x":9.75, "y":2, "label":"Period"},
+ {"x":10.75, "y":2, "label":"Slash"},
+ {"x":11.75, "y":2, "label":"Right Shift", "w":1.25},
+ {"x":13.125,"y":2.125,"label":"Up"},
+ {"x":14.25, "y":2, "label":"P-1"},
+ {"x":15.25, "y":2, "label":"P-2"},
+ {"x":16.25, "y":2, "label":"P-3"},
+ {"x":17.25, "y":2, "label":"P-Mult"},
+ {"x":0 , "y":3, "label":"Left Ctrl", "w":1.25},
+ {"x":1.25 , "y":3, "label":"Left Alt", "w":1.25},
+ {"x":2.5 , "y":3, "label":"MO(2)"},
+ {"x":3.5 , "y":3, "label":"Space", "w":2.75},
+ {"x":6.25 , "y":3, "label":"Space", "w":2.25},
+ {"x":8.5 , "y":3, "label":"MO(3)"},
+ {"x":9.5 , "y":3, "label":"R Win / Alt Gr", "w":1.25},
+ {"x":10.75, "y":3, "label":"MO(1)", "w":1.25},
+ {"x":12.125,"y":3.125,"label":"Left"},
+ {"x":13.125,"y":3.125,"label":"Down"},
+ {"x":14.125,"y":3.125,"label":"Right"},
+ {"x":15.25 ,"y":3, "label":"P-0"},
+ {"x":16.25 ,"y":3, "label":"P-Dot"},
+ {"x":17.25 ,"y":3, "label":"P-Enter"}
+ ]
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c
new file mode 100644
index 0000000000..a54b557406
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.c
@@ -0,0 +1,60 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kastenwagen1840.h"
+
+#ifndef LAYER_LED_DISABLE
+
+void keyboard_pre_init_kb(void) {
+ setPinOutput(LED_INDICATOR_TOP);
+ setPinOutput(LED_INDICATOR_MID);
+ setPinOutput(LED_INDICATOR_BOT);
+ keyboard_pre_init_user();
+}
+
+__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
+ writePinHigh(LED_INDICATOR_TOP);
+ writePinHigh(LED_INDICATOR_MID);
+ writePinHigh(LED_INDICATOR_BOT);
+
+ switch(get_highest_layer(state) % 4) {
+ case 1:
+ writePinLow(LED_INDICATOR_TOP);
+ writePinLow(LED_INDICATOR_MID);
+ break;
+ case 2:
+ writePinLow(LED_INDICATOR_TOP);
+ writePinLow(LED_INDICATOR_BOT);
+ break;
+ case 3:
+ writePinLow(LED_INDICATOR_MID);
+ writePinLow(LED_INDICATOR_BOT);
+ break;
+ }
+ return state;
+}
+
+#endif
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ return true;
+};
diff --git a/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h
new file mode 100644
index 0000000000..a6fad98d00
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/kastenwagen1840.h
@@ -0,0 +1,51 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ ┌───┬───┬───┬───┐
+ * │100│101│110│111│120│121│130│131│140│141│150│151│160 │ │170│171│180│181│
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬─────┤ ├───┼───┼───┼───┤
+ * │202 │203│212│213│222│223│232│233│242│243│252│253│262 │ │272│273│282│283│
+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬──┘ ├───┼───┼───┼───┤ ┌───┐
+ * │304 │305│314│315│324│325│334│335│344│345│354│355 │┌───┐│374│375│384│385│ │ │
+ * ├────┬─┴──┬┴──┬┴───┴───┴─┬─┴───┴──┬┴──┬┴───┼───┴┬───┘│364│└───┼───┼───┼───┤ │487│ 2u NumEnter
+ * │406 │407 │416│417 │437 │446│447 │456 │┌───┼───┼───┐│477│486│487│ │ │
+ * └────┴────┴───┴──────────┴────────┴───┴────┴────┘│457│467│476│└───┴───┴───┘ └───┘
+ * ┌───────────────────────────┐ └───┴───┴───┘┌───────┐
+ * │417 │ 7u Space │477 │ 2u Num0
+ * └───────────────────────────┘ └───────┘
+ */
+
+#define LAYOUT_all( \
+K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , K171 , K180 , K181 , \
+K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , K273 , K282 , K283 , \
+K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , K375 , K384 , K385 , \
+K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 , K477 , K486 , K487 \
+) \
+{ \
+ { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 , K180 }, \
+ { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, K171 , K181 }, \
+ { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 , K282 }, \
+ { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, K273 , K283 }, \
+ { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 , K384 }, \
+ { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, K375 , K385 }, \
+ { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 , K486 }, \
+ { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , K477 , K487 } \
+}
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c b/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c
new file mode 100644
index 0000000000..59a009211c
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define L2_SPC LT(2,KC_SPC)
+#define L3_SPC LT(3,KC_SPC)
+#define L3_PENT LT(3,KC_PENT)
+#define RWINALT RALT_T(KC_RGUI)
+#define ISO_LT KC_NUBS
+#define ISO_GT LSFT(KC_NUBS)
+
+bool is_alt_tab_active = false;
+uint16_t alt_tab_timer = 0;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_all(
+
+ KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS,
+ KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,KC_ENT , KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS,
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_P1 ,KC_P2 ,KC_P3 ,KC_PAST,
+ KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT,KC_P0 ,KC_PDOT,L3_PENT
+ ),
+[1] = LAYOUT_all(
+ RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_HOME,XXXXXXX,KC_PGUP,XXXXXXX,
+ KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , XXXXXXX,XXXXXXX,XXXXXXX,KC_PAST,
+ _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,XXXXXXX,KC_PGDN,KC_PSLS,
+ KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END ,KC_INS ,KC_DEL ,KC_EQL
+ ),
+[2] = LAYOUT_all(
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
+ ),
+[3] = LAYOUT_all(
+ KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , KC_NLCK,KC_PSLS,KC_PAST,XXXXXXX,
+ _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX,
+ _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ }
+ else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ }
+ else {
+ alt_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+
+ return false;
+}
+
+void matrix_scan_user(void) {
+
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 1250) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c
new file mode 100644
index 0000000000..59a009211c
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define L2_SPC LT(2,KC_SPC)
+#define L3_SPC LT(3,KC_SPC)
+#define L3_PENT LT(3,KC_PENT)
+#define RWINALT RALT_T(KC_RGUI)
+#define ISO_LT KC_NUBS
+#define ISO_GT LSFT(KC_NUBS)
+
+bool is_alt_tab_active = false;
+uint16_t alt_tab_timer = 0;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_all(
+
+ KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_P7 ,KC_P8 ,KC_P9 ,KC_PMNS,
+ KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,KC_ENT , KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS,
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_P1 ,KC_P2 ,KC_P3 ,KC_PAST,
+ KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT,KC_P0 ,KC_PDOT,L3_PENT
+ ),
+[1] = LAYOUT_all(
+ RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_HOME,XXXXXXX,KC_PGUP,XXXXXXX,
+ KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , XXXXXXX,XXXXXXX,XXXXXXX,KC_PAST,
+ _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,XXXXXXX,KC_PGDN,KC_PSLS,
+ KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END ,KC_INS ,KC_DEL ,KC_EQL
+ ),
+[2] = LAYOUT_all(
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX
+ ),
+[3] = LAYOUT_all(
+ KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , KC_NLCK,KC_PSLS,KC_PAST,XXXXXXX,
+ _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX,
+ _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ }
+ else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ }
+ else {
+ alt_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+
+ return false;
+}
+
+void matrix_scan_user(void) {
+
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 1250) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/nopunin10did/kastenwagen1840/readme.md b/keyboards/nopunin10did/kastenwagen1840/readme.md
new file mode 100644
index 0000000000..51d57ef8b2
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/readme.md
@@ -0,0 +1,28 @@
+# Kastenwagen 1840
+
+![Kastenwagen 1840](https://diplomacyvariants.files.wordpress.com/2022/01/late-harvest-on-kastenwagen.png)
+
+Kastenwagen 1840 is a 40% keyboard with a mini-numpad and dedicated arrows. The main alpha block is 13.75u long, allowing for more dedicated punctuation keys to be paired with common Minivan-like mod keys.
+
+For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w).
+
+* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did)
+* Hardware Supported: Kastenwagen 1840 (2021 June)
+* Hardware Availability: Currently by request only
+
+To jump the bootloader, either:
+* If loaded with the default layout, use Function-Escape *(the function button is the farthest righthand 1.25u on the bottom row)* **OR**
+* Use the physical reset switch on the Elite C **OR**
+* Briefly jump the Reset and Ground pins of the Elite C
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nopunin10did/kastenwagen1840:default
+
+Flashing example for this keyboard:
+
+ make nopunin10did/kastenwagen1840:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+![Kastenwagen Default Layouts](https://diplomacyvariants.files.wordpress.com/2022/01/kastenwagen-default-layouts.png)
diff --git a/keyboards/nopunin10did/kastenwagen1840/rules.mk b/keyboards/nopunin10did/kastenwagen1840/rules.mk
new file mode 100644
index 0000000000..61eb7eafb0
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen1840/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes # Enable rotary encoder input
diff --git a/keyboards/nopunin10did/kastenwagen48/config.h b/keyboards/nopunin10did/kastenwagen48/config.h
new file mode 100644
index 0000000000..f88a630cfd
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E50 // "NP"
+#define PRODUCT_ID 0x4B30 // Hex for "K" and 48
+#define DEVICE_VER 0x0001
+#define MANUFACTURER NoPunIn10Did
+#define PRODUCT Kastenwagen 48
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B4, B5, B7, D5, C7, F1, F0, B6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, E6 }
+#define UNUSED_PINS
+
+/* Indicator LEDs */
+#define LED_INDICATOR_TOP B0
+#define LED_INDICATOR_MID D4
+#define LED_INDICATOR_BOT C6
+
+/* Rotary encoder rotation pins */
+#define ENCODERS_PAD_A { D0, D3 }
+#define ENCODERS_PAD_B { D1, D2 }
+
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
diff --git a/keyboards/nopunin10did/kastenwagen48/info.json b/keyboards/nopunin10did/kastenwagen48/info.json
new file mode 100644
index 0000000000..12d375863b
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/info.json
@@ -0,0 +1,64 @@
+{
+ "keyboard_name": "Kastenwagen 48",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48",
+ "maintainer": "NoPunIn10Did",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0 , "y":0, "label":"Esc"},
+ {"x":1 , "y":0, "label":"Q"},
+ {"x":2 , "y":0, "label":"W"},
+ {"x":3 , "y":0, "label":"E"},
+ {"x":4 , "y":0, "label":"R"},
+ {"x":5 , "y":0, "label":"T"},
+ {"x":6 , "y":0, "label":"Y"},
+ {"x":7 , "y":0, "label":"U"},
+ {"x":8 , "y":0, "label":"I"},
+ {"x":9 , "y":0, "label":"O"},
+ {"x":10 , "y":0, "label":"P"},
+ {"x":11 , "y":0, "label":"L Bracket"},
+ {"x":12 , "y":0, "label":"Backspace", "w":1.75},
+ {"x":14.25, "y":0, "label":"Delete"},
+ {"x":0 , "y":1, "label":"Tab", "w":1.25},
+ {"x":1.25, "y":1, "label":"A"},
+ {"x":2.25, "y":1, "label":"S"},
+ {"x":3.25, "y":1, "label":"D"},
+ {"x":4.25, "y":1, "label":"F"},
+ {"x":5.25, "y":1, "label":"G"},
+ {"x":6.25, "y":1, "label":"H"},
+ {"x":7.25, "y":1, "label":"J"},
+ {"x":8.25, "y":1, "label":"K"},
+ {"x":9.25, "y":1, "label":"L"},
+ {"x":10.25, "y":1, "label":"Semicolon"},
+ {"x":11.25, "y":1, "label":"Quote"},
+ {"x":12.25, "y":1, "label":"Enter", "w":1.5},
+ {"x":14.25, "y":1, "label":"Pg Up"},
+ {"x":0 , "y":2, "label":"Left Shift", "w":1.75},
+ {"x":1.75, "y":2, "label":"Z"},
+ {"x":2.75, "y":2, "label":"X"},
+ {"x":3.75, "y":2, "label":"C"},
+ {"x":4.75, "y":2, "label":"V"},
+ {"x":5.75, "y":2, "label":"B"},
+ {"x":6.75, "y":2, "label":"N"},
+ {"x":7.75, "y":2, "label":"M"},
+ {"x":8.75, "y":2, "label":"Comma"},
+ {"x":9.75, "y":2, "label":"Period"},
+ {"x":10.75, "y":2, "label":"Slash"},
+ {"x":11.75, "y":2, "label":"Right Shift", "w":1.25},
+ {"x":13.125,"y":2.125,"label":"Up"},
+ {"x":14.25, "y":2, "label":"Pg Dn"},
+ {"x":0 , "y":3, "label":"Left Ctrl", "w":1.25},
+ {"x":1.25 , "y":3, "label":"Left Alt", "w":1.25},
+ {"x":2.5 , "y":3, "label":"MO(2)"},
+ {"x":3.5 , "y":3, "label":"Space", "w":2.75},
+ {"x":6.25 , "y":3, "label":"Space", "w":2.25},
+ {"x":8.5 , "y":3, "label":"MO(3)"},
+ {"x":9.5 , "y":3, "label":"R Win / Alt Gr", "w":1.25},
+ {"x":10.75, "y":3, "label":"MO(1)", "w":1.25},
+ {"x":12.125,"y":3.125,"label":"Left"},
+ {"x":13.125,"y":3.125,"label":"Down"},
+ {"x":14.125,"y":3.125,"label":"Right"}
+ ]
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c
new file mode 100644
index 0000000000..9cce6ac2e3
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.c
@@ -0,0 +1,60 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kastenwagen48.h"
+
+#ifndef LAYER_LED_DISABLE
+
+void keyboard_pre_init_kb(void) {
+ setPinOutput(LED_INDICATOR_TOP);
+ setPinOutput(LED_INDICATOR_MID);
+ setPinOutput(LED_INDICATOR_BOT);
+ keyboard_pre_init_user();
+}
+
+__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
+ writePinHigh(LED_INDICATOR_TOP);
+ writePinHigh(LED_INDICATOR_MID);
+ writePinHigh(LED_INDICATOR_BOT);
+
+ switch(get_highest_layer(state) % 4) {
+ case 1:
+ writePinLow(LED_INDICATOR_TOP);
+ writePinLow(LED_INDICATOR_MID);
+ break;
+ case 2:
+ writePinLow(LED_INDICATOR_TOP);
+ writePinLow(LED_INDICATOR_BOT);
+ break;
+ case 3:
+ writePinLow(LED_INDICATOR_MID);
+ writePinLow(LED_INDICATOR_BOT);
+ break;
+ }
+ return state;
+}
+
+#endif
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ return true;
+};
diff --git a/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h
new file mode 100644
index 0000000000..65ed03d201
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/kastenwagen48.h
@@ -0,0 +1,51 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐ ┌───┐
+ * │100│101│110│111│120│121│130│131│140│141│150│151│160 │ │170│
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬─────┤ ├───┤
+ * │202 │203│212│213│222│223│232│233│242│243│252│253│262 │ │272│
+ * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬──┘ ├───┤
+ * │304 │305│314│315│324│325│334│335│344│345│354│355 │┌───┐│374│
+ * ├────┬─┴──┬┴──┬┴───┴───┴─┬─┴───┴──┬┴──┬┴───┼───┴┬───┘│364│└───┘
+ * │406 │407 │416│417 │437 │446│447 │456 │┌───┼───┼───┐
+ * └────┴────┴───┴──────────┴────────┴───┴────┴────┘│457│467│476│
+ * ┌───────────────────────────┐ └───┴───┴───┘
+ * │417 │ 7u Space
+ * └───────────────────────────┘
+ */
+
+#define LAYOUT_all( \
+K100 , K101 , K110 , K111 , K120 , K121 , K130 , K131 , K140 , K141 , K150 , K151 , K160 , K170 , \
+K202 , K203 , K212 , K213 , K222 , K223 , K232 , K233 , K242 , K243 , K252 , K253 , K262 , K272 , \
+K304 , K305 , K314 , K315 , K324 , K325 , K334 , K335 , K344 , K345 , K354 , K355 , K364 , K374 , \
+K406 , K407 , K416 , K417 , K437 , K446 , K447 , K456 , K457 , K467 , K476 \
+) \
+{ \
+ { K100 , K110 , K120 , K130 , K140 , K150 , K160 , K170 }, \
+ { K101 , K111 , K121 , K131 , K141 , K151 , KC_NO, KC_NO }, \
+ { K202 , K212 , K222 , K232 , K242 , K252 , K262 , K272 }, \
+ { K203 , K213 , K223 , K233 , K243 , K253 , KC_NO, KC_NO }, \
+ { K304 , K314 , K324 , K334 , K344 , K354 , K364 , K374 }, \
+ { K305 , K315 , K325 , K335 , K345 , K355 , KC_NO, KC_NO }, \
+ { K406 , K416 , KC_NO, KC_NO, K446 , K456 , KC_NO, K476 }, \
+ { K407 , K417 , KC_NO, K437 , K447 , K457 , K467 , KC_NO } \
+}
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c
new file mode 100644
index 0000000000..397b75b901
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/default/keymap.c
@@ -0,0 +1,93 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define L2_SPC LT(2,KC_SPC)
+#define L3_SPC LT(3,KC_SPC)
+#define RWINALT RALT_T(KC_RGUI)
+#define ISO_LT KC_NUBS
+#define ISO_GT LSFT(KC_NUBS)
+
+bool is_alt_tab_active = false;
+uint16_t alt_tab_timer = 0;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_all(
+
+ KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_DEL ,
+ KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,KC_ENT , KC_PGUP,
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_PGDN,
+ KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+[1] = LAYOUT_all(
+ RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_INS ,
+ KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME,
+ _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,
+ KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END
+ ),
+[2] = LAYOUT_all(
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL , XXXXXXX,
+ KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,
+ _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ ),
+[3] = LAYOUT_all(
+ KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , XXXXXXX,
+ _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX,
+ _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ }
+ else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ }
+ else {
+ alt_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+
+ return false;
+}
+
+void matrix_scan_user(void) {
+
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 1250) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h
new file mode 100644
index 0000000000..c6de1b416c
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/config.h
@@ -0,0 +1,31 @@
+/* Copyright 2021, 2022 Jonavin Eng
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define TAPPING_TOGGLE 2
+// TT set to two taps
+
+/* Handle GRAVESC combo keys */
+#define GRAVE_ESC_ALT_OVERRIDE
+ //Always send Escape if Alt is pressed
+#define GRAVE_ESC_CTRL_OVERRIDE
+ //Always send Escape if Control is pressed
+
+#define TAPPING_TERM 180
+
+#define ENCODER_DIRECTION_FLIP // compensate for opposite encoder direction
+#define ENCODER_DEFAULTACTIONS_INDEX 1 // Set default encoder functions to encoder 1
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c
new file mode 100644
index 0000000000..29c12b0419
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c
@@ -0,0 +1,67 @@
+/* Copyright 2021 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ * Copyright 2022 Jonavin Eng, @Jonavin
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "jonavin.h"
+
+#define L2_SPC LT(2,KC_SPC)
+#define L3_SPC LT(3,KC_SPC)
+#define RWINALT RALT_T(KC_RGUI)
+#define ISO_LT KC_NUBS
+#define ISO_GT LSFT(KC_NUBS)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT_48(
+
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_DEL ,
+ TT(_RAISE) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,KC_ENT , KC_PGUP,
+ KC_LSFTCAPS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH, KC_SFTENT ,KC_UP , KC_PGDN,
+ KC_LCTL ,KC_LALT ,KC_LGUI ,KC_SPC ,L3_SPC ,MO(_LOWER) ,MO(_FN1) ,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+[_FN1] = LAYOUT_48(
+ KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_INS ,
+ KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_PSCR, KC_SLCK, KC_PAUS,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME,
+ _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_NLCK ,XXXXXXX ,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,KC_PGUP, KC_END ,
+ _______ ,_______ ,KC_WINLCK,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END
+ ),
+[_LOWER] = LAYOUT_48(
+ KC_TILD ,KC_EXLM, KC_AT, KC_HASH,KC_DLR,KC_PERC,KC_CIRC, KC_AMPR, KC_ASTR,KC_LPRN, KC_RPRN,KC_MINS,KC_EQL , RESET,
+ _______ ,KC_MINS, KC_EQL,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_QUES,KC_SLSH,KC_PIPE,KC_BSLS,KC_TILD, XXXXXXX ,XXXXXXX,
+ _______ ,KC_UNDS, KC_PLUS,XXXXXXX,KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC,KC_LT,KC_GT, XXXXXXX ,_______ ,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ ),
+[_RAISE] = LAYOUT_48(
+ KC_ESC, KC_HOME,KC_UP, KC_END, KC_PGUP,KC_PMNS,KC_PPLS,KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PEQL , KC_TSTOG,
+ TT(_RAISE),KC_LEFT,KC_DOWN,KC_RIGHT,KC_PGDN,KC_PSLS,KC_TAB,KC_P4, KC_P5, KC_P6, KC_PDOT,KC_PAST,KC_PENT , XXXXXXX,
+ _______, XXXXXXX,KC_DEL, KC_INS, KC_NO, KC_PAST,KC_P0, KC_P1, KC_P2, KC_P3, KC_PSLS ,_______, XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,KC_BSPC ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ )
+};
+
+#ifdef ENCODER_ENABLE // Encoder Functionality
+bool encoder_update_keymap(uint8_t index, bool clockwise) {
+ switch (index) {
+ case 0: // Top left encoder
+ encoder_action_volume(clockwise);
+ break;
+ default:
+ break;
+ }
+ return true; // fall to encoder_update_user and encoder_update_kb definitions
+}
+#endif
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md
new file mode 100644
index 0000000000..885e6b0dd7
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/readme.md
@@ -0,0 +1,54 @@
+Jonavin Kastenwagen 48 Keymap
+Designed to match my other keymaps
+
+NOTE: Uses userpace user/jonavin
+
+Feature changes from Default
+ - Bottom row mapping LCtrl, LAlt, LGui, spacebars, MO(2)/LOWER, MO(1)/FN, RCtrl
+ - CAPS as MO(3)/RAISE - tap to toggle
+ - numpad in MO(3) layer
+ - double tap L Shift for CAPS
+ - RESET moved to under encoder in MO(2)
+ - implement Win Key Lock
+ - GRV Escape overides
+ - ENCODERS
+ - TOP LEFT
+ - Volume up/down
+ - TOP RIGHT
+ - Left Shift held - change layers
+ - Right Shift held - Page Up/Down
+ - Left Ctrl held - navigate next/prev words
+ - Left Alt held - change media next/prev track
+ - RAISE + Encode push toggles between volume change and tab scrolling
+ - ENCODER_DIRECTION_FLIP has been defined to avoid issues with encoder going in opposition direction
+
+OPTIONS in rules.mk
+---------------------------------------
+
+STARTUP_NUMLOCK_ON = yes
+- turns on NUMLOCK by default
+
+ENCODER_DEFAULTACTIONS_ENABLE = yes
+- Enabled default encoder funtions
+- When enabled, use this in the keymap for an additional encoder processing
+- bool encoder_update_keymap(uint8_t index, bool clockwise)
+
+OPTION: set ENCODER_DEFAULTACTIONS_INDEX in config.h to the encoder number if the encoder is not index 0 -- set to 1 for top right encoder
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+- This will enable double tap on Left Shift to toggle CAPSLOCK
+- KC_LSFTCAPS to bind to left Shift to enable feature
+- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled
+
+INVERT_NUMLOCK_INDICATOR
+- inverts the Num lock indicator, LED is on when num lock is off
+
+ALTTAB_SCROLL_ENABLE
+- When ENCODER_DEFAULTACTIONS_ENABLE = yes,
+ Enables Alt-Tab scrolling functions in default encoder,
+ bind KS_TSTOG to a key to enable/disable Alt-Tab vs Volume control
+- When defining your own encoder functions use encoder_action_alttabscroll(bool clockwise) to assign the encodr action
+
+
+Layout
+![image](https://user-images.githubusercontent.com/71780717/128580303-5d660a5f-1420-4e38-b40a-212573496b1c.png)
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk
new file mode 100644
index 0000000000..97ccf0c354
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes # VIA support
+LTO_ENABLE = yes #
+
+TAP_DANCE_ENABLE = yes
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+STARTUP_NUMLOCK_ON = yes
+
+ENCODER_DEFAULTACTIONS_ENABLE = yes
+INVERT_NUMLOCK_INDICATOR = yes
+ALTTAB_SCROLL_ENABLE = yes
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c
new file mode 100644
index 0000000000..397b75b901
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/via/keymap.c
@@ -0,0 +1,93 @@
+/* Copyright 2022 W. Alex Ronke, a.k.a. NoPunIn10Did (w.alex.ronke@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#define L2_SPC LT(2,KC_SPC)
+#define L3_SPC LT(3,KC_SPC)
+#define RWINALT RALT_T(KC_RGUI)
+#define ISO_LT KC_NUBS
+#define ISO_GT LSFT(KC_NUBS)
+
+bool is_alt_tab_active = false;
+uint16_t alt_tab_timer = 0;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_all(
+
+ KC_ESC ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_LBRC,KC_BSPC , KC_DEL ,
+ KC_TAB ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,KC_ENT , KC_PGUP,
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSPC ,KC_UP , KC_PGDN,
+ KC_LCTL ,KC_LALT ,MO(2) ,L2_SPC ,L3_SPC ,MO(3) ,RWINALT ,MO(1) ,KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+[1] = LAYOUT_all(
+ RESET ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_RBRC,KC_DEL , KC_INS ,
+ KC_CAPS ,KC_F11 ,KC_F12 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX , KC_HOME,
+ _______ ,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,KC_INS ,KC_APP ,KC_LGUI,KC_RGUI,XXXXXXX,_______ ,KC_PGUP,KC_END ,
+ KC_RCTL ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,KC_HOME,KC_PGDN,KC_END
+ ),
+[2] = LAYOUT_all(
+ KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,KC_EQL , XXXXXXX,
+ KC_TILD ,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_UNDS,KC_LBRC,KC_RBRC,KC_BSLS , XXXXXXX,
+ _______ ,ISO_LT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ ),
+[3] = LAYOUT_all(
+ KC_TILD,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_UNDS,KC_PLUS , XXXXXXX,
+ _______ ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_LCBR,KC_RCBR,KC_PIPE , XXXXXXX,
+ _______ ,ISO_GT ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______ ,XXXXXXX,XXXXXXX,
+ _______ ,_______ ,_______,XXXXXXX ,XXXXXXX ,_______,_______ ,_______ ,XXXXXXX,XXXXXXX,XXXXXXX
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ }
+ else {
+ tap_code(KC_VOLD);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ }
+ else {
+ alt_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+
+ return false;
+}
+
+void matrix_scan_user(void) {
+
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 1250) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk b/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/nopunin10did/kastenwagen48/readme.md b/keyboards/nopunin10did/kastenwagen48/readme.md
new file mode 100644
index 0000000000..d0ea708313
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/readme.md
@@ -0,0 +1,28 @@
+# Kastenwagen 48
+
+![Kastenwagen 48](https://diplomacyvariants.files.wordpress.com/2022/01/kastenwagen-48-concept-art.png)
+
+Kastenwagen 48 is a 40% keyboard with a macro column and dedicated arrows. The main alpha block is 13.75u long, allowing for more dedicated punctuation keys to be paired with common Minivan-like mod keys.
+
+For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w).
+
+* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did)
+* Hardware Supported: Kastenwagen 48 (2021 June)
+* Hardware Availability: Currently by request only
+
+To jump the bootloader, either:
+* If loaded with the default layout, use Function-Escape *(the function button is the farthest righthand 1.25u on the bottom row)* **OR**
+* Use the physical reset switch on the Elite C **OR**
+* Briefly jump the Reset and Ground pins of the Elite C
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nopunin10did/kastenwagen48:default
+
+Flashing example for this keyboard:
+
+ make nopunin10did/kastenwagen48:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+![Kastenwagen Default Layouts](https://diplomacyvariants.files.wordpress.com/2022/01/kastenwagen-default-layouts.png)
diff --git a/keyboards/nopunin10did/kastenwagen48/rules.mk b/keyboards/nopunin10did/kastenwagen48/rules.mk
new file mode 100644
index 0000000000..61eb7eafb0
--- /dev/null
+++ b/keyboards/nopunin10did/kastenwagen48/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes # Enable rotary encoder input
diff --git a/keyboards/nopunin10did/railroad/readme.md b/keyboards/nopunin10did/railroad/readme.md
index aac088f12e..91c4554c20 100644
--- a/keyboards/nopunin10did/railroad/readme.md
+++ b/keyboards/nopunin10did/railroad/readme.md
@@ -4,7 +4,7 @@
A long keyboard with ortholinear alphas and semi-standard modifier keys. For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w).
-* Keyboard Maintainer: [Alex Ronke](diplomacyvariants.wordpress.com), also known as NoPunIn10Did.
+* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did)
* Hardware Supported: The Railroad: 2020-07 Prototype
* Hardware Availability: Currently by request only
diff --git a/keyboards/nopunin10did/railroad/rev0/readme.md b/keyboards/nopunin10did/railroad/rev0/readme.md
index e3b8dc8bcd..91c4554c20 100644
--- a/keyboards/nopunin10did/railroad/rev0/readme.md
+++ b/keyboards/nopunin10did/railroad/rev0/readme.md
@@ -4,7 +4,7 @@
A long keyboard with ortholinear alphas and semi-standard modifier keys. For more information, join the [NoPunIn10Key Discord](https://discord.gg/sku2Y6w).
-* Keyboard Maintainer: [Alex Ronke](https://diplomacyvariants.wordpress.com/), also known as [NoPunIn10Did](https://github.com/nopunin10did).
+* Keyboard Maintainer: [Alex Ronke](https://nopunin10did.com/), also known as [NoPunIn10Did](https://github.com/NoPunIn10Did)
* Hardware Supported: The Railroad: 2020-07 Prototype
* Hardware Availability: Currently by request only
diff --git a/keyboards/nopunin10did/railroad/rev0/rules.mk b/keyboards/nopunin10did/railroad/rev0/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/nopunin10did/railroad/rev0/rules.mk
+++ b/keyboards/nopunin10did/railroad/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nopunin10did/readme.md b/keyboards/nopunin10did/readme.md
new file mode 100644
index 0000000000..a23f94e664
--- /dev/null
+++ b/keyboards/nopunin10did/readme.md
@@ -0,0 +1,14 @@
+# NoPunIn10Did
+
+Contains the codebases for keyboards designed by Alex Ronke, also known as NoPunIn10Did.
+
+* [GitHub](https://github.com/nopunin10did)
+* [Website](https://nopunin10did.com/)
+* [NoPunIn10Key Discord](https://discord.gg/sku2Y6w)
+
+## Keyboards
+
+* [Jabberwocky](jabberwocky/) - a full-size, columnar-staggered, Alice-style keyboard, featuring left- or right-side numpad
+* [Kastenwagen 1840](kastenwagen1840/) - a 40% keyboard with a mini-numpad and dedicated arrows
+* [Kastenwagen 48](kastenwagen48/) - a 40% keyboard with a macro column and dedicated arrows
+* [The Railroad](railroad/rev0/) - a 97-key keyboard combining ortholinear alphas with semi-standard modifier keys
diff --git a/keyboards/novelpad/rules.mk b/keyboards/novelpad/rules.mk
index b7c7db4b93..ecdb295257 100755
--- a/keyboards/novelpad/rules.mk
+++ b/keyboards/novelpad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # In-switch LEDs
AUDIO_ENABLE = no # There is no available timer or pin for audio on the NovelPad
RGBLIGHT_ENABLE = yes # RGB LEDs for underglow, installed and enabled by default for the NovelPad
diff --git a/keyboards/noxary/220/keymaps/default/config.h b/keyboards/noxary/220/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/noxary/220/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/noxary/220/rules.mk b/keyboards/noxary/220/rules.mk
index 26f737d666..71841c3be4 100644
--- a/keyboards/noxary/220/rules.mk
+++ b/keyboards/noxary/220/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/260/keymaps/default/config.h b/keyboards/noxary/260/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/noxary/260/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/noxary/260/rules.mk b/keyboards/noxary/260/rules.mk
index 3984ce0528..52cbcd777f 100644
--- a/keyboards/noxary/260/rules.mk
+++ b/keyboards/noxary/260/rules.mk
@@ -12,13 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
LAYOUTS = 60_ansi 60_iso 60_hhkb 60_tsangan_hhkb
diff --git a/keyboards/noxary/268/rules.mk b/keyboards/noxary/268/rules.mk
index 0b23d7cb96..983fcface1 100644
--- a/keyboards/noxary/268/rules.mk
+++ b/keyboards/noxary/268/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/268_2/keymaps/default/config.h b/keyboards/noxary/268_2/keymaps/default/config.h
deleted file mode 100644
index 9c4c2b6308..0000000000
--- a/keyboards/noxary/268_2/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Rozakiin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/noxary/268_2/rules.mk b/keyboards/noxary/268_2/rules.mk
index 6fcd895aa6..fff3b815d4 100644
--- a/keyboards/noxary/268_2/rules.mk
+++ b/keyboards/noxary/268_2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/268_2_rgb/rules.mk b/keyboards/noxary/268_2_rgb/rules.mk
index 4d48dda2cf..38f81fd4dc 100644
--- a/keyboards/noxary/268_2_rgb/rules.mk
+++ b/keyboards/noxary/268_2_rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/280/keymaps/default/config.h b/keyboards/noxary/280/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/noxary/280/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/noxary/280/rules.mk b/keyboards/noxary/280/rules.mk
index 0b23d7cb96..983fcface1 100644
--- a/keyboards/noxary/280/rules.mk
+++ b/keyboards/noxary/280/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/378/rules.mk b/keyboards/noxary/378/rules.mk
index b40095525f..75490909f3 100644
--- a/keyboards/noxary/378/rules.mk
+++ b/keyboards/noxary/378/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/valhalla/chconf.h b/keyboards/noxary/valhalla/chconf.h
new file mode 100644
index 0000000000..06279fc387
--- /dev/null
+++ b/keyboards/noxary/valhalla/chconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/arctic/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/noxary/valhalla/config.h b/keyboards/noxary/valhalla/config.h
new file mode 100644
index 0000000000..4e87afecb9
--- /dev/null
+++ b/keyboards/noxary/valhalla/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2015 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E58 //"NX"
+#define PRODUCT_ID 0x5648 // "VH" for Valhalla
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Noxary
+#define PRODUCT Valhalla
+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { B12, B11, B10, B2 , B1 , B0 , A10, B9 , B8 , B7 , B6 , B5 , B4 , B3 , A15 }
+#define MATRIX_ROW_PINS { A8 , A9 , B13, B14, B15 }
+#define DIODE_DIRECTION COL2ROW
+
+//#define BACKLIGHT_PIN A6
+//#define BACKLIGHT_PWM_DRIVER PWMD3
+//#define BACKLIGHT_PWM_CHANNEL 1
+//#define BACKLIGHT_PAL_MODE 1
+//#define BACKLIGHT_LEVELS 6
+//#define BACKLIGHT_BREATHING
+//#define BREATHING_PERIOD 6
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/noxary/valhalla/info.json b/keyboards/noxary/valhalla/info.json
new file mode 100644
index 0000000000..01d31bce6b
--- /dev/null
+++ b/keyboards/noxary/valhalla/info.json
@@ -0,0 +1,88 @@
+{
+ "keyboard_name": "Valhalla",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"`~", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":9, "y":0},
+ {"label":"8*", "x":10, "y":0},
+ {"label":"9(", "x":11, "y":0},
+ {"label":"0)", "x":12, "y":0},
+ {"label":"-_", "x":13, "y":0},
+ {"label":"=+", "x":14, "y":0},
+ {"label":"Backspace", "x":15, "y":0},
+ {"label":"Backspace", "x":16, "y":0},
+ {"label":"Delete", "x":17, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":8.5, "y":1},
+ {"label":"U", "x":9.5, "y":1},
+ {"label":"I", "x":10.5, "y":1},
+ {"label":"O", "x":11.5, "y":1},
+ {"label":"P", "x":12.5, "y":1},
+ {"label":"[{", "x":13.5, "y":1},
+ {"label":"]}", "x":14.5, "y":1},
+ {"label":"\\|", "x":15.5, "y":1, "w":1.5},
+ {"label":"Page Up", "x":17, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":8.75, "y":2},
+ {"label":"J", "x":9.75, "y":2},
+ {"label":"K", "x":10.75, "y":2},
+ {"label":"L", "x":11.75, "y":2},
+ {"label":";:", "x":12.75, "y":2},
+ {"label":"'\"", "x":13.75, "y":2},
+ {"label":"Enter", "x":14.75, "y":2, "w":2.25},
+ {"label":"Page Down", "x":17, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"B", "x":8.25, "y":3},
+ {"label":"N", "x":9.25, "y":3},
+ {"label":"M", "x":10.25, "y":3},
+ {"label":",<", "x":11.25, "y":3},
+ {"label":".>", "x":12.25, "y":3},
+ {"label":"/?", "x":13.25, "y":3},
+ {"label":"Shift", "x":14.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":16, "y":3},
+ {"label":"Fn", "x":17, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":1.75},
+ {"label":"Space", "x":5.75, "y":4},
+ {"label":"Space", "x":8, "y":4},
+ {"label":"Space", "x":9, "y":4, "w":1.25},
+ {"label":"Alt", "x":10.25, "y":4, "w":1.5},
+ {"label":"GUI", "x":11.75, "y":4},
+ {"label":"Ctrl", "x":12.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":15, "y":4},
+ {"label":"\u2193", "x":16, "y":4},
+ {"label":"\u2192", "x":17, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/noxary/valhalla/keymaps/default/keymap.c b/keyboards/noxary/valhalla/keymaps/default/keymap.c
new file mode 100755
index 0000000000..fb9aab0968
--- /dev/null
+++ b/keyboards/noxary/valhalla/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, MO(1) ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/noxary/valhalla/keymaps/via/keymap.c b/keyboards/noxary/valhalla/keymaps/via/keymap.c
new file mode 100755
index 0000000000..fb9aab0968
--- /dev/null
+++ b/keyboards/noxary/valhalla/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, MO(1) ,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ RESET , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/noxary/valhalla/keymaps/via/rules.mk b/keyboards/noxary/valhalla/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/noxary/valhalla/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/noxary/valhalla/mcuconf.h b/keyboards/noxary/valhalla/mcuconf.h
new file mode 100644
index 0000000000..5b2f5ef867
--- /dev/null
+++ b/keyboards/noxary/valhalla/mcuconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/arctic/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
diff --git a/keyboards/noxary/valhalla/readme.md b/keyboards/noxary/valhalla/readme.md
new file mode 100644
index 0000000000..ac053df874
--- /dev/null
+++ b/keyboards/noxary/valhalla/readme.md
@@ -0,0 +1,32 @@
+# Noxary Valhalla
+
+![valhalla](https://cdn.shopify.com/s/files/1/0071/6377/3043/products/BG_AngleL_a247224d-f9ca-4093-b0de-df776e34b02d_900x.jpg?v=1598742611)
+
+An ergonomic 65% by Noxary
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: proprietary PCB
+* Hardware Availability: [Noxary](https://noxary.co/collections/valhalla). As of november 17, the group buy has ended.
+
+
+## How to flash
+
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+## Compile firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make noxary/valhalla:default
+
+To directly flash the PCB after it is put into a DFU state, use
+
+ make noxary/valhalla:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/noxary/valhalla/rules.mk b/keyboards/noxary/valhalla/rules.mk
new file mode 100644
index 0000000000..f7365adecf
--- /dev/null
+++ b/keyboards/noxary/valhalla/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/noxary/valhalla/valhalla.c b/keyboards/noxary/valhalla/valhalla.c
new file mode 100644
index 0000000000..a8b2165091
--- /dev/null
+++ b/keyboards/noxary/valhalla/valhalla.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2015 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "valhalla.h"
diff --git a/keyboards/noxary/valhalla/valhalla.h b/keyboards/noxary/valhalla/valhalla.h
new file mode 100644
index 0000000000..cd6f8e36d0
--- /dev/null
+++ b/keyboards/noxary/valhalla/valhalla.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2015 Álvaro "Gondolindrim" Volpato <gondolindrim@acheronproject.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, ___, ___, K4C, K4D, K4E } \
+}
diff --git a/keyboards/noxary/vulcan/rules.mk b/keyboards/noxary/vulcan/rules.mk
index 739557beb6..f0cdbb9b0c 100644
--- a/keyboards/noxary/vulcan/rules.mk
+++ b/keyboards/noxary/vulcan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/noxary/x268/keymaps/default/config.h b/keyboards/noxary/x268/keymaps/default/config.h
deleted file mode 100644
index 9c4c2b6308..0000000000
--- a/keyboards/noxary/x268/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Rozakiin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/noxary/x268/rules.mk b/keyboards/noxary/x268/rules.mk
index 1709fdacac..35fbff0af9 100644
--- a/keyboards/noxary/x268/rules.mk
+++ b/keyboards/noxary/x268/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/np12/rules.mk b/keyboards/np12/rules.mk
index 786af209df..a56e12eb22 100644
--- a/keyboards/np12/rules.mk
+++ b/keyboards/np12/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nullbitsco/nibble/rules.mk b/keyboards/nullbitsco/nibble/rules.mk
index ab20cfa246..f33bfbb9b8 100644
--- a/keyboards/nullbitsco/nibble/rules.mk
+++ b/keyboards/nullbitsco/nibble/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/nullbitsco/scramble/rules.mk b/keyboards/nullbitsco/scramble/rules.mk
index dc1da34964..e6d789691b 100644
--- a/keyboards/nullbitsco/scramble/rules.mk
+++ b/keyboards/nullbitsco/scramble/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/numatreus/rules.mk b/keyboards/numatreus/rules.mk
index 8a1b3979f8..c984ff05f6 100644
--- a/keyboards/numatreus/rules.mk
+++ b/keyboards/numatreus/rules.mk
@@ -12,11 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
UNICODE_ENABLE = yes # Unicode
RGBLIGHT_ENABLE = no
LED_ANIMATIONS = no
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ocean/addon/addon.c b/keyboards/ocean/addon/addon.c
new file mode 100644
index 0000000000..01a815a279
--- /dev/null
+++ b/keyboards/ocean/addon/addon.c
@@ -0,0 +1,15 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "addon.h"
diff --git a/keyboards/ocean/addon/addon.h b/keyboards/ocean/addon/addon.h
new file mode 100644
index 0000000000..82bc2eee27
--- /dev/null
+++ b/keyboards/ocean/addon/addon.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Ocean
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT(\
+ K00, K01, K02, K03, K04, K05, K06, \
+ K10, K11, K12, K13, K14, K15, K16, \
+ K20, K21, K22, K23, K24, K25, K26, \
+ K30, K31, K32, K33, K34, K35, K36, \
+ K40, K41, K42, K43, K44, K45, K46 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06 }, \
+ { K10, K11, K12, K13, K14, K15, K16 }, \
+ { K20, K21, K22, K23, K24, K25, K26 }, \
+ { K30, K31, K32, K33, K34, K35, K36 }, \
+ { K40, K41, K42, K43, K44, K45, K46 } \
+}
diff --git a/keyboards/ocean/addon/config.h b/keyboards/ocean/addon/config.h
new file mode 100644
index 0000000000..1b221b65bd
--- /dev/null
+++ b/keyboards/ocean/addon/config.h
@@ -0,0 +1,51 @@
+/*Copyright 2022 Ocean
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0x9624
+#define PRODUCT_ID 0x0012
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ocean
+#define PRODUCT AddOn
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
+#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5 }
+#define UNUSED_PINS { D0, D1, D2, D3, D4, F4 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
diff --git a/keyboards/ocean/addon/info.json b/keyboards/ocean/addon/info.json
new file mode 100644
index 0000000000..75e1eb2c48
--- /dev/null
+++ b/keyboards/ocean/addon/info.json
@@ -0,0 +1,45 @@
+{
+ "keyboard_name": "AddOn",
+ "url": "tokopedia.com/kbdksp",
+ "maintainer": "Ocean",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.25, "y":0},
+ {"x":6.25, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3.25, "y":1},
+ {"x":4.25, "y":1},
+ {"x":5.25, "y":1},
+ {"x":6.25, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3.25, "y":2},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":3.25, "y":4},
+ {"x":4.25, "y":4},
+ {"x":5.25, "y":4},
+ {"x":6.25, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/ocean/addon/keymaps/default/keymap.c b/keyboards/ocean/addon/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b20eac7d1d
--- /dev/null
+++ b/keyboards/ocean/addon/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_TRNS, KC_UP, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/ocean/addon/keymaps/via/keymap.c b/keyboards/ocean/addon/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b20eac7d1d
--- /dev/null
+++ b/keyboards/ocean/addon/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_TRNS, KC_UP, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/ocean/addon/keymaps/via/rules.mk b/keyboards/ocean/addon/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ocean/addon/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ocean/addon/readme.md b/keyboards/ocean/addon/readme.md
new file mode 100644
index 0000000000..eaaef4e3bd
--- /dev/null
+++ b/keyboards/ocean/addon/readme.md
@@ -0,0 +1,24 @@
+# AddOn
+
+![AddOn](https://i.imgur.com/hd2ETLPl.jpeg)
+
+
+Navigation cluster and numpad for 60% keyboard
+
+* Keyboard Maintainer: Ocean
+* Hardware Supported: AddOn, Pro Micro
+* Hardware Availability: [Keyboard Kasep Co.](https://tokopedia.com/kbdksp/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ocean/addon:default
+
+Flashing example for this keyboard:
+
+ make ocean/addon:default:flash
+
+## Bootloader
+
+To Enter the bootloader you can double click reset button on board when you flash the firmware
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ocean/addon/rules.mk b/keyboards/ocean/addon/rules.mk
new file mode 100644
index 0000000000..7c70616682
--- /dev/null
+++ b/keyboards/ocean/addon/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ocean/gin_v2/rules.mk b/keyboards/ocean/gin_v2/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/ocean/gin_v2/rules.mk
+++ b/keyboards/ocean/gin_v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ocean/slamz/rules.mk b/keyboards/ocean/slamz/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/ocean/slamz/rules.mk
+++ b/keyboards/ocean/slamz/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ocean/stealth/rules.mk b/keyboards/ocean/stealth/rules.mk
index e6f23c3ee3..5bf7023f03 100644
--- a/keyboards/ocean/stealth/rules.mk
+++ b/keyboards/ocean/stealth/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/ocean/sus/rules.mk b/keyboards/ocean/sus/rules.mk
index d462cab2fa..552f86883f 100644
--- a/keyboards/ocean/sus/rules.mk
+++ b/keyboards/ocean/sus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/ocean/wang_ergo/rules.mk b/keyboards/ocean/wang_ergo/rules.mk
index e6f23c3ee3..5bf7023f03 100644
--- a/keyboards/ocean/wang_ergo/rules.mk
+++ b/keyboards/ocean/wang_ergo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/ocean/wang_v2/rules.mk b/keyboards/ocean/wang_v2/rules.mk
index d462cab2fa..552f86883f 100644
--- a/keyboards/ocean/wang_v2/rules.mk
+++ b/keyboards/ocean/wang_v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/ocean/yuri/config.h b/keyboards/ocean/yuri/config.h
new file mode 100644
index 0000000000..d8313fd71f
--- /dev/null
+++ b/keyboards/ocean/yuri/config.h
@@ -0,0 +1,50 @@
+/*Copyright 2022 Ocean
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0x9624
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Ocean
+#define PRODUCT Yuri
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
+#define MATRIX_ROW_PINS {F4, F5, F6, F7}
+#define MATRIX_COL_PINS {D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1}
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
diff --git a/keyboards/ocean/yuri/info.json b/keyboards/ocean/yuri/info.json
new file mode 100644
index 0000000000..68d9668579
--- /dev/null
+++ b/keyboards/ocean/yuri/info.json
@@ -0,0 +1,59 @@
+{
+ "keyboard_name": "Yuri",
+ "url": "tokopedia.com/strat0s",
+ "maintainer": "Ocean",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.25, "y":0},
+ {"x":6.25, "y":0},
+ {"x":9.25, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.25, "y":0},
+ {"x":15.25, "y":0},
+ {"x":0, "y":1},
+ {"x":1.25, "y":1, "w":1.25},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1},
+ {"x":14.5, "y":1, "w":1.75},
+ {"x":0, "y":2},
+ {"x":1.25, "y":2, "w":1.75},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+ {"x":13, "y":2},
+ {"x":14, "y":2},
+ {"x":15, "y":2, "w":1.25},
+ {"x":1.25, "y":3, "w":1.5},
+ {"x":2.75, "y":3, "w":1.25},
+ {"x":4, "y":3, "w":1.5},
+ {"x":5.5, "y":3, "w":2.25},
+ {"x":9.5, "y":3, "w":2.75},
+ {"x":12.25, "y":3, "w":1.25},
+ {"x":13.5, "y":3, "w":1.25},
+ {"x":14.75, "y":3, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ocean/yuri/keymaps/default/keymap.c b/keyboards/ocean/yuri/keymaps/default/keymap.c
new file mode 100644
index 0000000000..24c2830d14
--- /dev/null
+++ b/keyboards/ocean/yuri/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_PSCR, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTRL
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/ocean/yuri/keymaps/via/keymap.c b/keyboards/ocean/yuri/keymaps/via/keymap.c
new file mode 100644
index 0000000000..24c2830d14
--- /dev/null
+++ b/keyboards/ocean/yuri/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_PSCR, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_PGDN, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTRL
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/ocean/yuri/keymaps/via/rules.mk b/keyboards/ocean/yuri/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ocean/yuri/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ocean/yuri/readme.md b/keyboards/ocean/yuri/readme.md
new file mode 100644
index 0000000000..a2db8a3d29
--- /dev/null
+++ b/keyboards/ocean/yuri/readme.md
@@ -0,0 +1,24 @@
+# Yuri
+
+![Yuri](https://i.imgur.com/boFAMKal.jpeg)
+
+
+40 percent alice
+
+* Keyboard Maintainer: Ocean
+* Hardware Supported: Yuri, Pro Micro
+* Hardware Availability: [Local Marketplace](https://tokopedia.com/strat0s/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ocean/yuri:default
+
+Flashing example for this keyboard:
+
+ make ocean/yuri:default:flash
+
+## Bootloader
+
+To Enter the bootloader you can double click reset button on board when you flash the firmware
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ocean/yuri/rules.mk b/keyboards/ocean/yuri/rules.mk
new file mode 100644
index 0000000000..7c70616682
--- /dev/null
+++ b/keyboards/ocean/yuri/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ocean/yuri/yuri.c b/keyboards/ocean/yuri/yuri.c
new file mode 100644
index 0000000000..f02e35dce7
--- /dev/null
+++ b/keyboards/ocean/yuri/yuri.c
@@ -0,0 +1,15 @@
+/* Copyright 2022 Ocean
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "yuri.h"
diff --git a/keyboards/ocean/yuri/yuri.h b/keyboards/ocean/yuri/yuri.h
new file mode 100644
index 0000000000..3f8c2b17da
--- /dev/null
+++ b/keyboards/ocean/yuri/yuri.h
@@ -0,0 +1,31 @@
+/* Copyright 2022 Ocean
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
+ K31, K32, K33, K35, K38, K3A, K3C, K3D \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K31, K32, K33, K35, K38, K3A, K3C, K3D }, \
+}
diff --git a/keyboards/oddball/rules.mk b/keyboards/oddball/rules.mk
index d675ebcf2b..b096a922c5 100644
--- a/keyboards/oddball/rules.mk
+++ b/keyboards/oddball/rules.mk
@@ -9,10 +9,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/oddforge/vea/rules.mk b/keyboards/oddforge/vea/rules.mk
index e466f73eae..4aed5ab586 100644
--- a/keyboards/oddforge/vea/rules.mk
+++ b/keyboards/oddforge/vea/rules.mk
@@ -5,6 +5,8 @@ MCU = atmega32a
BOOTLOADER = bootloadhid
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
diff --git a/keyboards/odelia/rules.mk b/keyboards/odelia/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/odelia/rules.mk
+++ b/keyboards/odelia/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ogre/ergo_single/rules.mk b/keyboards/ogre/ergo_single/rules.mk
index f550d3bc86..99f9befa53 100644
--- a/keyboards/ogre/ergo_single/rules.mk
+++ b/keyboards/ogre/ergo_single/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ogre/ergo_split/rules.mk b/keyboards/ogre/ergo_split/rules.mk
index 84f43da416..9920cd3aa3 100644
--- a/keyboards/ogre/ergo_split/rules.mk
+++ b/keyboards/ogre/ergo_split/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ogurec/info.json b/keyboards/ogurec/info.json
index bc4e637b32..1cb6823f95 100644
--- a/keyboards/ogurec/info.json
+++ b/keyboards/ogurec/info.json
@@ -80,7 +80,7 @@
{"label":"<", "x":9, "y":2},
{"label":">", "x":10, "y":2},
{"label":"?", "x":11, "y":2}]
- },
+ }
}
}
diff --git a/keyboards/ogurec/rules.mk b/keyboards/ogurec/rules.mk
index eb1754a66b..cf372ceb7e 100644
--- a/keyboards/ogurec/rules.mk
+++ b/keyboards/ogurec/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ok60/rules.mk b/keyboards/ok60/rules.mk
index 7c15782a19..7fab929d98 100644
--- a/keyboards/ok60/rules.mk
+++ b/keyboards/ok60/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable the RGB backlight
diff --git a/keyboards/omnikey_bh/keymaps/default/keymap.c b/keyboards/omnikey_bh/keymaps/default/keymap.c
index e4865adde3..671c04a36b 100644
--- a/keyboards/omnikey_bh/keymaps/default/keymap.c
+++ b/keyboards/omnikey_bh/keymaps/default/keymap.c
@@ -2,7 +2,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(\
+ [0] = LAYOUT(
KC_F11, KC_F12, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_F1, KC_F2, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
- [1] = LAYOUT(\
+ [1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/omnikey_bh/rules.mk b/keyboards/omnikey_bh/rules.mk
index 5d9c83a5a2..65e353ad15 100644
--- a/keyboards/omnikey_bh/rules.mk
+++ b/keyboards/omnikey_bh/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/omnikeyish/rules.mk b/keyboards/omnikeyish/rules.mk
index 70eb8240d6..2a00a52c84 100644
--- a/keyboards/omnikeyish/rules.mk
+++ b/keyboards/omnikeyish/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/onekeyco/dango40/info.json b/keyboards/onekeyco/dango40/info.json
index 188cc7473d..e26e92697b 100644
--- a/keyboards/onekeyco/dango40/info.json
+++ b/keyboards/onekeyco/dango40/info.json
@@ -1,263 +1,62 @@
{
- "keyboard_name":"Dango40",
- "url":"https://github.com/swiftrax",
- "maintainer":"Swiftrax",
- "layouts":{
- "LAYOUT":{
- "layout_all":[
- {
- "label":"0,0",
- "x":0,
- "y":0
- },
- {
- "label":"0,1",
- "x":1,
- "y":0
- },
- {
- "label":"0,2",
- "x":2,
- "y":0
- },
- {
- "label":"0,3",
- "x":3,
- "y":0
- },
- {
- "label":"0,4",
- "x":4,
- "y":0
- },
- {
- "label":"0,5",
- "x":5,
- "y":0
- },
- {
- "label":"0,6",
- "x":6,
- "y":0
- },
- {
- "label":"0,7",
- "x":7,
- "y":0
- },
- {
- "label":"0,8",
- "x":8,
- "y":0
- },
- {
- "label":"0,9",
- "x":9,
- "y":0
- },
- {
- "label":"0,10",
- "x":10,
- "y":0
- },
- {
- "label":"0,11",
- "x":11,
- "y":0,
- "w":1.75
- },
- {
- "label":"0,12",
- "x":12.75,
- "y":0
- },
- {
- "label":"1,0",
- "x":0,
- "y":1,
- "w":1.25
- },
- {
- "label":"1,1",
- "x":1.25,
- "y":1
- },
- {
- "label":"1,2",
- "x":2.25,
- "y":1
- },
- {
- "label":"1,3",
- "x":3.25,
- "y":1
- },
- {
- "label":"1,4",
- "x":4.25,
- "y":1
- },
- {
- "label":"1,5",
- "x":5.25,
- "y":1
- },
- {
- "label":"1,6",
- "x":6.25,
- "y":1
- },
- {
- "label":"1,7",
- "x":7.25,
- "y":1
- },
- {
- "label":"1,8",
- "x":8.25,
- "y":1
- },
- {
- "label":"1,9",
- "x":9.25,
- "y":1
- },
- {
- "label":"1,10",
- "x":10.25,
- "y":1
- },
- {
- "label":"1,11",
- "x":11.25,
- "y":1,
- "w":1.5
- },
- {
- "label":"1,12",
- "x":12.75,
- "y":1
- },
- {
- "label":"2,0",
- "x":0,
- "y":2,
- "w":1.75
- },
- {
- "label":"2,1",
- "x":1.75,
- "y":2
- },
- {
- "label":"2,2",
- "x":2.75,
- "y":2
- },
- {
- "label":"2,3",
- "x":3.75,
- "y":2
- },
- {
- "label":"2,4",
- "x":4.75,
- "y":2
- },
- {
- "label":"2,5",
- "x":5.75,
- "y":2
- },
- {
- "label":"2,6",
- "x":6.75,
- "y":2
- },
- {
- "label":"2,7",
- "x":7.75,
- "y":2
- },
- {
- "label":"2,8",
- "x":8.75,
- "y":2
- },
- {
- "label":"2,9",
- "x":9.75,
- "y":2
- },
- {
- "label":"2,10",
- "x":10.75,
- "y":2
- },
- {
- "label":"2,11",
- "x":11.75,
- "y":2
- },
- {
- "label":"2,12",
- "x":12.75,
- "y":2
- },
- {
- "label":"3,0",
- "x":0,
- "y":3,
- "w":1.25
- },
- {
- "label":"3,1",
- "x":1.25,
- "y":3,
- "w":1.5
- },
- {
- "label":"3,2",
- "x":2.75,
- "y":3,
- "w":1.25
- },
- {
- "label":"3,4",
- "x":4,
- "y":3,
- "w":2.25
- },
- {
- "label":"3,6",
- "x":6.25,
- "y":3,
- "w":2.75
- },
- {
- "label":"3,7",
- "x":9,
- "y":3,
- "w":1.25
- },
- {
- "label":"3,9",
- "x":10.25,
- "y":3,
- "w":1.25
- },
- {
- "label":"3,10",
- "x":11.5,
- "y":3,
- "w":1.25
- },
- {
- "label":"3,11",
- "x":12.75,
- "y":3
- }
- ]
- }
- }
-} \ No newline at end of file
+ "keyboard_name": "Dango40",
+ "url": "https://github.com/swiftrax",
+ "maintainer": "Swiftrax",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Q", "x":1, "y":0},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0},
+ {"label":"T", "x":5, "y":0},
+ {"label":"Y", "x":6, "y":0},
+ {"label":"U", "x":7, "y":0},
+ {"label":"I", "x":8, "y":0},
+ {"label":"O", "x":9, "y":0},
+ {"label":"P", "x":10, "y":0},
+ {"label":"Backspace", "x":11, "y":0, "w":1.75},
+ {"label":"Mute", "x":12.75, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25},
+ {"label":"A", "x":1.25, "y":1},
+ {"label":"S", "x":2.25, "y":1},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1},
+ {"label":"G", "x":5.25, "y":1},
+ {"label":"H", "x":6.25, "y":1},
+ {"label":"J", "x":7.25, "y":1},
+ {"label":"K", "x":8.25, "y":1},
+ {"label":"L", "x":9.25, "y":1},
+ {"label":";:", "x":10.25, "y":1},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.5},
+ {"label":"Page Up", "x":12.75, "y":1},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75},
+ {"label":"Z", "x":1.75, "y":2},
+ {"label":"X", "x":2.75, "y":2},
+ {"label":"C", "x":3.75, "y":2},
+ {"label":"V", "x":4.75, "y":2},
+ {"label":"B", "x":5.75, "y":2},
+ {"label":"N", "x":6.75, "y":2},
+ {"label":"M", "x":7.75, "y":2},
+ {"label":",<", "x":8.75, "y":2},
+ {"label":".>", "x":9.75, "y":2},
+ {"label":"/?", "x":10.75, "y":2},
+ {"label":"Shift", "x":11.75, "y":2},
+ {"label":"Page Down", "x":12.75, "y":2},
+
+ {"label":"Ctrl", "x":0, "y":3, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":3, "w":1.5},
+ {"label":"Alt", "x":2.75, "y":3, "w":1.25},
+ {"label":"Space", "x":4, "y":3, "w":2.25},
+ {"label":"Space", "x":6.25, "y":3, "w":2.75},
+ {"label":"Alt", "x":9, "y":3, "w":1.25},
+ {"label":"Ctrl", "x":10.25, "y":3, "w":1.25},
+ {"label":"Fn", "x":11.5, "y":3, "w":1.25},
+ {"label":"Right", "x":12.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/onekeyco/dango40/rules.mk b/keyboards/onekeyco/dango40/rules.mk
index 898b0f4440..2f9a36a268 100644
--- a/keyboards/onekeyco/dango40/rules.mk
+++ b/keyboards/onekeyco/dango40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/opendeck/32/rev1/rules.mk b/keyboards/opendeck/32/rev1/rules.mk
index 4d1402a281..91031bcb22 100644
--- a/keyboards/opendeck/32/rev1/rules.mk
+++ b/keyboards/opendeck/32/rev1/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/opus/rules.mk b/keyboards/opus/rules.mk
index a84bf22627..515ca5621f 100644
--- a/keyboards/opus/rules.mk
+++ b/keyboards/opus/rules.mk
@@ -4,7 +4,6 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
-
# Build Options
# change yes to no to disable
#
@@ -13,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/orange75/rules.mk b/keyboards/orange75/rules.mk
index cbfbc1d583..60293f1386 100644
--- a/keyboards/orange75/rules.mk
+++ b/keyboards/orange75/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/org60/keymaps/default/keymap.c b/keyboards/org60/keymaps/default/keymap.c
index 204c7634b1..b82ec254b3 100644
--- a/keyboards/org60/keymaps/default/keymap.c
+++ b/keyboards/org60/keymaps/default/keymap.c
@@ -4,18 +4,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 0: Base Layer
LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC , KC_NO, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT ,KC_UP, KC_DEL, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC , KC_NO,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_NO, KC_RSFT ,KC_UP, KC_DEL,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
// 1: Function Layer
LAYOUT(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, \
- KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO ,KC_PGUP, KC_INS, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
+ KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_RSFT, KC_NO ,KC_PGUP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
};
diff --git a/keyboards/org60/rules.mk b/keyboards/org60/rules.mk
index 6b05c7d99a..2d3a48944b 100644
--- a/keyboards/org60/rules.mk
+++ b/keyboards/org60/rules.mk
@@ -5,6 +5,8 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
AUDIO_ENABLE = no # Audio output
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -12,8 +14,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no # Console for debug
EXTRAKEY_ENABLE = yes # Audio control and System control
MOUSEKEY_ENABLE = yes # Mouse keys
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = 60_ansi
diff --git a/keyboards/ortho5by12/rules.mk b/keyboards/ortho5by12/rules.mk
index a907bd4efe..6b944b130f 100644
--- a/keyboards/ortho5by12/rules.mk
+++ b/keyboards/ortho5by12/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/orthocode/config.h b/keyboards/orthocode/config.h
index 823a48e368..e548fe1d4e 100644
--- a/keyboards/orthocode/config.h
+++ b/keyboards/orthocode/config.h
@@ -18,8 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
+#define VENDOR_ID 0x3415 // orthocodekb.com
+#define PRODUCT_ID 0x0001 // orthocode
#define DEVICE_VER 0x0001
#define MANUFACTURER Jrodna
#define PRODUCT OrthoCode
diff --git a/keyboards/orthocode/info.json b/keyboards/orthocode/info.json
index 058ec85579..c193ab44f9 100644
--- a/keyboards/orthocode/info.json
+++ b/keyboards/orthocode/info.json
@@ -5,9 +5,9 @@
"layouts": {
"LAYOUT": {
"layout": [
- {"label":"Rotary", "x":0.5, "y":0},
+ {"label":"Mute", "x":0.5, "y":0},
- {"label":"Game", "x":0.5, "y":1},
+ {"label":"RGB Tog", "x":0.5, "y":1},
{"label":"Esc", "x":1.75, "y":1},
{"label":"1", "x":3, "y":1},
{"label":"2", "x":4, "y":1},
@@ -23,7 +23,7 @@
{"label":"+", "x":16.5, "y":1},
{"label":"Home", "x":17.5, "y":1},
- {"label":"M1", "x":0.25, "y":2},
+ {"label":"RGB Mode", "x":0.25, "y":2},
{"label":"Tab", "x":1.5, "y":2, "w":1.5},
{"label":"Q", "x":3, "y":2},
{"label":"W", "x":4, "y":2},
@@ -39,8 +39,8 @@
{"label":"Delete", "x":17, "y":2},
{"label":"End", "x":18, "y":2},
- {"label":"M2", "x":0, "y":3},
- {"label":"Ctrl", "x":1.25, "y":3, "w":1.75},
+ {"label":"RGB RMode", "x":0, "y":3},
+ {"label":"Caps", "x":1.25, "y":3, "w":1.75},
{"label":"A", "x":3, "y":3},
{"label":"S", "x":4, "y":3},
{"label":"D", "x":5, "y":3},
@@ -54,7 +54,7 @@
{"label":"\"", "x":15.5, "y":3},
{"label":"Enter", "x":16.5, "y":3, "w":2.25},
- {"label":"Layer", "x":0.75, "y":4, "w":2.25},
+ {"label":"Shift", "x":0.75, "y":4, "w":2.25},
{"label":"Z", "x":3, "y":4},
{"label":"X", "x":4, "y":4},
{"label":"C", "x":5, "y":4},
diff --git a/keyboards/orthocode/keymaps/default/keymap.c b/keyboards/orthocode/keymaps/default/keymap.c
index ea69d01335..75bac5ff3f 100644
--- a/keyboards/orthocode/keymaps/default/keymap.c
+++ b/keyboards/orthocode/keymaps/default/keymap.c
@@ -15,45 +15,34 @@
*/
#include QMK_KEYBOARD_H
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- SHIFTSPACE,
- ILIKEFROG
-};
-
-#define KC_SHSP SHIFTSPACE
-#define KC_FROG ILIKEFROG
-
-
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
/* Rotary */
KC__MUTE,
/* esc 1 2 3 4 5 6 7 8 9 0 - = home */
- TG(2), KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_HOME,
+ RGB_TOG, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_HOME,
/* tab Q W E R T Y U I O P \ delete end */
- RGB_TOG, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END,
+ RGB_MOD, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END,
/* caps A S D F G H J K L ; ' enter */
- RGB_MOD, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ RGB_RMOD, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
/* shift Z X C V B N M , . / up */
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
/* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
- KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_RSFT, KC_ENT, KC_BSPC, KC_SHSP, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_RSFT, KC_ENT, KC_BSPC, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT(
/* Rotary */
- KC_TRNS,
- /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
- TG(3), KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
- /* tab Q W E R T Y U I O P \ delete end */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS,
- /* caps A S D F G H J K L ; ' enter */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
- /* shift Z X C V B N M , . / up */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, LSFT(KC_EQL), LSFT(KC_9), LSFT(KC_0), KC_TRNS, KC_VOLU,
- /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS
+ TG(2),
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ /* tab Q W E R T Y U I O P \ delete end */
+ RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter */
+ RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* shift Z X C V B N M , . / up */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, LSFT(KC_EQL), LSFT(KC_9), LSFT(KC_0), KC_TRNS, KC_VOLU,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS
),
[2] = LAYOUT(
/* Rotary */
@@ -69,107 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
- [3] = LAYOUT(
- /* Rotary */
- KC_FROG,
- /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
- TG(3), KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG,
- /* tab Q W E R T Y U I O P \ delete end */
- KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG,
- /* caps A S D F G H J K L ; ' enter */
- KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG,
- /* shift Z X C V B N M , . / up */
- KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG,
- /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
- KC_FROG, KC_FROG, KC_FROG, MO(1), KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG, KC_FROG
)
};
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- static bool shiftspace_mods = false;
- static int frogchar = 0;
- switch (keycode) {
- case SHIFTSPACE:
- if (record->event.pressed) {
- if(get_mods() & MOD_BIT(KC_RSFT)) {
- register_code(KC_MINS);
- shiftspace_mods = true;
- }
- else {
- register_code(KC_SPC);
- }
- } else {
- if (shiftspace_mods) {
- unregister_code(KC_MINS);
- shiftspace_mods = false;
- } else {
- unregister_code(KC_SPC);
- }
- }
- return false;
- break;
- case ILIKEFROG:
- if (record->event.pressed) {
- switch (frogchar)
- {
- case 0:
- SEND_STRING("I");
- break;
- case 1:
- SEND_STRING(" ");
- break;
- case 2:
- SEND_STRING("L");
- break;
- case 3:
- SEND_STRING("i");
- break;
- case 4:
- SEND_STRING("k");
- break;
- case 5:
- SEND_STRING("e");
- break;
- case 6:
- SEND_STRING(" ");
- break;
- case 7:
- SEND_STRING("F");
- break;
- case 8:
- SEND_STRING("r");
- break;
- case 9:
- SEND_STRING("o");
- break;
- case 10:
- SEND_STRING("g");
- break;
- case 11:
- SEND_STRING(" ");
- break;
- }
- frogchar = (frogchar + 1) % 12;
- }
- break;
- }
- return true;
-
-}
-
-
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- // Volume control
- if (clockwise) {
- tap_code(KC_VOLD);
- } else {
- tap_code(KC_VOLU);
- }
- return true;
-}
-#endif
diff --git a/keyboards/orthocode/keymaps/via/keymap.c b/keyboards/orthocode/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0030bbb00d
--- /dev/null
+++ b/keyboards/orthocode/keymaps/via/keymap.c
@@ -0,0 +1,92 @@
+/* Copyright 2020 Jrodna
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ /* Rotary */
+ KC__MUTE,
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ RGB_TOG, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_HOME,
+ /* tab Q W E R T Y U I O P \ delete end */
+ RGB_MOD, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END,
+ /* caps A S D F G H J K L ; ' enter */
+ RGB_RMOD, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ /* shift Z X C V B N M , . / up */
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_RSFT, KC_ENT, KC_BSPC, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT(
+ /* Rotary */
+ TG(2),
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ /* tab Q W E R T Y U I O P \ delete end */
+ RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS, KC_TRNS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter */
+ RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* shift Z X C V B N M , . / up */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, LSFT(KC_EQL), LSFT(KC_9), LSFT(KC_0), KC_TRNS, KC_VOLU,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right*/
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS
+ ),
+ [2] = LAYOUT(
+ /* Rotary */
+ KC_TRNS,
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* tab Q W E R T Y U I O P \ delete end */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* shift Z X C V B N M , . / up */
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+
+ ),
+ [3] = LAYOUT(
+ /* Rotary */
+ KC_TRNS,
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* tab Q W E R T Y U I O P \ delete end */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* shift Z X C V B N M , . / up */
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+
+ ),
+ [4] = LAYOUT(
+ /* Rotary */
+ KC_TRNS,
+ /* esc 1 2 3 4 5 6 7 8 9 0 - = home */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* tab Q W E R T Y U I O P \ delete end */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* caps A S D F G H J K L ; ' enter */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* shift Z X C V B N M , . / up */
+ KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ /* ctrl win alt fn th1 th2 th3 th4 fn alt ctrl left down right */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+
+ )
+};
diff --git a/keyboards/orthocode/keymaps/via/rules.mk b/keyboards/orthocode/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/orthocode/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/orthocode/orthocode.c b/keyboards/orthocode/orthocode.c
index 8de13e2abe..8ddd32c396 100644
--- a/keyboards/orthocode/orthocode.c
+++ b/keyboards/orthocode/orthocode.c
@@ -13,4 +13,47 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "orthocode.h" \ No newline at end of file
+#include "orthocode.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+ static bool shiftspace_mods = false;
+ switch (keycode) {
+ case SHIFTSPACE:
+ if (record->event.pressed) {
+ if(get_mods() & MOD_BIT(KC_RSFT)) {
+ register_code(KC_MINS);
+ shiftspace_mods = true;
+ }
+ else {
+ register_code(KC_SPC);
+ }
+ } else {
+ if (shiftspace_mods) {
+ unregister_code(KC_MINS);
+ shiftspace_mods = false;
+ } else {
+ unregister_code(KC_SPC);
+ }
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/orthocode/orthocode.h b/keyboards/orthocode/orthocode.h
index 3abcd48c06..57f122a471 100644
--- a/keyboards/orthocode/orthocode.h
+++ b/keyboards/orthocode/orthocode.h
@@ -17,6 +17,7 @@
#pragma once
#define _x_ KC_NO
+#define KC_SHSP SHIFTSPACE
#include "quantum.h"
@@ -34,3 +35,16 @@
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, _x_, K3D, _x_ }, \
{ _x_, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E} \
}
+
+enum custom_keycodes {
+#ifdef VIA_ENABLE
+ SHIFTSPACE = USER00,
+#else
+ SHIFTSPACE = SAFE_RANGE,
+#endif
+#ifdef VIA_ENABLE
+ QWERTY = SAFE_RANGE
+#else
+ QWERTY
+#endif
+};
diff --git a/keyboards/orthocode/rules.mk b/keyboards/orthocode/rules.mk
index d3553f5612..66c72d6022 100644
--- a/keyboards/orthocode/rules.mk
+++ b/keyboards/orthocode/rules.mk
@@ -15,11 +15,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes # Enables the use of one or more encoders
+LTO_ENABLE = yes
diff --git a/keyboards/orthodox/keymaps/default/keymap.c b/keyboards/orthodox/keymaps/default/keymap.c
index acbf89ff2c..7bda5a6f7e 100644
--- a/keyboards/orthodox/keymaps/default/keymap.c
+++ b/keyboards/orthodox/keymaps/default/keymap.c
@@ -44,40 +44,40 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_BSPC, KC_ENT, KC_RALT, LS__SPC, RAISE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI \
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_BSPC, KC_ENT, KC_RALT, LS__SPC, RAISE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI
),
- [_COLEMAK] = LAYOUT(\
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH, KC_LGUI \
+ [_COLEMAK] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH, KC_LGUI
),
- [_DVORAK] = LAYOUT(\
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \
- KC_LCTL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI \
+ [_DVORAK] = LAYOUT(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_UP, KC_DOWN, KC_LEFT, KC_RIGHT, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ KC_LCTL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI
),
- [_LOWER] = LAYOUT( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCTL, _______, _______, KC_RCTL, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, _______, _______, KC_F12, KC_HOME, KC_COMM, KC_DOT, KC_END, _______ \
+ [_LOWER] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCTL, _______, _______, KC_RCTL, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, _______, _______, KC_F12, KC_HOME, KC_COMM, KC_DOT, KC_END, _______
),
- [_RAISE] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, _______, _______, KC_F12, KC_PGUP, KC_COMM, KC_DOT, KC_PGDN, _______ \
+ [_RAISE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, _______, _______, KC_F12, KC_PGUP, KC_COMM, KC_DOT, KC_PGDN, _______
),
- [_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY , COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \
+ [_ADJUST] = LAYOUT(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY , COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY
)
diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk
index 6f72712d84..9637d3b395 100644
--- a/keyboards/orthodox/keymaps/drashna/rules.mk
+++ b/keyboards/orthodox/keymaps/drashna/rules.mk
@@ -11,6 +11,6 @@ SPACE_CADET_ENABLE = no
INDICATOR_LIGHTS = yes
RGBLIGHT_STARTUP_ANIMATION = yes
-
+CUSTOM_UNICODE_ENABLE = no
BOOTLOADER = qmk-dfu
diff --git a/keyboards/orthodox/rules.mk b/keyboards/orthodox/rules.mk
index 7a8c4f9488..c78ec0cedf 100644
--- a/keyboards/orthodox/rules.mk
+++ b/keyboards/orthodox/rules.mk
@@ -2,20 +2,17 @@
MCU = atmega32u4
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/otaku_split/rev0/keymaps/default/config.h b/keyboards/otaku_split/rev0/keymaps/default/config.h
deleted file mode 100644
index 25cddc6bb7..0000000000
--- a/keyboards/otaku_split/rev0/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/otaku_split/rev0/keymaps/default/keymap.c b/keyboards/otaku_split/rev0/keymaps/default/keymap.c
index 5bf742196c..4c74afb363 100644
--- a/keyboards/otaku_split/rev0/keymaps/default/keymap.c
+++ b/keyboards/otaku_split/rev0/keymaps/default/keymap.c
@@ -22,7 +22,7 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,\
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_ENT,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,KC_NUHS,
KC_LSHIFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH,KC_RO,KC_RSHIFT,
diff --git a/keyboards/otaku_split/rev0/keymaps/sample/config.h b/keyboards/otaku_split/rev0/keymaps/sample/config.h
deleted file mode 100644
index 25cddc6bb7..0000000000
--- a/keyboards/otaku_split/rev0/keymaps/sample/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/otaku_split/rev0/keymaps/sample/keymap.c b/keyboards/otaku_split/rev0/keymaps/sample/keymap.c
index a309db6ff3..6126d780fa 100644
--- a/keyboards/otaku_split/rev0/keymaps/sample/keymap.c
+++ b/keyboards/otaku_split/rev0/keymaps/sample/keymap.c
@@ -35,12 +35,12 @@ enum custom_keycodes {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_wrapper(\
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,\
- KC_TAB, _________________QWERTY_L1_________________,KC_Y, _________________QWERTY_R1_________________,KC_LBRC,KC_RBRC,KC_ENT,\
- KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,KC_QUOT,KC_NUHS,\
- KC_LSHIFT,_________________QWERTY_L3_________________, KC_B,_________________QWERTY_R3_________________,KC_RO,KC_RSHIFT,\
- KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TAB,KC_SPC, KC_ENT,KC_BSPC,KC_HENK,KC_KANA,KC_RALT,KC_RGUI,KC_APP,KC_RCTRL\
+ [0] = LAYOUT_wrapper(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________,KC_Y, _________________QWERTY_R1_________________,KC_LBRC,KC_RBRC,KC_ENT,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,KC_QUOT,KC_NUHS,
+ KC_LSHIFT,_________________QWERTY_L3_________________, KC_B,_________________QWERTY_R3_________________,KC_RO,KC_RSHIFT,
+ KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TAB,KC_SPC, KC_ENT,KC_BSPC,KC_HENK,KC_KANA,KC_RALT,KC_RGUI,KC_APP,KC_RCTRL
),
};
diff --git a/keyboards/otaku_split/rev0/rules.mk b/keyboards/otaku_split/rev0/rules.mk
index bd1b93c5c8..2406b0dadf 100644
--- a/keyboards/otaku_split/rev0/rules.mk
+++ b/keyboards/otaku_split/rev0/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/otaku_split/rev1/keymaps/default/config.h b/keyboards/otaku_split/rev1/keymaps/default/config.h
deleted file mode 100644
index 25cddc6bb7..0000000000
--- a/keyboards/otaku_split/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/otaku_split/rev1/keymaps/sample/config.h b/keyboards/otaku_split/rev1/keymaps/sample/config.h
deleted file mode 100644
index 25cddc6bb7..0000000000
--- a/keyboards/otaku_split/rev1/keymaps/sample/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 takashiski
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/otaku_split/rev1/keymaps/sample/keymap.c b/keyboards/otaku_split/rev1/keymaps/sample/keymap.c
index b73c4fe64d..148c80f274 100644
--- a/keyboards/otaku_split/rev1/keymaps/sample/keymap.c
+++ b/keyboards/otaku_split/rev1/keymaps/sample/keymap.c
@@ -41,12 +41,12 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT_wrapper(\
- KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,\
- KC_TAB, _________________QWERTY_L1_________________,KC_Y, _________________QWERTY_R1_________________,KC_LBRC,KC_RBRC,KC_ENT,\
- KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,KC_QUOT,KC_NUHS,\
- KC_LSHIFT,_________________QWERTY_L3_________________, KC_B,_________________QWERTY_R3_________________,KC_RO,KC_RSHIFT,\
- KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TAB,KC_SPC,KC_SPC, KC_SPC,KC_ENT,KC_BSPC,KC_HENK,KC_KANA,KC_RALT,KC_APP,KC_RCTRL\
+ [BASE] = LAYOUT_wrapper(
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS ,KC_EQL,KC_JYEN,KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________,KC_Y, _________________QWERTY_R1_________________,KC_LBRC,KC_RBRC,KC_ENT,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,KC_QUOT,KC_NUHS,
+ KC_LSHIFT,_________________QWERTY_L3_________________, KC_B,_________________QWERTY_R3_________________,KC_RO,KC_RSHIFT,
+ KC_LCTRL, KC_LGUI,KC_LALT,KC_MHEN,KC_TAB,KC_SPC,KC_SPC, KC_SPC,KC_ENT,KC_BSPC,KC_HENK,KC_KANA,KC_RALT,KC_APP,KC_RCTRL
)
};
diff --git a/keyboards/otaku_split/rev1/rules.mk b/keyboards/otaku_split/rev1/rules.mk
index bd1b93c5c8..2406b0dadf 100644
--- a/keyboards/otaku_split/rev1/rules.mk
+++ b/keyboards/otaku_split/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/owl8/rules.mk b/keyboards/owl8/rules.mk
index 21c0c67b11..284ea23e78 100644
--- a/keyboards/owl8/rules.mk
+++ b/keyboards/owl8/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/owlab/jelly_epoch/hotswap/rules.mk b/keyboards/owlab/jelly_epoch/hotswap/rules.mk
index 728c7b84c5..b108e80f24 100644
--- a/keyboards/owlab/jelly_epoch/hotswap/rules.mk
+++ b/keyboards/owlab/jelly_epoch/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/owlab/jelly_epoch/soldered/rules.mk b/keyboards/owlab/jelly_epoch/soldered/rules.mk
index 728c7b84c5..b108e80f24 100644
--- a/keyboards/owlab/jelly_epoch/soldered/rules.mk
+++ b/keyboards/owlab/jelly_epoch/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/owlab/spring/config.h b/keyboards/owlab/spring/config.h
new file mode 100644
index 0000000000..d4eef1e021
--- /dev/null
+++ b/keyboards/owlab/spring/config.h
@@ -0,0 +1,68 @@
+/*
+Copyright 2021 OwLab
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4F53 //0x4F53 for OwLab
+#define PRODUCT_ID 0x5350 //0x514B SP for Spring
+#define DEVICE_VER 0x0001
+#define MANUFACTURER OwLab
+#define PRODUCT Spring
+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { B0, B7, D0, D1, D2 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F4, F7, F6, F5, F1, F0 }
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* NKRO */
+#define FORCE_NKRO
+
+/* RGB Strip*/
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+# define RGBLED_NUM 8
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 10
+# define RGBLIGHT_LIMIT_VAL 255
+# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL
+# define RGBLIGHT_DEFAULT_VAL RGBLIGHT_LIMIT_VAL/2
+#endif
+
+
diff --git a/keyboards/owlab/spring/info.json b/keyboards/owlab/spring/info.json
new file mode 100644
index 0000000000..bbeee6628b
--- /dev/null
+++ b/keyboards/owlab/spring/info.json
@@ -0,0 +1,78 @@
+{
+ "keyboard_name": "Spring",
+ "url": "",
+ "maintainer": "OwLab",
+ "layouts": {
+ "LAYOUT_spring": {
+ "layout": [
+ {"x":0.5, "y":0},
+ {"x":1.75, "y":0},
+ {"x":2.75, "y":0},
+ {"x":3.75, "y":0},
+ {"x":4.75, "y":0},
+ {"x":5.75, "y":0},
+ {"x":6.75, "y":0},
+ {"x":7.75, "y":0},
+ {"x":8.75, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":13.75, "y":0},
+ {"x":14.75, "y":0, "w":2},
+ {"x":0.25, "y":1},
+ {"x":1.5, "y":1, "w":1.5},
+ {"x":3, "y":1},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1, "w":1.5},
+ {"x":0, "y":2},
+ {"x":1.25, "y":2, "w":1.75},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":8, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+ {"x":13, "y":2},
+ {"x":14, "y":2, "w":2.25},
+ {"x":1, "y":3, "w":2.25},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3},
+ {"x":13.25, "y":3},
+ {"x":14.25, "y":3},
+ {"x":15.25, "y":3, "w":1.75},
+ {"x":1, "y":4, "w":1.25},
+ {"x":2.25, "y":4, "w":1.25},
+ {"x":4.75, "y":4, "w":1.25},
+ {"x":6, "y":4, "w":2.25},
+ {"x":8.25, "y":4, "w":2.75},
+ {"x":11, "y":4, "w":1.25},
+ {"x":13.25, "y":4},
+ {"x":14.25, "y":4},
+ {"x":15.25, "y":4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/owlab/spring/keymaps/default/keymap.c b/keyboards/owlab/spring/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e48ae32418
--- /dev/null
+++ b/keyboards/owlab/spring/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 qwertykeys
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_spring(
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_spring(
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+}; \ No newline at end of file
diff --git a/keyboards/owlab/spring/keymaps/via/keymap.c b/keyboards/owlab/spring/keymaps/via/keymap.c
new file mode 100644
index 0000000000..06779ed4ed
--- /dev/null
+++ b/keyboards/owlab/spring/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 qwertykeys
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_spring(
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_spring(
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_spring(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_spring(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+}; \ No newline at end of file
diff --git a/keyboards/owlab/spring/keymaps/via/rules.mk b/keyboards/owlab/spring/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/owlab/spring/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/owlab/spring/readme.md b/keyboards/owlab/spring/readme.md
new file mode 100644
index 0000000000..d4ec27b910
--- /dev/null
+++ b/keyboards/owlab/spring/readme.md
@@ -0,0 +1,21 @@
+# Spring - PCB
+
+![Spring](https://i.imgur.com/Ro1LhHh.png)
+
+An Alice style board with arrowkeys made by OwLab, based on the Fate Arisu layout.
+
+* Keyboard Maintainer: [OwLab](https://github.com/owlab-git)
+* Hardware Supported: Spring PCB
+* Hardware Availability:
+
+Make example for this keyboard (after setting up your build environment):
+
+ make owlab/spring:default
+
+Flashing example for this keyboard:
+
+ make owlab/spring:default:flash
+
+**Bootloader:** Press the physical reset button on the bottom side of the PCB (labeled SW1) or hold down ESC while plugging in the board.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/owlab/spring/rules.mk b/keyboards/owlab/spring/rules.mk
new file mode 100644
index 0000000000..5f9bfe1f0c
--- /dev/null
+++ b/keyboards/owlab/spring/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/owlab/spring/spring.c b/keyboards/owlab/spring/spring.c
new file mode 100644
index 0000000000..60982c1517
--- /dev/null
+++ b/keyboards/owlab/spring/spring.c
@@ -0,0 +1,125 @@
+/*
+Copyright 2021 OwLab
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "spring.h"
+
+enum caps_modes{
+ CAPS_MODE_UPPER = 0, //UPPER CASE
+ CAPS_MODE_LOWER //LOWER CASE
+};
+
+uint8_t caps_mode_index;
+rgblight_config_t pre_rgb;
+uint8_t dir_hue, dir_sat;
+
+bool caps_in = false;
+uint32_t caps_timer;
+
+
+
+
+void switch_caps_mode(uint8_t mode){
+ switch(mode){
+ case CAPS_MODE_UPPER:
+ dir_hue = 0;
+ dir_sat = 240;
+ break;
+
+ case CAPS_MODE_LOWER:
+ dir_hue = 88;
+ dir_sat = 255;
+ break;
+
+ default:
+ break;
+ }
+ rgblight_sethsv_noeeprom(dir_hue,dir_sat,pre_rgb.val);
+
+}
+
+
+void init_caps_mode(uint8_t mode){
+ pre_rgb.mode = rgblight_get_mode();
+ pre_rgb.hue = rgblight_get_hue();
+ pre_rgb.sat = rgblight_get_sat();
+ pre_rgb.val = rgblight_get_val();
+ caps_in = true;
+
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ switch_caps_mode(mode);
+
+}
+
+
+void set_caps_mode(uint8_t mode){
+ if(caps_in == false){
+ init_caps_mode(mode);
+ }else{
+ switch_caps_mode(mode);
+ }
+ caps_timer = timer_read32();
+
+
+}
+
+
+void matrix_scan_kb(void) {
+ if(caps_in){
+ if(timer_elapsed32(caps_timer) > 3000){
+ rgblight_sethsv(pre_rgb.hue, pre_rgb.sat, pre_rgb.val);
+ rgblight_mode(pre_rgb.mode);
+ caps_in = false;
+ }
+ }
+
+ matrix_scan_user();
+}
+
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ case RGB_TOG:
+ case RGB_MOD:
+ case RGB_RMOD:
+ case RGB_HUI:
+ case RGB_HUD:
+ case RGB_SAI:
+ case RGB_SAD:
+ case RGB_VAI:
+ case RGB_VAD:
+ if(caps_in){
+ return false;
+ }
+ break;
+
+
+ case KC_CAPS:
+ if(IS_LED_ON(host_keyboard_leds(), USB_LED_CAPS_LOCK)){
+ caps_mode_index = CAPS_MODE_LOWER;
+ } else{
+ caps_mode_index = CAPS_MODE_UPPER;
+ }
+ set_caps_mode(caps_mode_index);
+ break;
+
+
+ default:
+ break;
+ }
+ }
+ return process_record_user(keycode, record);
+}
diff --git a/keyboards/owlab/spring/spring.h b/keyboards/owlab/spring/spring.h
new file mode 100644
index 0000000000..195d8cd4c8
--- /dev/null
+++ b/keyboards/owlab/spring/spring.h
@@ -0,0 +1,33 @@
+/*
+Copyright 2021 OwLab
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+#include "quantum.h"
+
+#define LAYOUT_spring( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K404, K405, K409, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO }, \
+ { K400, K401, K402, KC_NO, K404, K405, KC_NO, KC_NO, KC_NO, K409, KC_NO, K411, K412, K413, KC_NO } \
+}
diff --git a/keyboards/owlab/suit80/ansi/rules.mk b/keyboards/owlab/suit80/ansi/rules.mk
index 001898bf4c..f9417ae2bf 100644
--- a/keyboards/owlab/suit80/ansi/rules.mk
+++ b/keyboards/owlab/suit80/ansi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/owlab/suit80/iso/rules.mk b/keyboards/owlab/suit80/iso/rules.mk
index 001898bf4c..f9417ae2bf 100644
--- a/keyboards/owlab/suit80/iso/rules.mk
+++ b/keyboards/owlab/suit80/iso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/owlab/voice65/hotswap/rules.mk b/keyboards/owlab/voice65/hotswap/rules.mk
index c7217e605a..b9bb07b733 100644
--- a/keyboards/owlab/voice65/hotswap/rules.mk
+++ b/keyboards/owlab/voice65/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/owlab/voice65/soldered/rules.mk b/keyboards/owlab/voice65/soldered/rules.mk
index e508a48ec8..3b7ff7e89a 100644
--- a/keyboards/owlab/voice65/soldered/rules.mk
+++ b/keyboards/owlab/voice65/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p18/rules.mk b/keyboards/pabile/p18/rules.mk
index bb36b4ebba..9c9341f36a 100644
--- a/keyboards/pabile/p18/rules.mk
+++ b/keyboards/pabile/p18/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p20/ver1/rules.mk b/keyboards/pabile/p20/ver1/rules.mk
index f45abfc6e2..2fc8c8885b 100644
--- a/keyboards/pabile/p20/ver1/rules.mk
+++ b/keyboards/pabile/p20/ver1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p20/ver2/rules.mk b/keyboards/pabile/p20/ver2/rules.mk
index 20f10337fd..fc387fabe6 100644
--- a/keyboards/pabile/p20/ver2/rules.mk
+++ b/keyboards/pabile/p20/ver2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p40/rules.mk b/keyboards/pabile/p40/rules.mk
index 284a569d89..19525f4b37 100644
--- a/keyboards/pabile/p40/rules.mk
+++ b/keyboards/pabile/p40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p40_ortho/rules.mk b/keyboards/pabile/p40_ortho/rules.mk
index 73b556b6ee..7293fc306d 100644
--- a/keyboards/pabile/p40_ortho/rules.mk
+++ b/keyboards/pabile/p40_ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pabile/p42/rules.mk b/keyboards/pabile/p42/rules.mk
index 73b556b6ee..7293fc306d 100644
--- a/keyboards/pabile/p42/rules.mk
+++ b/keyboards/pabile/p42/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/packrat/rules.mk b/keyboards/packrat/rules.mk
index d43cd106b6..fc0608c07f 100644
--- a/keyboards/packrat/rules.mk
+++ b/keyboards/packrat/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/palette1202/rules.mk b/keyboards/palette1202/rules.mk
index c22854a29e..217ed732ba 100644
--- a/keyboards/palette1202/rules.mk
+++ b/keyboards/palette1202/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/panc40/rules.mk b/keyboards/panc40/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/panc40/rules.mk
+++ b/keyboards/panc40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/panc60/keymaps/default/config.h b/keyboards/panc60/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/panc60/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/panc60/rules.mk b/keyboards/panc60/rules.mk
index 1c8a2d105d..691aa35917 100644
--- a/keyboards/panc60/rules.mk
+++ b/keyboards/panc60/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/pandora/rules.mk b/keyboards/pandora/rules.mk
index 6f407e3cbb..6ee43455f1 100644
--- a/keyboards/pandora/rules.mk
+++ b/keyboards/pandora/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/paprikman/albacore/albacore.c b/keyboards/paprikman/albacore/albacore.c
new file mode 100644
index 0000000000..d90adce2bb
--- /dev/null
+++ b/keyboards/paprikman/albacore/albacore.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 paprikman
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "albacore.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3 },
+ { 7, 6, 5, 4 }
+}, {
+ { 56, 16 }, { 112, 16 }, { 168, 16 }, { 224, 16 },
+ { 56, 24 }, { 112, 24 }, { 168, 24 }, { 224, 24 }
+}, {
+ 1, 1, 1, 1,
+ 1, 1, 1, 1
+} };
+#endif
diff --git a/keyboards/paprikman/albacore/albacore.h b/keyboards/paprikman/albacore/albacore.h
new file mode 100644
index 0000000000..b725eba8b8
--- /dev/null
+++ b/keyboards/paprikman/albacore/albacore.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 paprikman
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#define ___ KC_NO
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K01, K02, K03, \
+ K10, K11, K12, K13 \
+) { \
+ { ___, K01, K02, K03 }, \
+ { K10, K11, K12, K13 } \
+}
diff --git a/keyboards/paprikman/albacore/config.h b/keyboards/paprikman/albacore/config.h
new file mode 100644
index 0000000000..3fa81b160f
--- /dev/null
+++ b/keyboards/paprikman/albacore/config.h
@@ -0,0 +1,80 @@
+/*
+Copyright 2021 paprikman
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x736D
+#define PRODUCT_ID 0x000A
+#define DEVICE_VER 0x0001
+#define MANUFACTURER paprikman
+#define PRODUCT Albacore
+
+/* key matrix size */
+#define MATRIX_ROWS 2
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D5, C7 }
+#define MATRIX_COL_PINS { C6, B6, B5, B4 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN B3
+
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL 8
+ #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 220
+ #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #define DISABLE_RGB_MATRIX_BAND_SAT
+ #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+ #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+ #define DISABLE_RGB_MATRIX_SPLASH
+ #define DISABLE_RGB_MATRIX_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_SPLASH
+ #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
+ #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Set lower left modifier key as a bootmagic key */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/paprikman/albacore/info.json b/keyboards/paprikman/albacore/info.json
new file mode 100644
index 0000000000..494f228a32
--- /dev/null
+++ b/keyboards/paprikman/albacore/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "Albacore",
+ "url": "https://github.com/paprikman/qmk_firmware/tree/master/keyboards/paprikman/albacore",
+ "maintainer": "paprikman",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0.75, "y": 0},
+ {"x": 1.75, "y": 0},
+ {"x": 2.75, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1}
+ ]
+ }
+ }
+}
diff --git a/keyboards/paprikman/albacore/keymaps/default/keymap.c b/keyboards/paprikman/albacore/keymaps/default/keymap.c
new file mode 100644
index 0000000000..022250caf1
--- /dev/null
+++ b/keyboards/paprikman/albacore/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2021 paprikman
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_VOLD, KC_MUTE, KC_VOLU,
+ MO(1), KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_VAI,
+ _______, RGB_SPI, RGB_SPD, RGB_VAD
+ ),
+};
diff --git a/keyboards/paprikman/albacore/keymaps/pulp/keymap.c b/keyboards/paprikman/albacore/keymaps/pulp/keymap.c
new file mode 100644
index 0000000000..006b396adf
--- /dev/null
+++ b/keyboards/paprikman/albacore/keymaps/pulp/keymap.c
@@ -0,0 +1,75 @@
+/* Copyright 2021 paprikman
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+uint16_t layer_timer;
+
+enum layer_keycodes {
+ TG_LAYER = USER00
+};
+
+uint8_t get_hold_layer(void) {
+ switch(get_highest_layer(layer_state)) {
+ case 0:
+ case 1:
+ return 1;
+ case 2:
+ case 3:
+ return 3;
+ default:
+ return 1;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case TG_LAYER:
+ if (record->event.pressed) {
+ layer_timer = timer_read();
+ layer_on(get_hold_layer());
+ } else {
+ layer_off(get_hold_layer());
+
+ if (timer_elapsed(layer_timer) < TAPPING_TERM) {
+ layer_invert(2);
+ }
+ }
+
+ return false;
+ break;
+ }
+
+ return true;
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_VOLD, KC_MUTE, KC_VOLU,
+ TG_LAYER, KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_VAI,
+ KC_NO, RGB_SPI, RGB_SPD, RGB_VAD
+ ),
+ [2] = LAYOUT(
+ KC_F1, KC_F2, KC_F3,
+ TG_LAYER, KC_F4, KC_F5, KC_F6
+ ),
+ [3] = LAYOUT(
+ LCTL(KC_PSCR), KC_NLCK, KC_SLCK,
+ KC_NO, _______, _______, _______
+ ),
+};
diff --git a/keyboards/paprikman/albacore/keymaps/pulp/rules.mk b/keyboards/paprikman/albacore/keymaps/pulp/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/paprikman/albacore/keymaps/pulp/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/paprikman/albacore/keymaps/via/keymap.c b/keyboards/paprikman/albacore/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e945b4c3c4
--- /dev/null
+++ b/keyboards/paprikman/albacore/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 paprikman
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_VOLD, KC_MUTE, KC_VOLU,
+ MO(1), KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+ [1] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_VAI,
+ _______, RGB_SPI, RGB_SPD, RGB_VAD
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/paprikman/albacore/keymaps/via/rules.mk b/keyboards/paprikman/albacore/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/paprikman/albacore/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/paprikman/albacore/readme.md b/keyboards/paprikman/albacore/readme.md
new file mode 100644
index 0000000000..57c113d42b
--- /dev/null
+++ b/keyboards/paprikman/albacore/readme.md
@@ -0,0 +1,26 @@
+# Albacore
+
+A small 7-key macropad featuring hotswap and per-key RGB
+
+![Albacore](https://i.imgur.com/BTPHnuQh.jpg)
+
+* Keyboard Maintainer: paprikman
+* Hardware Supported: Albacore hotswap pcb
+* Hardware Availability: Private group buy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make paprikman/albacore:default
+
+Flashing example for this keyboard:
+
+ make paprikman/albacore:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+There are several ways to enter the bootloader:
+* **Using keycode**: Press the `RESET` key (if mapped)
+* **Bootmagic reset**: Hold the left bottom key (default mod key) and plug the usb cable
+* **Physical reset**: In the top right corner of the bottom part of the pcb you will find two pads. Shorten them with tweezers and plug the usb cable, then release. It is also possible to shorten these pads while the macropad is already connected (shorten and hold for a couple of seconds, then release).
diff --git a/keyboards/paprikman/albacore/rules.mk b/keyboards/paprikman/albacore/rules.mk
new file mode 100644
index 0000000000..baf1b10f28
--- /dev/null
+++ b/keyboards/paprikman/albacore/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/pdxkbc/keymaps/default/config.h b/keyboards/pdxkbc/keymaps/default/config.h
deleted file mode 100644
index 355f2db527..0000000000
--- a/keyboards/pdxkbc/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Franklin Harding
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/pdxkbc/rules.mk b/keyboards/pdxkbc/rules.mk
index 71e5c41e74..a2a5932cdc 100644
--- a/keyboards/pdxkbc/rules.mk
+++ b/keyboards/pdxkbc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pearl/rules.mk b/keyboards/pearl/rules.mk
index 2dba9c3eb9..9a2e1da0de 100644
--- a/keyboards/pearl/rules.mk
+++ b/keyboards/pearl/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/pearlboards/atlas/atlas.c b/keyboards/pearlboards/atlas/atlas.c
new file mode 100644
index 0000000000..ff8577bde1
--- /dev/null
+++ b/keyboards/pearlboards/atlas/atlas.c
@@ -0,0 +1,31 @@
+/* Copyright 2020 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "atlas.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/pearlboards/atlas/atlas.h b/keyboards/pearlboards/atlas/atlas.h
new file mode 100644
index 0000000000..93ecc82f7c
--- /dev/null
+++ b/keyboards/pearlboards/atlas/atlas.h
@@ -0,0 +1,38 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This layout covers all of the possible build layouts. Also, any
+ * built layouts will work without having to change anything.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1f, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2f, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3f, \
+ k40, k41, k42, k47, k4b, k4c, k4d, k4f \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, KC_NO, k1f}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, k2f}, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, KC_NO, k3f}, \
+ { k40, k41, k42, KC_NO, KC_NO, KC_NO, KC_NO, k47, KC_NO, KC_NO, KC_NO, k4b, k4c, k4d, KC_NO, k4f } \
+}
diff --git a/keyboards/pearlboards/atlas/config.h b/keyboards/pearlboards/atlas/config.h
new file mode 100644
index 0000000000..e35c7d0a90
--- /dev/null
+++ b/keyboards/pearlboards/atlas/config.h
@@ -0,0 +1,100 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6963
+#define PRODUCT_ID 0x6964
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Koobaczech
+#define PRODUCT Atlas
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D6, E1, C0, C4, E3 }
+#define MATRIX_COL_PINS { D5, D4, C1, C2, C3, C5, C7, A7, A6, A5, A4, A3, A2, A1, A0, F7 }
+#define UNUSED_PINS { E4, E5, E6, E7, F0, F1, F2, F3, B0, B4, B5, B7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Encoder Function */
+#define ENCODERS_PAD_A { E0 }
+#define ENCODERS_PAD_B { D7 }
+//#define ENCODER_DIRECTION_FLIP
+#define ENCODER_RESOLUTION 1
+
+/* Audio Function */
+#define AUDIO_CLICKY
+#define AUDIO_PIN C6
+
+/* Haptic feedback */
+#define FB_ERM_LRA 0
+#define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
+#define FB_LOOPGAIN 3 // For Low:0, Medium:1, High:2, Very High:3
+/* Motor settings */
+#define RATED_VOLTAGE 3
+#define V_PEAK 5
+
+/*== all animations enabled ==*/
+/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGB_DI_PIN B6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 8
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Indicator Led's*/
+#define LED_CAPS_LOCK_PIN F4
+#define LED_NUM_LOCK_PIN F5
+#define LED_SCROLL_LOCK_PIN F6
+#define LED_PIN_ON_STATE 0
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/atlas/info.json b/keyboards/pearlboards/atlas/info.json
new file mode 100644
index 0000000000..c3a924d0e4
--- /dev/null
+++ b/keyboards/pearlboards/atlas/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "Atlas",
+ "maintainer": "Koobaczech",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k1d", "x":13.5, "y":1, "w":1.5},
+ {"label":"k1f", "x":15, "y":1},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k2c", "x":12.75, "y":2},
+ {"label":"k2d", "x":13.75, "y":2, "w":1.25},
+ {"label":"k2f", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":1.25},
+ {"label":"k31", "x":1.25, "y":3},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3f", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.5},
+ {"label":"k41", "x":1.5, "y":4},
+ {"label":"k42", "x":2.5, "y":4, "w":1.5},
+ {"label":"k47", "x":4, "y":4, "w":7},
+ {"label":"k4b", "x":11, "y":4, "w":1.5},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4f", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pearlboards/atlas/keymaps/default/keymap.c b/keyboards/pearlboards/atlas/keymaps/default/keymap.c
new file mode 100644
index 0000000000..eac060cb7c
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_COPY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PSTE,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_FIND,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP , MO(1),
+ KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/pearlboards/atlas/keymaps/via/keymap.c b/keyboards/pearlboards/atlas/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1d1b5ccffc
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_MEDIA_PLAY_PAUSE,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP , MO(1),
+ KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/pearlboards/atlas/keymaps/via/rules.mk b/keyboards/pearlboards/atlas/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/pearlboards/atlas/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/atlas/readme.md b/keyboards/pearlboards/atlas/readme.md
new file mode 100644
index 0000000000..ac02df971b
--- /dev/null
+++ b/keyboards/pearlboards/atlas/readme.md
@@ -0,0 +1,22 @@
+# Atlas
+
+![Atlas](https://i.imgur.com/jm6DyWAh.jpg)
+
+Atlas is a timeless Greek themed 65 percent keyboard. The construction uses 6061 alu, pvd coated brass/stainless steel and dyed polycarbonate. The finishes include e-coating, anodizing, micro arc anodization, metal polish and fine beadblasting. Layouts are limited to a few ANSI variations such as tsangan/wkl and ISO. The keyboard also has a usb-c daugtherboard, an integrated dual usb hub with an audio jack and dac, and a rotary encoder. The case has indicator lights and is gasket mounted. The pcb is designed by me in house and has some super cool tricks up its sleeve as well.
+
+* Keyboard Maintainer: Koobaczech
+* Hardware Supported: Koobaczech
+* Availability: https://pearlboards.net/products/atlas65
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pearlboards/atlas:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB labeled "RESET"
+* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/atlas/rules.mk b/keyboards/pearlboards/atlas/rules.mk
new file mode 100644
index 0000000000..b75d687546
--- /dev/null
+++ b/keyboards/pearlboards/atlas/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+ENCODER_ENABLE = yes
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+
+LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/pandora/config.h b/keyboards/pearlboards/pandora/config.h
index 2df4bcffc8..5a9a997be5 100644
--- a/keyboards/pearlboards/pandora/config.h
+++ b/keyboards/pearlboards/pandora/config.h
@@ -58,12 +58,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
#define RGB_DI_PIN B1
#ifdef RGB_DI_PIN
-# define RGBLIGHT_ANIMATIONS
-# define RGBLED_NUM 12
-# define RGBLIGHT_HUE_STEP 8
-# define RGBLIGHT_SAT_STEP 8
-# define RGBLIGHT_VAL_STEP 8
-# define RGBLIGHT_SLEEP
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/pearlboards/pandora/keymaps/default/keymap.c b/keyboards/pearlboards/pandora/keymaps/default/keymap.c
index 879ea04a1e..a0feb7ea32 100644
--- a/keyboards/pearlboards/pandora/keymaps/default/keymap.c
+++ b/keyboards/pearlboards/pandora/keymaps/default/keymap.c
@@ -43,42 +43,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_all(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
-
- [1] = LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_UP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT)
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
+
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT)
};
-
-// Encoder rotate function
-bool encoder_update_user(uint8_t index, bool clockwise) {
- /* First encoder */
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_AUDIO_VOL_UP);
- } else {
- tap_code(KC_AUDIO_VOL_DOWN);
- }
- }
- return true;
-}
-// Encoder click function
-bool dip_switch_update_user(uint8_t index, bool active) {
- switch (index) {
- /* First encoder */
- case 0:
- if (active) {
- tap_code(KC_MEDIA_PLAY_PAUSE);
- }
- break;
- }
- return true;
-}
diff --git a/keyboards/pearlboards/pandora/keymaps/via/keymap.c b/keyboards/pearlboards/pandora/keymaps/via/keymap.c
index 55bbff9676..aad4ddf290 100644
--- a/keyboards/pearlboards/pandora/keymaps/via/keymap.c
+++ b/keyboards/pearlboards/pandora/keymaps/via/keymap.c
@@ -43,56 +43,31 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_all(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
- [1] = LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_UP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGBWINGS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
- [2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
-
-// Encoder rotate function
-bool encoder_update_user(uint8_t index, bool clockwise) {
- /* First encoder */
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_AUDIO_VOL_UP);
- } else {
- tap_code(KC_AUDIO_VOL_DOWN);
- }
- }
- return true;
-}
-// Encoder click function
-bool dip_switch_update_user(uint8_t index, bool active) {
- switch (index) {
- /* First encoder */
- case 0:
- if (active) {
- tap_code(KC_MEDIA_PLAY_PAUSE);
- }
- break;
- }
- return true;
-}
diff --git a/keyboards/pearlboards/pandora/pandora.c b/keyboards/pearlboards/pandora/pandora.c
index 78368e9687..608ee00edf 100644
--- a/keyboards/pearlboards/pandora/pandora.c
+++ b/keyboards/pearlboards/pandora/pandora.c
@@ -15,3 +15,38 @@
*/
#include "pandora.h"
+
+// Encoder rotate function
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ /* First encoder */
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_AUDIO_VOL_UP);
+ } else {
+ tap_code(KC_AUDIO_VOL_DOWN);
+ }
+ }
+ return true;
+}
+#endif
+
+// Encoder click function
+#ifdef DIP_SWITCH_ENABLE
+bool dip_switch_update_kb(uint8_t index, bool active) {
+ if (!dip_switch_update_user(index, active)) { return false; }
+
+ switch (index) {
+ /* First encoder */
+ case 0:
+ if (active) {
+ tap_code(KC_MEDIA_PLAY_PAUSE);
+ }
+ break;
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/pearlboards/pandora/rules.mk b/keyboards/pearlboards/pandora/rules.mk
index df356c5abd..04aacf572b 100644
--- a/keyboards/pearlboards/pandora/rules.mk
+++ b/keyboards/pearlboards/pandora/rules.mk
@@ -12,14 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
DIP_SWITCH_ENABLE = yes
ENCODER_ENABLE = yes
-OLED_ENABLE = no # Future release
+
LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/pearl/config.h b/keyboards/pearlboards/pearl/config.h
new file mode 100644
index 0000000000..002c2a5f5f
--- /dev/null
+++ b/keyboards/pearlboards/pearl/config.h
@@ -0,0 +1,94 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6963
+#define PRODUCT_ID 0x6965
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Koobaczech
+#define PRODUCT Pearl
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 13
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D3, F7, F0, E6 }
+#define MATRIX_COL_PINS { D2, F1, F4, F5, F6, C7, B6, B5, B4, D7, D6, D4, D5 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Audio Function */
+#define AUDIO_CLICKY
+#define AUDIO_PIN C6
+
+/* Haptic feedback */
+#define FB_ERM_LRA 0
+#define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
+#define FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3
+/* Motor settings */
+#define RATED_VOLTAGE 3
+#define V_PEAK 5
+
+/*== all animations enabled ==*/
+/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGB_DI_PIN B3
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+# define RGBLED_NUM 10
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_SLEEP
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 4
+
+/* Indicator Led's*/
+#define LED_CAPS_LOCK_PIN B0
+#define LED_NUM_LOCK_PIN B1
+#define LED_SCROLL_LOCK_PIN B2
+#define LED_PIN_ON_STATE 0
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/pearl/info.json b/keyboards/pearlboards/pearl/info.json
new file mode 100644
index 0000000000..4a6619f394
--- /dev/null
+++ b/keyboards/pearlboards/pearl/info.json
@@ -0,0 +1,58 @@
+{
+ "keyboard_name": "Pearl",
+ "maintainer": "Koobaczech",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0A", "x":10, "y":0},
+ {"label":"k0B", "x":11, "y":0},
+ {"label":"k0C", "x":12, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1A", "x":10.5, "y":1},
+ {"label":"k1B", "x":11.5, "y":1, "w":1.5},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2A", "x":10.75, "y":2},
+ {"label":"k2B", "x":11.75, "y":2, "w":1.25},
+
+ {"label":"k30", "x":1.125, "y":3},
+ {"label":"k31", "x":2.125, "y":3, "w":1.25},
+ {"label":"k32", "x":3.38, "y":3, "w":1.25},
+ {"label":"k33", "x":4.625, "y":3, "w":2.25},
+ {"label":"k34", "x":6.875, "y":3, "w":2.75},
+ {"label":"k35", "x":9.625, "y":3, "w":1.25},
+ {"label":"k36", "x":10.875, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pearlboards/pearl/keymaps/default/keymap.c b/keyboards/pearlboards/pearl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..05af40adae
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT_all(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_BSPC, KC_APP, MO(1)),
+
+ LAYOUT_all(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG,
+ RGB_MOD, RGB_HUI, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/pearlboards/pearl/keymaps/via/keymap.c b/keyboards/pearlboards/pearl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..29e8fe1e89
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_CAPS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_BSPC, KC_APP, MO(1)),
+
+ [1] = LAYOUT_all(
+ RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, HPT_FBK, HPT_TOG, HPT_ON, CK_ON, CK_TOGG,
+ RGB_MOD, RGB_HUI, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/pearlboards/pearl/keymaps/via/rules.mk b/keyboards/pearlboards/pearl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/pearlboards/pearl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/pearl/pearl.c b/keyboards/pearlboards/pearl/pearl.c
new file mode 100644
index 0000000000..f1ccf3fd9a
--- /dev/null
+++ b/keyboards/pearlboards/pearl/pearl.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pearl.h"
diff --git a/keyboards/pearlboards/pearl/pearl.h b/keyboards/pearlboards/pearl/pearl.h
new file mode 100644
index 0000000000..d0a2fcb93f
--- /dev/null
+++ b/keyboards/pearlboards/pearl/pearl.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This layout covers all of the possible build layouts. Also, any
+ * built layouts will work without having to change anything.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36 \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, KC_NO}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, KC_NO}, \
+ { k30, k31, k32, k33, k34, k35, k36, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO} \
+}
diff --git a/keyboards/pearlboards/pearl/readme.md b/keyboards/pearlboards/pearl/readme.md
new file mode 100644
index 0000000000..7679b270b3
--- /dev/null
+++ b/keyboards/pearlboards/pearl/readme.md
@@ -0,0 +1,22 @@
+# Pearl
+
+![Pearl](https://i.imgur.com/xdEtT7uh.jpg)
+
+Pearl is a future-proof premium 40%. This is the second round of it, reworked for 2021. This firmware is for the latest QMK PCB's.
+
+* Keyboard Maintainer: Koobaczech
+* Hardware Supported: Pearl
+* Availability: https://pearlboards.net/products/pearl-40
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pearlboards/pearl:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the front left of the PCB labeled "RESET"
+* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/pearl/rules.mk b/keyboards/pearlboards/pearl/rules.mk
new file mode 100644
index 0000000000..3d9fec280e
--- /dev/null
+++ b/keyboards/pearlboards/pearl/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+
+LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/config.h b/keyboards/pearlboards/zeus/config.h
new file mode 100644
index 0000000000..7de94efcc2
--- /dev/null
+++ b/keyboards/pearlboards/zeus/config.h
@@ -0,0 +1,104 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6963
+#define PRODUCT_ID 0x6966
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Koobaczech
+#define PRODUCT Zeus
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 18
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F0, C1, E1, E0, D7, D6 }
+#define MATRIX_COL_PINS { F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, C7, C2, C0 }
+#define UNUSED_PINS { E3, E4, E5, B0, B4, B5, B6, B7, D4 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Encoder Function */
+#define ENCODERS_PAD_A { E7 }
+#define ENCODERS_PAD_B { E6 }
+//#define ENCODER_DIRECTION_FLIP
+#define ENCODER_RESOLUTION 1
+
+/* Audio Function */
+#define AUDIO_CLICKY
+#define AUDIO_PIN C6
+#ifdef AUDIO_ENABLE
+#define AUDIO_ENABLE_TONE_MULTIPLEXING
+#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
+#endif
+
+/* Haptic feedback */
+#define FB_ERM_LRA 0
+#define FB_BRAKEFACTOR 1 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7
+#define FB_LOOPGAIN 3 // For Low:0, Medium:1, High:2, Very High:3
+/* Motor settings */
+#define RATED_VOLTAGE 2
+#define V_PEAK 5
+
+/*== all animations enabled ==*/
+/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGB_DI_PIN D5
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Indicator Led's*/
+#define LED_CAPS_LOCK_PIN C5
+#define LED_NUM_LOCK_PIN C4
+#define LED_SCROLL_LOCK_PIN C3
+#define LED_PIN_ON_STATE 0
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/zeus/info.json b/keyboards/pearlboards/zeus/info.json
new file mode 100644
index 0000000000..1938a7ef6d
--- /dev/null
+++ b/keyboards/pearlboards/zeus/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "Zeus",
+ "maintainer": "Koobaczech",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"k4F", "x":3, "y":0},
+
+ {"label":"k00", "x":0, "y":1.5},
+ {"label":"k01", "x":2, "y":1.5},
+ {"label":"k02", "x":3, "y":1.5},
+ {"label":"k03", "x":4, "y":1.5},
+ {"label":"k04", "x":5, "y":1.5},
+ {"label":"k05", "x":6.5, "y":1.5},
+ {"label":"k06", "x":7.5, "y":1.5},
+ {"label":"k07", "x":8.5, "y":1.5},
+ {"label":"k08", "x":9.5, "y":1.5},
+ {"label":"k09", "x":11, "y":1.5},
+ {"label":"k0B", "x":12, "y":1.5},
+ {"label":"k0B", "x":13, "y":1.5},
+ {"label":"k0C", "x":14, "y":1.5},
+
+ {"label":"k10", "x":0, "y":2.75},
+ {"label":"k11", "x":1, "y":2.75},
+ {"label":"k12", "x":2, "y":2.75},
+ {"label":"k13", "x":3, "y":2.75},
+ {"label":"k14", "x":4, "y":2.75},
+ {"label":"k15", "x":5, "y":2.75},
+ {"label":"k16", "x":6, "y":2.75},
+ {"label":"k17", "x":7, "y":2.75},
+ {"label":"k18", "x":8, "y":2.75},
+ {"label":"k19", "x":9, "y":2.75},
+ {"label":"k1B", "x":10, "y":2.75},
+ {"label":"k1B", "x":11, "y":2.75},
+ {"label":"k1C", "x":12, "y":2.75},
+ {"label":"k1D", "x":13, "y":2.75},
+ {"label":"k1E", "x":14, "y":2.75},
+ {"label":"k1F", "x":15.25, "y":2.75},
+ {"label":"k1G", "x":16.25, "y":2.75},
+ {"label":"k1H", "x":17.25, "y":2.75},
+
+ {"label":"k20", "x":0, "y":3.75, "w":1.5},
+ {"label":"k21", "x":1.5, "y":3.75},
+ {"label":"k22", "x":2.5, "y":3.75},
+ {"label":"k23", "x":3.5, "y":3.75},
+ {"label":"k24", "x":4.5, "y":3.75},
+ {"label":"k25", "x":5.5, "y":3.75},
+ {"label":"k26", "x":6.5, "y":3.75},
+ {"label":"k27", "x":7.5, "y":3.75},
+ {"label":"k28", "x":8.5, "y":3.75},
+ {"label":"k29", "x":9.5, "y":3.75},
+ {"label":"k2A", "x":10.5, "y":3.75},
+ {"label":"k2B", "x":11.5, "y":3.75},
+ {"label":"k2C", "x":12.5, "y":3.75},
+ {"label":"k2D", "x":13.5, "y":3.75, "w":1.5},
+ {"label":"k2F", "x":15.25, "y":3.75},
+ {"label":"k2G", "x":16.25, "y":3.75},
+ {"label":"k2H", "x":17.25, "y":3.75},
+
+ {"label":"k30", "x":0, "y":4.75, "w":1.75},
+ {"label":"k31", "x":1.75, "y":4.75},
+ {"label":"k32", "x":2.75, "y":4.75},
+ {"label":"k33", "x":3.75, "y":4.75},
+ {"label":"k34", "x":4.75, "y":4.75},
+ {"label":"k35", "x":5.75, "y":4.75},
+ {"label":"k36", "x":6.75, "y":4.75},
+ {"label":"k37", "x":7.75, "y":4.75},
+ {"label":"k38", "x":8.75, "y":4.75},
+ {"label":"k39", "x":9.75, "y":4.75},
+ {"label":"k3A", "x":10.75, "y":4.75},
+ {"label":"k3B", "x":11.75, "y":4.75},
+ {"label":"k3C", "x":12.75, "y":4.75},
+ {"label":"k3D", "x":13.75, "y":4.75, "w":1.25},
+
+ {"label":"k40", "x":0, "y":5.75, "w":1.25},
+ {"label":"k41", "x":1.25, "y":5.75},
+ {"label":"k42", "x":2.25, "y":5.75},
+ {"label":"k43", "x":3.25, "y":5.75},
+ {"label":"k44", "x":4.25, "y":5.75},
+ {"label":"k45", "x":5.25, "y":5.75},
+ {"label":"k46", "x":6.25, "y":5.75},
+ {"label":"k47", "x":7.25, "y":5.75},
+ {"label":"k48", "x":8.25, "y":5.75},
+ {"label":"k49", "x":9.25, "y":5.75},
+ {"label":"k4A", "x":10.25, "y":5.75},
+ {"label":"k4B", "x":11.25, "y":5.75},
+ {"label":"k4C", "x":12.25, "y":5.75, "w":1.75},
+ {"label":"k4D", "x":14, "y":5.75},
+ {"label":"k4G", "x":16.25, "y":5.75},
+
+ {"label":"k50", "x":0, "y":6.75, "w":1.25},
+ {"label":"k51", "x":1.25, "y":6.75, "w":1.25},
+ {"label":"k52", "x":2.5, "y":6.75, "w":1.25},
+ {"label":"k56", "x":3.75, "y":6.75, "w":6.25},
+ {"label":"k59", "x":10, "y":6.75, "w":1.25},
+ {"label":"k5A", "x":11.25, "y":6.75, "w":1.25},
+ {"label":"k5B", "x":12.5, "y":6.75, "w":1.25},
+ {"label":"k5C", "x":13.75, "y":6.75, "w":1.25},
+ {"label":"k5F", "x":15.25, "y":6.75},
+ {"label":"k5G", "x":16.25, "y":6.75},
+ {"label":"k5H", "x":17.25, "y":6.75}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pearlboards/zeus/keymaps/default/keymap.c b/keyboards/pearlboards/zeus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7c79a64395
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MEDIA_PLAY_PAUSE,
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, HPT_TOG, HPT_FBK, HPT_MODI, HPT_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, CK_ON, CK_TOGG, MU_TOG, MU_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/pearlboards/zeus/keymaps/via/keymap.c b/keyboards/pearlboards/zeus/keymaps/via/keymap.c
new file mode 100644
index 0000000000..70a83ab6c5
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/via/keymap.c
@@ -0,0 +1,60 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MEDIA_PLAY_PAUSE,
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS,
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, HPT_TOG, HPT_FBK, HPT_MODI, HPT_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, CK_ON, CK_TOGG, MU_TOG, MU_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all(
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all(
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/pearlboards/zeus/keymaps/via/rules.mk b/keyboards/pearlboards/zeus/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/pearlboards/zeus/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/readme.md b/keyboards/pearlboards/zeus/readme.md
new file mode 100644
index 0000000000..9d85549d3b
--- /dev/null
+++ b/keyboards/pearlboards/zeus/readme.md
@@ -0,0 +1,22 @@
+# Zeus
+
+![Zeus](https://i.imgur.com/jdCaP1mh.jpg)
+
+Zeus is a modern Greek themed TKL keyboard. The construction uses 6061 alu, pvd coated brass/stainless steel and dyed polycarbonate. The finishes include e-coating, anodizing, micro arc anodization, metal polish and fine beadblasting. The keyboard has a usb-c daugtherboard, an integrated dual usb hub with an audio jack and dac, an internal speaker and a rotary encoder. The case has indicator lights and is top mounted. The pcb is designed by me in house and has some super cool tricks up its sleeve as well.
+
+* Keyboard Maintainer: Koobaczech
+* Hardware Supported: Koobaczech
+* Availability: https://pearlboards.net/products/zeus-tkl?variant=39646626250884
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pearlboards/zeus:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the back of the PCB labeled "RESET"
+* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeus/rules.mk b/keyboards/pearlboards/zeus/rules.mk
new file mode 100644
index 0000000000..b75d687546
--- /dev/null
+++ b/keyboards/pearlboards/zeus/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = at90usb1286
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+ENCODER_ENABLE = yes
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER = DRV2605L
+
+LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeus/zeus.c b/keyboards/pearlboards/zeus/zeus.c
new file mode 100644
index 0000000000..cdb8d6125d
--- /dev/null
+++ b/keyboards/pearlboards/zeus/zeus.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "zeus.h"
+
+// Encoder rotate function
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ } /* First encoder */
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_AUDIO_VOL_UP);
+ } else {
+ tap_code(KC_AUDIO_VOL_DOWN);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/pearlboards/zeus/zeus.h b/keyboards/pearlboards/zeus/zeus.h
new file mode 100644
index 0000000000..7bffbf2a90
--- /dev/null
+++ b/keyboards/pearlboards/zeus/zeus.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This layout covers all of the possible build layouts. Also, any
+ * built layouts will work without having to change anything.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k4f, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2f, k2g, k2h, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4g, \
+ k50, k51, k52, k56, k59, k5a, k5b, k5c, k5f, k5g, k5h \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, KC_NO, k2f, k2g, k2h }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, KC_NO, KC_NO, KC_NO, KC_NO}, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, KC_NO, k4f, k4g, KC_NO}, \
+ { k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, k59, k5a, k5b, k5c, KC_NO, KC_NO, k5f, k5g, k5h } \
+}
diff --git a/keyboards/pearlboards/zeuspad/config.h b/keyboards/pearlboards/zeuspad/config.h
new file mode 100644
index 0000000000..3c12bfae18
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/config.h
@@ -0,0 +1,90 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6963
+#define PRODUCT_ID 0x6967
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Koobaczech
+#define PRODUCT Zeuspad
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D2, D3, D5, F7, F4, F1 }
+#define MATRIX_COL_PINS { B0, F0, F5, F6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* OLED Settings */
+#define OLED_TIMEOUT 120000
+#define OLED_FADE_OUT
+/* Audio Function */
+#define AUDIO_CLICKY
+#define AUDIO_PIN C6
+
+/* Encoder Function */
+#define ENCODERS_PAD_A { D6 }
+#define ENCODERS_PAD_B { D4 }
+//#define ENCODER_DIRECTION_FLIP
+#define ENCODER_RESOLUTION 1
+
+/*== all animations enabled ==*/
+/* If RGBLIGHT_SLEEP defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGB_DI_PIN B7
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 0
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/pearlboards/zeuspad/info.json b/keyboards/pearlboards/zeuspad/info.json
new file mode 100644
index 0000000000..840d1a5b24
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/info.json
@@ -0,0 +1,40 @@
+{
+ "keyboard_name": "Zeuspad",
+ "maintainer": "Koobaczech",
+ "url": "",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+
+ {"label":"k10", "x":0, "y":1.25},
+ {"label":"k11", "x":1, "y":1.25},
+ {"label":"k12", "x":2, "y":1.25},
+ {"label":"k13", "x":3, "y":1.25},
+
+ {"label":"k20", "x":0, "y":2.25},
+ {"label":"k21", "x":1, "y":2.25},
+ {"label":"k22", "x":2, "y":2.25},
+ {"label":"k23", "x":3, "y":2.25},
+
+ {"label":"k30", "x":0, "y":3.25},
+ {"label":"k31", "x":1, "y":3.25},
+ {"label":"k32", "x":2, "y":3.25},
+ {"label":"k33", "x":3, "y":3.25},
+
+ {"label":"k40", "x":0, "y":4.25},
+ {"label":"k41", "x":1, "y":4.25},
+ {"label":"k42", "x":2, "y":4.25},
+ {"label":"k43", "x":3, "y":4.25},
+
+ {"label":"k50", "x":0, "y":5.25},
+ {"label":"k51", "x":1, "y":5.25},
+ {"label":"k52", "x":2, "y":5.25},
+ {"label":"k53", "x":3, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c b/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3faa703484
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_LCTL, KC_LALT, KC_MEDIA_PLAY_PAUSE,
+ KC_NLCK, KC_PSLS, KC_PAST, MO(1),
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT_all(
+ RESET, KC_LCTL, KC_LALT, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT)
+};
diff --git a/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c b/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a0c6b0c69f
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 Koobaczech
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include <stdio.h>
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, RGB_TOG, RGB_MOD, KC_MEDIA_PLAY_PAUSE,
+ KC_NLCK, KC_PSLS, KC_PAST, MO(1),
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT_all(
+ RESET, KC_LCTL, KC_LALT, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk b/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/pearlboards/zeuspad/readme.md b/keyboards/pearlboards/zeuspad/readme.md
new file mode 100644
index 0000000000..e22f48e65a
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/readme.md
@@ -0,0 +1,22 @@
+# Zeuspad
+
+![Zeuspad](https://i.imgur.com/F657DWwh.png)
+
+Zeuspad is the perfect numpad complement to my TKL, Zeus. Standalone it is a glorious numpad with an encoder, oled and rgb.
+
+* Keyboard Maintainer: Koobaczech
+* Hardware Supported: Zeuspad
+* Availability: https://pearlboards.net/products/zeuspadl-coming-2022?variant=39642771718276
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pearlboards/zeuspad:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the front of the PCB labeled "RESET"
+* **Keycode in layout**: Press the key mapped to `RESET` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeuspad/rules.mk b/keyboards/pearlboards/zeuspad/rules.mk
new file mode 100644
index 0000000000..0299b99a2f
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+LTO_ENABLE = yes
diff --git a/keyboards/pearlboards/zeuspad/zeuspad.c b/keyboards/pearlboards/zeuspad/zeuspad.c
new file mode 100644
index 0000000000..3f7367fb49
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/zeuspad.c
@@ -0,0 +1,75 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "zeuspad.h"
+
+// Encoder rotate function
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ /* First encoder */
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_AUDIO_VOL_UP, 10);
+ } else {
+ tap_code_delay(KC_AUDIO_VOL_DOWN, 10);
+ }
+ }
+ return true;
+}
+#endif
+
+// 21 characters max
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (oled_task_user()) {
+ return false;
+ }
+ oled_write_P(PSTR("ZEUSPAD BY KOOBACZECH"), false);
+ // Keyboard Layer Status
+ oled_write_P(PSTR("LAYER: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 1:
+ oled_write_ln_P(PSTR("FN"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Default"), false);
+ }
+ // Keyboard Locking Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR(" "), false);
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ switch (rgblight_is_enabled() ? 1 : 2) {
+ case 1:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_P(PSTR("RGB"), false);
+ static char led_buf[30];
+ snprintf(led_buf, sizeof(led_buf) - 1, "\nMODE:%2d BRIGHT:%2d/10", (uint8_t)(rgblight_get_mode()), (uint8_t)(rgblight_get_val() / 25.5));
+ oled_write(led_buf, false);
+ break;
+ default:
+ oled_write_ln_P(PSTR(""), false);
+ oled_write_P(PSTR("\n"), false);
+ }
+
+ return true;
+}
+#endif
diff --git a/keyboards/pearlboards/zeuspad/zeuspad.h b/keyboards/pearlboards/zeuspad/zeuspad.h
new file mode 100644
index 0000000000..ea52fd81cd
--- /dev/null
+++ b/keyboards/pearlboards/zeuspad/zeuspad.h
@@ -0,0 +1,40 @@
+/* Copyright 2021 Koobaczech
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This layout covers all of the possible build layouts. Also, any
+ * built layouts will work without having to change anything.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, \
+ k20, k21, k22, k23, \
+ k30, k31, k32, k33, \
+ k40, k41, k42, k43, \
+ k50, k51, k52, k53 \
+) { \
+ { k00, k01, k02, k03}, \
+ { k10, k11, k12, k13}, \
+ { k20, k21, k22, k23}, \
+ { k30, k31, k32, k33}, \
+ { k40, k41, k42, k43}, \
+ { k50, k51, k52, k53} \
+}
diff --git a/keyboards/peej/lumberjack/rules.mk b/keyboards/peej/lumberjack/rules.mk
index 0c2ea9c7e1..1eb332f313 100644
--- a/keyboards/peej/lumberjack/rules.mk
+++ b/keyboards/peej/lumberjack/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/peej/rosaline/config.h b/keyboards/peej/rosaline/config.h
new file mode 100644
index 0000000000..603cad792f
--- /dev/null
+++ b/keyboards/peej/rosaline/config.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x706A
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Peej
+#define PRODUCT Rosaline
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+#define MATRIX_ROW_PINS { C0, B5, B4, B3, B2, B1, C3, D5 }
+#define MATRIX_COL_PINS { B0, D7, D6, C2, D4, D1, D0, C1 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define USB_MAX_POWER_CONSUMPTION 100
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/peej/rosaline/info.json b/keyboards/peej/rosaline/info.json
new file mode 100644
index 0000000000..8a6f71aae2
--- /dev/null
+++ b/keyboards/peej/rosaline/info.json
@@ -0,0 +1,126 @@
+{
+ "keyboard_name": "Rosaline",
+ "url": "https://github.com/peej/rosaline-keyboard",
+ "maintainer": "Peej",
+ "layouts": {
+ "LAYOUT_staggered_40": {
+ "layout": [
+ { "x": 0, "y": 0, "w": 1.5 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0, "w": 1.5 },
+ { "x": 0, "y": 1, "w": 1.75 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1, "w": 2.25 },
+ { "x": 0, "y": 2, "w": 2.25 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2, "w": 1.75 },
+ { "x": 12, "y": 2 },
+ { "x": 0, "y": 3, "w": 1.5 },
+ { "x": 1, "y": 3, "w": 1.5 },
+ { "x": 2, "y": 3, "w": 1.5 },
+ { "x": 3, "y": 3, "w": 2.75 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2.25 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x15": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+ { "x": 13, "y": 1 },
+ { "x": 14, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 12, "y": 2 },
+ { "x": 13, "y": 2 },
+ { "x": 14, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 },
+ { "x": 12, "y": 3 },
+ { "x": 13, "y": 3 },
+ { "x": 14, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/peej/rosaline/keymaps/default/keymap.c b/keyboards/peej/rosaline/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fc659293f0
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _FUNCTION
+};
+
+#define FN MO(_FUNCTION)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,--------.------.------.------.------.------.------.------.------.------.------.------.------.--------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
+ * |--------'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'--------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |----------'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'------.------|
+ * | Shft | Z | X | C | V | B | N | M | , | . | / | Shft | Fn |
+ * |--------.-----'.-----'--.---'------'------'---.--'------'--.---'--.---'--.---'--.---'--.------+------|
+ * | Ctrl | Gui | Alt | Space | Space | Alt | Ctrl | Left | Down | Up | Rght |
+ * `--------'------'--------'---------------------'------------'------'------'------'------'------'------'
+ */
+[_QWERTY] = LAYOUT_staggered_40(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Function
+ * ,--------.------.------.------.------.------.------.------.------.------.------.------.------.--------.
+ * | Tab | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del |
+ * |--------'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'-.----'--------|
+ * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | Enter |
+ * |----------'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'---.--'------.------|
+ * | Shft | Z | X | C | V | B | N | M | , | . | / | Shft | Fn |
+ * |--------.-----'.-----'--.---'------'------'---.--'------'--.---'--.---'--.---'--.---'--.------+------|
+ * | Ctrl | Gui | Alt | Space | Space | Alt | Ctrl | Left | Down | Up | Rght |
+ * `--------'------'--------'---------------------'------------'------'------'------'------'------'------'
+ */
+[_FUNCTION] = LAYOUT_staggered_40(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+)
+
+};
diff --git a/keyboards/peej/rosaline/keymaps/ortho/keymap.c b/keyboards/peej/rosaline/keymaps/ortho/keymap.c
new file mode 100644
index 0000000000..e307ecccb3
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/ortho/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _FUNCTION
+};
+
+#define FN MO(_FUNCTION)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,--------------------------------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shft | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | Entr |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Fn | Alt | Cmd | Fn | Spac | Spac | 0 | Spac | Spac | Fn | Left | Down | Up | Rght |
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x15(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, FN, KC_LALT, KC_LGUI, FN, KC_SPC, KC_SPC, KC_P0, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Function
+ * ,--------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | F7 | F8 | F9 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F4 | F5 | F6 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F1 | F2 | F3 | F12 |ISO # |ISO / | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | F10 | | | | Next | Vol- | Vol+ | Play |
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_FUNCTION] = LAYOUT_ortho_4x15(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F7, KC_F8, KC_F9, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F4, KC_F5, KC_F6, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F1, KC_F2, KC_F3, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_F10, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+)
+
+};
diff --git a/keyboards/peej/rosaline/keymaps/via-ortho/keymap.c b/keyboards/peej/rosaline/keymaps/via-ortho/keymap.c
new file mode 100644
index 0000000000..0a6068fa96
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/via-ortho/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_ortho_4x15(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, MO(1), KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, KC_P0, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+[1] = LAYOUT_ortho_4x15(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F7, KC_F8, KC_F9, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F4, KC_F5, KC_F6, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F1, KC_F2, KC_F3, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_F10, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+[2] = LAYOUT_ortho_4x15(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+[3] = LAYOUT_ortho_4x15(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+};
diff --git a/keyboards/peej/rosaline/keymaps/via-ortho/rules.mk b/keyboards/peej/rosaline/keymaps/via-ortho/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/via-ortho/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/peej/rosaline/keymaps/via/keymap.c b/keyboards/peej/rosaline/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1d6ac2ed82
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT_staggered_40(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_GESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+[1] = LAYOUT_staggered_40(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
+[2] = LAYOUT_staggered_40(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+[3] = LAYOUT_staggered_40(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+};
diff --git a/keyboards/peej/rosaline/keymaps/via/rules.mk b/keyboards/peej/rosaline/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/peej/rosaline/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/peej/rosaline/readme.md b/keyboards/peej/rosaline/readme.md
new file mode 100644
index 0000000000..033faa34f2
--- /dev/null
+++ b/keyboards/peej/rosaline/readme.md
@@ -0,0 +1,18 @@
+# Rosaline
+
+## Through-hole 40% keyboard PCB for 60% cases
+
+![juliet](https://github.com/peej/rosaline-keyboard/raw/master/images/pcb.jpg)
+
+40% staggered or 4x15 ortholinear PCB for 60% tray mount cases with only through hole components.
+
+* Keyboard Maintainer: [Paul James](https://github.com/peej)
+* Hardware Supported: ATMEGA328p with vusb [PCB](https://github.com/peej/rosaline-keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make peej/rosaline:default
+
+## Bootloader
+
+Use usbasploader in [hsgw's repository](https://github.com/hsgw/USBaspLoader/tree/plaid).
diff --git a/keyboards/peej/rosaline/rosaline.c b/keyboards/peej/rosaline/rosaline.c
new file mode 100644
index 0000000000..57141e8064
--- /dev/null
+++ b/keyboards/peej/rosaline/rosaline.c
@@ -0,0 +1,29 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rosaline.h"
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ writePin(LED1, record->event.pressed);
+
+ return process_record_user(keycode, record);
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ writePin(LED2, state);
+
+ return layer_state_set_user(state);
+}
diff --git a/keyboards/peej/rosaline/rosaline.h b/keyboards/peej/rosaline/rosaline.h
new file mode 100644
index 0000000000..1e41a2e95e
--- /dev/null
+++ b/keyboards/peej/rosaline/rosaline.h
@@ -0,0 +1,58 @@
+/* Copyright 2021 Paul James
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_staggered_40( \
+ k00, k01, k10, k20, k21, k30, k31, k40, k41, k50, k60, k61, k70, k71, \
+ k02, k11, k12, k22, k23, k32, k33, k42, k51, k52, k62, k63, k72, \
+ k03, k13, k14, k24, k34, k35, k43, k44, k53, k54, k64, k73, k74, \
+ k04, k05, k15, k25, k45, k55, k56, k65, k66, k75, k76 \
+) \
+{ \
+ { k00, k10, k20, k30, k40, k50, k60, k70 }, \
+ { k01, k11, k21, k31, k41, k51, k61, k71 }, \
+ { k02, k12, k22, k32, k42, k52, k62, k72 }, \
+ { k03, k13, k23, k33, k43, k53, k63, k73 }, \
+ { k04, k14, k24, k34, k44, k54, k64, k74 }, \
+ { k05, k15, k25, k35, k45, k55, k65, k75 }, \
+ { XXX, XXX, XXX, XXX, XXX, k56, k66, k76 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
+}
+
+#define LAYOUT_ortho_4x15( \
+ k00, k04, k10, k14, k20, k24, k30, k34, k40, k44, k50, k54, k60, k64, k70, \
+ k01, k05, k11, k15, k21, k25, k31, k35, k41, k45, k51, k55, k61, k65, k71, \
+ k02, k06, k12, k16, k22, k26, k32, k36, k42, k46, k52, k56, k62, k66, k72, \
+ k03, k07, k13, k17, k23, k27, k33, k37, k43, k47, k53, k57, k63, k67, k73 \
+) \
+{ \
+ { k00, k10, k20, k30, k40, k50, k60, k70 }, \
+ { k01, k11, k21, k31, k41, k51, k61, k71 }, \
+ { k02, k12, k22, k32, k42, k52, k62, k72 }, \
+ { k03, k13, k23, k33, k43, k53, k63, k73 }, \
+ { k04, k14, k24, k34, k44, k54, k64, XXX }, \
+ { k05, k15, k25, k35, k45, k55, k65, XXX }, \
+ { k06, k16, k26, k36, k46, k56, k66, XXX }, \
+ { k07, k17, k27, k37, k47, k57, k67, XXX } \
+}
+
+#define LED1 C5
+#define LED2 C4
diff --git a/keyboards/peej/rosaline/rules.mk b/keyboards/peej/rosaline/rules.mk
new file mode 100644
index 0000000000..d8133b74ab
--- /dev/null
+++ b/keyboards/peej/rosaline/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega328p
+
+# Bootloader selection
+BOOTLOADER = USBasp
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/peej/tripel/rules.mk b/keyboards/peej/tripel/rules.mk
index 8e4c582d1c..c73bdddf5d 100644
--- a/keyboards/peej/tripel/rules.mk
+++ b/keyboards/peej/tripel/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/peranekofactory/tone/rev1/rules.mk b/keyboards/peranekofactory/tone/rev1/rules.mk
index 786af209df..a56e12eb22 100644
--- a/keyboards/peranekofactory/tone/rev1/rules.mk
+++ b/keyboards/peranekofactory/tone/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/peranekofactory/tone/rev2/rules.mk b/keyboards/peranekofactory/tone/rev2/rules.mk
index 786af209df..a56e12eb22 100644
--- a/keyboards/peranekofactory/tone/rev2/rules.mk
+++ b/keyboards/peranekofactory/tone/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/percent/booster/rules.mk b/keyboards/percent/booster/rules.mk
index e096ecf0ad..5173dcb936 100644
--- a/keyboards/percent/booster/rules.mk
+++ b/keyboards/percent/booster/rules.mk
@@ -12,13 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
LAYOUTS = numpad_5x4
diff --git a/keyboards/percent/canoe/keymaps/default/keymap.c b/keyboards/percent/canoe/keymaps/default/keymap.c
index 84169543d0..8bf7cacb4a 100644
--- a/keyboards/percent/canoe/keymaps/default/keymap.c
+++ b/keyboards/percent/canoe/keymaps/default/keymap.c
@@ -24,17 +24,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT_65_ansi_blocker(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_LEFT, KC_DOWN, KC_RIGHT),
[_FL] = LAYOUT_65_ansi_blocker(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PAUS, \
- KC_TRNS, KC_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, RESET, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSLS, KC_SLCK, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,RGB_MOD,RGB_VAD,RGB_HUD,RGB_SAD,KC_NO, KC_NO, KC_F14, KC_F15, KC_INS, KC_HOME, \
- KC_LSFT, KC_MPRV, KC_MPLY, KC_MNXT,KC_NO, KC_NO, KC_NO, KC_MUTE,KC_VOLD, KC_VOLU, KC_NO, KC_RSFT, KC_PGUP, KC_END, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PAUS,
+ KC_TRNS, KC_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, RESET, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSLS, KC_SLCK,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,RGB_MOD,RGB_VAD,RGB_HUD,RGB_SAD,KC_NO, KC_NO, KC_F14, KC_F15, KC_INS, KC_HOME,
+ KC_LSFT, KC_MPRV, KC_MPLY, KC_MNXT,KC_NO, KC_NO, KC_NO, KC_MUTE,KC_VOLD, KC_VOLU, KC_NO, KC_RSFT, KC_PGUP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_HOME, KC_PGDOWN,KC_END)
};
diff --git a/keyboards/percent/canoe/rules.mk b/keyboards/percent/canoe/rules.mk
index fd4f660f2d..3b5f3dae4d 100644
--- a/keyboards/percent/canoe/rules.mk
+++ b/keyboards/percent/canoe/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/percent/canoe_gen2/rules.mk b/keyboards/percent/canoe_gen2/rules.mk
index 6f69242f1e..fe66094baf 100644
--- a/keyboards/percent/canoe_gen2/rules.mk
+++ b/keyboards/percent/canoe_gen2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/percent/skog/rules.mk b/keyboards/percent/skog/rules.mk
index f3c5286b0f..9686fd1aa4 100644
--- a/keyboards/percent/skog/rules.mk
+++ b/keyboards/percent/skog/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
@@ -13,6 +15,3 @@ COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/percent/skog_lite/keymaps/default/keymap.c b/keyboards/percent/skog_lite/keymaps/default/keymap.c
index ee1daa34e7..10519dbc01 100644
--- a/keyboards/percent/skog_lite/keymaps/default/keymap.c
+++ b/keyboards/percent/skog_lite/keymaps/default/keymap.c
@@ -17,11 +17,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
+[0] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT)
};
diff --git a/keyboards/phantom/rules.mk b/keyboards/phantom/rules.mk
index 41dffbfe8c..09f45c7c63 100644
--- a/keyboards/phantom/rules.mk
+++ b/keyboards/phantom/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/phase_studio/titan65/hotswap/rules.mk b/keyboards/phase_studio/titan65/hotswap/rules.mk
index 0def97ca75..140bc4fccb 100644
--- a/keyboards/phase_studio/titan65/hotswap/rules.mk
+++ b/keyboards/phase_studio/titan65/hotswap/rules.mk
@@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/phase_studio/titan65/soldered/rules.mk b/keyboards/phase_studio/titan65/soldered/rules.mk
index 6732257d1d..5d56d105b8 100644
--- a/keyboards/phase_studio/titan65/soldered/rules.mk
+++ b/keyboards/phase_studio/titan65/soldered/rules.mk
@@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/phoenix/rules.mk b/keyboards/phoenix/rules.mk
index 7104f5785d..f895b3d316 100644
--- a/keyboards/phoenix/rules.mk
+++ b/keyboards/phoenix/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend, do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-NKRO_ENABLE = yes # USB Nkey Rollover, if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/phrygian/ph100/rules.mk b/keyboards/phrygian/ph100/rules.mk
index ca4c47452f..2ab3883521 100644
--- a/keyboards/phrygian/ph100/rules.mk
+++ b/keyboards/phrygian/ph100/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pico/rules.mk b/keyboards/pico/rules.mk
index fc4eaf4196..c3e08dd930 100644
--- a/keyboards/pico/rules.mk
+++ b/keyboards/pico/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/picolab/frusta_fundamental/rules.mk b/keyboards/picolab/frusta_fundamental/rules.mk
index 59e517d3d6..819e4b0113 100644
--- a/keyboards/picolab/frusta_fundamental/rules.mk
+++ b/keyboards/picolab/frusta_fundamental/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/pimentoso/paddino02/rev1/rules.mk b/keyboards/pimentoso/paddino02/rev1/rules.mk
index 18465be030..8898d81daf 100644
--- a/keyboards/pimentoso/paddino02/rev1/rules.mk
+++ b/keyboards/pimentoso/paddino02/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pimentoso/paddino02/rev2/left/rules.mk b/keyboards/pimentoso/paddino02/rev2/left/rules.mk
index 18465be030..8898d81daf 100755
--- a/keyboards/pimentoso/paddino02/rev2/left/rules.mk
+++ b/keyboards/pimentoso/paddino02/rev2/left/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pimentoso/paddino02/rev2/right/rules.mk b/keyboards/pimentoso/paddino02/rev2/right/rules.mk
index 18465be030..8898d81daf 100755
--- a/keyboards/pimentoso/paddino02/rev2/right/rules.mk
+++ b/keyboards/pimentoso/paddino02/rev2/right/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pimentoso/touhoupad/rules.mk b/keyboards/pimentoso/touhoupad/rules.mk
index ac010606a2..7d2cea91df 100644
--- a/keyboards/pimentoso/touhoupad/rules.mk
+++ b/keyboards/pimentoso/touhoupad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pinky/rules.mk b/keyboards/pinky/rules.mk
index 601d7e6685..2118d54a31 100644
--- a/keyboards/pinky/rules.mk
+++ b/keyboards/pinky/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pisces/rules.mk b/keyboards/pisces/rules.mk
index 513eee02a3..fe6c057668 100644
--- a/keyboards/pisces/rules.mk
+++ b/keyboards/pisces/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pistachio/rev1/rules.mk b/keyboards/pistachio/rev1/rules.mk
index 081d02195f..909b1e68de 100644
--- a/keyboards/pistachio/rev1/rules.mk
+++ b/keyboards/pistachio/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pistachio/rev2/rules.mk b/keyboards/pistachio/rev2/rules.mk
index 081d02195f..909b1e68de 100644
--- a/keyboards/pistachio/rev2/rules.mk
+++ b/keyboards/pistachio/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pistachio_mp/keymaps/via/keymap.c b/keyboards/pistachio_mp/keymaps/via/keymap.c
index e3592ffa6d..241b501d1d 100644
--- a/keyboards/pistachio_mp/keymaps/via/keymap.c
+++ b/keyboards/pistachio_mp/keymaps/via/keymap.c
@@ -23,10 +23,29 @@ enum layer_names {
_RESERVE_1
};
+static uint8_t encoder_state = 0;
+static const keypos_t ENC_CW = {.row = 3, .col = 3};
+static const keypos_t ENC_CCW = {.row = 4, .col = 1};
+
+#define LAYOUT_via( \
+ ECW,ECCW, K07, \
+ K00, K01, K02, K03, \
+ K04, K05, K06, \
+ K08, K09, K10, K11, \
+ K12, K13, K14, \
+ K15, K16, K17 ) { \
+ { K00, K01, K02, K03 }, \
+ { K04, K05, K06, K07 }, \
+ { K08, K09, K10, K11 }, \
+ { K12, K13, K14, ECCW }, \
+ { K15, ECW, K16, K17 }, \
+}
+
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [_BASE] = LAYOUT(
- KC_MPLY,
+ [_BASE] = LAYOUT_via(
+ KC_VOLU,KC_VOLD,KC_MPLY,
LT(_FN, KC_NLCK), KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
@@ -34,8 +53,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_P0, KC_PDOT, KC_PENT
),
/* Fn */
- [_FN] = LAYOUT(
- KC_NO,
+ [_FN] = LAYOUT_via(
+ KC_VOLU,KC_VOLD,KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO,
RGB_HUI, RGB_SAI, RGB_VAI,
RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG,
@@ -43,8 +62,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_NO
),
/* Reserve */
- [_RESERVE_0] = LAYOUT(
- KC_TRNS,
+ [_RESERVE_0] = LAYOUT_via(
+ KC_VOLU,KC_VOLD,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -52,8 +71,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Reserve */
- [_RESERVE_1] = LAYOUT(
- KC_TRNS,
+ [_RESERVE_1] = LAYOUT_via(
+ KC_VOLU,KC_VOLD,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -61,16 +80,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS
),
};
+
#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- // Volume control
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
+void encoder_action_unregister(void) {
+ if (encoder_state) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state >> 1 ? ENC_CW : ENC_CCW,
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state = 0;
+ action_exec(encoder_event);
}
- return true;
+ return;
}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? ENC_CW : ENC_CCW,
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+ return;
+}
+
+void matrix_scan_kb(void) {
+ encoder_action_unregister();
+ matrix_scan_user();
+ return;
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ // don't return user actions, because they are in the keymap
+ // encoder_update_user(index, clockwise);
+ return true;
+};
#endif
diff --git a/keyboards/pistachio_mp/rules.mk b/keyboards/pistachio_mp/rules.mk
index 88b1907502..424aed9074 100644
--- a/keyboards/pistachio_mp/rules.mk
+++ b/keyboards/pistachio_mp/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pistachio_pro/keymaps/via/keymap.c b/keyboards/pistachio_pro/keymaps/via/keymap.c
index 7517b4a6e4..f30254320b 100644
--- a/keyboards/pistachio_pro/keymaps/via/keymap.c
+++ b/keyboards/pistachio_pro/keymaps/via/keymap.c
@@ -26,34 +26,54 @@ enum layer_names {
_RESERVE_1
};
+static uint8_t encoder_state = 0;
+static const keypos_t ENC_CW = {.row = 0, .col = 14 };
+static const keypos_t ENC_CCW = {.row = 0, .col = 15 };
+
+#define LAYOUT_via( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, ENC_CW, ENC_CCW, k013, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, \
+ k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, \
+ k500, k501, k502, k503, k504, k505, k506, k507, k508, k509, k510, k511, k512, k513 ) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, ENC_CW, ENC_CCW, KC_NO, KC_NO }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k115, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k214, k215, KC_NO, KC_NO }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k411, k412, k413, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { k500, k501, k502, k503, k504, k505, k506, k507, k508, k509, k510, k511, k512, k513, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [_BASE] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY,
+ [_BASE] = LAYOUT_via(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLU,KC_VOLD,KC_MPLY,
KC_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, JP_CIRC, JP_YEN, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_DEL, KC_END, KC_PGDN,
JP_EISU, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, JP_RBRC, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_BSLS, KC_RSFT, KC_UP,
KC_LCTRL, KC_LGUI, KC_LALT, JP_MHEN, KC_SPC, KC_SPC, LT(_FN, JP_HENK), JP_KANA, KC_RALT, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [_FN] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [_FN] = LAYOUT_via(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,KC_VOLD,KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, JP_DOT, JP_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [_RESERVE_0] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [_RESERVE_0] = LAYOUT_via(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,KC_VOLD,KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [_RESERVE_1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [_RESERVE_1] = LAYOUT_via(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,KC_VOLD,KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -110,17 +130,35 @@ bool oled_task_user(void) {
}
/* Encoder */
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) {
- // Volume control
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
+void encoder_action_unregister(void) {
+ if (encoder_state) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state >> 1 ? ENC_CW : ENC_CCW,
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state = 0;
+ action_exec(encoder_event);
}
+}
- return true;
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? ENC_CW : ENC_CCW,
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
}
/* Keyboard */
diff --git a/keyboards/pistachio_pro/rules.mk b/keyboards/pistachio_pro/rules.mk
index 4986b8c9ea..6816d8d32b 100644
--- a/keyboards/pistachio_pro/rules.mk
+++ b/keyboards/pistachio_pro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pizzakeyboards/pizza65/rules.mk b/keyboards/pizzakeyboards/pizza65/rules.mk
index 73a74eb640..524b4e4018 100644
--- a/keyboards/pizzakeyboards/pizza65/rules.mk
+++ b/keyboards/pizzakeyboards/pizza65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pkb65/rules.mk b/keyboards/pkb65/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/pkb65/rules.mk
+++ b/keyboards/pkb65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h
index 5085514729..537c215096 100644
--- a/keyboards/planck/ez/config.h
+++ b/keyboards/planck/ez/config.h
@@ -183,8 +183,11 @@
#define TAPPING_TOGGLE 1
-#define MOUSEKEY_INTERVAL 20
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_TIME_TO_MAX 60
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_WHEEL_DELAY 0
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 400
+#define MOUSEKEY_WHEEL_INTERVAL MOUSEKEY_INTERVAL
+#define MOUSEKEY_WHEEL_MAX_SPEED MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_WHEEL_TIME_TO_MAX MOUSEKEY_TIME_TO_MAX
diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c
index 5c68726a01..98ec13085f 100644
--- a/keyboards/planck/ez/ez.c
+++ b/keyboards/planck/ez/ez.c
@@ -106,16 +106,6 @@ led_config_t g_led_config = { {
1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1
} };
-void suspend_power_down_kb(void) {
- rgb_matrix_set_color_all(0, 0, 0);
- rgb_matrix_set_suspend_state(true);
- suspend_power_down_user();
-}
-
- void suspend_wakeup_init_kb(void) {
- rgb_matrix_set_suspend_state(false);
- suspend_wakeup_init_user();
-}
#endif
/* Left B9 Right B8 */
@@ -259,7 +249,7 @@ layer_state_t layer_state_set_kb(layer_state_t state) {
planck_ez_left_led_off();
planck_ez_right_led_off();
state = layer_state_set_user(state);
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
switch (layer) {
case PLANCK_EZ_LED_LOWER:
planck_ez_left_led_on();
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index f17afe3629..61d3eb4d4f 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -5,22 +5,19 @@ MCU = STM32F303
BOOTLOADER = stm32-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
+AUDIO_DRIVER = dac_additive
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
ENCODER_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3737
@@ -30,3 +27,5 @@ LAYOUTS_HAS_RGB = no
RGB_MATRIX_SUPPORTED = yes
RGBLIGHT_SUPPORTED = no
BAKCLIGHT_SUPPORTED = no
+
+MOUSE_SHARED_EP = no
diff --git a/keyboards/planck/keymaps/ajp10304/readme.md b/keyboards/planck/keymaps/ajp10304/readme.md
index c68ba49283..4b7a54bb54 100644
--- a/keyboards/planck/keymaps/ajp10304/readme.md
+++ b/keyboards/planck/keymaps/ajp10304/readme.md
@@ -22,6 +22,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +82,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/keyboards/planck/keymaps/ariccb/.vscode/settings.json b/keyboards/planck/keymaps/ariccb/.vscode/settings.json
new file mode 100644
index 0000000000..31e9436a77
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "files.associations": {
+ "select_word.h": "c"
+ }
+} \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ariccb/config.h b/keyboards/planck/keymaps/ariccb/config.h
new file mode 100644
index 0000000000..322aa9277f
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2015-2021 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+# define STARTUP_SONG SONG(PLANCK_SOUND)
+// #define STARTUP_SONG SONG(NO_SOUND)
+
+# define DEFAULT_LAYER_SONGS \
+ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) }
+#endif
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+#define MIDI_BASIC
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+#define TAPPING_TERM 150
+#define IGNORE_MOD_TAP_INTERRUPT
+// #define IGNORE_MOD_TAP_INTERRUPT
+// #define HOLD_ON_OTHER_KEY_PRESS
+
+#define COMBO_TERM 20
+
+
+
+#define MOUSEKEY_INTERVAL 16 //Time between cursor movements in milliseconds.
+ //If the refresh rate of your display is 60Hz, you could set it to 16 (1/60). As this raises the cursor speed significantly, you may want to lower MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 8 //Maximum cursor speed at which acceleration stops
+#define MOUSEKEY_TIME_TO_MAX 50 //Time until maximum scroll speed is reached
+#define MOUSEKEY_DELAY 100 //Delay between pressing a movement key and cursor movement
+#define MOUSEKEY_MOVE_DELTA 8 //Step size
diff --git a/keyboards/planck/keymaps/ariccb/features/caps_word.c b/keyboards/planck/keymaps/ariccb/features/caps_word.c
new file mode 100644
index 0000000000..c37e65d28a
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/features/caps_word.c
@@ -0,0 +1,122 @@
+// Copyright 2021-2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#include "caps_word.h"
+
+static bool caps_word_active = false;
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
+#ifndef NO_ACTION_ONESHOT
+ const uint8_t mods = get_mods() | get_oneshot_mods();
+#else
+ const uint8_t mods = get_mods();
+#endif // NO_ACTION_ONESHOT
+
+ if (!caps_word_active) {
+ // Pressing both shift keys at the same time enables caps word.
+ if ((mods & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
+ caps_word_set(true); // Activate Caps Word.
+ return false;
+ }
+ return true;
+ }
+
+ if (!record->event.pressed) { return true; }
+
+ if (!(mods & ~MOD_MASK_SHIFT)) {
+ switch (keycode) {
+ // Ignore MO, TO, TG, TT, and OSL layer switch keys.
+ case QK_MOMENTARY ... QK_MOMENTARY + 255:
+ case QK_TO ... QK_TO + 255:
+ case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER + 255:
+ case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE + 255:
+ case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER + 255:
+ return true;
+
+#ifndef NO_ACTION_TAPPING
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ if (record->tap.count == 0) {
+ // Deactivate if a mod becomes active through holding a mod-tap key.
+ caps_word_set(false);
+ return true;
+ }
+ keycode &= 0xff;
+ break;
+
+#ifndef NO_ACTION_LAYER
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+#endif // NO_ACTION_LAYER
+ if (record->tap.count == 0) { return true; }
+ keycode &= 0xff;
+ break;
+#endif // NO_ACTION_TAPPING
+
+#ifdef SWAP_HANDS_ENABLE
+ case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:
+ if (keycode > 0x56F0 || record->tap.count == 0) { return true; }
+ keycode &= 0xff;
+ break;
+#endif // SWAP_HANDS_ENABLE
+ }
+
+ if (caps_word_press_user(keycode)) {
+ return true;
+ }
+ }
+
+ caps_word_set(false); // Deactivate Caps Word.
+ return true;
+}
+
+void caps_word_set(bool active) {
+ if (active != caps_word_active) {
+ if (active) {
+ clear_mods();
+#ifndef NO_ACTION_ONESHOT
+ clear_oneshot_mods();
+#endif // NO_ACTION_ONESHOT
+ }
+
+ caps_word_active = active;
+ caps_word_set_user(active);
+ }
+}
+
+bool caps_word_get(void) { return caps_word_active; }
+
+__attribute__((weak)) void caps_word_set_user(bool active) {}
+
+__attribute__((weak)) bool caps_word_press_user(uint16_t keycode) {
+ switch (keycode) {
+ // Keycodes that continue Caps Word, with shift applied.
+ case KC_A ... KC_Z:
+ add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key.
+ return true;
+
+ // Keycodes that continue Caps Word, without shifting.
+ case KC_1 ... KC_0:
+ case KC_P1 ... KC_P0:
+ case KC_BSPC:
+ case KC_MINS:
+ case KC_UNDS:
+ return true;
+
+ default:
+ return false; // Deactivate Caps Word.
+ }
+} \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ariccb/features/caps_word.h b/keyboards/planck/keymaps/ariccb/features/caps_word.h
new file mode 100644
index 0000000000..523c815157
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/features/caps_word.h
@@ -0,0 +1,101 @@
+// Copyright 2021-2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// Caps Word, activated by pressing both shift keys at the same time.
+//
+// This library implements "Caps Word", which is like conventional Caps Lock,
+// but automatically disables itself at the end of the word. This is useful for
+// typing all-caps identifiers like `MOD_MASK_ALT`.
+//
+// Caps Word is activated by pressing the left and right shift keys at the same
+// time. This way you don't need a dedicated key for using Caps Word. I've
+// tested that this works as expected with one-shot mods and Space Cadet Shift.
+// If your shift keys are mod-taps, activate Caps Word by holding both shift
+// mod-tap keys until the tapping term, release them, then begin typing.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+// Call this function from `process_record_user()` to implement Caps Word.
+bool process_caps_word(uint16_t keycode, keyrecord_t* record);
+
+// Activates or deactivates Caps Word. For instance activate Caps Word with a
+// combo by defining a `COMBO_ACTION` that calls `caps_word_set(true)`:
+//
+// void process_combo_event(uint16_t combo_index, bool pressed) {
+// switch(combo_index) {
+// case CAPS_COMBO:
+// if (pressed) {
+// caps_word_set(true); // Activate Caps Word.
+// }
+// break;
+//
+// // Other combos...
+// }
+// }
+void caps_word_set(bool active);
+
+// Returns whether Caps Word is currently active.
+bool caps_word_get(void);
+
+// An optional callback that gets called when Caps Word turns on or off. This is
+// useful to represent the current Caps Word state, e.g. by setting an LED or
+// playing a sound. In your keymap, define
+//
+// void caps_word_set_user(bool active) {
+// if (active) {
+// // Do something when Caps Word activates.
+// } else {
+// // Do something when Caps Word deactivates.
+// }
+// }
+void caps_word_set_user(bool active);
+
+// An optional callback which is called on every key press while Caps Word is
+// active. When the key should be shifted (that is, a letter key), the callback
+// should call `add_weak_mods(MOD_BIT(KC_LSFT))` to shift the key. The callback
+// also determines whether the key should continue Caps Word. Returning true
+// continues the current "word", while returning false is "word breaking" and
+// deactivates Caps Word. The default callback is
+//
+// bool caps_word_press_user(uint16_t keycode) {
+// switch (keycode) {
+// // Keycodes that continue Caps Word, with shift applied.
+// case KC_A ... KC_Z:
+// add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key.
+// return true;
+//
+// // Keycodes that continue Caps Word, without shifting.
+// case KC_1 ... KC_0:
+// case KC_BSPC:
+// case KC_MINS:
+// case KC_UNDS:
+// return true;
+//
+// default:
+// return false; // Deactivate Caps Word.
+// }
+// }
+//
+// To customize, copy the above function into your keymap and add/remove
+// keycodes to the above cases.
+//
+// NOTE: Outside of this callback, you can use `caps_word_set(false)` to
+// deactivate Caps Word.
+bool caps_word_press_user(uint16_t keycode); \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ariccb/features/select_word.c b/keyboards/planck/keymaps/ariccb/features/select_word.c
new file mode 100644
index 0000000000..c0ffe0a90d
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/features/select_word.c
@@ -0,0 +1,110 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/select-word
+
+#include "select_word.h"
+
+// Mac users, uncomment this line:
+// #define MAC_HOTKEYS
+
+enum { STATE_NONE, STATE_SELECTED, STATE_WORD, STATE_FIRST_LINE, STATE_LINE };
+
+bool process_select_word(uint16_t keycode, keyrecord_t* record,
+ uint16_t sel_keycode) {
+ static uint8_t state = STATE_NONE;
+
+ if (keycode == KC_LSFT || keycode == KC_RSFT) { return true; }
+
+ if (keycode == sel_keycode && record->event.pressed) { // On key press.
+ const uint8_t mods = get_mods();
+#ifndef NO_ACTION_ONESHOT
+ const uint8_t all_mods = mods | get_oneshot_mods();
+#else
+ const uint8_t all_mods = mods;
+#endif // NO_ACTION_ONESHOT
+ if ((all_mods & MOD_MASK_SHIFT) == 0) { // Select word.
+#ifdef MAC_HOTKEYS
+ register_code(KC_LALT);
+#else
+ register_code(KC_LCTL);
+#endif // MAC_HOTKEYS
+ if (state == STATE_NONE) {
+ tap_code(KC_RGHT);
+ tap_code(KC_LEFT);
+ }
+ register_code(KC_LSFT);
+ register_code(KC_RGHT);
+ state = STATE_WORD;
+ } else { // Select line.
+ if (state == STATE_NONE) {
+ clear_mods();
+#ifndef NO_ACTION_ONESHOT
+ clear_oneshot_mods();
+#endif // NO_ACTION_ONESHOT
+#ifdef MAC_HOTKEYS
+ register_code16(LCTL(KC_A));
+ tap_code16(LSFT(KC_E));
+ unregister_code16(LCTL(KC_A));
+#else
+ tap_code(KC_HOME);
+ tap_code16(LSFT(KC_END));
+#endif // MAC_HOTKEYS
+ set_mods(mods);
+ state = STATE_FIRST_LINE;
+ } else {
+ register_code(KC_DOWN);
+ state = STATE_LINE;
+ }
+ }
+ return false;
+ }
+
+ // `sel_keycode` was released, or another key was pressed.
+ switch (state) {
+ case STATE_WORD:
+ unregister_code(KC_RGHT);
+ unregister_code(KC_LSFT);
+#ifdef MAC_HOTKEYS
+ unregister_code(KC_LALT);
+#else
+ unregister_code(KC_LCTL);
+#endif // MAC_HOTKEYS
+ state = STATE_SELECTED;
+ break;
+
+ case STATE_FIRST_LINE:
+ state = STATE_SELECTED;
+ break;
+
+ case STATE_LINE:
+ unregister_code(KC_DOWN);
+ state = STATE_SELECTED;
+ break;
+
+ case STATE_SELECTED:
+ if (keycode == KC_ESC) {
+ tap_code(KC_RGHT);
+ state = STATE_NONE;
+ return false;
+ }
+ // Fallthrough.
+ default:
+ state = STATE_NONE;
+ }
+
+ return true;
+}
diff --git a/keyboards/planck/keymaps/ariccb/features/select_word.h b/keyboards/planck/keymaps/ariccb/features/select_word.h
new file mode 100644
index 0000000000..f762ba1179
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/features/select_word.h
@@ -0,0 +1,37 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// Select word/line button.
+//
+// Implements a button that selects the current word, assuming conventional text
+// editor hotkeys. Pressing it again extends the selection to the following
+// word. The effect is similar to word selection (W) in the Kakoune editor.
+//
+// Pressing the button with shift selects the current line, and pressing the
+// button again extends the selection to the following line.
+//
+// Note for Mac users: Windows/Linux editing hotkeys are assumed by default.
+// Uncomment the `#define MAC_HOTKEYS` line in select_word.c for Mac hotkeys.
+// The Mac implementation is untested, let me know if it has problems.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/select-word
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+bool process_select_word(uint16_t keycode, keyrecord_t* record,
+ uint16_t sel_keycode);
diff --git a/keyboards/planck/keymaps/ariccb/keymap.c b/keyboards/planck/keymaps/ariccb/keymap.c
new file mode 100644
index 0000000000..c0b4e490fa
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/keymap.c
@@ -0,0 +1,664 @@
+ /* Copyright 2021 Aric Crosson Bouwers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "features/select_word.h"
+#include "features/caps_word.h"
+
+// using the Word Selection QMK Macro by Pascal Getreuer, found here: https://getreuer.info/posts/keyboards/select-word/index.html
+// THANKS Pascal for such amazing functionality!!
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _COLEMAK_VCP 1
+#define _LOWER 2
+#define _RAISE 3
+#define _NUMPAD 4
+#define _FN 5
+#define _ADJUST 6
+#define _GAMING 7
+
+#define MICMUTE LALT(KC_M)
+#define DESKTR LGUI(LCTL(KC_RGHT)) // move one virtual desktop to the right
+#define DESKTL LGUI(LCTL(KC_LEFT)) // move one virtual desktop to the left
+#define MTLCTL_F9 MT(MOD_LCTL, KC_F9)
+#define MTLSFT_F10 MT(MOD_LSFT, KC_F10)
+#define MTLALT_F11 MT(MOD_LALT, KC_F11)
+#define MTLGUI_Z MT(MOD_LGUI, KC_Z)
+#define MTLALT_PL MT(MOD_LALT, KC_MPLY)
+#define MTLALT_NXT MT(MOD_LALT, KC_MNXT)
+#define MTENTER MT(MOD_LCTL, KC_ENT)
+#define MTRSFTBSLS MT(MOD_RSFT, KC_BSLS)
+#define MTRCTLQUO MT(MOD_RCTL, KC_QUOT)
+#define MTTAB MT(MOD_LCTL | MOD_LGUI | MOD_LALT, KC_TAB)
+#define LTESC LT(_FN, KC_ESC)
+#define MTPLAY MT(MOD_RALT, KC_MPLY)
+#define KC_COPY LCTL(KC_C)
+#define KC_CUT LCTL(KC_X)
+#define KC_PASTE LCTL(KC_V)
+#define KC_WINPASTE LGUI(KC_V)
+#define KC_PTXT LCTL(LSFT(KC_V))
+#define KC_UNDO LCTL(KC_Z)
+#define KC_REDO LCTL(KC_Y)
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK_VCP,
+ LOWER,
+ RAISE,
+ FN,
+ ADJUST,
+ NUMPAD,
+ GAMING,
+ EXT_NUM,
+ EXT_GAMING,
+ SELWORD,
+ BRACES,
+ BRACES2,
+ ARROW,
+ ALT_TAB
+};
+
+// Define a type for as many tap dance states as you need
+typedef enum {
+ TD_NONE,
+ TD_UNKNOWN,
+ TD_SINGLE_TAP,
+ TD_SINGLE_HOLD,
+ TD_DOUBLE_TAP
+} td_state_t;
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+ // Our custom tap dance keys; add any other tap dance keys to this enum
+enum {
+ UNDS_LOWER,
+ PLAY_RAISE
+};
+
+// Declare the functions to be used with your tap dance key(s)
+// Function associated with all tap dances
+td_state_t cur_dance(qk_tap_dance_state_t *state);
+
+// Functions associated with individual tap dances
+void usl_finished(qk_tap_dance_state_t *state, void *user_data);
+void usl_reset(qk_tap_dance_state_t *state, void *user_data);
+
+/* ----------------------------------------------------------------------------------------------------------------------------- */
+
+// This is a completely modified layout that stikes a balance between muscle memory for keys, where I was coming from a standard
+// Qwerty keyboard, and efficiency gained by using layers. I've switched tab and esc because it's more natural to me this way, and
+// added layer switch on hold functionality for each key. Enter has moved to the key beside LOWER, to allow usage while still having
+// the right hand on the mouse.
+
+// Lower incorporates a numpad on the right side, and all of the symbols included on the left. There is logic for the symbols needed for
+// calculators and math are located around the numpad, and coding symbols are placed in easy to remember spots.
+
+// CAPS has moved to the Fn layer, and a few additional shortcut modifiers like CTRL_ALT_UP and DOWN for adding additional cursors in VSCode.
+// Play/Pause has a prime spot on the base layer, and the Fn version skips to next track
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* MIT Layout (QWERTY)
+ *
+ * ,------------------------------------------------------------------------.
+ * |FN,Esc| q | w | e | r | t | y | u | i | o | p |Bsp |
+ * |------------------------------------------------------------------------|
+ |CSW,Tab| a | s | d | f | g | h | j | k | l | ; |Ctl,'|
+ * |------------------------------------------------------------------------|
+ * |Shift |Win,z| x | c | v | b | n | m | , | . | / |Sft,\|
+ * |------------------------------------------------------------------------|
+ * | | | |Ctl,Ent|LOWER| Space |RAISE|Alt,Play| | | |
+ * `------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid( /* QWERTY */
+ LTESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ MTTAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MTRCTLQUO,
+ KC_LSFT, MTLGUI_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MTRSFTBSLS,
+ KC_NO, KC_NO, KC_NO, MTENTER, TD(UNDS_LOWER), KC_SPC, KC_SPC, MO(3), MTLALT_PL, KC_NO, KC_NO, KC_NO
+ ),
+
+ /* MIT Layout (COLEMAK_VCP)
+ *
+ * ,------------------------------------------------------------------------.
+ * |FN,ESC| q | w | f | d | b | j | l | u | y | ; | Bsp |
+ * |------------------------------------------------------------------------|
+ |CSW,Tab| a | r | s | t | g | m | n | e | i | o |Ctl,'|
+ * |------------------------------------------------------------------------|
+ * |Shift |Win,z| x | v | c | p | k | h | , | . | / |Sft,\|
+ * |------------------------------------------------------------------------|
+ * | | | |Ctl,Ent|LWR,_| Space |RAISE|Alt,Play| | | |
+ * `------------------------------------------------------------------------'
+ */
+[_COLEMAK_VCP] = LAYOUT_planck_grid( /* COLEMAK_VCP */
+ LTESC, KC_Q, KC_W, KC_F, KC_D, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ MTTAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MTRCTLQUO,
+ KC_LSFT, MTLGUI_Z, KC_X, KC_V, KC_C, KC_P, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, MTRSFTBSLS,
+ KC_NO, KC_NO, KC_NO, MTENTER, TD(UNDS_LOWER), KC_SPC, KC_SPC, MO(3), MTLALT_PL, KC_NO, KC_NO, KC_NO
+ ),
+
+/* MIT Layout (RAISE)
+ *
+ * ,----------------------------------------------------------------------------.
+ * | ~ | ! | | | | | | Cut | Undo| Redo|P2TXT| Bsp |
+ * |----------------------------------------------------------------------------|
+ * | |Menu | | | | |ARROW |SELWORD|Copy|Paste|WinPst| " |
+ * |----------------------------------------------------------------------------|
+ * | |Vol+ |Vol- | Mute| | |Braces|Braces2| < | > | ? | ! |
+ * |----------------------------------------------------------------------------|
+ * | | | | |Adjust| | | | | | |
+ * `----------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid( /* RAISE */
+ KC_TILD, KC_EXLM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CUT, KC_UNDO, KC_REDO, KC_PTXT, KC_BSPC,
+ KC_TRNS, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ARROW, SELWORD, KC_COPY, KC_PASTE, KC_WINPASTE, KC_DQUO,
+ KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, BRACES, BRACES2, KC_LABK, KC_RABK, KC_QUES, KC_EXLM,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO
+),
+
+/* MIT Layout (LOWER)
+ * XZ
+ * ,-----------------------------------------------------------------------.
+ * | ` | ! | # | $ | < | > | : | 7 | 8 | 9 | = | Bsp |
+ * |-----------------------------------------------------------------------|
+ * | ' | _ | ^ | % | ( | ) | M | 4 | 5 | 6 | - | + |
+ * |-----------------------------------------------------------------------|
+ * |Shift| | | & | " | { | } | @ | 1 | 2 | 3 | / | * |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | |MO(6),0| . | | | |
+ * `-----------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid( /* LOWER */
+ KC_GRV, KC_EXLM, KC_HASH, KC_DLR, KC_LABK, KC_RABK, KC_COLN, KC_P7, KC_P8, KC_P9, KC_EQL, KC_BSPC,
+ KC_QUOT, KC_UNDS, KC_CIRC, KC_PERC, KC_LPRN, KC_RPRN, KC_M, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PPLS,
+ KC_TRNS, KC_PIPE, KC_AMPR, KC_DQUO, KC_LCBR, KC_RCBR, KC_AT, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PAST,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_NO, KC_NO, KC_NO
+),
+
+/* MIT Layout (GAMING)
+ *.
+ * ,-----------------------------------------------------------------------.
+ * |ESC,`| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |EXIT GAMING|
+ * |-----------------------------------------------------------------------|
+ * | TAB | Q | W | E | R | T | I | 4 | 5 | 6 | - | + |
+ * |-----------------------------------------------------------------------|
+ * |Shift| A | S | D | F | G | K | 1 | 2 | 3 | / | * |
+ * |-----------------------------------------------------------------------|
+ * | | | | Ctl | Alt | SPACE | 0 | . | | | |
+ * `-----------------------------------------------------------------------'
+ */
+[_GAMING] = LAYOUT_planck_grid( /* GAMING */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_P8, KC_9, KC_0, EXT_GAMING,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_I, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PPLS,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_K, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PAST,
+ KC_NO, KC_NO, KC_NO, KC_LCTL, KC_LALT, KC_SPC, KC_SPC, KC_P0, KC_PDOT, KC_NO, KC_NO, KC_NO
+),
+
+/* MIT Layout (FN)
+ *
+ * ,----------------------------------------------------------------------------.
+ * | |Ctl,F9 |Sft,F10|Alt,F11| F12 |MyComp|Calc |home | up | end |PrtScr| Del |
+ * |-----------------------------------------------------------------------------|
+ * | | F5 | F6 | F7 | F8 |DeskL |DeskR |left | down |right|ScrLck| CAPS|
+ * |-----------------------------------------------------------------------------|
+ * | | F1 | F2 | F3 | F4 |ALT_TAB|MicM |pgup |LCA_dn| pgdn|Pse/Brk| Ins|
+ * |-----------------------------------------------------------------------------|
+ * | | | | | | | |Alt,MNext| | | |
+ * `-----------------------------------------------------------------------------'
+ */
+[_FN] = LAYOUT_planck_grid( /* FUNCTION */
+ KC_TRNS, MTLCTL_F9, MTLSFT_F10, MTLALT_F11, KC_F12, KC_MYCM, KC_CALC, KC_HOME, KC_UP, KC_END, KC_PSCR, KC_DEL,
+ KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, DESKTL, DESKTR, KC_LEFT, KC_DOWN, KC_RGHT, KC_SLCK, KC_CAPS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, ALT_TAB, MICMUTE, KC_PGUP, LCA(KC_DOWN), KC_PGDN, KC_PAUSE, KC_INS,
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MTLALT_NXT, KC_NO, KC_NO, KC_NO
+),
+
+/* MIT Layout (ADJUST)
+ *
+ * ,-----------------------------------------------------------------------------.
+ * |RGBtog|Ms3 | Ms2 |MsUp | Ms1 | Hue+| Hue- | Sat+| Sat- |Brt+ |Brt- | RESET|
+ * |-----------------------------------------------------------------------------|
+ * |RGBMod| MWL | MsL |MDn |MsR |GAMING| |AU_ON|AU_OFF|MU_ON|MU_OF| DEBUG|
+ * |-----------------------------------------------------------------------------|
+ * | |MWLft|MWUp |NWDn |NWRght|QWERTY|CMK_VCP|MI_ON|MI_OF | | |MU_Mod|
+ * |-----------------------------------------------------------------------------|
+ * | | | |SLEEP| | | | | | | |
+ * `-----------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid( /* ADJUST LAYER */
+ RGB_TOG, KC_BTN3, KC_BTN2, KC_MS_U, KC_BTN1, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RESET,
+ RGB_MOD, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, GAMING, KC_NO, AU_ON, AU_OFF, MU_ON, MU_OFF, DEBUG,
+ KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, QWERTY, COLEMAK_VCP, MI_ON, MI_OFF, KC_TRNS, KC_TRNS, MU_MOD,
+ KC_NO, KC_NO, KC_NO, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO
+)
+};
+
+#ifdef AUDIO_ENABLE
+float layerswitch_song[][2] = SONG(PLANCK_SOUND);
+float tone_startup[][2] = SONG(STARTUP_SOUND);
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_COLEMAK_VCP[][2] = SONG(COLEMAK_SOUND);
+float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
+float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
+
+#endif
+
+bool is_alt_tab_active = false;
+layer_state_t layer_state_set_user(layer_state_t state) {
+
+ static bool is_this_layer_on = false;
+ if (layer_state_cmp(state, 4) != is_this_layer_on) {
+ is_this_layer_on = layer_state_cmp(state, 4);
+ if (is_this_layer_on) {
+ PLAY_SONG(layerswitch_song);
+ }
+ else {
+ stop_all_notes();
+ }
+ }
+ if (is_alt_tab_active) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ return state;
+
+ switch (get_highest_layer(state)) {
+ case _ADJUST:
+ rgblight_setrgb (0xFF, 0x00, 0x00);
+ break;
+ case _LOWER:
+ rgblight_setrgb (0x00, 0x00, 0xFF);
+ break;
+ case _NUMPAD:
+ rgblight_setrgb (0x00, 0x00, 0xFF);
+ break;
+ case _RAISE:
+ rgblight_setrgb (0x7A, 0x00, 0xFF);
+ break;
+ case _FN:
+ rgblight_setrgb (0x00, 0xFF, 0x00);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_setrgb (0xFF, 0xFF, 0xFF);
+ break;
+ }
+ return state;
+}
+
+// void dance_media (qk_tap_dance_state_t *state, void *user_data)
+// if (state->count == 1) {
+// tap_code(KC_MPLY);
+// } else if (state->count == 2) {
+// tap_code (KC_MNXT);
+// } else if (state->count == 3) {
+// tap_code(KC_MPRV);
+// } else {
+// reset_tap_dance (state);
+// }
+// }
+
+// qk_tap_dance_action_t tap_dance_actions[] = {
+// [0] = ACTION_TAP_DANCE_FN (dance_media),
+// };
+
+// Determine the current tap dance state
+td_state_t cur_dance(qk_tap_dance_state_t *state) {
+ if (state->interrupted) return TD_SINGLE_HOLD;
+ if (state->count == 1) {
+ if (!state->pressed) return TD_SINGLE_TAP;
+ else return TD_SINGLE_HOLD;
+ } else if (state->count == 2) return TD_DOUBLE_TAP;
+ else return TD_UNKNOWN;
+}
+
+// Initialize tap structure associated with example tap dance key
+static td_tap_t usl_tap_state = {
+ .is_press_action = true,
+ .state = TD_NONE
+};
+
+// Functions that control what our tap dance key does
+void usl_finished(qk_tap_dance_state_t *state, void *user_data) {
+ usl_tap_state.state = cur_dance(state);
+ switch (usl_tap_state.state) {
+ case TD_SINGLE_TAP:
+ tap_code16(KC_UNDS);
+ break;
+ case TD_SINGLE_HOLD:
+ layer_on(_LOWER);
+ // update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ break;
+ case TD_DOUBLE_TAP:
+ // Check to see if the layer is already set
+ if (layer_state_is(_LOWER)) {
+ // If already set, then switch it off
+ layer_off(_LOWER);
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(tone_goodbye);
+ #endif
+ } else {
+ // If not already set, then switch the layer on
+ layer_on(_LOWER);
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(layerswitch_song);
+ #endif
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void usl_reset(qk_tap_dance_state_t *state, void *user_data) {
+ // If the key was held down and now is released then switch off the layer
+ if (usl_tap_state.state == TD_SINGLE_HOLD) {
+ layer_off(_LOWER);
+ // update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ usl_tap_state.state = TD_NONE;
+}
+
+// Associate our tap dance key with its functionality
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [UNDS_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, usl_finished, usl_reset, 175)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_select_word(keycode, record, SELWORD)) { return false; }
+ if (!process_caps_word(keycode, record)) { return false; }
+
+ const uint8_t mods = get_mods();
+ const uint8_t oneshot_mods = get_oneshot_mods();
+
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case KC_CAPS:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(tone_qwerty);
+ #endif
+ register_code(KC_CAPS);
+ }
+ return false;
+ break;
+ case GAMING:
+ if (record->event.pressed) {
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_GAMING);
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(layerswitch_song);
+ #endif
+ }
+ return false;
+ break;
+ case EXT_GAMING:
+ if (record->event.pressed) {
+ layer_off(_GAMING);
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(tone_goodbye);
+ #endif
+ }
+ return false;
+ break;
+ case COLEMAK_VCP:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK_VCP);
+ }
+ return false;
+ break;
+ case BRACES: // Types (), or {}, and puts cursor between braces.
+ if (record->event.pressed) {
+ clear_mods(); // Temporarily disable mods.
+ clear_oneshot_mods();
+ if ((mods | oneshot_mods) & MOD_MASK_SHIFT) {
+ SEND_STRING("{}");
+ } else {
+ SEND_STRING("<>");
+ }
+ tap_code(KC_LEFT); // Move cursor between braces.
+ set_mods(mods); // Restore mods.
+ }
+ return false;
+ case BRACES2: // Types [], or <>, and puts cursor between braces.
+ if (record->event.pressed) {
+ clear_mods(); // Temporarily disable mods.
+ clear_oneshot_mods();
+ if ((mods | oneshot_mods) & MOD_MASK_SHIFT) {
+ SEND_STRING("()");
+ } else {
+ SEND_STRING("[]");
+ }
+ tap_code(KC_LEFT); // Move cursor between braces.
+ set_mods(mods); // Restore mods.
+ }
+ return false;
+ case ARROW: // Arrow macro, types -> or =>.
+ if (record->event.pressed) {
+ if ((mods | oneshot_mods) & MOD_MASK_SHIFT) { // Is shift held?
+ del_mods(MOD_MASK_SHIFT); // Temporarily delete shift.
+ del_oneshot_mods(MOD_MASK_SHIFT);
+ SEND_STRING("->");
+ set_mods(mods); // Restore mods.
+ } else {
+ SEND_STRING("=>");
+ }
+ }
+ return false;
+ case ALT_TAB: // super alt tab macro
+ if (record->event.pressed) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_TAB);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+
+enum combo_events {
+ EM_EMAIL,
+ EM_WORK_EMAIL,
+ HTML_P,
+ HTML_TITLE,
+ HTML_DIV,
+ HTML_HTML,
+ HTML_HEAD,
+ HTML_BODY,
+ HTML_FOOTER,
+ HTML_A_HREF,
+ HTML_IMG,
+ CSS_STYLE,
+ HTML_GENERIC_TAG,
+ CTLRGHT,
+ CTLLEFT,
+ COMBO_LENGTH
+};
+uint16_t COMBO_LEN = COMBO_LENGTH; // remove the COMBO_COUNT define and use this instead!
+
+const uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END};
+const uint16_t PROGMEM email_work_combo[] = {KC_E, KC_K, COMBO_END};
+const uint16_t PROGMEM html_p_combo[] = {KC_P, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_title_combo[] = {KC_T, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_div_combo[] = {KC_D, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_html_combo[] = {KC_Q, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_head_combo[] = {KC_W, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_body_combo[] = {KC_R, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_footer_combo[] = {KC_X, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_a_href_combo[] = {KC_A, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_img_combo[] = {KC_F, KC_DOT, COMBO_END};
+const uint16_t PROGMEM css_style_combo[] = {KC_S, KC_DOT, COMBO_END};
+const uint16_t PROGMEM html_generic_tag_combo[] = {KC_G, KC_DOT, COMBO_END};
+const uint16_t PROGMEM ctrrght_combo[] = {KC_RGHT, KC_DOWN, COMBO_END};
+const uint16_t PROGMEM ctrleft_combo[] = {KC_LEFT, KC_DOWN, COMBO_END};
+// const uint8_t combo_mods = get_mods();
+// const uint8_t combo_oneshot_mods = get_oneshot_mods();
+
+combo_t key_combos[] = {
+ [EM_EMAIL] = COMBO_ACTION(email_combo),
+ [EM_WORK_EMAIL] = COMBO_ACTION(email_work_combo),
+ [HTML_P] = COMBO_ACTION(html_p_combo),
+ [HTML_TITLE] = COMBO_ACTION(html_title_combo),
+ [HTML_DIV] = COMBO_ACTION(html_div_combo),
+ [HTML_HTML] = COMBO_ACTION(html_html_combo),
+ [HTML_HEAD] = COMBO_ACTION(html_head_combo),
+ [HTML_BODY] = COMBO_ACTION(html_body_combo),
+ [HTML_FOOTER] = COMBO_ACTION(html_footer_combo),
+ [HTML_A_HREF] = COMBO_ACTION(html_a_href_combo),
+ [HTML_IMG] = COMBO_ACTION(html_img_combo),
+ [CSS_STYLE] = COMBO_ACTION(css_style_combo),
+ [HTML_GENERIC_TAG] = COMBO_ACTION(html_generic_tag_combo),
+ [CTLRGHT] = COMBO_ACTION(ctrrght_combo),
+ [CTLLEFT] = COMBO_ACTION(ctrleft_combo),
+};
+/* COMBO_ACTION(x) is same as COMBO(x, KC_NO) */
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ switch(combo_index) {
+ case EM_EMAIL:
+ if (pressed) {
+ SEND_STRING("aricbouwers@outlook.com");
+ }
+ break;
+ case EM_WORK_EMAIL:
+ if (pressed) {
+ SEND_STRING("acrossonbouwers@rjc.ca");
+ }
+ break;
+ case HTML_DIV:
+ if (pressed) {
+ SEND_STRING("<div></div>");
+ for (int i = 0; i < 6; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_P:
+ if (pressed) {
+ SEND_STRING("<p></p>");
+ for (int i = 0; i < 4; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_TITLE:
+ if (pressed) {
+ SEND_STRING("<title></title>");
+ for (int i = 0; i < 8; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case CSS_STYLE:
+ if (pressed) {
+ SEND_STRING("<style></style>");
+ for (int i = 0; i < 8; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_HTML:
+ if (pressed) {
+ SEND_STRING("<html lang=\"en\"></html>");
+ for (int i = 0; i < 7; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_HEAD:
+ if (pressed) {
+ SEND_STRING("<head></head>");
+ for (int i = 0; i < 7; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_BODY:
+ if (pressed) {
+ SEND_STRING("<body></body>");
+ for (int i = 0; i < 7; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_FOOTER:
+ if (pressed) {
+ SEND_STRING("<footer></footer>");
+ for (int i = 0; i < 9; i++) {
+ tap_code16(KC_LEFT);
+ }
+ }
+ break;
+ case HTML_A_HREF:
+ if (pressed) {
+ SEND_STRING("<a href=\"link_goes_here\">name_of_link_goes_here</a>");
+ tap_code16(KC_HOME);
+ for (int i = 0; i < 10; i++) {
+ tap_code16(KC_RGHT);
+ }
+ }
+ break;
+ case HTML_IMG:
+ if (pressed) {
+ SEND_STRING("<img src=\"image_source_or_link_goes_here\" alt=\"name_if_cant_load\" width=\"num_pixels\" height=\"num_pixels\">");
+ tap_code16(KC_HOME);
+ for (int i = 0; i < 11; i++) {
+ tap_code16(KC_RGHT);
+ }
+ }
+ break;
+ case HTML_GENERIC_TAG:
+ if (pressed) {
+ SEND_STRING("<TAG></TAG>");
+ tap_code16(KC_ESC);
+ for (int i = 0; i < 9; i++) {
+ tap_code16(KC_LEFT);
+ }
+ tap_code16(LCTL(KC_D));
+ tap_code16(LCTL(KC_D));
+ tap_code16(KC_BSPC);
+ }
+ break;
+ case CTLLEFT:
+ if (pressed) {
+ tap_code16(C(KC_LEFT));
+ }
+ break;
+ case CTLRGHT:
+ if (pressed) {
+ tap_code16(C(KC_RGHT));
+ }
+ break;
+ }
+} \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ariccb/readme.md b/keyboards/planck/keymaps/ariccb/readme.md
new file mode 100644
index 0000000000..500373ea1a
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/readme.md
@@ -0,0 +1,78 @@
+```
+QWERTY LAYER
+ * ,------------------------------------------------------------------------.
+ * |FN,Esc| q | w | e | r | t | y | u | i | o | p |Bsp |
+ * |------------------------------------------------------------------------|
+ |CSW,Tab| a | s | d | f | g | h | j | k | l | ; |Ctl,'|
+ * |------------------------------------------------------------------------|
+ * |Shift |Win,z| x | c | v | b | n | m | , | . | / |Sft,\|
+ * |------------------------------------------------------------------------|
+ * | | | |Ctl,Ent|LOWER| Space |RAISE|Alt,Play| | | |
+ * `------------------------------------------------------------------------'
+
+COLEMAK_VCP(default) LAYER
+ * ,------------------------------------------------------------------------.
+ * |FN,ESC| q | w | f | d | b | j | l | u | y | ; | Bsp |
+ * |------------------------------------------------------------------------|
+ |CSW,Tab| a | r | s | t | g | m | n | e | i | o |Ctl,'|
+ * |------------------------------------------------------------------------|
+ * |Shift |Win,z| x | v | c | p | k | h | , | . | / |Sft,\|
+ * |------------------------------------------------------------------------|
+ * | | | |Ctl,Ent|LWR,_| Space |RAISE|Alt,Play| | | |
+ * `------------------------------------------------------------------------'
+
+LOWER LAYER
+ * ,-----------------------------------------------------------------------.
+ * | ` | ! | # | $ | < | > | : | 7 | 8 | 9 | = | Bsp |
+ * |-----------------------------------------------------------------------|
+ * | ' | _ | ^ | % | ( | ) | M | 4 | 5 | 6 | - | + |
+ * |-----------------------------------------------------------------------|
+ * |Shift| | | & | " | { | } | @ | 1 | 2 | 3 | / | * |
+ * |-----------------------------------------------------------------------|
+ * | | | | | | |MO(6),0| . | | | |
+ * `-----------------------------------------------------------------------'
+
+ RAISED LAYER
+ * ,-----------------------------------------------------------------------------.
+ * | ~ | ! | | | | | | Cut | Undo| Redo|P2TXT| Bsp |
+ * |-----------------------------------------------------------------------------|
+ * | |Menu | | | | | ARROW |SELWORD|Copy|Paste|WinPst| " |
+ * |-----------------------------------------------------------------------------|
+ * | |Vol+ |Vol- | Mute| | | Braces|Braces2| < | > | ? | ! |
+ * |-----------------------------------------------------------------------------|
+ * | | | | |Adjust| | | | | | |
+ * `-----------------------------------------------------------------------------'
+
+ FN LAYER
+ * ,----------------------------------------------------------------------------.
+ * | |Ctl,F9 |Sft,F10|Alt,F11| F12 |MyComp|Calc |home | up | end |PrtScr| Del |
+ * |-----------------------------------------------------------------------------|
+ * | | F5 | F6 | F7 | F8 |DeskL |DeskR |left | down |right|ScrLck| CAPS|
+ * |-----------------------------------------------------------------------------|
+ * | | F1 | F2 | F3 | F4 |ALT_TAB| MicM|pgup |LCA_dn| pgdn|Pse/Brk| Ins|
+ * |-----------------------------------------------------------------------------|
+ * | | | | | | | |Alt,MNext| | | |
+ * `-----------------------------------------------------------------------------'
+
+GAMING LAYER
+ * ,-----------------------------------------------------------------------.
+ * |ESC,`| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |EXIT GAMING|
+ * |-----------------------------------------------------------------------|
+ * | TAB | Q | W | E | R | T | I | 4 | 5 | 6 | - | + |
+ * |-----------------------------------------------------------------------|
+ * |Shift| A | S | D | F | G | K | 1 | 2 | 3 | / | * |
+ * |-----------------------------------------------------------------------|
+ * | | | | Ctl | Alt | SPACE | 0 | . | | | |
+ * `-----------------------------------------------------------------------'
+
+ ADJUST LAYER
+ * ,-----------------------------------------------------------------------------.
+ * |RGBtog|Ms3 | Ms2 |MsUp | Ms1 | Hue+| Hue- | Sat+| Sat- |Brt+ |Brt- | RESET|
+ * |-----------------------------------------------------------------------------|
+ * |RGBMod| MWL | MsL |MDn |MsR |GAMING| |AU_ON|AU_OFF|MU_ON|MU_OF| DEBUG|
+ * |-----------------------------------------------------------------------------|
+ * | |MWLft|MWUp |NWDn |NWRght|QWERTY|CMK_VCP|MI_ON|MI_OF | | |MU_Mod|
+ * |-----------------------------------------------------------------------------|
+ * | | | |SLEEP| | | | | | | |
+ * `-----------------------------------------------------------------------------'
+ ``` \ No newline at end of file
diff --git a/keyboards/planck/keymaps/ariccb/rules.mk b/keyboards/planck/keymaps/ariccb/rules.mk
new file mode 100644
index 0000000000..cc92ab40f3
--- /dev/null
+++ b/keyboards/planck/keymaps/ariccb/rules.mk
@@ -0,0 +1,10 @@
+BOOTMAGIC_ENABLE = no
+CONSOLE_ENABLE = no
+BACKLIGHT_ENABLE = yes
+MIDI_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+DIP_SWITCH_ENABLE = no
+COMBO_ENABLE = yes
+
+SRC += features/select_word.c
+SRC += features/caps_word.c
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index 7c787e0366..b5ec2e8082 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * | Esc | A | R | S | T | D | H | N | E | I | O | ' |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Dvorak
* ,-----------------------------------------------------------------------------------.
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
* |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboards/planck/keymaps/inkwell/config.h b/keyboards/planck/keymaps/inkwell/config.h
new file mode 100644
index 0000000000..0396720dff
--- /dev/null
+++ b/keyboards/planck/keymaps/inkwell/config.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Kevin Hartley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 10
+#define MOUSEKEY_MAX_SPEED 12
diff --git a/keyboards/planck/keymaps/inkwell/keymap.c b/keyboards/planck/keymaps/inkwell/keymap.c
new file mode 100644
index 0000000000..f5192d0bb4
--- /dev/null
+++ b/keyboards/planck/keymaps/inkwell/keymap.c
@@ -0,0 +1,182 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+
+enum planck_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ECDR | Ctrl | Alt | GUI |Space |Lower |Raise |Space | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ RSFT_T(KC_MPLY), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * v-------NUM PAD------v
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | ! | @ | # | * | / | 7 | 8 | 9 | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | $ | % | ^ | + | - | 4 | 5 | 6 | [ | ] | = |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Shift | & | ? | : | ~ | . | 1 | 2 | 3 | < | > |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ECDR | Ctrl | Alt | GUI |Space |Lower |Raise | 0 | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_ASTR, KC_PSLS, KC_7, KC_8, KC_9, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_ESC, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_MINS, KC_4, KC_5, KC_6, KC_LBRC, KC_RBRC, KC_PEQL,
+ KC_LSFT, KC_AMPR, KC_QUES, KC_COLN, KC_TILD, KC_DOT, KC_1, KC_2, KC_3, KC_LABK, KC_RABK, KC_ENT,
+ RSFT_T(KC_MPLY), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_0, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |SLEEP | BR- | BR+ | << | PLAY | >> | MUTE | VOL- | VOL+ | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | " | \ | [ | ] | = |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Shift | F7 | F8 | F9 | F10 | F11 | F12 | ? | : | < | > |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ECDR | Ctrl | Alt | GUI |Space |Lower |Raise |Space | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ KC_SLEP, KC_BRID, KC_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC__VOLDOWN, KC__VOLUP, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_DQT, KC_BSLS, KC_LBRC, KC_RBRC, KC_PEQL,
+ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_QUES, KC_COLN, KC_LABK, KC_RABK, KC_ENT,
+ RSFT_T(KC_MPLY), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Adjust (Lower + Raise)
+ * v--------MOUSE CONTROL------v
+ * ,-----------------------------------------------------------------------------------.
+ * |Reset | | | | | | |MSE-1 |MSE-2 |MSE-S0|MSE-S1| Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | CALC | MAIL | MDIA |Debug | | |MSE-L |MSE-D |MSE-U |MSE-R |RGB-TG|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Shift | | | | | | | | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ECDR | Ctrl | Alt | GUI |Space |Lower |Raise |Space | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ RESET, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_BTN2, KC_ACL1, KC_ACL2, KC_BSPC ,
+ _______, KC_CALC, KC_MAIL, KC_MSEL, DEBUG, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, RGB_TOG,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT,
+ RSFT_T(KC_MPLY), KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, LOWER, RAISE, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (get_mods() & MOD_BIT(KC_RSFT)) {
+ // ZOOM
+ // Store which mods are held
+ uint8_t mod_state = get_mods();
+ // Ignore all shift keys
+ del_mods(MOD_MASK_SHIFT);
+ if (clockwise) {
+ tap_code16(LGUI(KC_PPLS));
+ } else {
+ tap_code16(LGUI(KC_PMNS));
+ }
+ // Add back shift keys
+ set_mods(mod_state);
+ } else if (get_mods() & MOD_BIT(KC_LSFT)) {
+ // SCROLL X
+ uint8_t mod_state = get_mods();
+ del_mods(MOD_MASK_SHIFT);
+ if (clockwise) {
+ tap_code16(KC_WH_L);
+ } else {
+ tap_code16(KC_WH_R);
+ }
+ set_mods(mod_state);
+ } else {
+ // SCROLL Y
+ if (clockwise) {
+ tap_code(KC_WH_U);
+ } else {
+ tap_code(KC_WH_D);
+ }
+ }
+ } else {
+ if (get_mods() & MOD_BIT(KC_RSFT)) {
+ // ZOOM
+ uint8_t mod_state = get_mods();
+ del_mods(MOD_MASK_SHIFT);
+ if (clockwise) {
+ tap_code16(LGUI(KC_PPLS));
+ } else {
+ tap_code16(LGUI(KC_PMNS));
+ }
+ set_mods(mod_state);
+ } else if (get_mods() & MOD_BIT(KC_LSFT)) {
+ // BRIGHTNESS
+ uint8_t mod_state = get_mods();
+ del_mods(MOD_MASK_SHIFT);
+ if (clockwise) {
+ tap_code16(KC_PAUSE);
+ } else {
+ tap_code16(KC_SCROLLLOCK);
+ }
+ set_mods(mod_state);
+ } else {
+ // VOLUME
+ if (clockwise) {
+ tap_code(KC__VOLUP);
+ } else {
+ tap_code(KC__VOLDOWN);
+ }
+ }
+ }
+ return true;
+}
diff --git a/keyboards/planck/keymaps/inkwell/readme.md b/keyboards/planck/keymaps/inkwell/readme.md
new file mode 100644
index 0000000000..8a158783c6
--- /dev/null
+++ b/keyboards/planck/keymaps/inkwell/readme.md
@@ -0,0 +1,19 @@
+# The Inkwell Planck Layout
+
+*/
+Plank keymap with Base, Lower, Raise, and Adjust layers, and 1 encoder.
+
+Features:
+- Number Pad
+- Symbol Pad
+- Function Pad
+- Programming utilities: ()[]{}<>
+- Mouse Control
+- Encoder:
+ - Volume (default turn)
+ - Brightness (shift+turn)
+ - Scroll Y(RSE+turn)
+ - Scroll X (RSE+shift+turn)
+ - Zoom (push+turn)
+ - Play/Pause (double click)
+/*
diff --git a/keyboards/planck/keymaps/inkwell/rules.mk b/keyboards/planck/keymaps/inkwell/rules.mk
new file mode 100644
index 0000000000..afd8d7a8c6
--- /dev/null
+++ b/keyboards/planck/keymaps/inkwell/rules.mk
@@ -0,0 +1,3 @@
+SRC += muse.c
+ENCODER_ENABLE = yes
+EXTRAKEY_ENABLE = yes
diff --git a/keyboards/planck/keymaps/jimmysjolund/keymap.c b/keyboards/planck/keymaps/jimmysjolund/keymap.c
index 6b89b99540..aaf8600faf 100644
--- a/keyboards/planck/keymaps/jimmysjolund/keymap.c
+++ b/keyboards/planck/keymaps/jimmysjolund/keymap.c
@@ -53,23 +53,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-/* Qwerty - jimmysjolund 2021-09-22
+/* Qwerty - jimmysjolund 2022-02-06
* ,-----------------------------------------------------------------------------------.
- * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * | ` | Q | W | E | R | T | Y | U | I | O | P | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |Raise | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
+ * |Lower | Z | X | C | V | B | N | M | , | . | / |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter |
+ * | Esc | Tab | GUI |Shift | Bksp | Ctrl |Enter |Space |AltGr | Alt | Down | Up |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_planck_grid(
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ RAISE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ LOWER, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_ENT, KC_SPC, KC_ALGR, KC_LALT, KC_DOWN, KC_UP
),
/* Colemak Original
@@ -85,20 +85,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Colemak jimmysjolund
* ,-----------------------------------------------------------------------------------.
- * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * | ` | Q | W | F | P | G | J | L | U | Y | ; | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Tab | A | R | S | T | D | H | N | E | I | O | " |
+ * |Raise | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
+ * |Lower | Z | X | C | V | B | K | M | , | . | / |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter |
+ * | Esc | Tab | GUI |Shift | Bksp | Ctrl |Enter |Space |AltGr | Alt | Down | Up |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_planck_grid(
- KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
- KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT
+ KC_GRV, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
+ RAISE, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ LOWER, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_ENT, KC_SPC, KC_ALGR, KC_LALT, KC_DOWN, KC_UP
),
/* Dvorak
diff --git a/keyboards/planck/keymaps/masoncowen/keymap.c b/keyboards/planck/keymaps/masoncowen/keymap.c
new file mode 100644
index 0000000000..9a0377a4ca
--- /dev/null
+++ b/keyboards/planck/keymaps/masoncowen/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 masoncowen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+enum planck_layers {
+ _ZWFP,
+ _NUMNAV
+};
+
+enum planck_keycodes {
+ ZWFP = SAFE_RANGE,
+ NUMNAV
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_ZWFP] = LAYOUT_planck_grid(
+ KC_Z , KC_W , KC_F , KC_P , KC_Q , KC_NO , KC_NO , KC_J , KC_L , KC_U , KC_Y , OSL(_NUMNAV) ,
+ KC_A , KC_R , KC_S , KC_T , KC_G , KC_NO , KC_NO , KC_M , KC_N , KC_E , KC_I , KC_O ,
+ KC_X , KC_V , KC_C , KC_D , KC_B , KC_NO , KC_NO , KC_K , KC_H , KC_DOT , KC_COMM , KC_SCLN ,
+ KC_NO , KC_NO , KC_ESC , KC_SPC , OSM(MOD_LCTL) , KC_NO , KC_NO , KC_BSPC , OSM(MOD_LSFT) , OSM(MOD_LALT) , KC_NO , KC_NO
+),
+
+//TRANSPARENT keys are to be decided on
+[_NUMNAV] = LAYOUT_planck_grid(
+ KC_PPLS , KC_4 , KC_5 , KC_6 , KC_PAST , KC_NO , KC_NO , KC_BSLS , KC_HOME , KC_PGDN , KC_PGUP , KC_END ,
+ KC_0 , KC_1 , KC_2 , KC_3 , KC_PENT , KC_NO , KC_NO , KC_NUHS , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT ,
+ KC_PMNS , KC_7 , KC_8 , KC_9 , KC_PSLS , KC_NO , KC_NO , KC_QUOT , , _______ , _______ , _______ ,
+ KC_NO , KC_NO , _______ , _______ , _______ , KC_NO , KC_NO , _______ , _______ , _______ , KC_NO , KC_NO
+)
+
+};
+
+const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL);
+const key_override_t enter_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, KC_ENTER);
+const key_override_t tab_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_SPC, KC_TAB);
+
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &delete_key_override,
+ &enter_key_override,
+ &tab_key_override,
+ NULL
+};
diff --git a/keyboards/planck/keymaps/masoncowen/readme.md b/keyboards/planck/keymaps/masoncowen/readme.md
new file mode 100644
index 0000000000..073cbe73b3
--- /dev/null
+++ b/keyboards/planck/keymaps/masoncowen/readme.md
@@ -0,0 +1,46 @@
+# ZWFP Layout Notes
+## About
+
+ZWFP is a layout largely based on Colemak Mod-DH.
+The layout rotates the QZXVB keys for the following reasons:
+* XCV are brought together.
+ * One design goal of colemak was to keep ZXCV close together as they are commonly uses control shortcuts.
+ * Mod-dh moved D to where the V key was as that position was too ergonomic for an infrequent letter like V.
+ * XCV benefit more from being together are Cut-Copy-Paste are more related than Undo (which Z commonly represents).
+* B is returned to its QWERTY position.
+ * This was an unintentional benefit.
+ * The original rotation of QZXV moved Q to a better position than B despite being was less frequent.
+ * This is based off the grid on [the colemak mod-dh page](https://colemakmods.github.io/mod-dh/model.html).
+ * This needs more testing, and may be reverted as despite the above mentioned grid, the current Q position feels easier than the current B position.
+* Based off [the layout analyser](https://colemakmods.github.io/mod-dh/analyze.html) its slightly better.
+* I like being different.
+
+## Todo
+* Work out punctuation locations.
+* Figure out what the thumb cluster is doing.
+ * I've somewhat settled on left home-row (centre) thumb key is space and right is shift OSL.
+* Maybe a deadkey instead of using shift-/alt- key overrides?
+* [Repeat key](https://www.jonashietala.se/blog/2021/09/05/t-34-0/)
+* Move Home, End, PgDn and PgUp to a kc/ko/dk with the arrow keys.
+
+### Keys still to add
+* A reset key, cba with finding small pokey things to use at the back.
+* Shifted numbers \(not including $^\*\)
+* Dedicated Pipe |
+* Dedicated Underscore \(\_\)
+* Backslash \(\\\) and shifted \(Don't forget to use NOUS\)
+* Square brackets \(\[ \]\) and shifted
+* Dedicated question mark
+* Backtick (`) and shifted
+* Function keys 1-12
+
+#### Obscure keys to add just for completeness
+* Normal Minus and Equals \(Don't know if they are needed or not \)
+* Function keys 13-24
+* Capslock \(Not sure if multi-tapping OSL actually counts as a caps lock for shift\)
+* Numlock, Scrolllock and the Locking lock keys
+* Keypad characters
+* Command Keys in general
+* International Keys
+* Right Modifiers
+* Windows keys for either side
diff --git a/keyboards/planck/keymaps/masoncowen/rules.mk b/keyboards/planck/keymaps/masoncowen/rules.mk
new file mode 100644
index 0000000000..90c9b36df0
--- /dev/null
+++ b/keyboards/planck/keymaps/masoncowen/rules.mk
@@ -0,0 +1 @@
+KEY_OVERRIDE_ENABLE = yes
diff --git a/keyboards/planck/keymaps/mnil/keymap.c b/keyboards/planck/keymaps/mnil/keymap.c
index 85d84d2c65..74a2f57654 100644
--- a/keyboards/planck/keymaps/mnil/keymap.c
+++ b/keyboards/planck/keymaps/mnil/keymap.c
@@ -29,8 +29,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_QWERTY] = LAYOUT_planck_2x2u(
- KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_AA,
- KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_OSLH, SE_AE,
+ KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG,
+ KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA, SE_ADIA,
KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_SYMBOLS] = LAYOUT_planck_2x2u(
KC_TRNS, KC_NO, SE_PIPE, SE_LBRC, SE_RBRC, KC_NO, S(KC_5), SE_QUES, SE_AT, SE_EQL, SE_DLR, KC_BSPC,
KC_TRNS, SE_LCBR, SE_RCBR, SE_LPRN, SE_RPRN, KC_NO, SE_PLUS, S(KC_1), S(KC_2), S(KC_3), SE_AMPR, KC_QUOT,
- KC_TRNS, M_TILD, M_CIRC, SE_LESS, SE_GRTR, KC_NO, SE_APOS, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT,
+ KC_TRNS, M_TILD, M_CIRC, SE_LABK, SE_RABK, KC_NO, SE_QUOT, SE_SLSH, SE_BSLS, SE_ASTR, M_BTCK, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
diff --git a/keyboards/planck/keymaps/oryx/keymap.c b/keyboards/planck/keymaps/oryx/keymap.c
index e84b9913a8..0368c98420 100644
--- a/keyboards/planck/keymaps/oryx/keymap.c
+++ b/keyboards/planck/keymaps/oryx/keymap.c
@@ -91,7 +91,7 @@ void set_layer_color(int layer) {
}
void rgb_matrix_indicators_user(void) {
- if (g_suspend_state || keyboard_config.disable_layer_led) {
+ if (keyboard_config.disable_layer_led) {
return;
}
switch (biton32(layer_state)) {
diff --git a/keyboards/planck/keymaps/oryx/rules.mk b/keyboards/planck/keymaps/oryx/rules.mk
index 1e29b5f218..5f561b32e1 100644
--- a/keyboards/planck/keymaps/oryx/rules.mk
+++ b/keyboards/planck/keymaps/oryx/rules.mk
@@ -3,5 +3,7 @@
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
MOUSEKEY_ENABLE = no
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
WEBUSB_ENABLE = yes
ORYX_ENABLE = yes
diff --git a/keyboards/planck/keymaps/readme.md b/keyboards/planck/keymaps/readme.md
deleted file mode 100644
index 1d67980a83..0000000000
--- a/keyboards/planck/keymaps/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# How to add your own keymap
-
-Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`:
-
- _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author]
-
-\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements
-
-and contain the following files:
-
-* `keymap.c`
-* `readme.md` *recommended*
-* `config.h` *optional*, found automatically when compiling
-* `Makefile` *optional*, found automatically when compiling
-
-When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format:
-
- * **folder_name** description
-
-# List of Planck keymaps
-
-* **default** default Planck layout
-* **cbbrowne** cbbrowne's Planck layout
diff --git a/keyboards/planck/light/rules.mk b/keyboards/planck/light/rules.mk
index 01779bcd71..31f540ec81 100644
--- a/keyboards/planck/light/rules.mk
+++ b/keyboards/planck/light/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = yes # Audio output
@@ -21,8 +20,5 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3731
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c
index a17036fcf1..e9bd90bdfe 100644
--- a/keyboards/planck/planck.c
+++ b/keyboards/planck/planck.c
@@ -27,3 +27,23 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_planck_grid(
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
);
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (get_highest_layer(layer_state) > 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/planck/rev1/rules.mk b/keyboards/planck/rev1/rules.mk
index c56966f0b4..03ecc3da10 100644
--- a/keyboards/planck/rev1/rules.mk
+++ b/keyboards/planck/rev1/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev2/rules.mk b/keyboards/planck/rev2/rules.mk
index c56966f0b4..03ecc3da10 100644
--- a/keyboards/planck/rev2/rules.mk
+++ b/keyboards/planck/rev2/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev3/rules.mk b/keyboards/planck/rev3/rules.mk
index c56966f0b4..03ecc3da10 100644
--- a/keyboards/planck/rev3/rules.mk
+++ b/keyboards/planck/rev3/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev4/rules.mk b/keyboards/planck/rev4/rules.mk
index fdd03f5a48..1eee89934d 100644
--- a/keyboards/planck/rev4/rules.mk
+++ b/keyboards/planck/rev4/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev5/rules.mk b/keyboards/planck/rev5/rules.mk
index 23c00ed7fa..804093e89f 100644
--- a/keyboards/planck/rev5/rules.mk
+++ b/keyboards/planck/rev5/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_4x12 planck_mit
LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index b4c90c0cfe..f496b7c7ab 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -6,23 +6,19 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
WS2812_DRIVER = pwm
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
ENCODER_ENABLE = yes
diff --git a/keyboards/planck/rev6_drop/rules.mk b/keyboards/planck/rev6_drop/rules.mk
index c35de3d74b..30466fbd27 100644
--- a/keyboards/planck/rev6_drop/rules.mk
+++ b/keyboards/planck/rev6_drop/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/planck/thk/rules.mk b/keyboards/planck/thk/rules.mk
index 82e38fc7f4..714ed9b109 100644
--- a/keyboards/planck/thk/rules.mk
+++ b/keyboards/planck/thk/rules.mk
@@ -30,10 +30,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/playkbtw/ca66/rules.mk b/keyboards/playkbtw/ca66/rules.mk
index d45a04dedf..9ccce6abf4 100644
--- a/keyboards/playkbtw/ca66/rules.mk
+++ b/keyboards/playkbtw/ca66/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/playkbtw/helen80/rules.mk b/keyboards/playkbtw/helen80/rules.mk
index 7335044933..d29ae3dafa 100644
--- a/keyboards/playkbtw/helen80/rules.mk
+++ b/keyboards/playkbtw/helen80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/playkbtw/pk60/keymaps/default/keymap.c b/keyboards/playkbtw/pk60/keymaps/default/keymap.c
index 8c5c25e6be..f91db0eae4 100644
--- a/keyboards/playkbtw/pk60/keymaps/default/keymap.c
+++ b/keyboards/playkbtw/pk60/keymaps/default/keymap.c
@@ -2,20 +2,20 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_all( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, MO(1), \
- KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, MO(1), KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL \
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, MO(1), KC_RALT, MO(1), KC_NO, KC_APP, KC_RCTL
),
- [1] = LAYOUT_all( \
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, \
- RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PSCR, KC_CALC, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_SLCK, _______, \
- _______, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
+ RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PSCR, KC_CALC,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_SLCK, _______,
+ _______, _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/playkbtw/pk60/rules.mk b/keyboards/playkbtw/pk60/rules.mk
index f3322308e2..f24db316c2 100644
--- a/keyboards/playkbtw/pk60/rules.mk
+++ b/keyboards/playkbtw/pk60/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/playkbtw/pk64rgb/rules.mk b/keyboards/playkbtw/pk64rgb/rules.mk
index b7e077924b..f5306fa8ff 100644
--- a/keyboards/playkbtw/pk64rgb/rules.mk
+++ b/keyboards/playkbtw/pk64rgb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Use RGB matrix
diff --git a/keyboards/plexus75/rules.mk b/keyboards/plexus75/rules.mk
index 70b5c558df..77e054b15c 100644
--- a/keyboards/plexus75/rules.mk
+++ b/keyboards/plexus75/rules.mk
@@ -12,9 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ploopyco/mouse/keymaps/uqs/keymap.c b/keyboards/ploopyco/mouse/keymaps/uqs/keymap.c
new file mode 100644
index 0000000000..564dad13df
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/uqs/keymap.c
@@ -0,0 +1,36 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4:
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ DBL_CLK_NO = SAFE_RANGE,
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ // This works fine in xev(1) or a browser, but not in the game where I
+ // would want it. Maybe need to increase the delay? Also needs to be
+ // rewritten to use Deferred Execution.
+ case DBL_CLK_NO:
+ if (record->event.pressed) {
+ tap_code(KC_BTN2);
+ wait_ms(150);
+ tap_code(KC_BTN2);
+ wait_ms(300);
+ tap_code(KC_N);
+ }
+ return false;
+ }
+ return true;
+}
+
+
+// Layout is:
+// left-most, M1, M3, M2, right-most, fwd, back (on side), tiny middle one
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(KC_E, KC_BTN1, KC_BTN3, KC_BTN2, KC_LSFT, KC_BTN4, KC_BTN5, DF(1)), // shooters
+ [1] = LAYOUT(KC_1, KC_BTN1, KC_Y, KC_BTN2, DBL_CLK_NO, KC_N, KC_Y, DF(0)), // stardew valley, sword on 1
+};
diff --git a/keyboards/ploopyco/mouse/keymaps/uqs/rules.mk b/keyboards/ploopyco/mouse/keymaps/uqs/rules.mk
new file mode 100644
index 0000000000..59222a688a
--- /dev/null
+++ b/keyboards/ploopyco/mouse/keymaps/uqs/rules.mk
@@ -0,0 +1 @@
+#VIA_ENABLE = yes
diff --git a/keyboards/ploopyco/mouse/mouse.c b/keyboards/ploopyco/mouse/mouse.c
index 1b00ef3b71..25ebd1ee2d 100644
--- a/keyboards/ploopyco/mouse/mouse.c
+++ b/keyboards/ploopyco/mouse/mouse.c
@@ -66,7 +66,24 @@ uint8_t OptLowPin = OPT_ENC1;
bool debug_encoder = false;
bool is_drag_scroll = false;
-void process_wheel(report_mouse_t* mouse_report) {
+__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+#ifdef MOUSEKEY_ENABLE
+ tap_code(clockwise ? KC_WH_U : KC_WH_D);
+#else
+ mouse_report_t mouse_report = pointing_device_get_report();
+ mouse_report.v = clockwise ? 1 : -1;
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+#endif
+ return true;
+}
+
+void process_wheel(void) {
// Lovingly ripped from the Ploopy Source
// If the mouse wheel was just released, do not scroll.
@@ -94,11 +111,11 @@ void process_wheel(report_mouse_t* mouse_report) {
int dir = opt_encoder_handler(p1, p2);
if (dir == 0) return;
- mouse_report->v = (int8_t)(dir * OPT_SCALE);
+ encoder_update_kb(0, dir == 1);
}
-__attribute__((weak)) report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
- process_wheel(&mouse_report);
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ process_wheel();
if (is_drag_scroll) {
mouse_report.h = mouse_report.x;
diff --git a/keyboards/ploopyco/mouse/mouse.h b/keyboards/ploopyco/mouse/mouse.h
index ee59827139..8383049aa5 100644
--- a/keyboards/ploopyco/mouse/mouse.h
+++ b/keyboards/ploopyco/mouse/mouse.h
@@ -28,16 +28,16 @@
#define OPT_ENC1_MUX 0
#define OPT_ENC2_MUX 4
-void process_wheel(report_mouse_t* mouse_report);
+void process_wheel(void);
#define LAYOUT(BLL, BL, BM, BR, BRR, BF, BB, BDPI) \
{ {BL, BM, BR, BF, BB, BRR, BLL, BDPI}, }
typedef union {
- uint32_t raw;
- struct {
- uint8_t dpi_config;
- };
+ uint32_t raw;
+ struct {
+ uint8_t dpi_config;
+ };
} keyboard_config_t;
extern keyboard_config_t keyboard_config;
@@ -56,3 +56,6 @@ enum ploopy_keycodes {
PLOOPY_SAFE_RANGE,
#endif
};
+
+bool encoder_update_user(uint8_t index, bool clockwise);
+bool encoder_update_kb(uint8_t index, bool clockwise);
diff --git a/keyboards/ploopyco/mouse/readme.md b/keyboards/ploopyco/mouse/readme.md
index e9ad915a66..f7f072928b 100644
--- a/keyboards/ploopyco/mouse/readme.md
+++ b/keyboards/ploopyco/mouse/readme.md
@@ -1,6 +1,6 @@
# Ploopyco Mouse
-![Ploopyco Mouse](https://www.ploopy.co/uploads/1/2/7/6/127652558/s905404500980887952_p10_i19_w1414.jpeg)
+![Ploopyco Mouse](https://ploopy.co/wp-content/uploads/2021/06/g1.jpeg)
It's a DIY, QMK Powered Mouse!!!!
@@ -17,7 +17,7 @@ To jump to the bootloader, hold down "Button 4" (the "forward" button on the lef
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
-# Customzing your PloopyCo Mouse
+# Customizing your PloopyCo Mouse
While the defaults are designed so that it can be plugged in and used right away, there are a number of things that you may want to change. Such as adding DPI control, or to use the ball to scroll while holding a button. To allow for this sort of control, there is a callback for both the scroll wheel and the mouse sensor.
diff --git a/keyboards/ploopyco/mouse/rules.mk b/keyboards/ploopyco/mouse/rules.mk
index 45cb38901a..840b5eba39 100644
--- a/keyboards/ploopyco/mouse/rules.mk
+++ b/keyboards/ploopyco/mouse/rules.mk
@@ -14,10 +14,7 @@ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -25,5 +22,8 @@ POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pmw3360
MOUSEKEY_ENABLE = yes # Mouse keys
+ENCODER_ENABLE := no
+OPTS_DEF += -DENCODER_ENABLE
+
QUANTUM_LIB_SRC += analog.c
SRC += opt_encoder.c
diff --git a/keyboards/ploopyco/trackball/config.h b/keyboards/ploopyco/trackball/config.h
index ccbb89d5f9..7b0f3faa04 100644
--- a/keyboards/ploopyco/trackball/config.h
+++ b/keyboards/ploopyco/trackball/config.h
@@ -60,3 +60,4 @@
/* PMW3360 Settings */
#define PMW3360_CS_PIN B0
+#define POINTING_DEVICE_INVERT_Y
diff --git a/keyboards/ploopyco/trackball/readme.md b/keyboards/ploopyco/trackball/readme.md
index cb5eaa53d2..e1885d149a 100644
--- a/keyboards/ploopyco/trackball/readme.md
+++ b/keyboards/ploopyco/trackball/readme.md
@@ -25,7 +25,7 @@ In the 1.005 revision, button for was changed from pin B5 to B6, and the debug L
The PCB should indicate which revision this is.
-# Customzing your PloopyCo Trackball
+# Customizing your PloopyCo Trackball
While the defaults are designed so that it can be plugged in and used right away, there are a number of things that you may want to change. Such as adding DPI control, or to use the ball to scroll while holding a button. To allow for this sort of control, there is a callback for both the scroll wheel and the mouse sensor.
diff --git a/keyboards/ploopyco/trackball/rules.mk b/keyboards/ploopyco/trackball/rules.mk
index d118581523..3d5c364e3e 100644
--- a/keyboards/ploopyco/trackball/rules.mk
+++ b/keyboards/ploopyco/trackball/rules.mk
@@ -11,10 +11,7 @@ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
@@ -22,6 +19,9 @@ POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = pmw3360
MOUSEKEY_ENABLE = yes # Mouse keys
+ENCODER_ENABLE := no
+OPTS_DEF += -DENCODER_ENABLE
+
QUANTUM_LIB_SRC += analog.c
SRC += opt_encoder.c
diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c
index da4bbf224e..25b36574a5 100644
--- a/keyboards/ploopyco/trackball/trackball.c
+++ b/keyboards/ploopyco/trackball/trackball.c
@@ -31,7 +31,8 @@
# define OPT_SCALE 1 // Multiplier for wheel
#endif
#ifndef PLOOPY_DPI_OPTIONS
-# define PLOOPY_DPI_OPTIONS { 1200, 1600, 2400 }
+# define PLOOPY_DPI_OPTIONS \
+ { 1200, 1600, 2400 }
# ifndef PLOOPY_DPI_DEFAULT
# define PLOOPY_DPI_DEFAULT 1
# endif
@@ -40,10 +41,10 @@
# define PLOOPY_DPI_DEFAULT 0
#endif
#ifndef PLOOPY_DRAGSCROLL_DPI
-# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll
+# define PLOOPY_DRAGSCROLL_DPI 100 // Fixed-DPI Drag Scroll
#endif
#ifndef PLOOPY_DRAGSCROLL_MULTIPLIER
-# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
+# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
#endif
keyboard_config_t keyboard_config;
@@ -65,7 +66,24 @@ uint8_t OptLowPin = OPT_ENC1;
bool debug_encoder = false;
bool is_drag_scroll = false;
-void process_wheel(report_mouse_t* mouse_report) {
+__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+#ifdef MOUSEKEY_ENABLE
+ tap_code(clockwise ? KC_WH_U : KC_WH_D);
+#else
+ mouse_report_t mouse_report = pointing_device_get_report();
+ mouse_report.v = clockwise ? 1 : -1;
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+#endif
+ return true;
+}
+
+void process_wheel(void) {
// TODO: Replace this with interrupt driven code, polling is S L O W
// Lovingly ripped from the Ploopy Source
@@ -94,11 +112,11 @@ void process_wheel(report_mouse_t* mouse_report) {
int dir = opt_encoder_handler(p1, p2);
if (dir == 0) return;
- mouse_report->v = (int8_t)(dir * OPT_SCALE);
+ encoder_update_kb(0, dir == 1);
}
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
- process_wheel(&mouse_report);
+ process_wheel();
if (is_drag_scroll) {
mouse_report.h = mouse_report.x;
diff --git a/keyboards/ploopyco/trackball/trackball.h b/keyboards/ploopyco/trackball/trackball.h
index 52d955325b..8452a78ee7 100644
--- a/keyboards/ploopyco/trackball/trackball.h
+++ b/keyboards/ploopyco/trackball/trackball.h
@@ -33,8 +33,6 @@
#define OPT_ENC1_MUX 0
#define OPT_ENC2_MUX 4
-void process_wheel(report_mouse_t* mouse_report);
-
#define LAYOUT(BL, BM, BR, BF, BB) \
{ {BL, BM, BR, BF, BB}, }
@@ -61,3 +59,6 @@ enum ploopy_keycodes {
PLOOPY_SAFE_RANGE,
#endif
};
+
+bool encoder_update_user(uint8_t index, bool clockwise);
+bool encoder_update_kb(uint8_t index, bool clockwise);
diff --git a/keyboards/ploopyco/trackball_mini/config.h b/keyboards/ploopyco/trackball_mini/config.h
index 52d7390ca2..af1e63eb71 100644
--- a/keyboards/ploopyco/trackball_mini/config.h
+++ b/keyboards/ploopyco/trackball_mini/config.h
@@ -61,4 +61,4 @@
#define ADNS5050_SDIO_PIN C6
#define ADNS5050_CS_PIN B4
-#define POINTING_DEVICE_ROTATION_90
+#define POINTING_DEVICE_ROTATION_270
diff --git a/keyboards/ploopyco/trackball_mini/readme.md b/keyboards/ploopyco/trackball_mini/readme.md
index a3aebb06e6..bc94482c71 100644
--- a/keyboards/ploopyco/trackball_mini/readme.md
+++ b/keyboards/ploopyco/trackball_mini/readme.md
@@ -1,7 +1,7 @@
# Ploopy Trackball Mini
-![Ploopyco Trackball Mini](mini.jpg)
+![Ploopyco Trackball Mini](https://ploopy.co/wp-content/uploads/2021/07/mini4.jpg)
It's a DIY, QMK Powered Trackball...Mini!
@@ -29,7 +29,7 @@ Occasionally, new revisions of the PCB will be released. Every board comes with
Match the firmware that you flash onto the board with the designator on the board.
-# Customzing your Ploopy Mini Trackball
+# Customizing your Ploopy Mini Trackball
While the defaults are designed so that it can be plugged in and used right away, there are a number of things that you may want to change, such as adding DPI control, or using the ball to scroll while holding a button. To allow for this sort of control, there is a callback for both the scroll wheel and the mouse sensor.
diff --git a/keyboards/ploopyco/trackball_mini/rules.mk b/keyboards/ploopyco/trackball_mini/rules.mk
index 8d76c9b3dc..f5e7935ee2 100644
--- a/keyboards/ploopyco/trackball_mini/rules.mk
+++ b/keyboards/ploopyco/trackball_mini/rules.mk
@@ -11,16 +11,16 @@ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = adns5050
-MOUSEKEY_ENABLE = no # Mouse keys
+MOUSEKEY_ENABLE = yes # Mouse keys
+
+ENCODER_ENABLE := no
+OPTS_DEF += -DENCODER_ENABLE
QUANTUM_LIB_SRC += analog.c
SRC += opt_encoder.c
diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c
index 2158a8f488..2b511c4eab 100644
--- a/keyboards/ploopyco/trackball_mini/trackball_mini.c
+++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c
@@ -45,11 +45,11 @@
# define PLOOPY_DRAGSCROLL_DPI 375 // Fixed-DPI Drag Scroll
#endif
#ifndef PLOOPY_DRAGSCROLL_MULTIPLIER
-# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
+# define PLOOPY_DRAGSCROLL_MULTIPLIER 0.75 // Variable-DPI Drag Scroll
#endif
keyboard_config_t keyboard_config;
-uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
+uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))
// TODO: Implement libinput profiles
@@ -58,23 +58,38 @@ uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
// Valid options are ACC_NONE, ACC_LINEAR, ACC_CUSTOM, ACC_QUADRATIC
// Trackball State
-bool is_scroll_clicked = false;
-bool BurstState = false; // init burst state for Trackball module
-uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
-uint16_t lastScroll = 0; // Previous confirmed wheel event
-uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed
-uint8_t OptLowPin = OPT_ENC1;
-bool debug_encoder = false;
+bool is_scroll_clicked = false;
+bool BurstState = false; // init burst state for Trackball module
+uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
+uint16_t lastScroll = 0; // Previous confirmed wheel event
+uint16_t lastMidClick = 0; // Stops scrollwheel from being read if it was pressed
+uint8_t OptLowPin = OPT_ENC1;
+bool debug_encoder = false;
bool is_drag_scroll = false;
-void process_wheel(report_mouse_t* mouse_report) {
+__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+#ifdef MOUSEKEY_ENABLE
+ tap_code(clockwise ? KC_WH_U : KC_WH_D);
+#else
+ mouse_report_t mouse_report = pointing_device_get_report();
+ mouse_report.v = clockwise ? 1 : -1;
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+#endif
+ return true;
+}
+
+void process_wheel(void) {
// If the mouse wheel was just released, do not scroll.
- if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE)
- return;
+ if (timer_elapsed(lastMidClick) < SCROLL_BUTT_DEBOUNCE) return;
// Limit the number of scrolls per unit time.
- if (timer_elapsed(lastScroll) < OPT_DEBOUNCE)
- return;
+ if (timer_elapsed(lastScroll) < OPT_DEBOUNCE) return;
// Don't scroll if the middle button is depressed.
if (is_scroll_clicked) {
@@ -87,15 +102,12 @@ void process_wheel(report_mouse_t* mouse_report) {
uint16_t p1 = adc_read(OPT_ENC1_MUX);
uint16_t p2 = adc_read(OPT_ENC2_MUX);
- if (debug_encoder)
- dprintf("OPT1: %d, OPT2: %d\n", p1, p2);
+ if (debug_encoder) dprintf("OPT1: %d, OPT2: %d\n", p1, p2);
uint8_t dir = opt_encoder_handler(p1, p2);
- if (dir == 0)
- return;
-
- mouse_report->v = (int8_t)(dir * OPT_SCALE);
+ if (dir == 0) return;
+ encoder_update_kb(0, dir == 1);
}
void pointing_device_init_kb(void) {
@@ -106,6 +118,7 @@ void pointing_device_init_kb(void) {
}
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ process_wheel();
if (is_drag_scroll) {
mouse_report.h = mouse_report.x;
@@ -127,12 +140,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
// Update Timer to prevent accidental scrolls
if ((record->event.key.col == 1) && (record->event.key.row == 0)) {
- lastMidClick = timer_read();
+ lastMidClick = timer_read();
is_scroll_clicked = record->event.pressed;
}
- if (!process_record_user(keycode, record))
- return false;
+ if (!process_record_user(keycode, record)) return false;
if (keycode == DPI_CONFIG && record->event.pressed) {
keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.h b/keyboards/ploopyco/trackball_mini/trackball_mini.h
index fc86fe776e..3af2a49b5e 100644
--- a/keyboards/ploopyco/trackball_mini/trackball_mini.h
+++ b/keyboards/ploopyco/trackball_mini/trackball_mini.h
@@ -29,16 +29,16 @@
#define OPT_ENC1_MUX 0
#define OPT_ENC2_MUX 4
-void process_wheel(report_mouse_t* mouse_report);
+void process_wheel(void);
#define LAYOUT(BL, BM, BR, BF, BB) \
{ {BL, BM, BR, BF, BB}, }
typedef union {
- uint32_t raw;
- struct {
- uint8_t dpi_config;
- };
+ uint32_t raw;
+ struct {
+ uint8_t dpi_config;
+ };
} keyboard_config_t;
extern keyboard_config_t keyboard_config;
@@ -56,3 +56,6 @@ enum ploopy_keycodes {
PLOOPY_SAFE_RANGE,
#endif
};
+
+bool encoder_update_user(uint8_t index, bool clockwise);
+bool encoder_update_kb(uint8_t index, bool clockwise);
diff --git a/keyboards/ploopyco/trackball_nano/config.h b/keyboards/ploopyco/trackball_nano/config.h
index 7d109db99e..4c0aab8c62 100644
--- a/keyboards/ploopyco/trackball_nano/config.h
+++ b/keyboards/ploopyco/trackball_nano/config.h
@@ -50,4 +50,4 @@
#define ADNS5050_SDIO_PIN C6
#define ADNS5050_CS_PIN B4
-#define POINTING_DEVICE_ROTATION_90
+#define POINTING_DEVICE_ROTATION_270
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
index 1140c30a1d..dfc19787a6 100644
--- a/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
+++ b/keyboards/ploopyco/trackball_nano/keymaps/default/keymap.c
@@ -20,4 +20,5 @@
// safe range starts at `PLOOPY_SAFE_RANGE` instead.
-// placeholder file so it will compile \ No newline at end of file
+// Dummy
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
index 9e33db3783..2e3e1136bf 100644
--- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
+++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
@@ -24,6 +24,9 @@ uint8_t lock_state = 0;
int8_t delta_x = 0;
int8_t delta_y = 0;
+// Dummy
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
+
void process_mouse_user(report_mouse_t *mouse_report, int8_t x, int8_t y) {
if (scroll_enabled) {
delta_x += x;
diff --git a/keyboards/ploopyco/trackball_nano/rules.mk b/keyboards/ploopyco/trackball_nano/rules.mk
index 1a29a561e7..565be1280f 100644
--- a/keyboards/ploopyco/trackball_nano/rules.mk
+++ b/keyboards/ploopyco/trackball_nano/rules.mk
@@ -11,10 +11,7 @@ BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.c b/keyboards/ploopyco/trackball_nano/trackball_nano.c
index 2702f60557..e208a728cb 100644
--- a/keyboards/ploopyco/trackball_nano/trackball_nano.c
+++ b/keyboards/ploopyco/trackball_nano/trackball_nano.c
@@ -48,8 +48,6 @@
# define PLOOPY_DPI_DEFAULT 2
#endif
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { };
-
keyboard_config_t keyboard_config;
uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))
diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.h b/keyboards/ploopyco/trackball_nano/trackball_nano.h
index 88725eab68..5f16e96c41 100644
--- a/keyboards/ploopyco/trackball_nano/trackball_nano.h
+++ b/keyboards/ploopyco/trackball_nano/trackball_nano.h
@@ -21,7 +21,7 @@
#include "quantum.h"
-#define LAYOUT(k00) {{ KC_NO }}
+#define LAYOUT(k00) {{ k00 }}
typedef union {
uint32_t raw;
diff --git a/keyboards/pluckey/rules.mk b/keyboards/pluckey/rules.mk
index 4f4954434b..3018ef12bf 100644
--- a/keyboards/pluckey/rules.mk
+++ b/keyboards/pluckey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/plume/plume65/rules.mk b/keyboards/plume/plume65/rules.mk
index dffafb00a4..0d0282ac7c 100644
--- a/keyboards/plume/plume65/rules.mk
+++ b/keyboards/plume/plume65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/plut0nium/0x3e/keymaps/default/keymap.c b/keyboards/plut0nium/0x3e/keymaps/default/keymap.c
index 8f1a1d1960..bca46e9910 100644
--- a/keyboards/plut0nium/0x3e/keymaps/default/keymap.c
+++ b/keyboards/plut0nium/0x3e/keymaps/default/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
static void render_logo(void) {
static const char PROGMEM my_logo[] = {
// '0x3E_logo_32x16', 32x16px
diff --git a/keyboards/plut0nium/0x3e/rules.mk b/keyboards/plut0nium/0x3e/rules.mk
index c82a7231ae..9cccfc4833 100644
--- a/keyboards/plut0nium/0x3e/rules.mk
+++ b/keyboards/plut0nium/0x3e/rules.mk
@@ -5,15 +5,15 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-OLED_DRIVER_ENABLE = yes
+OLED_ENABLE = yes
LTO_ENABLE = yes
diff --git a/keyboards/plx/rules.mk b/keyboards/plx/rules.mk
index 419033f64c..a1392cf92f 100644
--- a/keyboards/plx/rules.mk
+++ b/keyboards/plx/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pohjolaworks/louhi/rules.mk b/keyboards/pohjolaworks/louhi/rules.mk
index 786af209df..a56e12eb22 100644
--- a/keyboards/pohjolaworks/louhi/rules.mk
+++ b/keyboards/pohjolaworks/louhi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/poker87c/rules.mk b/keyboards/poker87c/rules.mk
index 131264b21a..db821a8d5f 100644
--- a/keyboards/poker87c/rules.mk
+++ b/keyboards/poker87c/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/poker87d/rules.mk b/keyboards/poker87d/rules.mk
index 65c9772e7a..38b29c1f9b 100644
--- a/keyboards/poker87d/rules.mk
+++ b/keyboards/poker87d/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/polilla/rev1/rules.mk b/keyboards/polilla/rev1/rules.mk
index 079002710b..e67dde490d 100644
--- a/keyboards/polilla/rev1/rules.mk
+++ b/keyboards/polilla/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/polycarbdiet/s20/rules.mk b/keyboards/polycarbdiet/s20/rules.mk
index f01d87605c..3cdf4babf9 100644
--- a/keyboards/polycarbdiet/s20/rules.mk
+++ b/keyboards/polycarbdiet/s20/rules.mk
@@ -5,16 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pom_keyboards/tnln95/rules.mk b/keyboards/pom_keyboards/tnln95/rules.mk
index 8ef55ee35d..36c58097ac 100644
--- a/keyboards/pom_keyboards/tnln95/rules.mk
+++ b/keyboards/pom_keyboards/tnln95/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/portal_66/hotswap/rules.mk b/keyboards/portal_66/hotswap/rules.mk
index 7e08b05d50..59fa2e87f8 100644
--- a/keyboards/portal_66/hotswap/rules.mk
+++ b/keyboards/portal_66/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/portal_66/soldered/rules.mk b/keyboards/portal_66/soldered/rules.mk
index 01798d604f..8a86833620 100644
--- a/keyboards/portal_66/soldered/rules.mk
+++ b/keyboards/portal_66/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pos78/rules.mk b/keyboards/pos78/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/pos78/rules.mk
+++ b/keyboards/pos78/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/preonic/keymaps/uqs/keymap.c b/keyboards/preonic/keymaps/uqs/keymap.c
new file mode 100644
index 0000000000..ec22890388
--- /dev/null
+++ b/keyboards/preonic/keymaps/uqs/keymap.c
@@ -0,0 +1,117 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4 cc=5,15,25,35,45,55,65:
+
+#include "uqs.h"
+
+/*
+ * My custom layout macro that allows for easy diff(1) operations between
+ * various keyboards. It probably doesn't make sense to you.
+ */
+#define LAYOUT_uqs( \
+ k00, k01, k02, k03, k04, k05, \
+ k10, k11, k12, k13, k14, k15, \
+ k20, k21, k22, k23, k24, k25, \
+ k30, k31, k32, k33, k34, k35, \
+ k43, k44, \
+ k40, k41, k42, \
+ k06, k07, k08, k09, k0a, k0b, \
+ k16, k17, k18, k19, k1a, k1b, \
+ k26, k27, k28, k29, k2a, k2b, \
+ k36, k37, k38, k39, k3a, k3b, \
+ k46, k48, \
+ k49, k4a, k4b \
+) \
+LAYOUT_preonic_2x2u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+ k40, k41, k42, k43, k44, k46, k48, k49, k4a, k4b \
+)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [L_QWER] = LAYOUT_uqs(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
+
+ /*thumb*/ LT_EXTD_ESC, KC_SPC,
+ /*aux*/ KC_NO, KC_LGUI, KC_LALT,
+ KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ /*thumb*/ KC_ENT, LT_NUM_BSPC,
+ /*aux*/ MO(L_FUNC), KC_NO, KC_NO
+ ),
+ [L_EXTD] = LAYOUT_uqs(
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ _______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, KC_LEAD,
+ _______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT,
+ _______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD,
+ /*thumb*/ _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ can't be used */
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
+ WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO,
+ /*thumb*/ _______, KC_BSPC,
+ /*aux*/ _______, _______, KC_ENTER
+ /* ^^^^ use these */
+ ),
+
+ [L_NUM] = LAYOUT_uqs(
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
+ _______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC,
+ _______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC,
+ /*thumb*/ KC_ESC, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ use these */
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______,
+ KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______,
+ KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied
+ /*thumb*/ _______, _______,
+ /*aux*/ KC_0, KC_KP_DOT, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_FUNC] = LAYOUT_uqs(
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ _______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,
+ _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, KC_NO,
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /*thumb*/ _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ use these */
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
+ KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
+ KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO,
+ /*thumb*/ _______, _______,
+ /*aux*/ _______, _______, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_MOUSE] = LAYOUT_uqs(
+ KC_NO, _______, _______, _______, _______, _______,
+ KC_NO, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU,
+ KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
+ /*thumb*/ _______, _______,
+ /*aux*/ _______, _______, _______,
+ /* ^^^^ can't be used */
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_MS_UP, MS_WHUP, _______, _______,
+ MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______,
+ _______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______,
+ /*thumb*/ KC_BTN1, KC_BTN2,
+ /*aux*/ KC_NO, KC_NO, KC_NO
+ /* use these ^^^^ */
+ ),
+};
diff --git a/keyboards/preonic/keymaps/uqs/rules.mk b/keyboards/preonic/keymaps/uqs/rules.mk
new file mode 100644
index 0000000000..ca99fa107c
--- /dev/null
+++ b/keyboards/preonic/keymaps/uqs/rules.mk
@@ -0,0 +1,14 @@
+LTO_ENABLE=no
+AUDIO_ENABLE=no
+ENCODER_ENABLE=no
+
+# Broken with gcc >6, see https://github.com/qmk/qmk_firmware/issues/6753
+# (yes, different option, but I suspect the code has moved around)
+# This produces working firmware on Arch Linux with GCC 11, but is still broken
+# on Debian with 8.3.1
+RGBLIGHT_ENABLE=no
+RGB_MATRIX_ENABLE=no
+
+# not required, but helps on debian where there is a soft/hard float confusion.
+# but see above, gcc 8.3.1 still fucks up the firmware.
+USE_FPU=no
diff --git a/keyboards/preonic/preonic.c b/keyboards/preonic/preonic.c
index 16c99d9a80..2b56805202 100644
--- a/keyboards/preonic/preonic.c
+++ b/keyboards/preonic/preonic.c
@@ -7,3 +7,23 @@ const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_preonic_grid(
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
);
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (get_highest_layer(layer_state) > 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/preonic/rev1/rules.mk b/keyboards/preonic/rev1/rules.mk
index 58c48aa5e0..026f39123f 100644
--- a/keyboards/preonic/rev1/rules.mk
+++ b/keyboards/preonic/rev1/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_5x12
LTO_ENABLE = yes
diff --git a/keyboards/preonic/rev2/rules.mk b/keyboards/preonic/rev2/rules.mk
index 2fcfb66c30..ba0e8d864a 100644
--- a/keyboards/preonic/rev2/rules.mk
+++ b/keyboards/preonic/rev2/rules.mk
@@ -5,22 +5,18 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = ortho_5x12
LTO_ENABLE = yes
diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk
index 5faf3fda49..5f511ee5db 100644
--- a/keyboards/preonic/rev3/rules.mk
+++ b/keyboards/preonic/rev3/rules.mk
@@ -6,24 +6,19 @@ BOARD = QMK_PROTON_C
BOOTLOADER = stm32-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
WS2812_DRIVER = pwm
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-#SLEEP_LED_ENABLE = yes
-
# Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/preonic/rev3_drop/rules.mk b/keyboards/preonic/rev3_drop/rules.mk
index 8ab62afe21..3d0e376081 100644
--- a/keyboards/preonic/rev3_drop/rules.mk
+++ b/keyboards/preonic/rev3_drop/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/primekb/meridian/ktr1010/config.h b/keyboards/primekb/meridian/ktr1010/config.h
new file mode 100644
index 0000000000..bf91dc9715
--- /dev/null
+++ b/keyboards/primekb/meridian/ktr1010/config.h
@@ -0,0 +1,51 @@
+/*
+Copyright 2020 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5052
+#define PRODUCT_ID 0x004D
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Prime Keyboards
+#define PRODUCT Meridian
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 }
+#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 3
+// Special timing definitions for KTR101
+#define WS2812_TIMING 1325
+#define WS2812_T0H 350
+#define WS2812_T1H 975
+#define WS2812_T0L 975
+#define WS2812_T1L 350
+#define WS2812_RES_US 100
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/primekb/meridian/ktr1010/rules.mk b/keyboards/primekb/meridian/ktr1010/rules.mk
new file mode 100644
index 0000000000..1bc213906f
--- /dev/null
+++ b/keyboards/primekb/meridian/ktr1010/rules.mk
@@ -0,0 +1 @@
+WS2812_DRIVER = bitbang
diff --git a/keyboards/primekb/meridian/readme.md b/keyboards/primekb/meridian/readme.md
index 0e3339a597..01df9c5ba3 100644
--- a/keyboards/primekb/meridian/readme.md
+++ b/keyboards/primekb/meridian/readme.md
@@ -5,8 +5,28 @@
* Keyboard Maintainer: [Holten Campbell](https://github.com/holtenc)
* Hardware Supported: STM32F072CBT6
-Make example for this keyboard (after setting up your build environment):
+## Compiling firmware and flashing
- make primekb/meridian:default
+### Enter bootloader
+
+The DFU state in the bootloader can be accessed in 3 ways:
+
+* **Bootmagic reset**: hold down the key at (0,0) in the matrix (usually Escape) and plug in the keyboard; or
+* **Physical reset button**: press the button on the bottom of the PCB; or
+* **Keycode in layout**: press the key mapped to `RESET` if it is available (Escape key on layer 1 in the default layout).
+
+### Compile firmware
+
+The Meridian PCB was delivered in two variants, equal in design but using different RGB LED models: one using WS2812 and another using KTR1010 LEDs. Both can be compiled using
+
+ make primekb/meridian/ws1812:default
+ make primekb/meridian/ktr1010:default
+
+After compiling, enter bootloader in the PCB and flash the firmware using `dfu-util` or QMK Toolbox. For direct compile-and-flashing, put the PCB in DFU state and use
+
+ make primekb/meridian/ws1812:default:flash
+ make primekb/meridian/ktr1010:default:flash
+
+VIA-supported firmwares are also available.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/primekb/meridian/rules.mk b/keyboards/primekb/meridian/rules.mk
index fe92253a9a..93737e3515 100644
--- a/keyboards/primekb/meridian/rules.mk
+++ b/keyboards/primekb/meridian/rules.mk
@@ -12,14 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/primekb/meridian/ws2812/config.h b/keyboards/primekb/meridian/ws2812/config.h
new file mode 100644
index 0000000000..082392c6bd
--- /dev/null
+++ b/keyboards/primekb/meridian/ws2812/config.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2020 Holten Campbell
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5052
+#define PRODUCT_ID 0x004D
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Prime Keyboards
+#define PRODUCT Meridian
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 }
+#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 3
+#define WS2812_SPI SPID2
+#define WS2812_SPI_MOSI_PAL_MODE 0
+#define WS2812_SPI_SCK_PAL_MODE 0
+#define WS2812_SPI_SCK_PIN B13
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/primekb/meridian/ws2812/rules.mk b/keyboards/primekb/meridian/ws2812/rules.mk
new file mode 100644
index 0000000000..c09c0d5fa4
--- /dev/null
+++ b/keyboards/primekb/meridian/ws2812/rules.mk
@@ -0,0 +1 @@
+WS2812_DRIVER = spi
diff --git a/keyboards/primekb/prime_e/rules.mk b/keyboards/primekb/prime_e/rules.mk
index 7ae7f2593d..448009e7e6 100644
--- a/keyboards/primekb/prime_e/rules.mk
+++ b/keyboards/primekb/prime_e/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
DEFAULT_FOLDER = primekb/prime_e/std
diff --git a/keyboards/primekb/prime_l/rules.mk b/keyboards/primekb/prime_l/rules.mk
index e8880f9eda..6f1af706bf 100644
--- a/keyboards/primekb/prime_l/rules.mk
+++ b/keyboards/primekb/prime_l/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/primekb/prime_m/rules.mk b/keyboards/primekb/prime_m/rules.mk
index 630f08702f..8b38e54330 100644
--- a/keyboards/primekb/prime_m/rules.mk
+++ b/keyboards/primekb/prime_m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/primekb/prime_o/keymaps/default/config.h b/keyboards/primekb/prime_o/keymaps/default/config.h
deleted file mode 100644
index 95917a65cd..0000000000
--- a/keyboards/primekb/prime_o/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Jumail Mundekkat
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/primekb/prime_o/rules.mk b/keyboards/primekb/prime_o/rules.mk
index 35f2448c60..ea8dd4a8ae 100644
--- a/keyboards/primekb/prime_o/rules.mk
+++ b/keyboards/primekb/prime_o/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/primekb/prime_r/keymaps/default/config.h b/keyboards/primekb/prime_r/keymaps/default/config.h
deleted file mode 100644
index a70a6b3726..0000000000
--- a/keyboards/primekb/prime_r/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Andrew Heaston
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/primekb/prime_r/keymaps/default/keymap.c b/keyboards/primekb/prime_r/keymaps/default/keymap.c
index 885a37e087..f402f2e2db 100644
--- a/keyboards/primekb/prime_r/keymaps/default/keymap.c
+++ b/keyboards/primekb/prime_r/keymaps/default/keymap.c
@@ -35,20 +35,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// 0: Base Layer
[0] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGUP, KC_BSPC, KC_PSCR, KC_PGUP, KC_PGDN, \
- KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PGDN, KC_DEL, KC_7, KC_8, KC_9, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_DQUO, KC_ENT, KC_4, KC_5, KC_6, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_LSFT, KC_1, KC_2, KC_3, \
- KC_LCTL, KC_LGUI, KC_APP, KC_LALT, MO(0), KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL, KC_0, KC_DOT, KC_ENT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PGUP, KC_BSPC, KC_PSCR, KC_PGUP, KC_PGDN,
+ KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PGDN, KC_DEL, KC_7, KC_8, KC_9,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_DQUO, KC_ENT, KC_4, KC_5, KC_6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LABK, KC_RABK, KC_QUES, KC_LSFT, KC_1, KC_2, KC_3,
+ KC_LCTL, KC_LGUI, KC_APP, KC_LALT, MO(0), KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL, KC_0, KC_DOT, KC_ENT
),
// 1: Function Layer
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/primekb/prime_r/rules.mk b/keyboards/primekb/prime_r/rules.mk
index af2fdc22c9..60293f1386 100644
--- a/keyboards/primekb/prime_r/rules.mk
+++ b/keyboards/primekb/prime_r/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/program_yoink/rules.mk b/keyboards/program_yoink/rules.mk
index afb9e42e2d..d4c3d6a340 100644
--- a/keyboards/program_yoink/rules.mk
+++ b/keyboards/program_yoink/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectcain/vault35/rules.mk b/keyboards/projectcain/vault35/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/projectcain/vault35/rules.mk
+++ b/keyboards/projectcain/vault35/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectcain/vault45/rules.mk b/keyboards/projectcain/vault45/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/projectcain/vault45/rules.mk
+++ b/keyboards/projectcain/vault45/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectkb/alice/rev1/rules.mk b/keyboards/projectkb/alice/rev1/rules.mk
index 64e923fc4f..9b67714561 100644
--- a/keyboards/projectkb/alice/rev1/rules.mk
+++ b/keyboards/projectkb/alice/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectkb/alice/rev2/rules.mk b/keyboards/projectkb/alice/rev2/rules.mk
index 64e923fc4f..9b67714561 100644
--- a/keyboards/projectkb/alice/rev2/rules.mk
+++ b/keyboards/projectkb/alice/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectkb/signature65/chconf.h b/keyboards/projectkb/signature65/chconf.h
new file mode 100644
index 0000000000..b1faf2e292
--- /dev/null
+++ b/keyboards/projectkb/signature65/chconf.h
@@ -0,0 +1,37 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file rt/templates/chconf.h
+ * @brief Configuration file template.
+ * @details A copy of this file must be placed in each project directory, it
+ * contains the application specific kernel settings.
+ *
+ * @addtogroup config
+ * @details Kernel related settings and hooks.
+ * @{
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/projectkb/signature65/config.h b/keyboards/projectkb/signature65/config.h
new file mode 100644
index 0000000000..f37085c190
--- /dev/null
+++ b/keyboards/projectkb/signature65/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2020 MechMerlin
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x0159
+#define PRODUCT_ID 0x0165
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Project Keyboard
+#define PRODUCT Signature65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+#define MATRIX_COL_PINS { B14, A2, B9, B8, B5, B4, B3, A15, B11, B10, B2, A3, B1, B0, A4, A5 }
+// 1 2 3 4 5
+#define MATRIX_ROW_PINS { A8, A9, B13, A6, A7 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/projectkb/signature65/halconf.h b/keyboards/projectkb/signature65/halconf.h
new file mode 100644
index 0000000000..0df5c77d32
--- /dev/null
+++ b/keyboards/projectkb/signature65/halconf.h
@@ -0,0 +1,37 @@
+/*
+ ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file templates/halconf.h
+ * @brief HAL configuration header.
+ * @details HAL configuration file, this file allows to enable or disable the
+ * various device drivers from your application. You may also use
+ * this file in order to override the device drivers default settings.
+ *
+ * @addtogroup HAL_CONF
+ * @{
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/projectkb/signature65/info.json b/keyboards/projectkb/signature65/info.json
new file mode 100644
index 0000000000..15e08907b0
--- /dev/null
+++ b/keyboards/projectkb/signature65/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Kepler FC65",
+ "url": "https://store.projectkeyboard.com",
+ "maintainer": "projectkeyboard",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Backspace", "x":13.5, "y":1, "w":1.5}, {"label":"Pg Up", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Pg Dn", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"Fn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/projectkb/signature65/keymaps/default/keymap.c b/keyboards/projectkb/signature65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..46927246ca
--- /dev/null
+++ b/keyboards/projectkb/signature65/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+}; \ No newline at end of file
diff --git a/keyboards/projectkb/signature65/keymaps/via/keymap.c b/keyboards/projectkb/signature65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cbebc20952
--- /dev/null
+++ b/keyboards/projectkb/signature65/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+}; \ No newline at end of file
diff --git a/keyboards/projectkb/signature65/keymaps/via/rules.mk b/keyboards/projectkb/signature65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/projectkb/signature65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/projectkb/signature65/mcuconf.h b/keyboards/projectkb/signature65/mcuconf.h
new file mode 100644
index 0000000000..630bfa7093
--- /dev/null
+++ b/keyboards/projectkb/signature65/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/projectkb/signature87/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 TRUE
+
diff --git a/keyboards/projectkb/signature65/readme.md b/keyboards/projectkb/signature65/readme.md
new file mode 100644
index 0000000000..81fd434ff4
--- /dev/null
+++ b/keyboards/projectkb/signature65/readme.md
@@ -0,0 +1,20 @@
+# Signature65
+
+Project Keyboard ANSI only PCB for Kepler FC65.
+
+* Keyboard Maintainer: [projectkeyboard](https://github.com/projectkeyboard)
+* Hardware Supported: STM32F072CBU6
+* Hardware Availability: [projectkeyboard](https://store.projectkeyboard.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make projectkb/signature65:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset switch/button**: Set the dipswitch to the "on" position. Briefly press the button on the back of the PCB.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
diff --git a/keyboards/projectkb/signature65/rules.mk b/keyboards/projectkb/signature65/rules.mk
new file mode 100644
index 0000000000..d08b1dfd88
--- /dev/null
+++ b/keyboards/projectkb/signature65/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/projectkb/signature65/signature65.c b/keyboards/projectkb/signature65/signature65.c
new file mode 100644
index 0000000000..c5255dddb9
--- /dev/null
+++ b/keyboards/projectkb/signature65/signature65.c
@@ -0,0 +1,17 @@
+ /* Copyright 2022 Project Keyboard
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "signature65.h"
diff --git a/keyboards/projectkb/signature65/signature65.h b/keyboards/projectkb/signature65/signature65.h
new file mode 100644
index 0000000000..89aa10e23a
--- /dev/null
+++ b/keyboards/projectkb/signature65/signature65.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Project Keyboard
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define KNO KC_NO
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3F, \
+ K40, K41, K42, K45, K49, K4A, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, KNO, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KNO, K2D, KNO, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KNO, K3C, K3D, KNO, K3F }, \
+ { K40, K41, K42, KNO, KNO, K45, KNO, KNO, KNO, K49, K4A, KNO, K4C, K4D, KNO, K4F } \
+}
diff --git a/keyboards/projectkb/signature87/rules.mk b/keyboards/projectkb/signature87/rules.mk
index 8fdbfde71b..3ea9f22486 100644
--- a/keyboards/projectkb/signature87/rules.mk
+++ b/keyboards/projectkb/signature87/rules.mk
@@ -5,15 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/prototypist/j01/rules.mk b/keyboards/prototypist/j01/rules.mk
index f8d06dd9f7..e3f81ddc4d 100644
--- a/keyboards/prototypist/j01/rules.mk
+++ b/keyboards/prototypist/j01/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/psuieee/pluto12/config.h b/keyboards/psuieee/pluto12/config.h
new file mode 100644
index 0000000000..60d3f0a501
--- /dev/null
+++ b/keyboards/psuieee/pluto12/config.h
@@ -0,0 +1,138 @@
+// Copyright 2021 Willem McGloughlin (wymcg)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4747
+#define PRODUCT_ID 0x7012
+#define DEVICE_VER 0x0001
+#define MANUFACTURER psuieee
+#define PRODUCT pluto12
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D0, D4, C6 }
+#define MATRIX_COL_PINS { D7, E6, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/psuieee/pluto12/info.json b/keyboards/psuieee/pluto12/info.json
new file mode 100644
index 0000000000..a48b687fb1
--- /dev/null
+++ b/keyboards/psuieee/pluto12/info.json
@@ -0,0 +1,23 @@
+{
+ "keyboard_name": "pluto12",
+ "url": "https://github.com/psuieee/pluto12",
+ "maintainer": "wymcg",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "M1", "x": 0, "y": 0 },
+ { "label": "M2", "x": 1, "y": 0 },
+ { "label": "M3", "x": 2, "y": 0 },
+ { "label": "M4", "x": 3, "y": 0 },
+ { "label": "M5", "x": 0, "y": 1 },
+ { "label": "M6", "x": 1, "y": 1 },
+ { "label": "M7", "x": 2, "y": 1 },
+ { "label": "M8", "x": 3, "y": 1 },
+ { "label": "M9", "x": 0, "y": 2 },
+ { "label": "M10", "x": 1, "y": 2 },
+ { "label": "M11", "x": 2, "y": 2 },
+ { "label": "M12", "x": 3, "y": 2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/psuieee/pluto12/keymaps/default/keymap.c b/keyboards/psuieee/pluto12/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1c09c4fc83
--- /dev/null
+++ b/keyboards/psuieee/pluto12/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2021 Will McGLoughlin (wymcg)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_PGUP, KC_MUTE, KC_VOLD, KC_VOLU,
+ KC_PGDN, KC_MPLY, KC_MPRV, KC_MNXT,
+ KC_NO, KC_HOME, KC_END, OSL(_FN)
+ ),
+ [_FN] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4,
+ KC_F5, KC_F6, KC_F7, KC_F8,
+ KC_F9, KC_F10, KC_F11, KC_F12
+ )
+};
diff --git a/keyboards/psuieee/pluto12/keymaps/default/readme.md b/keyboards/psuieee/pluto12/keymaps/default/readme.md
new file mode 100644
index 0000000000..8416c0fe61
--- /dev/null
+++ b/keyboards/psuieee/pluto12/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for pluto12
diff --git a/keyboards/psuieee/pluto12/pluto12.c b/keyboards/psuieee/pluto12/pluto12.c
new file mode 100644
index 0000000000..c08911493c
--- /dev/null
+++ b/keyboards/psuieee/pluto12/pluto12.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Will McGloughlin (@wymcg)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "pluto12.h"
diff --git a/keyboards/psuieee/pluto12/pluto12.h b/keyboards/psuieee/pluto12/pluto12.h
new file mode 100644
index 0000000000..7a01de10f7
--- /dev/null
+++ b/keyboards/psuieee/pluto12/pluto12.h
@@ -0,0 +1,24 @@
+// Copyright 2021 Will McGloughlin (@wymcg)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23 \
+) { \
+ {K00, K01, K02, K03}, \
+ {K10, K11, K12, K13}, \
+ {K20, K21, K22, K23} \
+}
diff --git a/keyboards/psuieee/pluto12/readme.md b/keyboards/psuieee/pluto12/readme.md
new file mode 100644
index 0000000000..bfdafb3b2d
--- /dev/null
+++ b/keyboards/psuieee/pluto12/readme.md
@@ -0,0 +1,27 @@
+# pluto12
+
+![pluto12](https://i.imgur.com/XYtwexoh.jpg)
+
+The pluto12 is a 4x3 macropad designed for use in the Penn State IEEE Student Chapter's [2021-22 workshop series](https://github.com/psuieee/projects2021). Designed by the 2021-22 Penn State IEEE Projects Committee.
+
+* Keyboard Maintainer: [Will McGloughlin](https://github.com/wymcg)
+* Hardware Supported: Pro Micro and derivatives
+* Hardware Availability: [PCB and case files](https://github.com/psuieee/pluto12)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make psuieee/pluto12:default
+
+Flashing example for this keyboard:
+
+ make psuieee/pluto12:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/psuieee/pluto12/rules.mk b/keyboards/psuieee/pluto12/rules.mk
new file mode 100644
index 0000000000..515ca5621f
--- /dev/null
+++ b/keyboards/psuieee/pluto12/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pteron36/keymaps/via/keymap.c b/keyboards/pteron36/keymaps/via/keymap.c
index 40e3088a8e..47533efc93 100644
--- a/keyboards/pteron36/keymaps/via/keymap.c
+++ b/keyboards/pteron36/keymaps/via/keymap.c
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
diff --git a/keyboards/pteron36/pteron36.c b/keyboards/pteron36/pteron36.c
index b7f7d8d44d..1281b5306e 100644
--- a/keyboards/pteron36/pteron36.c
+++ b/keyboards/pteron36/pteron36.c
@@ -36,7 +36,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
return true;
}
//common oled support.
-#ifdef OLED_DRIVER_ENABLE
+#ifdef OLED_ENABLE
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
@@ -44,7 +44,7 @@ bool oled_task_kb(void) {
if (is_keyboard_master()) {
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
- case _QWERTY:
+ case 0:
oled_write_ln_P(PSTR("Default"), false);
break;
default:
diff --git a/keyboards/pteron36/rules.mk b/keyboards/pteron36/rules.mk
index a12be26351..803fa4dcca 100644
--- a/keyboards/pteron36/rules.mk
+++ b/keyboards/pteron36/rules.mk
@@ -12,14 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
-OLED_DRIVER_ENABLE = yes # OLED display
+OLED_ENABLE = yes # OLED display
ENCODER_ENABLE = yes # Encoder support
SPLIT_KEYBOARD = yes # Split enable
diff --git a/keyboards/puck/rules.mk b/keyboards/puck/rules.mk
index 778604b8b5..89e2608f2d 100644
--- a/keyboards/puck/rules.mk
+++ b/keyboards/puck/rules.mk
@@ -5,18 +5,14 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/punk75/rules.mk b/keyboards/punk75/rules.mk
index c58fe9d0ca..c2e51c239c 100644
--- a/keyboards/punk75/rules.mk
+++ b/keyboards/punk75/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/pursuit40/rules.mk b/keyboards/pursuit40/rules.mk
index cf5d2e685d..85eec9079f 100644
--- a/keyboards/pursuit40/rules.mk
+++ b/keyboards/pursuit40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/q4z/rules.mk b/keyboards/q4z/rules.mk
index a01184d679..d2c0e0b0a9 100644
--- a/keyboards/q4z/rules.mk
+++ b/keyboards/q4z/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/qaz/rules.mk b/keyboards/qaz/rules.mk
index 7cd5f80392..d946d8641a 100644
--- a/keyboards/qaz/rules.mk
+++ b/keyboards/qaz/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/quad_h/lb75/rules.mk b/keyboards/quad_h/lb75/rules.mk
index d6b0bdad95..63a57dcadb 100644
--- a/keyboards/quad_h/lb75/rules.mk
+++ b/keyboards/quad_h/lb75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/quantrik/kyuu/keymaps/default/config.h b/keyboards/quantrik/kyuu/keymaps/default/config.h
deleted file mode 100644
index 60dd02a9d0..0000000000
--- a/keyboards/quantrik/kyuu/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 mechmerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/quantrik/kyuu/rules.mk b/keyboards/quantrik/kyuu/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/quantrik/kyuu/rules.mk
+++ b/keyboards/quantrik/kyuu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/quark/keymaps/ajp10304/keymap.c b/keyboards/quark/keymaps/ajp10304/keymap.c
index c55e99af79..273fbc536f 100644
--- a/keyboards/quark/keymaps/ajp10304/keymap.c
+++ b/keyboards/quark/keymaps/ajp10304/keymap.c
@@ -37,6 +37,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
),
+/* Colemak-DHm
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
+ MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) ,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
+ MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
+),
+
/* Function
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
@@ -92,20 +110,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------.
+ * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+-------|
+ * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | |Qwerty |
+ * |------+------+------+------+------+------|------+------+------+------+------+-------|
+ * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | |Colemak|
+ * |------+------+------+------+------+------+------+------+------+------+------+-------|
+ * | | | | | | | | | | | |
+ * `------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
- TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY ,
+ TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/quark/keymaps/ajp10304/readme.md b/keyboards/quark/keymaps/ajp10304/readme.md
index 83af702e2a..5c9169fa47 100644
--- a/keyboards/quark/keymaps/ajp10304/readme.md
+++ b/keyboards/quark/keymaps/ajp10304/readme.md
@@ -22,6 +22,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +82,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/keyboards/quark/rules.mk b/keyboards/quark/rules.mk
index 0cd8f87863..f56c1ed29e 100644
--- a/keyboards/quark/rules.mk
+++ b/keyboards/quark/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/qvex/lynepad/keymaps/default/keymap.c b/keyboards/qvex/lynepad/keymaps/default/keymap.c
index 11d04f60a6..142f295de6 100644
--- a/keyboards/qvex/lynepad/keymaps/default/keymap.c
+++ b/keyboards/qvex/lynepad/keymaps/default/keymap.c
@@ -82,7 +82,7 @@ void matrix_scan_user(void) {
unregister_code16(KC_MS_BTN3);
}
/*
- * Encoder sets ALL values when center is pressed so bail out at this point\
+ * Encoder sets ALL values when center is pressed so bail out at this point
* to avoid the rest of the encoder buttons registering events
*/
return;
diff --git a/keyboards/qvex/lynepad/rules.mk b/keyboards/qvex/lynepad/rules.mk
index 6a1a813973..78ee3e942b 100644
--- a/keyboards/qvex/lynepad/rules.mk
+++ b/keyboards/qvex/lynepad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable the encoders
diff --git a/keyboards/qwertyydox/rules.mk b/keyboards/qwertyydox/rules.mk
index dd4a6ae3ec..9bcd2f0741 100644
--- a/keyboards/qwertyydox/rules.mk
+++ b/keyboards/qwertyydox/rules.mk
@@ -1,18 +1,15 @@
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPLIT_KEYBOARD = yes
diff --git a/keyboards/rabbit/rabbit68/keymaps/default/config.h b/keyboards/rabbit/rabbit68/keymaps/default/config.h
deleted file mode 100644
index 1da00a2979..0000000000
--- a/keyboards/rabbit/rabbit68/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Kai Eckert
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/rabbit/rabbit68/rules.mk b/keyboards/rabbit/rabbit68/rules.mk
index 078ff3ea65..57629ada15 100644
--- a/keyboards/rabbit/rabbit68/rules.mk
+++ b/keyboards/rabbit/rabbit68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rabbit_capture_plan/rules.mk b/keyboards/rabbit_capture_plan/rules.mk
index 7fa142f623..d6f3529e10 100644
--- a/keyboards/rabbit_capture_plan/rules.mk
+++ b/keyboards/rabbit_capture_plan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rainkeeb/rules.mk b/keyboards/rainkeeb/rules.mk
index 058ed8e577..a4b7fca0d1 100644
--- a/keyboards/rainkeeb/rules.mk
+++ b/keyboards/rainkeeb/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/ramonimbao/aelith/rules.mk b/keyboards/ramonimbao/aelith/rules.mk
index de578c57a5..7a3f004b10 100644
--- a/keyboards/ramonimbao/aelith/rules.mk
+++ b/keyboards/ramonimbao/aelith/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/chevron/keymaps/via/keymap.c b/keyboards/ramonimbao/chevron/keymaps/via/keymap.c
index d34b06a999..190a39e257 100644
--- a/keyboards/ramonimbao/chevron/keymaps/via/keymap.c
+++ b/keyboards/ramonimbao/chevron/keymaps/via/keymap.c
@@ -75,10 +75,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
encoder_cw.pressed = true;
encoder_cw.time = (timer_read() | 1);
action_exec(encoder_cw);
+ wait_ms(20);
} else {
encoder_ccw.pressed = true;
encoder_ccw.time = (timer_read() | 1);
action_exec(encoder_ccw);
+ wait_ms(20);
}
return true;
}
diff --git a/keyboards/ramonimbao/chevron/rules.mk b/keyboards/ramonimbao/chevron/rules.mk
index 533e0f2cc8..6d43328436 100644
--- a/keyboards/ramonimbao/chevron/rules.mk
+++ b/keyboards/ramonimbao/chevron/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/herringbone/pro/config.h b/keyboards/ramonimbao/herringbone/pro/config.h
index 25249456f9..4aab52fcb5 100644
--- a/keyboards/ramonimbao/herringbone/pro/config.h
+++ b/keyboards/ramonimbao/herringbone/pro/config.h
@@ -51,8 +51,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { C3 }
#define ENCODERS_PAD_B { C2 }
-#define ENCODER_DIRECTION_FLIP
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
index fceca1a8bd..8acc017679 100644
--- a/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
+++ b/keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
@@ -88,12 +88,14 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
encoder_cw.pressed = true;
encoder_cw.time = (timer_read() | 1);
action_exec(encoder_cw);
+ wait_ms(20);
anim_sleep = timer_read32();
oled_on();
} else {
encoder_ccw.pressed = true;
encoder_ccw.time = (timer_read() | 1);
action_exec(encoder_ccw);
+ wait_ms(20);
anim_sleep = timer_read32();
oled_on();
}
diff --git a/keyboards/ramonimbao/herringbone/pro/rules.mk b/keyboards/ramonimbao/herringbone/pro/rules.mk
index aa551caae0..b91f11a68d 100644
--- a/keyboards/ramonimbao/herringbone/pro/rules.mk
+++ b/keyboards/ramonimbao/herringbone/pro/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/herringbone/v1/rules.mk b/keyboards/ramonimbao/herringbone/v1/rules.mk
index c1b6074978..9493018f5c 100644
--- a/keyboards/ramonimbao/herringbone/v1/rules.mk
+++ b/keyboards/ramonimbao/herringbone/v1/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/mona/v1/rules.mk b/keyboards/ramonimbao/mona/v1/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/ramonimbao/mona/v1/rules.mk
+++ b/keyboards/ramonimbao/mona/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/mona/v1_1/rules.mk b/keyboards/ramonimbao/mona/v1_1/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/ramonimbao/mona/v1_1/rules.mk
+++ b/keyboards/ramonimbao/mona/v1_1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/mona/v32a/config.h b/keyboards/ramonimbao/mona/v32a/config.h
new file mode 100644
index 0000000000..9cd47cd024
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/config.h
@@ -0,0 +1,62 @@
+/*
+Copyright 2020 Ramon Imbao
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xB16B
+#define PRODUCT_ID 0x4032
+#define DEVICE_VER 0x0011
+#define MANUFACTURER Ramon Imbao
+#define PRODUCT Mona
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { C2, C3, D6, D1, A6 }
+#define MATRIX_COL_PINS { B4, B3, B2, B1, B0, A0, A1, A2, A5, A4, A3, A7, D5, C7, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* indicator LEDs */
+#define LED_CAPS_LOCK_PIN C1
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/ramonimbao/mona/v32a/info.json b/keyboards/ramonimbao/mona/v32a/info.json
new file mode 100644
index 0000000000..8a2e11f13c
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/info.json
@@ -0,0 +1,503 @@
+{
+ "keyboard_name": "Mona",
+ "url": "",
+ "maintainer": "Ramon Imbao",
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":0, "y":1, "w":1.5},
+
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":7},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":7},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.5},
+ {"x":6.25, "y":4},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ramonimbao/mona/v32a/keymaps/default/keymap.c b/keyboards/ramonimbao/mona/v32a/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5cf76c8585
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/ramonimbao/mona/v32a/keymaps/iso/keymap.c b/keyboards/ramonimbao/mona/v32a/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..704c8bf46f
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/keymaps/iso/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_60_iso(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_iso(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/ramonimbao/mona/v32a/keymaps/via/keymap.c b/keyboards/ramonimbao/mona/v32a/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e5a714314e
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2020 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ ),
+
+ [1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/ramonimbao/mona/v32a/keymaps/via/rules.mk b/keyboards/ramonimbao/mona/v32a/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/ramonimbao/mona/v32a/readme.md b/keyboards/ramonimbao/mona/v32a/readme.md
new file mode 100644
index 0000000000..61a3deefaa
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/readme.md
@@ -0,0 +1,20 @@
+# Mona v1.1 (ATmega32A version)
+
+![Mona v1.1](https://i.imgur.com/VaWcIkjl.png)
+
+A gummy-worm o-ring mount 60% marble keyboard. Now with ALPS/MX, Caps Lock LED, and split spacebar support. ATmega32A version exists because I need alternatives because of the chip shortage.
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: ATmega32A
+
+To get to the bootloader, with the USB cable plugged in, press the `RESET` button on the back of the PCB.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ramonimbao/mona/v32a:default
+
+Flashing example for this keyboard:
+
+ make ramonimbao/mona/v32a:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ramonimbao/mona/v32a/rules.mk b/keyboards/ramonimbao/mona/v32a/rules.mk
new file mode 100644
index 0000000000..0ed8962504
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32a
+
+# Processor frequency
+F_CPU = 16000000
+
+# Bootloader selection
+BOOTLOADER = usbasploader
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/mona/v32a/v32a.c b/keyboards/ramonimbao/mona/v32a/v32a.c
new file mode 100644
index 0000000000..cc35f4d5ff
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/v32a.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "v32a.h"
diff --git a/keyboards/ramonimbao/mona/v32a/v32a.h b/keyboards/ramonimbao/mona/v32a/v32a.h
new file mode 100644
index 0000000000..ac58b851a6
--- /dev/null
+++ b/keyboards/ramonimbao/mona/v32a/v32a.h
@@ -0,0 +1,113 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define XXX KC_NO
+
+#define LAYOUT_60_ansi( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e }, \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
+ k40, k41, k42, k46, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, XXX, k4d, k4e }, \
+}
+
+#define LAYOUT_60_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k41, k42, k46, k4a, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e }, \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
+ k40, k41, k42, k46, k4a, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, XXX, k4d, k4e }, \
+}
+
+#define LAYOUT_60_iso_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
+ k40, k41, k42, k46, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, XXX, k4d, k4e }, \
+}
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
+ k40, k41, k42, k45, k46, k49, k4a, k4b, k4d, k4e \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
+ { k40, k41, k42, XXX, XXX, k45, k46, XXX, XXX, k49, k4a, k4b, XXX, k4d, k4e }, \
+}
diff --git a/keyboards/ramonimbao/squishy65/rules.mk b/keyboards/ramonimbao/squishy65/rules.mk
index 47eb0cfb49..ac6894476f 100644
--- a/keyboards/ramonimbao/squishy65/rules.mk
+++ b/keyboards/ramonimbao/squishy65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/squishyfrl/info.json b/keyboards/ramonimbao/squishyfrl/info.json
index 03cdda4fd9..15a1cd1f86 100644
--- a/keyboards/ramonimbao/squishyfrl/info.json
+++ b/keyboards/ramonimbao/squishyfrl/info.json
@@ -67,7 +67,7 @@
{"x":10.25, "y":3},
{"x":11.25, "y":3},
{"x":12.25, "y":3, "w":1.75},
- {"x":14, "y":3}
+ {"x":14, "y":3},
{"x":16.25, "y":3},
{"x":0, "y":4, "w":1.25},
diff --git a/keyboards/ramonimbao/squishyfrl/rules.mk b/keyboards/ramonimbao/squishyfrl/rules.mk
index 14e7810dcc..30dd133d7b 100644
--- a/keyboards/ramonimbao/squishyfrl/rules.mk
+++ b/keyboards/ramonimbao/squishyfrl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/squishytkl/rules.mk b/keyboards/ramonimbao/squishytkl/rules.mk
index 6c83371fc8..d85db040fc 100644
--- a/keyboards/ramonimbao/squishytkl/rules.mk
+++ b/keyboards/ramonimbao/squishytkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/tkl_ff/rules.mk b/keyboards/ramonimbao/tkl_ff/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/ramonimbao/tkl_ff/rules.mk
+++ b/keyboards/ramonimbao/tkl_ff/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ramonimbao/wete/readme.md b/keyboards/ramonimbao/wete/readme.md
index f0f26b78bd..575b342b46 100644
--- a/keyboards/ramonimbao/wete/readme.md
+++ b/keyboards/ramonimbao/wete/readme.md
@@ -1,14 +1,14 @@
-# Wete
+# Wete and Wete R2
-![Wete Keyboard](https://i.imgur.com/dZ4FRar.jpg)
-
-A southpaw full-sized keyboard.
+Southpaw numpad 75% boards.
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
-* Hardware Supported: STM32F072CBT6
+* Hardware Supported: STM32F072 (R1) and ATmega32u4 (R2)
-Make example for this keyboard (after setting up your build environment):
+Make example for these keyboards (after setting up your build environment):
- make ramonimbao/wete:default
+ make ramonimbao/wete/v1:default
+
+ make ramonimbao/wete/v2:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ramonimbao/wete/rules.mk b/keyboards/ramonimbao/wete/rules.mk
index 9d8b0cd386..f4a04ab47f 100644
--- a/keyboards/ramonimbao/wete/rules.mk
+++ b/keyboards/ramonimbao/wete/rules.mk
@@ -1,23 +1 @@
-# MCU name
-MCU = STM32F072
-
-# Bootloader selection
-BOOTLOADER = stm32-dfu
-
-# Build Options
-# comment out to disable the options.
-#
-
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
-COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
-BACKLIGHT_ENABLE = yes
-RGBLIGHT_ENABLE = yes
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+DEFAULT_FOLDER = ramonimbao/wete/v2
diff --git a/keyboards/ramonimbao/wete/chconf.h b/keyboards/ramonimbao/wete/v1/chconf.h
index 18befdb8e1..18befdb8e1 100644
--- a/keyboards/ramonimbao/wete/chconf.h
+++ b/keyboards/ramonimbao/wete/v1/chconf.h
diff --git a/keyboards/ramonimbao/wete/config.h b/keyboards/ramonimbao/wete/v1/config.h
index 3d89550090..3d89550090 100644
--- a/keyboards/ramonimbao/wete/config.h
+++ b/keyboards/ramonimbao/wete/v1/config.h
diff --git a/keyboards/ramonimbao/wete/halconf.h b/keyboards/ramonimbao/wete/v1/halconf.h
index b3de873be1..b3de873be1 100644
--- a/keyboards/ramonimbao/wete/halconf.h
+++ b/keyboards/ramonimbao/wete/v1/halconf.h
diff --git a/keyboards/ramonimbao/wete/info.json b/keyboards/ramonimbao/wete/v1/info.json
index 7886b864ab..7886b864ab 100644
--- a/keyboards/ramonimbao/wete/info.json
+++ b/keyboards/ramonimbao/wete/v1/info.json
diff --git a/keyboards/ramonimbao/wete/keymaps/default/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/default/keymap.c
index 3b68758a67..3b68758a67 100644
--- a/keyboards/ramonimbao/wete/keymaps/default/keymap.c
+++ b/keyboards/ramonimbao/wete/v1/keymaps/default/keymap.c
diff --git a/keyboards/ramonimbao/wete/keymaps/iso/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/iso/keymap.c
index 203a336c78..203a336c78 100644
--- a/keyboards/ramonimbao/wete/keymaps/iso/keymap.c
+++ b/keyboards/ramonimbao/wete/v1/keymaps/iso/keymap.c
diff --git a/keyboards/ramonimbao/wete/keymaps/jis/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c
index 8d65932219..8d65932219 100644
--- a/keyboards/ramonimbao/wete/keymaps/jis/keymap.c
+++ b/keyboards/ramonimbao/wete/v1/keymaps/jis/keymap.c
diff --git a/keyboards/ramonimbao/wete/keymaps/via/config.h b/keyboards/ramonimbao/wete/v1/keymaps/via/config.h
index 4dadf6a169..4dadf6a169 100644
--- a/keyboards/ramonimbao/wete/keymaps/via/config.h
+++ b/keyboards/ramonimbao/wete/v1/keymaps/via/config.h
diff --git a/keyboards/ramonimbao/wete/keymaps/via/keymap.c b/keyboards/ramonimbao/wete/v1/keymaps/via/keymap.c
index 0f1a0bedb1..0f1a0bedb1 100644
--- a/keyboards/ramonimbao/wete/keymaps/via/keymap.c
+++ b/keyboards/ramonimbao/wete/v1/keymaps/via/keymap.c
diff --git a/keyboards/ramonimbao/wete/keymaps/via/rules.mk b/keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk
index 666e72557b..666e72557b 100644
--- a/keyboards/ramonimbao/wete/keymaps/via/rules.mk
+++ b/keyboards/ramonimbao/wete/v1/keymaps/via/rules.mk
diff --git a/keyboards/ramonimbao/wete/mcuconf.h b/keyboards/ramonimbao/wete/v1/mcuconf.h
index 7a2e877763..7a2e877763 100644
--- a/keyboards/ramonimbao/wete/mcuconf.h
+++ b/keyboards/ramonimbao/wete/v1/mcuconf.h
diff --git a/keyboards/ramonimbao/wete/v1/readme.md b/keyboards/ramonimbao/wete/v1/readme.md
new file mode 100644
index 0000000000..f0f26b78bd
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v1/readme.md
@@ -0,0 +1,14 @@
+# Wete
+
+![Wete Keyboard](https://i.imgur.com/dZ4FRar.jpg)
+
+A southpaw full-sized keyboard.
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: STM32F072CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ramonimbao/wete:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ramonimbao/wete/v1/rules.mk b/keyboards/ramonimbao/wete/v1/rules.mk
new file mode 100644
index 0000000000..117c21de53
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v1/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/ramonimbao/wete/v1/v1.c b/keyboards/ramonimbao/wete/v1/v1.c
new file mode 100644
index 0000000000..b14a7dc738
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v1/v1.c
@@ -0,0 +1,19 @@
+#include "v1.h"
+
+void keyboard_pre_init_user(void) {
+ // Initialize indicator LED pins
+ setPinOutput(A14); // Num Lock
+ setPinOutput(A15); // Scroll Lock
+ setPinOutput(B3); // Caps Lock
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (res) {
+ writePin(A14, !led_state.num_lock);
+ writePin(A15, !led_state.scroll_lock);
+ writePin(B3, !led_state.caps_lock);
+ }
+
+ return res;
+}
diff --git a/keyboards/ramonimbao/wete/wete.h b/keyboards/ramonimbao/wete/v1/v1.h
index 46daf6d6f1..46daf6d6f1 100644
--- a/keyboards/ramonimbao/wete/wete.h
+++ b/keyboards/ramonimbao/wete/v1/v1.h
diff --git a/keyboards/ramonimbao/wete/v2/config.h b/keyboards/ramonimbao/wete/v2/config.h
new file mode 100644
index 0000000000..00cc6593d3
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/config.h
@@ -0,0 +1,163 @@
+/*
+Copyright 2021 Ramon Imbao
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xB16B
+#define PRODUCT_ID 0x00B3
+#define DEVICE_VER 0x3500
+#define MANUFACTURER Ramon Imbao
+#define PRODUCT Wete R2
+
+/* key matrix size */
+#define MATRIX_ROWS 13
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B3, B2, B6, C6, C7, E6, F7, F6, F5, F4, F1, F0, NO_PIN }
+#define MATRIX_COL_PINS { B1, B0, B7, B5, B4, D7, D6, D4, D5, D3 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Encoder pins */
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D1 }
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+
+#define RGB_DI_PIN D0
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 18
+# define RGBLIGHT_HUE_STEP 32
+# define RGBLIGHT_SAT_STEP 32
+# define RGBLIGHT_VAL_STEP 32
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+// # define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+// QoL improvements
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/ramonimbao/wete/v2/info.json b/keyboards/ramonimbao/wete/v2/info.json
new file mode 100644
index 0000000000..8231871a1f
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/info.json
@@ -0,0 +1,350 @@
+{
+ "keyboard_name": "Wete R2",
+ "url": "",
+ "maintainer": "Ramon Imbao",
+ "layouts": {
+ "LAYOUT_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.75, "y":0},
+ {"x":6.75, "y":0},
+ {"x":7.75, "y":0},
+ {"x":8.75, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.75, "y":0},
+ {"x":15.75, "y":0},
+ {"x":16.75, "y":0},
+ {"x":17.75, "y":0},
+ {"x":19.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4.25, "y":1.25},
+ {"x":5.25, "y":1.25},
+ {"x":6.25, "y":1.25},
+ {"x":7.25, "y":1.25},
+ {"x":8.25, "y":1.25},
+ {"x":9.25, "y":1.25},
+ {"x":10.25, "y":1.25},
+ {"x":11.25, "y":1.25},
+ {"x":12.25, "y":1.25},
+ {"x":13.25, "y":1.25},
+ {"x":14.25, "y":1.25},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25, "w":2},
+ {"x":19.25, "y":1.25},
+
+ {"x":0, "y":2.25},
+ {"x":1, "y":2.25},
+ {"x":2, "y":2.25},
+ {"x":3, "y":2.25, "h":2},
+ {"x":4.25, "y":2.25, "w":1.5},
+ {"x":5.75, "y":2.25},
+ {"x":6.75, "y":2.25},
+ {"x":7.75, "y":2.25},
+ {"x":8.75, "y":2.25},
+ {"x":9.75, "y":2.25},
+ {"x":10.75, "y":2.25},
+ {"x":11.75, "y":2.25},
+ {"x":12.75, "y":2.25},
+ {"x":13.75, "y":2.25},
+ {"x":14.75, "y":2.25},
+ {"x":15.75, "y":2.25},
+ {"x":16.75, "y":2.25},
+ {"x":17.75, "y":2.25, "w":1.5},
+ {"x":19.25, "y":2.25},
+
+ {"x":0, "y":3.25},
+ {"x":1, "y":3.25},
+ {"x":2, "y":3.25},
+ {"x":4.25, "y":3.25, "w":1.75},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":9, "y":3.25},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.25},
+ {"x":15, "y":3.25},
+ {"x":16, "y":3.25},
+ {"x":17, "y":3.25, "w":2.25},
+ {"x":19.25, "y":3.25},
+
+ {"x":0, "y":4.25},
+ {"x":1, "y":4.25},
+ {"x":2, "y":4.25},
+ {"x":3, "y":4.25, "h":2},
+ {"x":4.25, "y":4.25, "w":2.25},
+ {"x":6.5, "y":4.25},
+ {"x":7.5, "y":4.25},
+ {"x":8.5, "y":4.25},
+ {"x":9.5, "y":4.25},
+ {"x":10.5, "y":4.25},
+ {"x":11.5, "y":4.25},
+ {"x":12.5, "y":4.25},
+ {"x":13.5, "y":4.25},
+ {"x":14.5, "y":4.25},
+ {"x":15.5, "y":4.25},
+ {"x":16.5, "y":4.25, "w":1.75},
+ {"x":18.25, "y":4.25},
+ {"x":19.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":2},
+ {"x":2, "y":5.25},
+ {"x":4.25, "y":5.25, "w":1.25},
+ {"x":5.5, "y":5.25, "w":1.25},
+ {"x":6.75, "y":5.25, "w":1.25},
+ {"x":8, "y":5.25, "w":6.25},
+ {"x":14.25, "y":5.25, "w":1.25},
+ {"x":15.5, "y":5.25, "w":1.25},
+ {"x":17.25, "y":5.25},
+ {"x":18.25, "y":5.25},
+ {"x":19.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.75, "y":0},
+ {"x":6.75, "y":0},
+ {"x":7.75, "y":0},
+ {"x":8.75, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.75, "y":0},
+ {"x":15.75, "y":0},
+ {"x":16.75, "y":0},
+ {"x":17.75, "y":0},
+ {"x":19.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4.25, "y":1.25},
+ {"x":5.25, "y":1.25},
+ {"x":6.25, "y":1.25},
+ {"x":7.25, "y":1.25},
+ {"x":8.25, "y":1.25},
+ {"x":9.25, "y":1.25},
+ {"x":10.25, "y":1.25},
+ {"x":11.25, "y":1.25},
+ {"x":12.25, "y":1.25},
+ {"x":13.25, "y":1.25},
+ {"x":14.25, "y":1.25},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25, "w":2},
+ {"x":19.25, "y":1.25},
+
+ {"x":0, "y":2.25},
+ {"x":1, "y":2.25},
+ {"x":2, "y":2.25},
+ {"x":3, "y":2.25, "h":2},
+ {"x":4.25, "y":2.25, "w":1.5},
+ {"x":5.75, "y":2.25},
+ {"x":6.75, "y":2.25},
+ {"x":7.75, "y":2.25},
+ {"x":8.75, "y":2.25},
+ {"x":9.75, "y":2.25},
+ {"x":10.75, "y":2.25},
+ {"x":11.75, "y":2.25},
+ {"x":12.75, "y":2.25},
+ {"x":13.75, "y":2.25},
+ {"x":14.75, "y":2.25},
+ {"x":15.75, "y":2.25},
+ {"x":16.75, "y":2.25},
+ {"x":19.25, "y":2.25},
+
+ {"x":0, "y":3.25},
+ {"x":1, "y":3.25},
+ {"x":2, "y":3.25},
+ {"x":4.25, "y":3.25, "w":1.75},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":9, "y":3.25},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.25},
+ {"x":15, "y":3.25},
+ {"x":16, "y":3.25},
+ {"x":17, "y":3.25},
+ {"x":18, "y":2.25, "w":1.25, "h":2},
+ {"x":19.25, "y":3.25},
+
+ {"x":0, "y":4.25},
+ {"x":1, "y":4.25},
+ {"x":2, "y":4.25},
+ {"x":3, "y":4.25, "h":2},
+ {"x":4.25, "y":4.25, "w":1.25},
+ {"x":5.5, "y":4.25},
+ {"x":6.5, "y":4.25},
+ {"x":7.5, "y":4.25},
+ {"x":8.5, "y":4.25},
+ {"x":9.5, "y":4.25},
+ {"x":10.5, "y":4.25},
+ {"x":11.5, "y":4.25},
+ {"x":12.5, "y":4.25},
+ {"x":13.5, "y":4.25},
+ {"x":14.5, "y":4.25},
+ {"x":15.5, "y":4.25},
+ {"x":16.5, "y":4.25, "w":1.75},
+ {"x":18.25, "y":4.25},
+ {"x":19.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":2},
+ {"x":2, "y":5.25},
+ {"x":4.25, "y":5.25, "w":1.25},
+ {"x":5.5, "y":5.25, "w":1.25},
+ {"x":6.75, "y":5.25, "w":1.25},
+ {"x":8, "y":5.25, "w":6.25},
+ {"x":14.25, "y":5.25, "w":1.25},
+ {"x":15.5, "y":5.25, "w":1.25},
+ {"x":17.25, "y":5.25},
+ {"x":18.25, "y":5.25},
+ {"x":19.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.75, "y":0},
+ {"x":6.75, "y":0},
+ {"x":7.75, "y":0},
+ {"x":8.75, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.75, "y":0},
+ {"x":15.75, "y":0},
+ {"x":16.75, "y":0},
+ {"x":17.75, "y":0},
+ {"x":19.5, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4.25, "y":1.25},
+ {"x":5.25, "y":1.25},
+ {"x":6.25, "y":1.25},
+ {"x":7.25, "y":1.25},
+ {"x":8.25, "y":1.25},
+ {"x":9.25, "y":1.25},
+ {"x":10.25, "y":1.25},
+ {"x":11.25, "y":1.25},
+ {"x":12.25, "y":1.25},
+ {"x":13.25, "y":1.25},
+ {"x":14.25, "y":1.25},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+ {"x":18.25, "y":1.25},
+ {"x":19.25, "y":1.25},
+
+ {"x":0, "y":2.25},
+ {"x":1, "y":2.25},
+ {"x":2, "y":2.25},
+ {"x":3, "y":2.25},
+ {"x":4.25, "y":2.25, "w":1.5},
+ {"x":5.75, "y":2.25},
+ {"x":6.75, "y":2.25},
+ {"x":7.75, "y":2.25},
+ {"x":8.75, "y":2.25},
+ {"x":9.75, "y":2.25},
+ {"x":10.75, "y":2.25},
+ {"x":11.75, "y":2.25},
+ {"x":12.75, "y":2.25},
+ {"x":13.75, "y":2.25},
+ {"x":14.75, "y":2.25},
+ {"x":15.75, "y":2.25},
+ {"x":16.75, "y":2.25},
+ {"x":17.75, "y":2.25, "w":1.5},
+ {"x":19.25, "y":2.25},
+
+ {"x":0, "y":3.25},
+ {"x":1, "y":3.25},
+ {"x":2, "y":3.25},
+ {"x":3, "y":3.25},
+ {"x":4.25, "y":3.25, "w":1.75},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":9, "y":3.25},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.25},
+ {"x":15, "y":3.25},
+ {"x":16, "y":3.25},
+ {"x":17, "y":3.25, "w":2.25},
+ {"x":19.25, "y":3.25},
+
+ {"x":0, "y":4.25},
+ {"x":1, "y":4.25},
+ {"x":2, "y":4.25},
+ {"x":3, "y":4.25},
+ {"x":4.25, "y":4.25, "w":1.25},
+ {"x":5.5, "y":4.25},
+ {"x":6.5, "y":4.25},
+ {"x":7.5, "y":4.25},
+ {"x":8.5, "y":4.25},
+ {"x":9.5, "y":4.25},
+ {"x":10.5, "y":4.25},
+ {"x":11.5, "y":4.25},
+ {"x":12.5, "y":4.25},
+ {"x":13.5, "y":4.25},
+ {"x":14.5, "y":4.25},
+ {"x":15.5, "y":4.25},
+ {"x":16.5, "y":4.25, "w":1.75},
+ {"x":18.25, "y":4.25},
+ {"x":19.25, "y":4.25},
+
+ {"x":0, "y":5.25},
+ {"x":1, "y":5.25},
+ {"x":2, "y":5.25},
+ {"x":3, "y":5.25},
+ {"x":4.25, "y":5.25, "w":1.25},
+ {"x":5.5, "y":5.25, "w":1.25},
+ {"x":6.75, "y":5.25, "w":1.25},
+ {"x":8, "y":5.25, "w":6.25},
+ {"x":14.25, "y":5.25},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25},
+ {"x":18.25, "y":5.25},
+ {"x":19.25, "y":5.25},
+
+ {"x":19, "y":0, "w":0.5},
+ {"x":20.5, "y":0, "w":0.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3fb3d02b3c
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/keymaps/default/keymap.c
@@ -0,0 +1,97 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ansi(
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+// Can probably still be optimized, but I like it as is for clarity
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF},
+ {1,1, HSV_OFF},
+ {2,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ ll_none,
+ ll_nl,
+ ll_cl,
+ ll_clnl,
+ ll_sl,
+ ll_slnl,
+ ll_slcl
+);
+
+void keyboard_post_init_kb(void) {
+ rgblight_layers = rgb_layers;
+
+ keyboard_post_init_user();
+}
+
+bool led_update_kb (led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (res) {
+ uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock;
+ for (uint8_t i=0; i<7; i++) {
+ rgblight_set_layer_state(i, false);
+ }
+ if (lock_bits < 7) {
+ rgblight_set_layer_state(lock_bits, true);
+ }
+ }
+
+ return res;
+}
+#endif
diff --git a/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..a90c1869fd
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/keymaps/iso/keymap.c
@@ -0,0 +1,97 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso(
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END,
+ KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT, KC_PGUP,
+ KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+// Can probably still be optimized, but I like it as is for clarity
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF},
+ {1,1, HSV_OFF},
+ {2,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ ll_none,
+ ll_nl,
+ ll_cl,
+ ll_clnl,
+ ll_sl,
+ ll_slnl,
+ ll_slcl
+);
+
+void keyboard_post_init_kb(void) {
+ rgblight_layers = rgb_layers;
+
+ keyboard_post_init_user();
+}
+
+bool led_update_kb (led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (res) {
+ uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock;
+ for (uint8_t i=0; i<7; i++) {
+ rgblight_set_layer_state(i, false);
+ }
+ if (lock_bits < 7) {
+ rgblight_set_layer_state(lock_bits, true);
+ }
+ }
+
+ return res;
+}
+#endif
diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/config.h b/keyboards/ramonimbao/wete/v2/keymaps/via/config.h
new file mode 100644
index 0000000000..c7cec8a9d7
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021 Ramon Imbao
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c b/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d9d5f8e8dc
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/keymaps/via/keymap.c
@@ -0,0 +1,135 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_HOME,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ KC_P4, KC_P5, KC_P6, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_P0, KC_NO, KC_PDOT, KC_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT,
+ KC_VOLD, KC_VOLU
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______
+ ),
+};
+
+keyevent_t encoder_ccw = {
+ .key = (keypos_t){.row = 12, .col = 0},
+ .pressed = false
+};
+
+keyevent_t encoder_cw = {
+ .key = (keypos_t){.row = 12, .col = 1},
+ .pressed = false
+};
+
+void matrix_scan_user(void) {
+ if (IS_PRESSED(encoder_ccw)) {
+ encoder_ccw.pressed = false;
+ encoder_ccw.time = (timer_read() | 1);
+ action_exec(encoder_ccw);
+ }
+
+ if (IS_PRESSED(encoder_cw)) {
+ encoder_cw.pressed = false;
+ encoder_cw.time = (timer_read() | 1);
+ action_exec(encoder_cw);
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (clockwise) {
+ encoder_cw.pressed = true;
+ encoder_cw.time = (timer_read() | 1);
+ action_exec(encoder_cw);
+ } else {
+ encoder_ccw.pressed = true;
+ encoder_ccw.time = (timer_read() | 1);
+ action_exec(encoder_ccw);
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+// Can probably still be optimized, but I like it as is for clarity
+const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF},
+ {1,1, HSV_OFF},
+ {2,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_nl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_clnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF},
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slnl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {1,1, HSV_OFF}
+);
+const rgblight_segment_t PROGMEM ll_slcl[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2,1, HSV_OFF}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ ll_none,
+ ll_nl,
+ ll_cl,
+ ll_clnl,
+ ll_sl,
+ ll_slnl,
+ ll_slcl
+);
+
+void keyboard_post_init_kb(void) {
+ rgblight_layers = rgb_layers;
+
+ keyboard_post_init_user();
+}
+
+bool led_update_kb (led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (res) {
+ uint8_t lock_bits = led_state.scroll_lock << 2 | led_state.caps_lock << 1 | led_state.num_lock;
+ for (uint8_t i=0; i<7; i++) {
+ rgblight_set_layer_state(i, false);
+ }
+ if (lock_bits < 7) {
+ rgblight_set_layer_state(lock_bits, true);
+ }
+ }
+
+ return res;
+}
+#endif
diff --git a/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk b/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/ramonimbao/wete/v2/readme.md b/keyboards/ramonimbao/wete/v2/readme.md
new file mode 100644
index 0000000000..3b33c9bdaa
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/readme.md
@@ -0,0 +1,26 @@
+# Wete R2
+
+![Wete R2](https://i.imgur.com/WKFe7T8l.png)
+
+Round two of the Wete keyboard. Now uses the ATmega32u4, adds an encoder, and switches the indicator LEDs to RGB.
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: ATmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ramonimbao/wete/v2:default
+
+Flashing example for this keyboard:
+
+ make ramonimbao/wete/v2:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the upper left key and plug in the keyboard
+* **Physical reset button**: Briefly press the reset button on the back of the PCB.
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/ramonimbao/wete/v2/rules.mk b/keyboards/ramonimbao/wete/v2/rules.mk
new file mode 100644
index 0000000000..ab62e48e5a
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Rotary encoder
diff --git a/keyboards/ramonimbao/wete/v2/v2.c b/keyboards/ramonimbao/wete/v2/v2.c
new file mode 100644
index 0000000000..de5f32e3ca
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/v2.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "v2.h"
diff --git a/keyboards/ramonimbao/wete/v2/v2.h b/keyboards/ramonimbao/wete/v2/v2.h
new file mode 100644
index 0000000000..75c9430c02
--- /dev/null
+++ b/keyboards/ramonimbao/wete/v2/v2.h
@@ -0,0 +1,110 @@
+/* Copyright 2021 Ramon Imbao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+void adjust_leds(void);
+
+#define ___ KC_NO
+
+
+// Regular numpad layout
+// Full sized backspace
+// Full left shift
+// ANSI enter
+// 1.25 | 1.25 | 1.25 | 6.25 | 1.25 | 1.25 bottom row
+#define LAYOUT_ansi( \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k49, k59, \
+ k60, k70, k61, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k79, \
+ k80, k90, k81, k91, k82, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \
+ ka0, ka1, ka2, kb2, ka3, ka5, ka7, kb7, kb8, ka9, kb9 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \
+ { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \
+ { k30 ,k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, ___, k59 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \
+ { k70, ___, k72, k73, k74, k75, k76, k77, k78, k79 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \
+ { k90, k91, ___, k93, k94, k95, k96, k97, k98, k99 }, \
+ { ka0, ___, ka2, ka3, ___, ka5, ___, ka7, ___, ka9 }, \
+ { ___, ___, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+}
+
+// Regular numpad layout
+// Full sized backspace
+// Split left shift
+// ISO enter
+// 1.25 | 1.25 | 1.25 | 6.25 | 1.25 | 1.25 bottom row
+#define LAYOUT_iso( \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k59, \
+ k60, k70, k61, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k49, k79, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \
+ ka0, ka1, ka2, kb2, ka3, ka5, ka7, kb7, kb8, ka9, kb9 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \
+ { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \
+ { k30 ,k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, ___, k59 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \
+ { k70, ___, k72, k73, k74, k75, k76, k77, k78, k79 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99 }, \
+ { ka0, ___, ka2, ka3, ___, ka5, ___, ka7, ___, ka9 }, \
+ { ___, ___, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+}
+
+// Macro numpad layout
+// Split backspace
+// Split left shift
+// ANSI enter
+// 1.25 | 1.25 | 1.25 | 6.25 | 1 | 1 | 1 bottom row
+// Encoder keymap exposed for VIA
+#define LAYOUT_all( \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k05, k15, k06, k16, k17, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38,k29, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k57, k48, k49, k59, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k67, k77, k78, k79, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, k97, k98, k89, k99, \
+ ka0, kb0, ka1, kb1, ka2, kb2, ka3, ka5, ka7, kb7, ka8, kb8, ka9, kb9, \
+ re0, re1 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, ___, k08, k09 }, \
+ { k10, k11, k12, k13, ___, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, ___ }, \
+ { k30 ,k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49 }, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, ___, k59 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79 }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, ___, k89 }, \
+ { k90, k91, k92, k93, k94, k95, k96, k97, k98, k99 }, \
+ { ka0, ka1, ka2, ka3, ___, ka5, ___, ka7, ka8, ka9 }, \
+ { kb0, kb1, kb2, ___, ___, ___, ___, kb7, kb8, kb9 }, \
+ { re0, re1, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+}
diff --git a/keyboards/ramonimbao/wete/wete.c b/keyboards/ramonimbao/wete/wete.c
deleted file mode 100644
index 181183c704..0000000000
--- a/keyboards/ramonimbao/wete/wete.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "wete.h"
-
-void keyboard_pre_init_user(void) {
- // Initialize indicator LED pins
- setPinOutput(A14); // Num Lock
- setPinOutput(A15); // Scroll Lock
- setPinOutput(B3); // Caps Lock
-}
-
-bool led_update_kb(led_t led_state) {
- bool res = led_update_user(led_state);
- if (res) {
- writePin(A14, !led_state.num_lock);
- writePin(A15, !led_state.scroll_lock);
- writePin(B3, !led_state.caps_lock);
- }
-
- return res;
-}
diff --git a/keyboards/rart/rart45/rules.mk b/keyboards/rart/rart45/rules.mk
index 2057d9c939..d1dde8af62 100644
--- a/keyboards/rart/rart45/rules.mk
+++ b/keyboards/rart/rart45/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rart4x4/rules.mk b/keyboards/rart/rart4x4/rules.mk
index 044487bcfe..5f2a61ec7e 100644
--- a/keyboards/rart/rart4x4/rules.mk
+++ b/keyboards/rart/rart4x4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rart67/rules.mk b/keyboards/rart/rart67/rules.mk
index dd2a91bc83..e3b5ed2af1 100644
--- a/keyboards/rart/rart67/rules.mk
+++ b/keyboards/rart/rart67/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rart67m/keymaps/default/keymap.c b/keyboards/rart/rart67m/keymaps/default/keymap.c
index fcb55816c8..39fc0b31db 100644
--- a/keyboards/rart/rart67m/keymaps/default/keymap.c
+++ b/keyboards/rart/rart67m/keymaps/default/keymap.c
@@ -14,36 +14,128 @@
*/
#include QMK_KEYBOARD_H
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 30
+#define TAP_FRAMES 2
+#define TAP_SPEED 40
+#define ANIM_FRAME_DURATION 200
+#define ANIM_SIZE 512
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
- [2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
+#ifdef OLED_ENABLE
+static uint32_t anim_timer = 0;
+static uint32_t anim_sleep = 0;
+static uint8_t current_idle_frame = 0;
+static uint8_t current_tap_frame = 0;
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-}; \ No newline at end of file
+static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
+ 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+};
+
+static const char PROGMEM prep[][ANIM_SIZE] = {
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+};
+
+static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
+ 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
+ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+};
+
+void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
+ oled_write_raw_P(prep[0], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() >= TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+bool oled_task_user(void) {
+
+ if (get_current_wpm() > 0) {
+ oled_on();
+
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+ return false;
+}
+
+#endif
diff --git a/keyboards/rart/rart67m/keymaps/via/rules.mk b/keyboards/rart/rart67m/keymaps/via/rules.mk
index 2a9abbb4dd..36b7ba9cbc 100644
--- a/keyboards/rart/rart67m/keymaps/via/rules.mk
+++ b/keyboards/rart/rart67m/keymaps/via/rules.mk
@@ -1,3 +1,2 @@
-WPM_ENABLE = yes
VIA_ENABLE = yes
-LTO_ENABLE = yes \ No newline at end of file
+LTO_ENABLE = yes
diff --git a/keyboards/rart/rart67m/rart67m.c b/keyboards/rart/rart67m/rart67m.c
index e696a5cf3e..4aa99c5203 100644
--- a/keyboards/rart/rart67m/rart67m.c
+++ b/keyboards/rart/rart67m/rart67m.c
@@ -13,125 +13,3 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "rart67m.h"
-
-#define IDLE_FRAMES 5
-#define IDLE_SPEED 30
-#define TAP_FRAMES 2
-#define TAP_SPEED 40
-#define ANIM_FRAME_DURATION 200
-#define ANIM_SIZE 512
-#ifdef OLED_ENABLE
-oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- return OLED_ROTATION_180;
-}
-
-bool oled_task_kb(void) {
- if (!oled_task_user()) {
- return false;
- }
-static uint32_t anim_timer = 0;
-static uint32_t anim_sleep = 0;
-static uint8_t current_idle_frame = 0;
-static uint8_t current_tap_frame = 0;
-
- static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
- 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- },
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
- 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
- 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- },
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
- 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- },
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
- 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
- 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- },
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
- 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- }
-
- };
-
- static const char PROGMEM prep[][ANIM_SIZE] = {
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
- 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- }
-
- };
-
- static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
- 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
- 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- },
-
- {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
- 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
- }
-
- };
-
- void animation_phase(void) {
-
- if (get_current_wpm() <=IDLE_SPEED) {
- current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
- oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
- }
-
- if (get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED) {
- oled_write_raw_P(prep[0], ANIM_SIZE);
- }
-
- if (get_current_wpm() >=TAP_SPEED) {
- current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
- oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
- }
- }
-
- if (get_current_wpm() > 0) {
-
- oled_on();
-
- if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- animation_phase();
- }
-
- anim_sleep = timer_read32();
- } else {
- if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
- oled_off();
- } else {
- if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
- anim_timer = timer_read32();
- animation_phase();
- }
- }
- }
- return false;
-}
-
-#endif
diff --git a/keyboards/rart/rart67m/rules.mk b/keyboards/rart/rart67m/rules.mk
index d524f32847..5677dc377b 100644
--- a/keyboards/rart/rart67m/rules.mk
+++ b/keyboards/rart/rart67m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rart75/rules.mk b/keyboards/rart/rart75/rules.mk
index a256d126cf..a5f27d5b1a 100644
--- a/keyboards/rart/rart75/rules.mk
+++ b/keyboards/rart/rart75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rart75m/rules.mk b/keyboards/rart/rart75m/rules.mk
index 0b2ca0a4c1..ffaadf24af 100644
--- a/keyboards/rart/rart75m/rules.mk
+++ b/keyboards/rart/rart75m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rartand/rules.mk b/keyboards/rart/rartand/rules.mk
index 4eec21d3ad..1bef27aa8a 100644
--- a/keyboards/rart/rartand/rules.mk
+++ b/keyboards/rart/rartand/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rartland/rules.mk b/keyboards/rart/rartland/rules.mk
index b490b53538..a8e410c1ad 100644
--- a/keyboards/rart/rartland/rules.mk
+++ b/keyboards/rart/rartland/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rartlice/rules.mk b/keyboards/rart/rartlice/rules.mk
index 9fb946c3d2..e46ca1a40e 100644
--- a/keyboards/rart/rartlice/rules.mk
+++ b/keyboards/rart/rartlice/rules.mk
@@ -12,13 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
WS2812_DRIVER = spi
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
diff --git a/keyboards/rart/rartlite/rules.mk b/keyboards/rart/rartlite/rules.mk
index e0923782c9..1145bd5a43 100644
--- a/keyboards/rart/rartlite/rules.mk
+++ b/keyboards/rart/rartlite/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rart/rartpad/rules.mk b/keyboards/rart/rartpad/rules.mk
index 128194a031..80e5d192ce 100644
--- a/keyboards/rart/rartpad/rules.mk
+++ b/keyboards/rart/rartpad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/readme.md b/keyboards/readme.md
index a23d0845b2..856be49093 100644
--- a/keyboards/readme.md
+++ b/keyboards/readme.md
@@ -32,35 +32,4 @@ Designed and built in Felton, CA, Clueboards keyboard emphasize quality and loca
These keyboards are part of the QMK repository, but their manufacturers are not official maintainers of the repository.
-* [9key](/keyboards/9key) &mdash; A 9-key minipad sold by Bishop Keyboards.
-* [Alps64](/keyboards/alps64) &mdash; A 60% keyboard for Alps keyswitches.
-* [AMJ60](/keyboards/amj60) &mdash; DIY/Assembled compact 60% keyboard.
-* [Arrow Pad](/keyboards/handwired/arrow_pad) &mdash; A custom creation by IBNobody.
-* [Atreus](/keyboards/atreus) &mdash; Made by Technomancy.
-* [Bantam44](/keyboards/bantam44) &mdash; It is a 44-key 40% staggered keyboard.
-* [DataHand](/keyboards/handwired/datahand) &mdash; DataHand keyboard converted to use a Teensy board.
-* [Ergodox Infinity](/keyboards/ergodox_infinity) - Ergonomic Split Keyboard by Input Club.
-* [GH60](/keyboards/gh60) &mdash; A 60% Geekhack community-driven project.
-* [GON NerD](/keyboards/gonnerd) &mdash; Korean custom 60% PCB
-* [Happy Hacking Keyboard](/keyboards/hhkb) &mdash; The Happy Hacking keyboard can be hacked with a custom controller to run QMK.
-* [Infinity 60%](/keyboards/infinity60) - &mdash; Compact community keyboard by Input Club.
-* [JD45](/keyboards/jd45) &mdash; Another Geekhack community project, designed by jdcarpe.
-* [JJ40](/keyboards/jj40) &mdash; ps2avrGB based ortholinear sold by KPrepublic
-* [JJ50](/keyboards/jj50) &mdash; A compact 50% (5x12) ortholinear keyboard sold by KPrepublic.
-* [KBD75](/keyboards/kbd75) &mdash; A 75% keyboard made by made by KBDFans.
-* [KC60](/keyboards/kc60) &mdash; A programmable Chinese-made keyboard, lost in the mists of time.
-* [Kinesis Advantage](/keyboards/kinesis) &mdash; Contoured ergonomic keyboard by Kinesis Computer Ergonomics.
-* [KMAC](/keyboards/kmac) &mdash; Korean custom keyboard.
-* [The Kitten Paw](/keyboards/kitten_paw) &mdash; A replacement controller (2016 revision) for the Filco Majestouch by [Bathroom Epiphanies](https://github.com/BathroomEpiphanies).
-* [Lets Split](/keyboards/lets_split) - Split ortholinear 40% keyboard.
-* [Phantom](/keyboards/phantom) &mdash; A tenkeyless kit by Teel, also from Geekhack.
-* [Retro Refit](/keyboards/handwired/retro_refit) &mdash; Another creation by IBNobody.
-* [S60-x](/keyboards/s60_x) &mdash; DIY compact keyboard designed by VinnyCordeiro for Sentraq.
-* [Satan](/keyboards/satan) &mdash; A GH60 variant.
-* [SixKeyBoard](/keyboards/sixkeyboard) &mdash; A 6-key keyboard made by TechKeys.
-* [TheVan 44](/keyboards/tv44) &mdash; A 44-key staggered keybard by Evangs.
-* [WhiteFox](/keyboards/whitefox) &mdash; A 65% keyboard designed as a partnership by matt3o, Massdrop and Input Club
-* [Vision Division](/keyboards/vision_division) &mdash; Full Size / Split Linear Keyboard by IBNobody.
-* [XD004](/keyboards/xd004) &mdash; 1x4 macro keyboard sold by KPrepublic.
-* [XD75](/keyboards/xd75) &mdash; 15x5 ortholinear keyboard by XIUDI.
-* [YMDK NP21](/keyboards/ymdk_np21) &mdash; ps2avrGB based number pad (numpad) sold by YMDK on Aliexpress.
+Since there are too many to list here and keep updated, please see the folder listing instead.
diff --git a/keyboards/rect44/rules.mk b/keyboards/rect44/rules.mk
index ac010606a2..7d2cea91df 100644
--- a/keyboards/rect44/rules.mk
+++ b/keyboards/rect44/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redox/readme.md b/keyboards/redox/readme.md
index d237caf013..27333b518c 100644
--- a/keyboards/redox/readme.md
+++ b/keyboards/redox/readme.md
@@ -11,19 +11,38 @@
**Redox**: the **R**educed **E**rgo**dox** project. More information and building instruction [here](https://github.com/mattdibi/redox-keyboard).
- Keyboard Maintainer: [Mattia Dal Ben](https://github.com/mattdibi)
-- Hardware Supported: Redox PCB rev1.0 w/ Pro Micro
+- Hardware Supported: Redox PCB rev1.0 w/ Pro Micro or Proton C
- Hardware Availability: [Falbatech](https://falba.tech/product-category/keyboard-parts/redox-parts/)
-Make example for this keyboard (after setting up your build environment):
+Make example for this keyboard (after setting up [qmk](https://docs.qmk.fm/#/getting_started_build_tools)):
+To build the Pro Micro firmware, first set your config:
```sh
-make redox/rev1:default
+qmk config user.keyboard=redox/rev1
+```
+or if your using the Proton C:
+```sh
+qmk config user.keyboard=redox/rev1/proton_c
+```
+
+Don't forget to set a layout. There's many to choose from in the keymaps folder.
+```sh
+qmk config user.keymap=default
```
-Example of flashing this keyboard:
+Now you can build your firmware!
+```sh
+qmk compile
+```
+Flashing is also straightforward. Run:
```sh
-make redox/rev1:default:avrdude
+qmk flash
```
+Enter the bootloader when prompted by doing one of the following:
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if you have a layout that has one.
+
+The WS2812 driver is *untested* on the Proton C, but if you choose to use this feature, you will need to source 5v from the Proton's VUSB pin and not use the PCB's dedicated pin which will be 3v3 *and* follow the [documentation](https://docs.qmk.fm/#/ws2812_driver) to enable the correct driver settings.
-See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/redox/rev1/proton_c/config.h b/keyboards/redox/rev1/proton_c/config.h
new file mode 100644
index 0000000000..4ec4a975a4
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/config.h
@@ -0,0 +1,66 @@
+// Copyright 2022 xerootg
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#undef DEVICE_VER
+#define DEVICE_VER 0x0101 // added 1 for the rev1 + proton c
+
+// wiring of each half
+#undef MATRIX_ROW_PINS
+#define MATRIX_ROW_PINS { B5, B3, B2, B1, B0 }
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS { A1, A0, B8, B13, B14, B15, B9 }
+
+// //we are using hardware serial, so lets undef the softserial used otherwise
+
+/* serial.c configuration for split keyboard */
+#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+/*
+ Because the rev1 config defines SOFT_SERIAL_PIN, we need to undef it, redefine it, and also assign
+ it to avoid a redefine error.
+ */
+#undef SOFT_SERIAL_PIN
+#define SOFT_SERIAL_PIN B6 // USART TX pin
+
+#define SERIAL_USART_RX_PIN B7 // USART RX pin
+#define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN // USART TX pin
+
+#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
+ // Check if this feature is necessary with your keyboard design and available on the mcu.
+#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
+ // 0: 460800 baud
+ // 1: 230400 baud (default)
+ // 2: 115200 baud
+ // 3: 57600 baud
+ // 4: 38400 baud
+ // 5: 19200 baud
+#define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1
+#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
+
+/* ws2812 RGB LED */
+#undef RGB_DI_PIN
+#define RGB_DI_PIN A9
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
diff --git a/keyboards/redox/rev1/proton_c/halconf.h b/keyboards/redox/rev1/proton_c/halconf.h
new file mode 100644
index 0000000000..0a2498a62f
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/halconf.h
@@ -0,0 +1,8 @@
+// Copyright 2022 xerootg
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/redox/rev1/proton_c/mcuconf.h b/keyboards/redox/rev1/proton_c/mcuconf.h
new file mode 100644
index 0000000000..ba87dec13d
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/mcuconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 xerootg
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
diff --git a/keyboards/redox/rev1/proton_c/proton_c.c b/keyboards/redox/rev1/proton_c/proton_c.c
new file mode 100644
index 0000000000..796e2c8c3d
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/proton_c.c
@@ -0,0 +1,4 @@
+// Copyright 2022 xerootg
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "proton_c.h"
diff --git a/keyboards/redox/rev1/proton_c/proton_c.h b/keyboards/redox/rev1/proton_c/proton_c.h
new file mode 100644
index 0000000000..d8813d9c4d
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/proton_c.h
@@ -0,0 +1,6 @@
+// Copyright 2022 xerootg
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "rev1.h"
diff --git a/keyboards/redox/rev1/proton_c/rules.mk b/keyboards/redox/rev1/proton_c/rules.mk
new file mode 100644
index 0000000000..829c8365ef
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/rules.mk
@@ -0,0 +1,7 @@
+# Proton C
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+BOOTLOADER = stm32-dfu
+
+# specific to using the serial serial driver
+SERIAL_DRIVER = usart
diff --git a/keyboards/redox/rev1/rev1.h b/keyboards/redox/rev1/rev1.h
index 1bc1531eed..5a24122048 100644
--- a/keyboards/redox/rev1/rev1.h
+++ b/keyboards/redox/rev1/rev1.h
@@ -1,9 +1,12 @@
#pragma once
-#include "../redox.h"
+#include "redox.h"
-#include "quantum.h"
+#if defined(KEYBOARD_redox_rev1_proton_c)
+# include "proton_c.h"
+#endif
+#include "quantum.h"
#ifdef USE_I2C
#include <stddef.h>
diff --git a/keyboards/redox/rules.mk b/keyboards/redox/rules.mk
index 51668fcebf..1ce6f56efe 100644
--- a/keyboards/redox/rules.mk
+++ b/keyboards/redox/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/redox_media/rules.mk b/keyboards/redox_media/rules.mk
index 9186485523..da72e5bead 100644
--- a/keyboards/redox_media/rules.mk
+++ b/keyboards/redox_media/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redox_w/keymaps/dvorak/keymap.c b/keyboards/redox_w/keymaps/dvorak/keymap.c
new file mode 100644
index 0000000000..f2c2d85f04
--- /dev/null
+++ b/keyboards/redox_w/keymaps/dvorak/keymap.c
@@ -0,0 +1,128 @@
+/* Copyright 2021 66f94eae(66f94eae@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+enum layers {
+ _DVORAK,
+ _SYMB,
+ _QWERTY,
+ _ADJUST,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_DVORAK] = LAYOUT(
+//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC, KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_SLSH ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I ,KC_MINS, KC_EQL ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_PGUP ,KC_HOME , KC_END ,KC_PGDN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_RSFT ,
+//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ KC_CAPS ,KC_APP ,KC_LALT ,KC_LGUI , LT(3,KC_MUTE), KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_RALT , KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+),
+
+[_SYMB] = LAYOUT(
+//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_BSPC ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB , KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_WH_U ,KC_COPY ,KC_F6 , KC_F7 ,KC_COPY ,KC_P7 ,KC_P8 ,KC_P9 ,KC_MPRV ,KC_PPLS ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,KC_CUT ,KC_VOLD , KC_VOLU ,KC_CUT ,KC_P4 ,KC_P5 ,KC_P6 ,KC_MNXT ,KC_PMNS ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_WH_L ,KC_UP ,KC_WH_R ,KC_LGUI ,KC_PSTE ,KC_WH_U ,KC_SLCK , KC_NLCK ,KC_WH_D ,KC_PSTE ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PEQL ,KC_PAST ,
+//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ KC_CAPS ,KC_LEFT ,KC_DOWN ,KC_RGHT, LT(3,KC_MUTE) ,KC_SPC ,KC_ESC , KC_DEL ,KC_ENT , KC_APP , KC_P0 ,KC_PDOT ,KC_PENT ,KC_PSLS
+//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+),
+
+[_QWERTY] = LAYOUT(
+//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_BSPC,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_MINS , KC_EQL ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LBRC , KC_RBRC ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_HOME ,KC_PGUP , KC_PGDN ,KC_END ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
+//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ KC_CAPS ,KC_LGUI ,KC_LALT , KC_APP ,LT(3,KC_MUTE) , KC_SPC ,KC_INS , KC_DEL ,KC_ENT , KC_APP , KC_LEFT ,KC_UP ,KC_DOWN ,KC_RGHT
+//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+),
+
+[_ADJUST] = LAYOUT(
+//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
+ KC_GESC ,TO(0) ,TO(1) ,TO(2) ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_RSFT ,
+//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
+ KC_NO ,KC_NO ,KC_NO ,KC_LGUI ,LT(3,KC_MUTE), KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_APP ,KC_NO ,KC_NO ,KC_NO ,KC_NO
+//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
+)
+
+};
+
+layer_state_t layer_state_set_user(layer_state_t state)
+{
+ switch (get_highest_layer(state)) {
+ case _DVORAK:
+ blu_led_off;
+ grn_led_off;
+ break;
+ case _SYMB:
+ blu_led_on;
+ grn_led_off;
+ break;
+ case _QWERTY:
+ blu_led_off;
+ grn_led_on;
+ break;
+ case _ADJUST:
+ blu_led_on;
+ grn_led_on;
+ break;
+ default:
+ break;
+ }
+ return state;
+}
+
+bool led_update_user(led_t led_state)
+{
+ if (led_state.caps_lock) {
+ red_led_on;
+ } else {
+ red_led_off;
+ }
+ if (led_state.num_lock) {
+ wht_led_on;
+ } else {
+ wht_led_off;
+ }
+ return false;
+}
diff --git a/keyboards/redox_w/keymaps/dvorak/readme.md b/keyboards/redox_w/keymaps/dvorak/readme.md
new file mode 100644
index 0000000000..cdc90976a7
--- /dev/null
+++ b/keyboards/redox_w/keymaps/dvorak/readme.md
@@ -0,0 +1,38 @@
+### fork from default layout,and support dvorak layout[defalut layer]
+
+##### only use 3 layers
+
+```
+Keymap: 3 Layers
+-----------------
+stack of layers
+ ____________ precedence
+ / / | high
+ 31 /___________// |
+ : _:_:_:_:_:__ |
+ 3 /___________// | --- adjust
+ 2 /___________// | --- qwerty
+ 1 /___________// | --- symb
+ 0 /___________/ | --- dvorak[default]
+```
+
+defalut LED indicators
+
+RED --------- CAPS LOCK
+
+BLUE ------- SYMB layer
+
+GREEN----- QWERTY layer
+
+WHITE------ NUM LOCK *in my test case,this is inefficient on mac os*
+
+> BLUE and GREEN as a bit flag
+>
+> 0                    0
+
+| BLUE(0) | GREEN(0) | STATUS | DESCRIBE |
+|:-------:|:--------:|:------:|:--------------------------------------------------- |
+| 0 | 0 | 0 | layer 0[dvorak] is active,and blue,green led is off |
+| 1 | 0 | 1 | layer1[symb] is active, and blue led is on |
+| 0 | 1 | 2 | layer 2[qwerty] is active,and green led is on |
+| 1 | 1 | 3 | layer 3[adjust] is active,and blue,green led is on |
diff --git a/keyboards/redox_w/redox_w.c b/keyboards/redox_w/redox_w.c
index 5b86344536..48ea7d3bed 100644
--- a/keyboards/redox_w/redox_w.c
+++ b/keyboards/redox_w/redox_w.c
@@ -1,10 +1,15 @@
#include "redox_w.h"
void led_init(void) {
- DDRD |= (1<<1);
- PORTD |= (1<<1);
- DDRF |= (1<<4) | (1<<5);
- PORTF |= (1<<4) | (1<<5);
+ setPinOutput(D0);
+ setPinOutput(D1);
+ setPinOutput(F4);
+ setPinOutput(F5);
+
+ writePinHigh(D0);
+ writePinHigh(D1);
+ writePinHigh(F4);
+ writePinHigh(F5);
}
diff --git a/keyboards/redox_w/redox_w.h b/keyboards/redox_w/redox_w.h
index 727c3050dc..1ed42c8458 100644
--- a/keyboards/redox_w/redox_w.h
+++ b/keyboards/redox_w/redox_w.h
@@ -2,21 +2,20 @@
#include "quantum.h"
-#define red_led_off PORTF |= (1<<5)
-#define red_led_on PORTF &= ~(1<<5)
-#define blu_led_off PORTF |= (1<<4)
-#define blu_led_on PORTF &= ~(1<<4)
-#define grn_led_off PORTD |= (1<<1)
-#define grn_led_on PORTD &= ~(1<<1)
+#define red_led_off writePinHigh(F5)
+#define red_led_on writePinLow(F5)
+#define blu_led_off writePinHigh(F4)
+#define blu_led_on writePinLow(F4)
+#define grn_led_off writePinHigh(D1)
+#define grn_led_on writePinLow(D1)
+#define wht_led_off writePinHigh(D0)
+#define wht_led_on writePinLow(D0)
-#define set_led_off red_led_off; grn_led_off; blu_led_off
-#define set_led_red red_led_on; grn_led_off; blu_led_off
-#define set_led_blue red_led_off; grn_led_off; blu_led_on
-#define set_led_green red_led_off; grn_led_on; blu_led_off
-#define set_led_yellow red_led_on; grn_led_on; blu_led_off
-#define set_led_magenta red_led_on; grn_led_off; blu_led_on
-#define set_led_cyan red_led_off; grn_led_on; blu_led_on
-#define set_led_white red_led_on; grn_led_on; blu_led_on
+#define set_led_off red_led_off; grn_led_off; blu_led_off; wht_led_off
+#define set_led_red red_led_on; grn_led_off; blu_led_off; wht_led_off
+#define set_led_blue red_led_off; grn_led_off; blu_led_on; wht_led_off
+#define set_led_green red_led_off; grn_led_on; blu_led_off; wht_led_off
+#define set_led_white red_led_off; grn_led_off; blu_led_off; wht_led_on
// This a shortcut to help you visually see your layout.
// The first section contains all of the arguements
diff --git a/keyboards/redox_w/rules.mk b/keyboards/redox_w/rules.mk
index 56e3af6227..a8bd3a027a 100644
--- a/keyboards/redox_w/rules.mk
+++ b/keyboards/redox_w/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
@@ -13,9 +13,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Remote matrix from the wireless bridge
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
# # project specific files
diff --git a/keyboards/redscarf_i/rules.mk b/keyboards/redscarf_i/rules.mk
index 98f297097b..96b80642ad 100644
--- a/keyboards/redscarf_i/rules.mk
+++ b/keyboards/redscarf_i/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redscarf_iiplus/verb/rules.mk b/keyboards/redscarf_iiplus/verb/rules.mk
index b93c0914d5..57075926c7 100755
--- a/keyboards/redscarf_iiplus/verb/rules.mk
+++ b/keyboards/redscarf_iiplus/verb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redscarf_iiplus/verc/rules.mk b/keyboards/redscarf_iiplus/verc/rules.mk
index 12301325d8..21b8b529de 100755
--- a/keyboards/redscarf_iiplus/verc/rules.mk
+++ b/keyboards/redscarf_iiplus/verc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redscarf_iiplus/verd/rules.mk b/keyboards/redscarf_iiplus/verd/rules.mk
index 738782c6f7..8ae7cef9e2 100644
--- a/keyboards/redscarf_iiplus/verd/rules.mk
+++ b/keyboards/redscarf_iiplus/verd/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
- # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
- # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/retro_75/rules.mk b/keyboards/retro_75/rules.mk
index 7cceca328d..f83c2b86bf 100644
--- a/keyboards/retro_75/rules.mk
+++ b/keyboards/retro_75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reversestudio/decadepad/rules.mk b/keyboards/reversestudio/decadepad/rules.mk
index b752edc467..89538799a9 100644
--- a/keyboards/reversestudio/decadepad/rules.mk
+++ b/keyboards/reversestudio/decadepad/rules.mk
@@ -12,16 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
LAYOUTS = numpad_6x4
diff --git a/keyboards/reviung33/rules.mk b/keyboards/reviung33/rules.mk
index b6f524d589..77a2d1ee7d 100644
--- a/keyboards/reviung33/rules.mk
+++ b/keyboards/reviung33/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung34/rules.mk b/keyboards/reviung34/rules.mk
index fa30b973dd..203f9645e5 100755
--- a/keyboards/reviung34/rules.mk
+++ b/keyboards/reviung34/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung39/rules.mk b/keyboards/reviung39/rules.mk
index fa30b973dd..203f9645e5 100644
--- a/keyboards/reviung39/rules.mk
+++ b/keyboards/reviung39/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung41/rules.mk b/keyboards/reviung41/rules.mk
index b9377da068..e4e00e6274 100644
--- a/keyboards/reviung41/rules.mk
+++ b/keyboards/reviung41/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung5/rules.mk b/keyboards/reviung5/rules.mk
index 50da1b8376..a72c119315 100644
--- a/keyboards/reviung5/rules.mk
+++ b/keyboards/reviung5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung53/config.h b/keyboards/reviung53/config.h
new file mode 100644
index 0000000000..d73e6eab8a
--- /dev/null
+++ b/keyboards/reviung53/config.h
@@ -0,0 +1,138 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E94
+#define PRODUCT_ID 0x4E09
+#define DEVICE_VER 0x0001
+#define MANUFACTURER gtips
+#define PRODUCT reviung53
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 10
+#define RGBLIGHT_HUE_STEP 16
+#define RGBLIGHT_SAT_STEP 16
+#define RGBLIGHT_VAL_STEP 16
+#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+#define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/reviung53/info.json b/keyboards/reviung53/info.json
new file mode 100644
index 0000000000..ff63de5bc8
--- /dev/null
+++ b/keyboards/reviung53/info.json
@@ -0,0 +1,68 @@
+{
+ "keyboard_name": "reviung53",
+ "url": "",
+ "maintainer": "gtips",
+ "layouts": {
+ "LAYOUT_reviung53": {
+ "layout": [
+ {"label": "k02", "x":2.25, "y":0},
+ {"label": "k03", "x":3.5, "y":0},
+ {"label": "k04", "x":4.5, "y":0},
+ {"label": "k05", "x":5.5, "y":0},
+ {"label": "k06", "x":6.5, "y":0},
+ {"label": "k07", "x":7.75, "y":0},
+ {"label": "k40", "x":8.75, "y":0},
+ {"label": "k41", "x":9.75, "y":0},
+ {"label": "k42", "x":10.75, "y":0},
+ {"label": "k43", "x":12, "y":0},
+
+ {"label": "k10", "x":0, "y":1.25, "w":1.5},
+ {"label": "k11", "x":1.5, "y":1.25},
+ {"label": "k12", "x":2.5, "y":1.25},
+ {"label": "k13", "x":3.5, "y":1.25},
+ {"label": "k14", "x":4.5, "y":1.25},
+ {"label": "k15", "x":5.5, "y":1.25},
+ {"label": "k16", "x":6.5, "y":1.25},
+ {"label": "k17", "x":7.5, "y":1.25},
+ {"label": "k44", "x":8.5, "y":1.25},
+ {"label": "k45", "x":9.5, "y":1.25},
+ {"label": "k46", "x":10.5, "y":1.25},
+ {"label": "k47", "x":11.5, "y":1.25, "w":1.5},
+
+ {"label": "k20", "x":0, "y":2.25, "w":1.75},
+ {"label": "k21", "x":1.75, "y":2.25},
+ {"label": "k22", "x":2.75, "y":2.25},
+ {"label": "k23", "x":3.75, "y":2.25},
+ {"label": "k24", "x":4.75, "y":2.25},
+ {"label": "k25", "x":5.75, "y":2.25},
+ {"label": "k26", "x":6.75, "y":2.25},
+ {"label": "k27", "x":7.75, "y":2.25},
+ {"label": "k50", "x":8.75, "y":2.25},
+ {"label": "k51", "x":9.75, "y":2.25},
+ {"label": "k52", "x":10.75, "y":2.25},
+ {"label": "k53", "x":11.75, "y":2.25, "w":1.25},
+
+ {"label": "k30", "x":0, "y":3.25, "w":2.25},
+ {"label": "k31", "x":2.25, "y":3.25},
+ {"label": "k32", "x":3.25, "y":3.25},
+ {"label": "k33", "x":4.25, "y":3.25},
+ {"label": "k34", "x":5.25, "y":3.25},
+ {"label": "k35", "x":6.25, "y":3.25},
+ {"label": "k36", "x":7.25, "y":3.25},
+ {"label": "k37", "x":8.25, "y":3.25},
+ {"label": "k54", "x":9.25, "y":3.25},
+ {"label": "k55", "x":10.25, "y":3.25},
+ {"label": "k56", "x":11.25, "y":3.25, "w":1.75},
+
+ {"label": "k60", "x":0, "y":4.25, "w":1.5},
+ {"label": "k61", "x":1.5, "y":4.25, "w":1.25},
+ {"label": "k62", "x":2.75, "y":4.25, "w":1.25},
+ {"label": "k63", "x":4, "y":4.25, "w":2.75},
+ {"label": "k64", "x":6.75, "y":4.25, "w":2.25},
+ {"label": "k65", "x":9, "y":4.25, "w":1.25},
+ {"label": "k66", "x":10.25, "y":4.25, "w":1.25},
+ {"label": "k67", "x":11.5, "y":4.25, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/reviung53/keymaps/default/keymap.c b/keyboards/reviung53/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a8d95d70d5
--- /dev/null
+++ b/keyboards/reviung53/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+#define SF_SS RSFT_T(KC_SLSH)
+#define SP_LO LT(LOWER, KC_SPC)
+#define SP_RA LT(RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_reviung53(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SF_SS,
+ KC_LCTL, KC_LGUI, KC_LALT, SP_LO, SP_RA, KC_LALT, KC_RGUI, KC_RCTL
+ ),
+ [_LOWER] = LAYOUT_reviung53(
+ KC_GESC, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_PAUS, KC_SLCK, KC_PSCR, _______,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_QUOT,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_SLSH,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_reviung53(
+ KC_TILD, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY, _______,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DQUO,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_QUES,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT_reviung53(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/reviung53/keymaps/default/readme.md b/keyboards/reviung53/keymaps/default/readme.md
new file mode 100644
index 0000000000..1e473c9a74
--- /dev/null
+++ b/keyboards/reviung53/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for reviung53
diff --git a/keyboards/reviung53/keymaps/via/keymap.c b/keyboards/reviung53/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a8d95d70d5
--- /dev/null
+++ b/keyboards/reviung53/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+#define SF_SS RSFT_T(KC_SLSH)
+#define SP_LO LT(LOWER, KC_SPC)
+#define SP_RA LT(RAISE, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_reviung53(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SF_SS,
+ KC_LCTL, KC_LGUI, KC_LALT, SP_LO, SP_RA, KC_LALT, KC_RGUI, KC_RCTL
+ ),
+ [_LOWER] = LAYOUT_reviung53(
+ KC_GESC, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_PAUS, KC_SLCK, KC_PSCR, _______,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_QUOT,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_SLSH,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT_reviung53(
+ KC_TILD, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY, _______,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DQUO,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_QUES,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT_reviung53(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/reviung53/keymaps/via/readme.md b/keyboards/reviung53/keymaps/via/readme.md
new file mode 100644
index 0000000000..9b299ba286
--- /dev/null
+++ b/keyboards/reviung53/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# The default keymap for reviung53
+
+For use with VIA configurator and compatible keymap editors. \ No newline at end of file
diff --git a/keyboards/reviung53/keymaps/via/rules.mk b/keyboards/reviung53/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/reviung53/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/reviung53/readme.md b/keyboards/reviung53/readme.md
new file mode 100644
index 0000000000..a2bfbcdbc2
--- /dev/null
+++ b/keyboards/reviung53/readme.md
@@ -0,0 +1,27 @@
+# reviung53
+
+![reviung53](https://github.com/gtips/reviung/blob/master/reviung53/image/reviung53-04.jpg)
+
+The REVIUNG53 is 53-key keyboard.
+
+* Keyboard Maintainer: [gtips](https://github.com/gtips)
+* Hardware Supported: REVIUNG53 PCB.
+* Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung/tree/master/reviung53)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make reviung53:default
+
+Flashing example for this keyboard:
+
+ make reviung53:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/reviung53/reviung53.c b/keyboards/reviung53/reviung53.c
new file mode 100644
index 0000000000..e2190aeccf
--- /dev/null
+++ b/keyboards/reviung53/reviung53.c
@@ -0,0 +1,4 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "reviung53.h"
diff --git a/keyboards/reviung53/reviung53.h b/keyboards/reviung53/reviung53.h
new file mode 100644
index 0000000000..89ebc45c18
--- /dev/null
+++ b/keyboards/reviung53/reviung53.h
@@ -0,0 +1,30 @@
+// Copyright 2021 gtips (@gtips)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_reviung53( \
+ K02, K03, K04, K05, K06, K07, K40, K41, K42, K43, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K44, K45, K46, K47, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K50, K51, K52, K53, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K54, K55, K56,\
+ K60, K61, K62, K63, K64, K65, K66, K67 \
+) { \
+ { KC_NO, KC_NO, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, K56, KC_NO }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 } \
+}
diff --git a/keyboards/reviung53/rules.mk b/keyboards/reviung53/rules.mk
new file mode 100644
index 0000000000..90670e4b9e
--- /dev/null
+++ b/keyboards/reviung53/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/reviung61/rules.mk b/keyboards/reviung61/rules.mk
index fd0cc9a62b..badcdb845b 100644
--- a/keyboards/reviung61/rules.mk
+++ b/keyboards/reviung61/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rgbkb/mun/rules.mk b/keyboards/rgbkb/mun/rules.mk
index e0832b9277..c7e6594ead 100644
--- a/keyboards/rgbkb/mun/rules.mk
+++ b/keyboards/rgbkb/mun/rules.mk
@@ -7,23 +7,20 @@ SRC += ../common/common_oled.c
QUANTUM_LIB_SRC += i2c_master.c
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
WS2812_DRIVER = pwm
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Enable the OLED Driver
diff --git a/keyboards/rgbkb/pan/rules.mk b/keyboards/rgbkb/pan/rules.mk
index 0767977a79..464dfecf6f 100644
--- a/keyboards/rgbkb/pan/rules.mk
+++ b/keyboards/rgbkb/pan/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/rgbkb/sol/keymaps/default/config.h b/keyboards/rgbkb/sol/keymaps/default/config.h
deleted file mode 100644
index 452cdda823..0000000000
--- a/keyboards/rgbkb/sol/keymaps/default/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rgbkb/sol/keymaps/default/keymap.c b/keyboards/rgbkb/sol/keymaps/default/keymap.c
index 41108a29ab..1414c0ce24 100644
--- a/keyboards/rgbkb/sol/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/default/keymap.c
@@ -46,13 +46,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Space| DEL | | Enter| Space|
* `-------------' `-------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, \
- KC_SPC, KC_DEL, KC_ENT, KC_SPC \
+ [_QWERTY] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT,
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC
),
/* Colemak
@@ -70,13 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Space| DEL | | Enter| Space|
* `-------------' `-------------'
*/
- [_COLEMAK] = LAYOUT( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
- FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LPRN, KC_RPRN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, \
- KC_SPC, KC_DEL, KC_ENT, KC_SPC \
+ [_COLEMAK] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
+ FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LPRN, KC_RPRN, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT,
+ KC_SPC, KC_DEL, KC_ENT, KC_SPC
),
/* FN
@@ -94,13 +94,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | |
* `-------------' `-------------'
*/
- [_FN] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_NLCK, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
- _______, _______, _______, _______ \
+ [_FN] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_NLCK, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______
),
/* ADJ
@@ -119,13 +119,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------' `-------------'
*/
- [_ADJ] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, \
- _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_NLCK, QWERTY, COLEMAK, \
- _______, _______, _______, _______ \
+ [_ADJ] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
+ _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_NLCK, QWERTY, COLEMAK,
+ _______, _______, _______, _______
)
};
@@ -205,19 +205,19 @@ static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t))
const uint16_t PROGMEM encoders[][NUMBER_OF_ENCODERS * 2][2] = {
- [_QWERTY] = ENCODER_LAYOUT( \
+ [_QWERTY] = ENCODER_LAYOUT(
KC_VOLU, KC_VOLD,
KC_VOLU, KC_VOLD
),
- [_COLEMAK] = ENCODER_LAYOUT( \
+ [_COLEMAK] = ENCODER_LAYOUT(
_______, _______,
_______, _______
),
- [_FN] = ENCODER_LAYOUT( \
+ [_FN] = ENCODER_LAYOUT(
_______, _______,
_______, _______
),
- [_ADJ] = ENCODER_LAYOUT( \
+ [_ADJ] = ENCODER_LAYOUT(
_______, _______,
_______, _______
)
diff --git a/keyboards/rgbkb/sol/keymaps/default/readme.md b/keyboards/rgbkb/sol/keymaps/default/readme.md
index 6a009d6310..7036f029f2 100644
--- a/keyboards/rgbkb/sol/keymaps/default/readme.md
+++ b/keyboards/rgbkb/sol/keymaps/default/readme.md
@@ -82,7 +82,7 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = yes # LED animations
LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
diff --git a/keyboards/rgbkb/sol/rev1/rules.mk b/keyboards/rgbkb/sol/rev1/rules.mk
index 5b5b518b4f..bbf4bb54fc 100644
--- a/keyboards/rgbkb/sol/rev1/rules.mk
+++ b/keyboards/rgbkb/sol/rev1/rules.mk
@@ -4,7 +4,7 @@
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
# Debug Options
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/rgbkb/sol/rev2/rules.mk b/keyboards/rgbkb/sol/rev2/rules.mk
index b81a6f2f01..995a8d7f16 100644
--- a/keyboards/rgbkb/sol/rev2/rules.mk
+++ b/keyboards/rgbkb/sol/rev2/rules.mk
@@ -4,7 +4,7 @@
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
# Debug Options
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/default/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/default/keymap.c
index 4516f62e8d..e02010f193 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/default/keymap.c
@@ -32,12 +32,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | Alt |RGBTOG| NAV |Space |Delete||Enter|Space | NAV | - | = | PGUP | PGDN |
* `------------------------------------------------''-----------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- LT(_NAV, KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, MO(_NAV), KC_SPC, KC_DEL, KC_ENT, KC_SPACE, MO(_NAV), KC_MINS, KC_EQL, KC_PGUP, KC_PGDN \
+ [_QWERTY] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ LT(_NAV, KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, MO(_NAV), KC_SPC, KC_DEL, KC_ENT, KC_SPACE, MO(_NAV), KC_MINS, KC_EQL, KC_PGUP, KC_PGDN
),
/* NAV
@@ -53,12 +53,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | Alt |RGBMOD| | | || | | | | Mute | VOLUP| VOLDN|
* `------------------------------------------------''-----------------------------------------------'
*/
- [_NAV] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RGB_SAI, RGB_VAI, RGB_SAD, RESET, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END, \
- KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD \
+ [_NAV] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RGB_SAI, RGB_VAI, RGB_SAD, RESET, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END,
+ KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD
),
};
diff --git a/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c b/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c
index 5bc5e00d8d..a369f5399f 100644
--- a/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c
@@ -32,13 +32,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Space |Delete||Enter |Space |
* '-------------''-------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- LT(_NAV, KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, RGB_RMOD,RGB_MOD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, MO(_NAV), KC_SPC, KC_DEL, KC_ENT, KC_SPACE, MO(_NAV), KC_MINS, KC_EQL, KC_PGUP, KC_PGDN, \
- KC_SPC, KC_DEL, KC_ENT, KC_SPACE \
+ [_QWERTY] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ LT(_NAV, KC_CAPS),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, RGB_RMOD,RGB_MOD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, MO(_NAV), KC_SPC, KC_DEL, KC_ENT, KC_SPACE, MO(_NAV), KC_MINS, KC_EQL, KC_PGUP, KC_PGDN,
+ KC_SPC, KC_DEL, KC_ENT, KC_SPACE
),
/* NAV
@@ -56,12 +56,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Space |Delete||Enter |Space |
* '-------------''-------------'
*/
- [_NAV] = LAYOUT( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RGB_SAI, RGB_VAI, RGB_SAD, RESET, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END, \
- KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, \
+ [_NAV] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RGB_SAI, RGB_VAI, RGB_SAD, RESET, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD,
_______, _______, _______, _______
),
diff --git a/keyboards/rgbkb/zen/rules.mk b/keyboards/rgbkb/zen/rules.mk
index 98a8a59edb..5a3ac77e74 100644
--- a/keyboards/rgbkb/zen/rules.mk
+++ b/keyboards/rgbkb/zen/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
DEFAULT_FOLDER = rgbkb/zen/rev2
diff --git a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
index c6138b43a3..1c5b242c0b 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
+++ b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
@@ -61,34 +61,34 @@ LAYOUT_ortho_5x6( \
)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = BASE_LAYOUT( \
- KC_1, KC_2, KC_3, KC_4, KC_5, \
- KC_Q, KC_W, KC_E, KC_R, KC_T, \
- KC_A, KC_S, KC_D, KC_F, KC_G, \
- KC_Z, KC_X, KC_C, KC_V, KC_B \
+ [_QWERTY] = BASE_LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_Z, KC_X, KC_C, KC_V, KC_B
),
- [_MACROPAD] = BASE_LAYOUT( \
- KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, \
- KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, \
- KC_A, KC_S, KC_D, KC_F, KC_G, \
- KC_Z, KC_X, KC_C, KC_V, KC_B \
+ [_MACROPAD] = BASE_LAYOUT(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17,
+ KC_F18, KC_F19, KC_F20, KC_F21, KC_F22,
+ KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_Z, KC_X, KC_C, KC_V, KC_B
),
- [_FN] = LAYOUT_ortho_5x6( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, \
- _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______ \
+ [_FN] = LAYOUT_ortho_5x6(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______
),
- [_ADJ] = LAYOUT_ortho_5x6( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
- _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, \
- _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______ \
+ [_ADJ] = LAYOUT_ortho_5x6(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______
)
};
diff --git a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk
index ccceffe6a5..ebbb4a4c2d 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk
+++ b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk
@@ -1,13 +1,8 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = yes # LED animations
RGBLIGHT_SPLIT_ENABLE = no # Split RGBLight Support
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default/config.h b/keyboards/rgbkb/zygomorph/keymaps/default/config.h
deleted file mode 100644
index 452cdda823..0000000000
--- a/keyboards/rgbkb/zygomorph/keymaps/default/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default/keymap.c b/keyboards/rgbkb/zygomorph/keymaps/default/keymap.c
index fa2b9a57b9..7f19c2ef02 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/zygomorph/keymaps/default/keymap.c
@@ -40,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Win | Alt | RGB | ADJ | Space| | Space| FN | Left | Down | Up |Right |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_QWERTY] = LAYOUT_ortho_5x12( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT \
+ [_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
),
/* / Colemak \
@@ -61,12 +61,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Win | Alt | RGB | ADJ | Space| | Space| FN | Left | Down | Up |Right |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_COLEMAK] = LAYOUT_ortho_5x12( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
- FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT \
+ [_COLEMAK] = LAYOUT_ortho_5x12(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
+ FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
),
/* / FN \
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |RGBMOD| | | | | PLAY | NEXT | MUTE | VOL- | VOL+ |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_FN] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU \
+ [_FN] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU
),
/* / ADJ \
@@ -103,12 +103,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |RGBNXT| | | | | |RGBPRV| HUD | SAD | VAD |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_ADJ] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJ] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, QWERTY, COLEMAK, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default/readme.md b/keyboards/rgbkb/zygomorph/keymaps/default/readme.md
index 4025696470..67e68578d0 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default/readme.md
+++ b/keyboards/rgbkb/zygomorph/keymaps/default/readme.md
@@ -89,7 +89,7 @@ MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = yes # LED animations
RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default/rules.mk b/keyboards/rgbkb/zygomorph/keymaps/default/rules.mk
index d5a1561b95..465585afe0 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default/rules.mk
+++ b/keyboards/rgbkb/zygomorph/keymaps/default/rules.mk
@@ -1,13 +1,8 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = yes # LED animations
RGBLIGHT_SPLIT_ENABLE = no # Split RGBLight Support
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default_oled/config.h b/keyboards/rgbkb/zygomorph/keymaps/default_oled/config.h
deleted file mode 100644
index 452cdda823..0000000000
--- a/keyboards/rgbkb/zygomorph/keymaps/default_oled/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-
-// place overrides here
-
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c b/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
index 4f5055dfdb..8457cb54f1 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
+++ b/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
@@ -40,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Win | Alt | RGB | ADJ | Space| | Space| FN | Left | Down | Up |Right |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_QWERTY] = LAYOUT_ortho_5x12( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, \
- FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT \
+ [_QWERTY] = LAYOUT_ortho_5x12(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
),
/* / Colemak \
@@ -61,12 +61,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | Win | Alt | RGB | ADJ | Space| | Space| FN | Left | Down | Up |Right |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_COLEMAK] = LAYOUT_ortho_5x12( \
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
- FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT \
+ [_COLEMAK] = LAYOUT_ortho_5x12(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
+ FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT
),
/* / FN \
@@ -82,12 +82,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |RGBMOD| | | | | PLAY | NEXT | MUTE | VOL- | VOL+ |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_FN] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU \
+ [_FN] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU
),
/* / ADJ \
@@ -103,12 +103,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |RGBNXT| | | | | |RGBPRV| HUD | SAD | VAD |
* \------+------+------+------+------+------/ \------+------+------+------+------+------/
*/
- [_ADJ] = LAYOUT_ortho_5x12( \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD \
+ [_ADJ] = LAYOUT_ortho_5x12(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, QWERTY, COLEMAK, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD
)
};
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk b/keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk
index 265958f6d1..f914dbb26a 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk
+++ b/keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk
@@ -1,13 +1,8 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = yes # LED animations
RGBLIGHT_SPLIT_ENABLE = no # Split RGBLight Support
diff --git a/keyboards/rgbkb/zygomorph/rules.mk b/keyboards/rgbkb/zygomorph/rules.mk
index 3b9d69887e..3dedb6bafd 100644
--- a/keyboards/rgbkb/zygomorph/rules.mk
+++ b/keyboards/rgbkb/zygomorph/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ristretto/rules.mk b/keyboards/ristretto/rules.mk
index 88b92b8b07..2a4cebb610 100644
--- a/keyboards/ristretto/rules.mk
+++ b/keyboards/ristretto/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rocketboard_16/rules.mk b/keyboards/rocketboard_16/rules.mk
index dd7f88d616..d27da2c226 100644
--- a/keyboards/rocketboard_16/rules.mk
+++ b/keyboards/rocketboard_16/rules.mk
@@ -23,10 +23,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB backlit keys
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/colemak/config.h b/keyboards/rominronin/katana60/rev1/keymaps/colemak/config.h
deleted file mode 100644
index 08c51f6cb5..0000000000
--- a/keyboards/rominronin/katana60/rev1/keymaps/colemak/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Baris Tosun
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/default/config.h b/keyboards/rominronin/katana60/rev1/keymaps/default/config.h
deleted file mode 100644
index c4bea7eb03..0000000000
--- a/keyboards/rominronin/katana60/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Baris Tosun
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/rominronin/katana60/rev1/rules.mk b/keyboards/rominronin/katana60/rev1/rules.mk
index bcf7f652ec..354f194ca2 100644
--- a/keyboards/rominronin/katana60/rev1/rules.mk
+++ b/keyboards/rominronin/katana60/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rominronin/katana60/rev2/keymaps/default/config.h b/keyboards/rominronin/katana60/rev2/keymaps/default/config.h
deleted file mode 100644
index 0689676402..0000000000
--- a/keyboards/rominronin/katana60/rev2/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 rominronin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/rominronin/katana60/rev2/rules.mk b/keyboards/rominronin/katana60/rev2/rules.mk
index 71e5c41e74..a2a5932cdc 100644
--- a/keyboards/rominronin/katana60/rev2/rules.mk
+++ b/keyboards/rominronin/katana60/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/roseslite/rules.mk b/keyboards/roseslite/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/roseslite/rules.mk
+++ b/keyboards/roseslite/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rotor/rules.mk b/keyboards/rotor/rules.mk
index 6d598770a3..30e86c0190 100644
--- a/keyboards/rotor/rules.mk
+++ b/keyboards/rotor/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rotr/rules.mk b/keyboards/rotr/rules.mk
index 6d85d5f50e..7d803d97f5 100644
--- a/keyboards/rotr/rules.mk
+++ b/keyboards/rotr/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rpiguy9907/southpaw66/rules.mk b/keyboards/rpiguy9907/southpaw66/rules.mk
index f42a5203ef..afb39759e7 100644
--- a/keyboards/rpiguy9907/southpaw66/rules.mk
+++ b/keyboards/rpiguy9907/southpaw66/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/rubi/rules.mk b/keyboards/rubi/rules.mk
index 8fb3292ca4..bcb43c3c37 100644
--- a/keyboards/rubi/rules.mk
+++ b/keyboards/rubi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/runes/vaengr/config.h b/keyboards/runes/vaengr/config.h
index 4f66a4d38d..22b38760c4 100644
--- a/keyboards/runes/vaengr/config.h
+++ b/keyboards/runes/vaengr/config.h
@@ -23,8 +23,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0x726E
#define PRODUCT_ID 0x7661
#define DEVICE_VER 0x0001
-#define MANUFACTURER Rune
-#define PRODUCT Vængr
+#define MANUFACTURER Runes
+#define PRODUCT VÆNGR
/* key matrix size */
#define MATRIX_ROWS 5
@@ -40,8 +40,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
-#define MATRIX_ROW_PINS { C7, E6, D5, B3, B7 }
-#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 }
+#define MATRIX_ROW_PINS { B3, B7, B0, F7, C6 }
+#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, D0, D1, D6, D4, D2, D3, D5 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
@@ -62,7 +62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define BACKLIGHT_LEVELS 3
// #define BACKLIGHT_BREATHING
-#define RGB_DI_PIN D3
+#define RGB_DI_PIN C7
// #define RGB_DI_PIN B0
#ifdef RGB_DI_PIN
#define RGBLIGHT_EFFECT_BREATHING
@@ -75,7 +75,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 3
+#define RGBLED_NUM 10
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/runes/vaengr/keymaps/default/keymap.c b/keyboards/runes/vaengr/keymaps/default/keymap.c
index 5bd2f12199..340cb963b3 100644
--- a/keyboards/runes/vaengr/keymaps/default/keymap.c
+++ b/keyboards/runes/vaengr/keymaps/default/keymap.c
@@ -24,33 +24,31 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // /* Base */
-
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_GRV, KC_LALT, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),
[_LOWER] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_MINS, KC_EQL, KC_BSLS,
- KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_BSLS,
+ KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE,
KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_RAISE] = LAYOUT(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_TRNS,
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_TRNS,
- KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_TRNS, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS,
- KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL, KC_PENT,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NLCK, KC_P7, KC_P8, KC_P9,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_PAST, KC_P1, KC_P2, KC_P3,KC_TRNS, KC_PPLS,
+ KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL,KC_TRNS, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS),
[_DOUBLE] = LAYOUT(
KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_FORWARD, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MODE_FORWARD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/runes/vaengr/keymaps/via/keymap.c b/keyboards/runes/vaengr/keymaps/via/keymap.c
index 5bd2f12199..340cb963b3 100644
--- a/keyboards/runes/vaengr/keymaps/via/keymap.c
+++ b/keyboards/runes/vaengr/keymaps/via/keymap.c
@@ -24,33 +24,31 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // /* Base */
-
[_BASE] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_GRV, KC_LALT, MO(1), KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),
[_LOWER] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_MINS, KC_EQL, KC_BSLS,
- KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_PGUP, KC_HOME, KC_DEL, KC_BSPC, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_BSLS,
+ KC_TRNS, KC_PGDN, KC_END, KC_ENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_PIPE,
KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_RAISE] = LAYOUT(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_TRNS,
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_PMNS, KC_P4, KC_P5, KC_P6, KC_TRNS,
- KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_TRNS, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PPLS,
- KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL, KC_PENT,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NLCK, KC_P7, KC_P8, KC_P9,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PMNS, KC_P4, KC_P5, KC_P6,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_PAST, KC_P1, KC_P2, KC_P3,KC_TRNS, KC_PPLS,
+ KC_TRNS, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_PSLS, KC_P0, KC_PDOT, KC_PEQL,KC_TRNS, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS),
[_DOUBLE] = LAYOUT(
KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_FORWARD, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MODE_FORWARD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/runes/vaengr/rules.mk b/keyboards/runes/vaengr/rules.mk
index 2429ba6d96..533eacc989 100644
--- a/keyboards/runes/vaengr/rules.mk
+++ b/keyboards/runes/vaengr/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/runes/vaengr/vaengr.h b/keyboards/runes/vaengr/vaengr.h
index 985867a939..db035a1a8b 100644
--- a/keyboards/runes/vaengr/vaengr.h
+++ b/keyboards/runes/vaengr/vaengr.h
@@ -31,11 +31,11 @@
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, \
- K40, K41, K42, K43, K44, K45, K47, K48, K49, K410, K411 \
+ K40, K41, K42, K43, K44, K46, K47, K48, K49, K410, K411 \
) { \
{K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K010, K011 }, \
{K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111 }, \
{K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211 }, \
{K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311 }, \
- {K40, K41, K42, K43, K44, K45, KC_NO, K47, K48, K49, K410, K411 } \
+ {K40, K41, K42, K43, K44, KC_NO, K46, K47, K48, K49, K410, K411 } \
}
diff --git a/keyboards/runner3680/5x6/keymaps/default/keymap.c b/keyboards/runner3680/5x6/keymaps/default/keymap.c
index 6d78e8a2e8..e183b3cbfc 100644
--- a/keyboards/runner3680/5x6/keymaps/default/keymap.c
+++ b/keyboards/runner3680/5x6/keymaps/default/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | | |
* `-----------------------------------------' `-----------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
+ [_ADJUST] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, RGBRST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/runner3680/5x6_5x8/.noci b/keyboards/runner3680/5x6_5x8/.noci
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/.noci
diff --git a/keyboards/runner3680/5x6_5x8/5x6_5x8.c b/keyboards/runner3680/5x6_5x8/5x6_5x8.c
new file mode 100644
index 0000000000..62597d0060
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/5x6_5x8.c
@@ -0,0 +1,52 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "5x6_5x8.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { NO_LED, NO_LED, 5, 4, 3, 2, 1, 0 },
+ { NO_LED, NO_LED, 6, 7, 8, 9, 10, 11 },
+ { NO_LED, NO_LED, 17, 16, 15, 14, 13, 12 },
+ { NO_LED, NO_LED, 18, 19, 20, 21, 22, 23 },
+ { NO_LED, NO_LED, 29, 28, 27, 26, 25, 24 },
+ { 37, 36, 35, 34, 33, 32, 31, 30 },
+ { 38, 39, 40, 41, 42, 43, 44, 45 },
+ { 53, 52, 51, 50, 49, 48, 47, 46 },
+ { 54, 55, 56, 57, 58, 59, 60, 61 },
+ { 69, 68, 67, 66, 65, 64, 63, 62 }
+}, {
+ // LED Index to Physical Position
+ { 86, 0 }, { 69, 0 }, { 52, 0 }, { 34, 0 }, { 17, 0 }, { 0, 0 },
+ { 0, 16 }, { 17, 16 }, { 34, 16 }, { 52, 16 }, { 69, 16 }, { 86, 16 },
+ { 86, 32 }, { 69, 32 }, { 52, 32 }, { 34, 32 }, { 17, 32 }, { 0, 32 },
+ { 0, 48 }, { 17, 48 }, { 34, 48 }, { 52, 48 }, { 69, 48 }, { 86, 48 },
+ { 86, 64 }, { 69, 64 }, { 52, 64 }, { 34, 64 }, { 17, 64 }, { 0, 64 },
+ { 103, 0 }, { 121, 0 }, { 138, 0 }, { 155, 0 }, { 172, 0 }, { 190, 0 }, { 207, 0 }, { 224, 0 },
+ { 224, 16 }, { 207, 16 }, { 190, 16 }, { 172, 16 }, { 155, 16 }, { 138, 16 }, { 121, 16 }, { 103, 16 },
+ { 103, 32 }, { 121, 32 }, { 138, 32 }, { 155, 32 }, { 172, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 },
+ { 224, 48 }, { 207, 48 }, { 190, 48 }, { 172, 48 }, { 155, 48 }, { 138, 48 }, { 121, 48 }, { 103, 48 },
+ { 103, 64 }, { 121, 64 }, { 138, 64 }, { 155, 64 }, { 172, 64 }, { 190, 64 }, { 207, 64 }, { 224, 64 }
+}, {
+ // LED Index to Flag
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
+} };
+#endif
diff --git a/keyboards/runner3680/5x6_5x8/5x6_5x8.h b/keyboards/runner3680/5x6_5x8/5x6_5x8.h
new file mode 100644
index 0000000000..afceac0a89
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/5x6_5x8.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "runner3680.h"
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ L02, L03, L04, L05, L06, L07, R00, R01, R02, R03, R04, R05, R06, R07, \
+ L12, L13, L14, L15, L16, L17, R10, R11, R12, R13, R14, R15, R16, R17, \
+ L22, L23, L24, L25, L26, L27, R20, R21, R22, R23, R24, R25, R26, R27, \
+ L32, L33, L34, L35, L36, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L42, L43, L44, L45, L46, L47, R40, R41, R42, R43, R44, R45, R46, R47 \
+ ) \
+ { \
+ { KC_NO, KC_NO, L02, L03, L04, L05, L06, L07 }, \
+ { KC_NO, KC_NO, L12, L13, L14, L15, L16, L17 }, \
+ { KC_NO, KC_NO, L22, L23, L24, L25, L26, L27 }, \
+ { KC_NO, KC_NO, L32, L33, L34, L35, L36, L37 }, \
+ { KC_NO, KC_NO, L42, L43, L44, L45, L46, L47 }, \
+ { R07, R06, R05, R04, R03, R02, R01, R00 }, \
+ { R17, R16, R15, R14, R13, R12, R11, R10 }, \
+ { R27, R26, R25, R24, R23, R22, R21, R20 }, \
+ { R37, R36, R35, R34, R33, R32, R31, R30 }, \
+ { R47, R46, R45, R44, R43, R42, R41, R40 } \
+ }
diff --git a/keyboards/runner3680/5x6_5x8/config.h b/keyboards/runner3680/5x6_5x8/config.h
new file mode 100644
index 0000000000..815da24950
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/config.h
@@ -0,0 +1,84 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3680
+#define PRODUCT_ID 0x5658
+#define DEVICE_VER 0x0005
+#define MANUFACTURER Omkbd
+#define PRODUCT runner3680
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 ,B6 }
+// #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
+
+#define DIODE_DIRECTION COL2ROW
+
+/* define tapping term */
+#define TAPPING_TERM 120
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 70
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 30, 40 } // Number of LEDs
+#define RGBLIGHT_LIMIT_VAL 100
+#endif
+#ifdef RGB_MATRIX_ENABLE
+#define DRIVER_LED_TOTAL 70
+#define RGB_MATRIX_SPLIT { 30, 40 } // Number of LEDs
+#endif
+
+#define SOFT_SERIAL_PIN D2
+#define SELECT_SOFT_SERIAL_SPEED 1
+/*Sets the protocol speed when using serial communication*/
+//Speeds:
+//0: about 189kbps (Experimental only)
+//1: about 137kbps (default)
+//2: about 75kbps
+//3: about 39kbps
+//4: about 26kbps
+//5: about 20kbps
diff --git a/keyboards/runner3680/5x6_5x8/info.json b/keyboards/runner3680/5x6_5x8/info.json
new file mode 100644
index 0000000000..e8fb4c0927
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "runner3680 5x6+5x8",
+ "url": "",
+ "maintainer": "omkbd",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":7, "y":2},
+ {"x":8, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+ {"x":13, "y":2},
+ {"x":14, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2, "y":4},
+ {"x":3, "y":4},
+ {"x":4, "y":4},
+ {"x":5, "y":4},
+ {"x":7, "y":4},
+ {"x":8, "y":4},
+ {"x":9, "y":4},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/default/config.h b/keyboards/runner3680/5x6_5x8/keymaps/default/config.h
new file mode 100644
index 0000000000..a21551badf
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4dafb4b2a3
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/default/keymap.c
@@ -0,0 +1,71 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _ADJUST
+};
+
+// Fillers to make layering more clear
+#define EISU LALT(KC_GRV)
+#define ADJUST MO(_ADJUST)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | EISU | Del | Space| | Enter| Bksp | EISU | ESC |Adjust| Left | Down | Right|
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, EISU, KC_ESC, ADJUST, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Adjust
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | TOG | HUI | SAI | VAI | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | MOD | HUD | SAD | VAD | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h
new file mode 100644
index 0000000000..818ea7d4af
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c
new file mode 100644
index 0000000000..2f8aed176c
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/keymap.c
@@ -0,0 +1,60 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _NAV,
+ _SYMBOL,
+ _MEDIA
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LALT, KC_LGUI, MO(2), MO(1), KC_SPC, KC_SPC, MO(1), MO(2), KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[_NAV] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+),
+
+[_SYMBOL] = LAYOUT(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, KC_BSPC,
+ KC_TRNS, KC_NO, KC_P7, KC_P8, KC_P9, KC_NO, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, KC_NO, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_ESC, KC_NO, KC_P4, KC_P5, KC_P6, KC_NO, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_COLN, KC_DQUO, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_NO, KC_P1, KC_P2, KC_P3, KC_NO, KC_LBRC, KC_RBRC, KC_LT, KC_GT, KC_QUES, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P0, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[_MEDIA] = LAYOUT(
+ KC_NO, KC_SLCK, KC_PAUS, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPLY, KC_NO, KC_NO, KC_NO,
+ KC_NO, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_G, KC_NO, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_MRWD, KC_VOLD, KC_MFFD
+)
+
+};
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk
new file mode 100644
index 0000000000..8110dbaa1f
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/derekhsu/rules.mk
@@ -0,0 +1,3 @@
+RGB_MATRIX_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h b/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h
new file mode 100644
index 0000000000..a21551badf
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/jis/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c
new file mode 100644
index 0000000000..463d847639
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/jis/keymap.c
@@ -0,0 +1,72 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+enum layer_number {
+ _QWERTY = 0,
+ _ADJUST
+};
+
+// Fillers to make layering more clear
+#define EISU LALT(KC_GRV)
+#define ADJUST MO(_ADJUST)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | EISU | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | ^ | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | @ | [ | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | | H | J | K | L | : | ; | ] | Enter|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | MHEN | Del | Space| | Enter| Bksp | HENK |Adjust| F10 | Left | Down | Right|
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ JP_ZKHK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, JP_CIRC, JP_YEN,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, JP_LBRC, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, JP_COLN, JP_RBRC, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MHEN, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_HENK, ADJUST, KC_F10, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Adjust
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | TOG | HUI | SAI | VAI | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | MOD | HUD | SAD | VAD | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/config.h b/keyboards/runner3680/5x6_5x8/keymaps/via/config.h
new file mode 100644
index 0000000000..a21551badf
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/via/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c b/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4dafb4b2a3
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/via/keymap.c
@@ -0,0 +1,71 @@
+/* Copyright 2021 omkbd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _ADJUST
+};
+
+// Fillers to make layering more clear
+#define EISU LALT(KC_GRV)
+#define ADJUST MO(_ADJUST)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | = | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | | H | J | K | L | ; | " | Enter| Enter|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | | N | M | , | . | / | \ | Up | Shift|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | Alt | EISU | Del | Space| | Enter| Bksp | EISU | ESC |Adjust| Left | Down | Right|
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, EISU, KC_ESC, ADJUST, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Adjust
+ * ,-----------------------------------------. ,--------------------------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | TOG | HUI | SAI | VAI | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | MOD | HUD | SAD | VAD | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | | | | |
+ * `-----------------------------------------' `-------------------------------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk b/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/runner3680/5x6_5x8/rules.mk b/keyboards/runner3680/5x6_5x8/rules.mk
new file mode 100644
index 0000000000..32afd21635
--- /dev/null
+++ b/keyboards/runner3680/5x6_5x8/rules.mk
@@ -0,0 +1 @@
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/runner3680/5x7/keymaps/default/keymap.c b/keyboards/runner3680/5x7/keymaps/default/keymap.c
index e04e5fb5fb..9c6c12fe40 100644
--- a/keyboards/runner3680/5x7/keymaps/default/keymap.c
+++ b/keyboards/runner3680/5x7/keymaps/default/keymap.c
@@ -36,12 +36,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | F5 | Ctrl | GUI | Alt | EISU | Del | Space| | Enter| Bksp | EISU | ESC |Adjust| Left | Down |
* `------------------------------------------------' `------------------------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_F1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
- KC_F2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_F3, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_F4, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_RSFT, \
- KC_F5, KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, ADJUST, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT \
+ [_QWERTY] = LAYOUT(
+ KC_F1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
+ KC_F2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_F3, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F4, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, KC_RSFT,
+ KC_F5, KC_LCTL, KC_LGUI, KC_LALT, EISU, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, ADJUST, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
),
/* Adjust
@@ -57,12 +57,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | | | | |
* `------------------------------------------------' `------------------------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, _______, RGBRST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT(
+ _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, RGBRST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/runner3680/rules.mk b/keyboards/runner3680/rules.mk
index 783792f3e4..2d0ea406eb 100644
--- a/keyboards/runner3680/rules.mk
+++ b/keyboards/runner3680/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/runner3680/runner3680.h b/keyboards/runner3680/runner3680.h
index e7842b765a..39a498e90a 100644
--- a/keyboards/runner3680/runner3680.h
+++ b/keyboards/runner3680/runner3680.h
@@ -14,6 +14,10 @@
#include "5x6.h"
#endif
+#ifdef KEYBOARD_runner3680_5x6_5x8
+ #include "5x6_5x8.h"
+#endif
+
#ifdef KEYBOARD_runner3680_4x8
#include "4x8.h"
#endif
diff --git a/keyboards/ryanbaekr/rb86/rules.mk b/keyboards/ryanbaekr/rb86/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/ryanbaekr/rb86/rules.mk
+++ b/keyboards/ryanbaekr/rb86/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ryloo_studio/m0110/rules.mk b/keyboards/ryloo_studio/m0110/rules.mk
index f494298fd6..ad5700f3e8 100755
--- a/keyboards/ryloo_studio/m0110/rules.mk
+++ b/keyboards/ryloo_studio/m0110/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sam/s80/rules.mk b/keyboards/sam/s80/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/sam/s80/rules.mk
+++ b/keyboards/sam/s80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sam/sg81m/rules.mk b/keyboards/sam/sg81m/rules.mk
index 80af78e3cf..b860eb1332 100644
--- a/keyboards/sam/sg81m/rules.mk
+++ b/keyboards/sam/sg81m/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sanctified/dystopia/rules.mk b/keyboards/sanctified/dystopia/rules.mk
index ff14db03f1..a8cbede7cd 100644
--- a/keyboards/sanctified/dystopia/rules.mk
+++ b/keyboards/sanctified/dystopia/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sandwich/keeb68/config.h b/keyboards/sandwich/keeb68/config.h
new file mode 100644
index 0000000000..7dddf54d76
--- /dev/null
+++ b/keyboards/sandwich/keeb68/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 sandwich
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER sandwich
+#define PRODUCT Keeb68 (Patron Saint Edition)
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
+#define MATRIX_COL_PINS { B6, C6, F7, E6, B7, D0, D1, D2, D3, D4, D6, D7, B4, B5 }
+#define UNUSED_PINS { D5, B0 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define BACKLIGHT_PIN C7
+#define BACKLIGHT_LEVELS 5
+#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/sandwich/keeb68/keeb68.c b/keyboards/sandwich/keeb68/keeb68.c
new file mode 100644
index 0000000000..c040d1a976
--- /dev/null
+++ b/keyboards/sandwich/keeb68/keeb68.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 sandwich
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "keeb68.h"
diff --git a/keyboards/sandwich/keeb68/keeb68.h b/keyboards/sandwich/keeb68/keeb68.h
new file mode 100644
index 0000000000..10182dd9a1
--- /dev/null
+++ b/keyboards/sandwich/keeb68/keeb68.h
@@ -0,0 +1,42 @@
+/* Copyright 2021 sandwich
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_65_ansi( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
+ K400, K401, K402, K405, K406, K407, K408, K409, K410, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313 }, \
+ { K400, K401, K402, KC_NO , KC_NO , K405 , K406, K407, K408, K409, K410, K411, K412, K413 } \
+}
+
diff --git a/keyboards/sandwich/keeb68/keymaps/default/keymap.c b/keyboards/sandwich/keeb68/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ce08cceabf
--- /dev/null
+++ b/keyboards/sandwich/keeb68/keymaps/default/keymap.c
@@ -0,0 +1,42 @@
+/* Copyright 2021 sandwich
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_65_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_EQL, KC_RBRC,KC_RALT,MO(_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+
+ ),
+ [_FN] = LAYOUT_65_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_DEL, KC_PSCREEN,
+ _______, _______, BL_INC, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PAUSE,
+ _______, BL_TOGG, BL_DEC, BL_BRTG,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_HOME,
+ _______, _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______, KC_VOLU, KC_END,
+ _______, RESET, _______, _______,KC_F12, _______,_______,MO(_FN),_______,_______, KC_VOLD, _______
+
+ )
+};
diff --git a/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c b/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c
new file mode 100644
index 0000000000..b7853b3c31
--- /dev/null
+++ b/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c
@@ -0,0 +1,42 @@
+/* Copyright 2021 sandwich
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_65_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_EQL, KC_RBRC,KC_RALT,MO(_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+
+ ),
+ [_FN] = LAYOUT_65_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_DEL, KC_PSCREEN,
+ _______, _______, BL_INC, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_PAUSE,
+ _______, BL_TOGG, BL_DEC, BL_BRTG,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_HOME,
+ _______, _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______, KC_VOLU, KC_END,
+ _______, RESET, _______, _______,KC_F12, _______,_______,MO(_FN),_______,_______, KC_VOLD, _______
+
+ )
+};
diff --git a/keyboards/sandwich/keeb68/keymaps/grv_esc/readme.md b/keyboards/sandwich/keeb68/keymaps/grv_esc/readme.md
new file mode 100644
index 0000000000..61f0460aa4
--- /dev/null
+++ b/keyboards/sandwich/keeb68/keymaps/grv_esc/readme.md
@@ -0,0 +1 @@
+# The default keymap for keeb68
diff --git a/keyboards/sandwich/keeb68/readme.md b/keyboards/sandwich/keeb68/readme.md
new file mode 100644
index 0000000000..783d8f00b7
--- /dev/null
+++ b/keyboards/sandwich/keeb68/readme.md
@@ -0,0 +1,29 @@
+# keeb68
+
+![keeb68](https://imgur.com/b3ftFIKh.jpg)
+
+A small-batch run of 68 key goodness
+
+* Keyboard Maintainer: [sandwich](https://github.com/SandwichRising)
+* Hardware Supported: Sandwich's Keeb68 Patron Saint Edition
+* Hardware Availability: Limited Run
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sandwich/keeb68:default
+
+Flashing example for this keyboard:
+
+ make sandwich/keeb68:default:flash
+
+Toggle NRKO on/off by holding space+n and then inserting the keyboard's USB cable.
+Some BIOSs may not detect keypresses properly while NRKO is enabled according to QMK documentation.
+
+## Bootloader
+
+Enter the bootloader in 2 ways (all keys assume default layout):
+
+* **Keycode in layout**: Hold Fn key and press the Windows(GUI) key (mapped to `RESET`)
+* **Physical reset button**: Briefly press the button on the back of the PCB (labeled sw1)
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/sandwich/keeb68/rules.mk b/keyboards/sandwich/keeb68/rules.mk
new file mode 100644
index 0000000000..ba835590bb
--- /dev/null
+++ b/keyboards/sandwich/keeb68/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/satt/vision/rules.mk b/keyboards/satt/vision/rules.mk
index 5a5651dfb5..fd44980786 100644
--- a/keyboards/satt/vision/rules.mk
+++ b/keyboards/satt/vision/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sauce/mild/rules.mk b/keyboards/sauce/mild/rules.mk
index e913552c9b..0f154047e9 100644
--- a/keyboards/sauce/mild/rules.mk
+++ b/keyboards/sauce/mild/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/config.h b/keyboards/sawnsprojects/krush/krush60/solder/config.h
index b15361ed14..4cd1a1b39c 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/config.h
+++ b/keyboards/sawnsprojects/krush/krush60/solder/config.h
@@ -37,6 +37,7 @@
#define DIODE_DIRECTION COL2ROW
/* Caps Lock */
#define LED_CAPS_LOCK_PIN F0
+#define LED_PIN_ON_STATE 0
#define RGB_DI_PIN F1
#ifdef RGB_DI_PIN
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/info.json b/keyboards/sawnsprojects/krush/krush60/solder/info.json
index 884b768eb6..d95c475509 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/info.json
+++ b/keyboards/sawnsprojects/krush/krush60/solder/info.json
@@ -2,8 +2,12 @@
"keyboard_name": "Krush60 Solder",
"url": "",
"maintainer": "MaiTheSan",
+ "layout_aliases": {
+ "LAYOUT_60_ansi_arrow_split_bs_7u_spc": "LAYOUT_60_ansi_arrow_tsangan_split_bs",
+ "LAYOUT_60_ansi_arrow_7u_spc": "LAYOUT_60_ansi_arrow_tsangan"
+ },
"layouts": {
- "LAYOUT_60_ansi": {
+ "LAYOUT_all": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -18,7 +22,8 @@
{"x":10, "y":0},
{"x":11, "y":0},
{"x":12, "y":0},
- {"x":13, "y":0, "w":2},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
{"x":0, "y":1, "w":1.5},
{"x":1.5, "y":1},
@@ -49,30 +54,35 @@
{"x":11.75, "y":2},
{"x":12.75, "y":2, "w":2.25},
- {"x":0, "y":3, "w":2.25},
- {"x":2.25, "y":3},
- {"x":3.25, "y":3},
- {"x":4.25, "y":3},
- {"x":5.25, "y":3},
- {"x":6.25, "y":3},
- {"x":7.25, "y":3},
- {"x":8.25, "y":3},
- {"x":9.25, "y":3},
- {"x":10.25, "y":3},
- {"x":11.25, "y":3},
- {"x":12.25, "y":3, "w":2.75},
+ {"x":0, "y":3, "w":2},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":6, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4, "w":1.25},
{"x":2.5, "y":4, "w":1.25},
- {"x":3.75, "y":4, "w":6.25},
- {"x":10, "y":4, "w":1.25},
- {"x":11.25, "y":4, "w":1.25},
- {"x":12.5, "y":4, "w":1.25},
- {"x":13.75, "y":4, "w":1.25}
+ {"x":3.75, "y":4, "w":2.25},
+ {"x":6, "y":4, "w":1.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
]
},
- "LAYOUT_60_ansi_arrow": {
+ "LAYOUT_60_ansi": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -128,22 +138,20 @@
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
- {"x":11.25, "y":3, "w":1.75},
- {"x":13, "y":3},
- {"x":14, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
- {"x":0, "y": 4, "w": 1.25},
- {"x":1.25, "y": 4, "w": 1.25},
- {"x":2.5, "y": 4, "w": 1.25},
- {"x":3.75, "y": 4, "w": 6.25},
- {"x":10, "y": 4},
- {"x":11, "y": 4},
- {"x":12, "y": 4},
- {"x":13, "y": 4},
- {"x":14, "y": 4}
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
]
},
- "LAYOUT_60_ansi_arrow_split_bs_7u_spc": {
+ "LAYOUT_60_isoenter_split_bs": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -174,7 +182,6 @@
{"x":10.5, "y":1},
{"x":11.5, "y":1},
{"x":12.5, "y":1},
- {"x":13.5, "y":1, "w":1.5},
{"x":0, "y":2, "w":1.75},
{"x":1.75, "y":2},
@@ -188,9 +195,10 @@
{"x":9.75, "y":2},
{"x":10.75, "y":2},
{"x":11.75, "y":2},
- {"x":12.75, "y":2, "w":2.25},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
- {"x":0, "y":3, "w":2.25},
+ {"x": 0, "y": 3, "w": 2.25},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3},
@@ -200,18 +208,17 @@
{"x":8.25, "y":3},
{"x":9.25, "y":3},
{"x":10.25, "y":3},
- {"x":11.25, "y":3, "w":1.75},
- {"x":13, "y":3},
- {"x":14, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
- {"x":0, "y": 4, "w": 1.5},
- {"x":1.5, "y": 4},
- {"x":2.5, "y": 4, "w": 1.5},
- {"x":4, "y": 4, "w": 7},
- {"x":11, "y": 4},
- {"x":12, "y": 4},
- {"x":13, "y": 4},
- {"x":14, "y": 4}
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
]
},
"LAYOUT_60_ansi_split_bs": {
@@ -427,7 +434,7 @@
{"x":13.75, "y":4, "w":1.25}
]
},
- "LAYOUT_60_ansi_7u_spc": {
+ "LAYOUT_60_ansi_tsangan": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -492,10 +499,10 @@
{"x":4, "y": 4, "w": 7},
{"x":11, "y": 4, "w": 1.5},
{"x":12.5, "y": 4},
- {"x":13.5, "y": 4, "w": 1.5},
+ {"x":13.5, "y": 4, "w": 1.5}
]
},
- "LAYOUT_60_ansi_split_bs_7u_spc": {
+ "LAYOUT_60_ansi_tsangan_split_bs": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -561,7 +568,7 @@
{"x": 4, "y": 4, "w": 7},
{"x": 11, "y": 4, "w": 1.5},
{"x": 12.5, "y": 4},
- {"x": 13.5, "y": 4, "w": 1.5},
+ {"x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_ansi_arrow_split_bs": {
@@ -632,7 +639,7 @@
{"x":10, "y": 4},
{"x":11, "y": 4},
{"x":12, "y": 4},
- {"x":13, "y": 4},
+ {"x":13, "y": 4},
{"x":14, "y": 4}
]
},
@@ -705,7 +712,7 @@
{"x":10, "y": 4},
{"x":11, "y": 4},
{"x":12, "y": 4},
- {"x":13, "y": 4},
+ {"x":13, "y": 4},
{"x":14, "y": 4}
]
},
@@ -779,11 +786,11 @@
{"x":10, "y": 4},
{"x":11, "y": 4},
{"x":12, "y": 4},
- {"x":13, "y": 4},
+ {"x":13, "y": 4},
{"x":14, "y": 4}
]
},
- "LAYOUT_60_ansi_arrow_7u_spc": {
+ "LAYOUT_60_ansi_arrow_tsangan": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
@@ -853,7 +860,149 @@
{"x":14, "y": 4}
]
},
- "LAYOUT_60_ansi_tsangan": {
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.25},
+ {"x":1.25, "y": 4, "w": 1.25},
+ {"x":2.5, "y": 4, "w": 1.25},
+ {"x":3.75, "y": 4, "w": 6.25},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_tsangan_split_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan_split_rshift": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
@@ -919,10 +1068,10 @@
{"x": 4, "y": 4, "w": 7},
{"x": 11, "y": 4, "w": 1.5},
{"x": 12.5, "y": 4},
- {"x": 13.5, "y": 4, "w": 1.5},
+ {"x": 13.5, "y": 4, "w": 1.5}
]
},
- "LAYOUT_60_ansi_tsangan_split_bs": {
+ "LAYOUT_60_tsangan_hhkb": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
@@ -989,285 +1138,7 @@
{"x": 4, "y": 4, "w": 7},
{"x": 11, "y": 4, "w": 1.5},
{"x": 12.5, "y": 4},
- {"x": 13.5, "y": 4, "w": 1.5},
- ]
- },
- "LAYOUT_60_iso_tsangan": {
- "layout": [
- {"x":0, "y":0},
- {"x":1, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6, "y":0},
- {"x":7, "y":0},
- {"x":8, "y":0},
- {"x":9, "y":0},
- {"x":10, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0, "w":2},
-
- {"x":0, "y":1, "w":1.5},
- {"x":1.5, "y":1},
- {"x":2.5, "y":1},
- {"x":3.5, "y":1},
- {"x":4.5, "y":1},
- {"x":5.5, "y":1},
- {"x":6.5, "y":1},
- {"x":7.5, "y":1},
- {"x":8.5, "y":1},
- {"x":9.5, "y":1},
- {"x":10.5, "y":1},
- {"x":11.5, "y":1},
- {"x":12.5, "y":1},
-
- {"x":0, "y":2, "w":1.75},
- {"x":1.75, "y":2},
- {"x":2.75, "y":2},
- {"x":3.75, "y":2},
- {"x":4.75, "y":2},
- {"x":5.75, "y":2},
- {"x":6.75, "y":2},
- {"x":7.75, "y":2},
- {"x":8.75, "y":2},
- {"x":9.75, "y":2},
- {"x":10.75, "y":2},
- {"x":11.75, "y":2},
- {"x":12.75, "y":2},
- {"x":13.75, "y":1, "w":1.25, "h":2},
-
- {"x": 0, "y": 3, "w": 2.25},
- {"x": 2.25, "y": 3},
- {"x": 3.25, "y": 3},
- {"x": 4.25, "y": 3},
- {"x": 5.25, "y": 3},
- {"x": 6.25, "y": 3},
- {"x": 7.25, "y": 3},
- {"x": 8.25, "y": 3},
- {"x": 9.25, "y": 3},
- {"x": 10.25, "y": 3},
- {"x": 11.25, "y": 3},
- {"x": 12.25, "y": 3, "w": 1.75},
- {"x": 14, "y": 3},
-
- {"x":0, "y": 4, "w": 1.5},
- {"x":1.5, "y": 4},
- {"x":2.5, "y": 4, "w": 1.5},
- {"x":4, "y": 4, "w": 7},
- {"x":11, "y": 4, "w": 1.5},
- {"x":12.5, "y": 4},
- {"x":13.5, "y": 4, "w": 1.5},
- ]
- },
- "LAYOUT_60_iso": {
- "layout": [
- {"x":0, "y":0},
- {"x":1, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6, "y":0},
- {"x":7, "y":0},
- {"x":8, "y":0},
- {"x":9, "y":0},
- {"x":10, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0},
- {"x":14, "y":0},
-
- {"x":0, "y":1, "w":1.5},
- {"x":1.5, "y":1},
- {"x":2.5, "y":1},
- {"x":3.5, "y":1},
- {"x":4.5, "y":1},
- {"x":5.5, "y":1},
- {"x":6.5, "y":1},
- {"x":7.5, "y":1},
- {"x":8.5, "y":1},
- {"x":9.5, "y":1},
- {"x":10.5, "y":1},
- {"x":11.5, "y":1},
- {"x":12.5, "y":1},
-
- {"x":0, "y":2, "w":1.75},
- {"x":1.75, "y":2},
- {"x":2.75, "y":2},
- {"x":3.75, "y":2},
- {"x":4.75, "y":2},
- {"x":5.75, "y":2},
- {"x":6.75, "y":2},
- {"x":7.75, "y":2},
- {"x":8.75, "y":2},
- {"x":9.75, "y":2},
- {"x":10.75, "y":2},
- {"x":11.75, "y":2},
- {"x":12.75, "y":2},
- {"x":13.75, "y":1, "w":1.25, "h":2},
-
- {"x":2.25, "y":3},
- {"x":3.25, "y":3},
- {"x":4.25, "y":3},
- {"x":5.25, "y":3},
- {"x":6.25, "y":3},
- {"x":7.25, "y":3},
- {"x":8.25, "y":3},
- {"x":9.25, "y":3},
- {"x":10.25, "y":3},
- {"x":11.25, "y":3},
- {"x":12.25, "y":3, "w":2.75},
-
- {"x":0, "y":4, "w":1.25},
- {"x":1.25, "y":4, "w":1.25},
- {"x":2.5, "y":4, "w":1.25},
- {"x":3.75, "y":4, "w":6.25},
- {"x":10, "y":4, "w":1.25},
- {"x":11.25, "y":4, "w":1.25},
- {"x":12.5, "y":4, "w":1.25},
- {"x":13.75, "y":4, "w":1.25}
- ]
- },
- "LAYOUT_60_iso_tsangan": {
- "layout": [
- {"x":0, "y":0},
- {"x":1, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6, "y":0},
- {"x":7, "y":0},
- {"x":8, "y":0},
- {"x":9, "y":0},
- {"x":10, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0},
- {"x":14, "y":0},
-
- {"x":0, "y":1, "w":1.5},
- {"x":1.5, "y":1},
- {"x":2.5, "y":1},
- {"x":3.5, "y":1},
- {"x":4.5, "y":1},
- {"x":5.5, "y":1},
- {"x":6.5, "y":1},
- {"x":7.5, "y":1},
- {"x":8.5, "y":1},
- {"x":9.5, "y":1},
- {"x":10.5, "y":1},
- {"x":11.5, "y":1},
- {"x":12.5, "y":1},
-
- {"x":0, "y":2, "w":1.75},
- {"x":1.75, "y":2},
- {"x":2.75, "y":2},
- {"x":3.75, "y":2},
- {"x":4.75, "y":2},
- {"x":5.75, "y":2},
- {"x":6.75, "y":2},
- {"x":7.75, "y":2},
- {"x":8.75, "y":2},
- {"x":9.75, "y":2},
- {"x":10.75, "y":2},
- {"x":11.75, "y":2},
- {"x":12.75, "y":2},
- {"x":13.75, "y":1, "w":1.25, "h":2},
-
- {"x": 0, "y": 3, "w": 2.25},
- {"x": 2.25, "y": 3},
- {"x": 3.25, "y": 3},
- {"x": 4.25, "y": 3},
- {"x": 5.25, "y": 3},
- {"x": 6.25, "y": 3},
- {"x": 7.25, "y": 3},
- {"x": 8.25, "y": 3},
- {"x": 9.25, "y": 3},
- {"x": 10.25, "y": 3},
- {"x": 11.25, "y": 3},
- {"x": 12.25, "y": 3, "w": 1.75},
- {"x": 14, "y": 3},
-
- {"x":0, "y": 4, "w": 1.5},
- {"x":1.5, "y": 4},
- {"x":2.5, "y": 4, "w": 1.5},
- {"x":4, "y": 4, "w": 7},
- {"x":11, "y": 4, "w": 1.5},
- {"x":12.5, "y": 4},
- {"x":13.5, "y": 4, "w": 1.5},
- ]
- },
- "LAYOUT_60_all": {
- "layout": [
- {"x":0, "y":0},
- {"x":1, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6, "y":0},
- {"x":7, "y":0},
- {"x":8, "y":0},
- {"x":9, "y":0},
- {"x":10, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0, "w":2},
-
- {"x":0, "y":1, "w":1.5},
- {"x":1.5, "y":1},
- {"x":2.5, "y":1},
- {"x":3.5, "y":1},
- {"x":4.5, "y":1},
- {"x":5.5, "y":1},
- {"x":6.5, "y":1},
- {"x":7.5, "y":1},
- {"x":8.5, "y":1},
- {"x":9.5, "y":1},
- {"x":10.5, "y":1},
- {"x":11.5, "y":1},
- {"x":12.5, "y":1},
-
- {"x":0, "y":2, "w":1.75},
- {"x":1.75, "y":2},
- {"x":2.75, "y":2},
- {"x":3.75, "y":2},
- {"x":4.75, "y":2},
- {"x":5.75, "y":2},
- {"x":6.75, "y":2},
- {"x":7.75, "y":2},
- {"x":8.75, "y":2},
- {"x":9.75, "y":2},
- {"x":10.75, "y":2},
- {"x":11.75, "y":2},
- {"x":12.75, "y":2},
- {"x":13.75, "y":1, "w":1.25, "h":2},
-
- {"x":0, "y":3, "w":2},
- {"x":2, "y":3},
- {"x":3, "y":3},
- {"x":4, "y":3},
- {"x":5, "y":3},
- {"x":6, "y":3},
- {"x":7, "y":3},
- {"x":8, "y":3},
- {"x":9, "y":3},
- {"x":10, "y":3},
- {"x":11, "y":3},
- {"x":12, "y":3},
- {"x":13, "y":3},
- {"x":14, "y":3},
-
- {"x":0, "y": 4, "w": 1.5},
- {"x":1.5, "y": 4},
- {"x":2.5, "y": 4, "w": 1.5},
- {"x":4, "y": 4, "w": 7},
- {"x":11, "y": 4, "w": 1.5},
- {"x":12.5, "y": 4},
- {"x":13.5, "y": 4, "w": 1.5},
+ {"x": 13.5, "y": 4, "w": 1.5}
]
}
}
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c
deleted file mode 100644
index b8b48194a6..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_all(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md
deleted file mode 100644
index e8ab0065f2..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder full layout \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/keymap.c
new file mode 100644
index 0000000000..922ed190f6
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/readme.md
new file mode 100644
index 0000000000..56cc403367
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi/readme.md
@@ -0,0 +1,3 @@
+# The 60_ansi keymap for krush60 solder
+
+* Standard 60% ANSI layout
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c
deleted file mode 100644
index 3d454579cb..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_7u_spc(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
- )
- [1] = LAYOUT_60_ansi_7u_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
-
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md
deleted file mode 100644
index b7ec93ca7b..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi 7U \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c
index b6fb88bb8a..b198c248bb 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c
@@ -24,12 +24,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
+ ),
+
[1] = LAYOUT_60_ansi_arrow(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-}; \ No newline at end of file
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md
index 561b615d24..d601194a07 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md
@@ -1 +1,3 @@
-# The keymap for krush60 solder layout ansi arrow \ No newline at end of file
+# The 60_ansi_arrow keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c
deleted file mode 100644
index f22e073bf5..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_arrow_7u_spc(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
- [1] = LAYOUT_60_ansi_arrow_7u_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-}; \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md
deleted file mode 100644
index 578753b3ae..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi 7U arrow \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/keymap.c
new file mode 100644
index 0000000000..7d31b685d3
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_arrow_split_bs(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_60_ansi_arrow_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/readme.md
new file mode 100644
index 0000000000..618b721d22
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_arrow_split_bs keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/keymap.c
new file mode 100644
index 0000000000..ff75a4903f
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_arrow_split_bs_spc(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_60_ansi_arrow_split_bs_spc(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/readme.md
new file mode 100644
index 0000000000..db21ea0871
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_bs_spc/readme.md
@@ -0,0 +1,5 @@
+# The 60_ansi_arrow_split_bs_spc keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
+ * split Backspace
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/keymap.c
new file mode 100644
index 0000000000..95ad0386a5
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_arrow_split_spc(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_60_ansi_arrow_split_spc(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/readme.md
new file mode 100644
index 0000000000..68409cf47a
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_split_spc/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_arrow_split_spc keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c
deleted file mode 100644
index 8ba292cfd4..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_arrow_split_bs(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
- [1] = LAYOUT_60_ansi_arrow_split_bs(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md
deleted file mode 100644
index 505c1ec9bc..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi arrow split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c
deleted file mode 100644
index 56a713d56e..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_arrow_split_bs_7u_spc(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
- [1] = LAYOUT_60_ansi_arrow_split_bs_7u_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-}; \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md
deleted file mode 100644
index 059534d5df..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi arrow, 7u spacebar & split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c
deleted file mode 100644
index 8673ce02d1..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_arrow_split_bs_spc(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
- [1] = LAYOUT_60_ansi_arrow_split_bs_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md
deleted file mode 100644
index 2355c409a0..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi arrow, split spacebar & split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c
deleted file mode 100644
index 1da11323e4..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_arrow_split_spc(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
- )
- [1] = LAYOUT_60_ansi_arrow_split_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
-
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md
deleted file mode 100644
index af2fce05c2..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout ansi arrow & split spacebar \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/keymap.c
new file mode 100644
index 0000000000..9e3ad13073
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_arrow_tsangan(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_60_ansi_arrow_tsangan(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/readme.md
new file mode 100644
index 0000000000..6590eb3034
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_arrow_tsangan keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
+ * 7u Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..e5723c0807
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_arrow_tsangan_split_bs(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_60_ansi_arrow_tsangan_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/readme.md
new file mode 100644
index 0000000000..b48a892a23
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_tsangan_split_bs/readme.md
@@ -0,0 +1,5 @@
+# The 60_ansi_arrow_tsangan_split_bs keymap for krush60 solder
+
+* 60% ANSI with Arrows layout
+ * 7u Spacebar
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..1e9d26d20d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_split_bs(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/readme.md
new file mode 100644
index 0000000000..b0075b8c7b
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_split_bs keymap for krush60 solder
+
+* 60% ANSI layout
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/keymap.c
new file mode 100644
index 0000000000..88a87b3f0d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_split_bs_spc(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [1] = LAYOUT_60_ansi_split_bs_spc(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/readme.md
new file mode 100644
index 0000000000..922e791c40
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_bs_spc/readme.md
@@ -0,0 +1,5 @@
+# The 60_ansi_split_bs_spc keymap for krush60 solder
+
+* 60% ANSI layout
+ * split Backspace
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/keymap.c
new file mode 100644
index 0000000000..f180ac68b1
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_split_spc(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [1] = LAYOUT_60_ansi_split_spc(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/readme.md
new file mode 100644
index 0000000000..d98e08c875
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_split_spc/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_split_spc keymap for krush60 solder
+
+* 60% ANSI layout
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c
deleted file mode 100644
index ff0fd21deb..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_split_bs(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
-
- [0] = LAYOUT_60_ansi_split_bs(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md
deleted file mode 100644
index 80634c350f..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c
deleted file mode 100644
index 431fb483fd..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_split_bs_7u_spc(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL),
-
- [0] = LAYOUT_60_ansi_split_bs_7u_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md
deleted file mode 100644
index 70b3a8617b..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout 7u spacebar & split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c
deleted file mode 100644
index e3982e2507..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_split_bs_spc(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
-
- [1] = LAYOUT_60_ansi_split_bs_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md
deleted file mode 100644
index 6e1981c3ce..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout split spacebar & split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c
deleted file mode 100644
index abcd186ccc..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_split_spc(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
-
- [1] = LAYOUT_60_ansi_split_spc(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md
deleted file mode 100644
index 80634c350f..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder layout split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/keymap.c
new file mode 100644
index 0000000000..17a06223eb
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_tsangan(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_tsangan(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/readme.md
new file mode 100644
index 0000000000..11453644ea
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan/readme.md
@@ -0,0 +1,4 @@
+# The 60_ansi_tsangan keymap for krush60 solder
+
+* 60% ANSI layout
+ * Tsangan bottom row
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..e749252274
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_tsangan_split_bs(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_tsangan_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/readme.md
new file mode 100644
index 0000000000..5bc89c6b26
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_bs/readme.md
@@ -0,0 +1,5 @@
+# The 60_ansi_tsangan_split_bs keymap for krush60 solder
+
+* 60% ANSI layout
+ * Tsangan bottom row
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/keymap.c
new file mode 100644
index 0000000000..71bec072c6
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_ansi_tsangan_split_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_tsangan_split_rshift(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/readme.md
new file mode 100644
index 0000000000..63bfb36224
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_tsangan_split_rshift/readme.md
@@ -0,0 +1,5 @@
+# The 60_ansi_tsangan_split_rshift keymap for krush60 solder
+
+* 60% ANSI layout
+ * Tsangan bottom row
+ * split Right Shift
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/keymap.c
new file mode 100644
index 0000000000..3a4e0d4ab9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 SawnsProjects
+ * 2022 QMK / James Young (@noroadsleft)
+*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_isoenter_split_bs(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_isoenter_split_bs(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/readme.md
new file mode 100644
index 0000000000..1a837607e9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_isoenter_split_bs/readme.md
@@ -0,0 +1,5 @@
+# The 60_isoenter_split_bs keymap for krush60
+
+* 60% ANSI layout
+ * ISO Enter with 2.25u Left Shift
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c
deleted file mode 100644
index cc8067cc99..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_tsangan(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
- )
- [1] = LAYOUT_60_ansi_tsangan(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
-
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md
deleted file mode 100644
index 5bdb4a1026..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder Tsangan \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/keymap.c
new file mode 100644
index 0000000000..e557c078aa
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_60_tsangan_hhkb(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_tsangan_hhkb(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/readme.md
new file mode 100644
index 0000000000..3d98346483
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_hhkb/readme.md
@@ -0,0 +1,6 @@
+# The 60_tsangan_hhkb keymap for krush60 solder
+
+* 60% ANSI layout
+ * Tsangan bottom row
+ * split Backspace
+ * split Right Shift
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c
deleted file mode 100644
index 9fba9e6bf3..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2021 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT_60_ansi_tsangan_split_bs(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
- )
- [1] = LAYOUT_60_ansi_tsangan_split_bs(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md
deleted file mode 100644
index 03c0444cc6..0000000000
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush60 solder Tsangan & split backspace \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c
index f1ef9911dd..6e194461c4 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+/* Copyright 2021 SawnsProjects
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,24 +17,21 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │  Enter │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
- * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │
- * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
- * │Ctrl│GUI │Alt │                        │ Alt│ GUI│Menu│Ctrl│
- * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- */
- [0] = LAYOUT_60_ansi(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
- )
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md
index 88157e507e..1f6a41724d 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md
@@ -1 +1,3 @@
-# The keymap default for krush60 \ No newline at end of file
+# The default keymap for krush60 solder
+
+Assigns a keycode to every possible switch location.
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c
index a6e005bbbb..f9a62db7d3 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c
@@ -19,31 +19,35 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_SLSH,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(0), KC_LEFT, KC_LALT, KC_LCTL
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
+
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
[2] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
[3] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md
index 8f8d7a19bd..a7ca3b9c27 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md
@@ -1 +1 @@
-# The keymap VIA for krush60 \ No newline at end of file
+# The VIA keymap for krush60 solder
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/rules.mk b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk
index 439db87a58..841e5bc1a2 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/rules.mk
+++ b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/solder.h b/keyboards/sawnsprojects/krush/krush60/solder/solder.h
index d442776c9d..9fb7f834f2 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/solder.h
+++ b/keyboards/sawnsprojects/krush/krush60/solder/solder.h
@@ -17,14 +17,44 @@
#pragma once
#include "quantum.h"
+
#define XXX KC_NO
-//x
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │26 │17 │ │26 │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
+ * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │36 │46 │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐47 │ ISO Enter
+ * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │47 │ │46 │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤ ┌──────┬───┬───┐
+ * │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │66 │77 │ │66 │ 2.75u RShift │75 │66 │77 │ 1.75/1/1u RShift
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┤ └──────────┘ └──────┴───┴───┘
+ * │80 │90 │81 │82 │92 │84 │94 │85 │86 │95 │97 │ Split Space Arrow
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘
+ * ┌────┬────┬────┬────────┬────┬──────────┬────┬────┬────┬────┐
+ * │80 │90 │81 │82 │92 │84 │94 │85 │95 │97 │ Split Space
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘
+ * ┌────┬────┬────┬────────────────────────┬───┬───┬───┬───┬───┐
+ * │80 │90 │81 │92 │94 │85 │86 │95 │97 │ 6.25u Arrow
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐
+ * │80 │90 │81 │92 │94 │85 │95 │97 │ Standard
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
+ * │80 │90 │81 │92 │85 │86 │95 │97 │ 7u Arrow
+ * └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │80 │90 │81 │92 │85 │95 │97 │ 7u Tsangan/WKL/HHKB
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
#define LAYOUT_all( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, \
- K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -38,14 +68,12 @@
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi
-//x
#define LAYOUT_60_ansi( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K92, K94, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -58,17 +86,16 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_iso
-//x
-#define LAYOUT_60_iso(\
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K92, K94, K85, K95, K97 \
+
+#define LAYOUT_60_isoenter_split_bs(\
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
- { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
{ K20, K21, K22, K23, K24, K25, K26, XXX }, \
{ K30, K31, K32, K33, K34, K35, K36, XXX }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
@@ -78,13 +105,13 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_split_bs
+
#define LAYOUT_60_ansi_split_bs( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K92, K94, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -97,13 +124,13 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_split_spc
+
#define LAYOUT_60_ansi_split_spc( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -116,13 +143,13 @@
{ K80, K81, K82, XXX, K84, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_split_bs_spc
+
#define LAYOUT_60_ansi_split_bs_spc( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -135,13 +162,13 @@
{ K80, K81, K82, XXX, K84, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_7u_spc
-#define LAYOUT_60_ansi_7u_spc( \
+
+#define LAYOUT_60_ansi_tsangan( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K92, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -154,13 +181,13 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_split_7u_spc
-#define LAYOUT_60_ansi_split_bs_7u_spc( \
+
+#define LAYOUT_60_ansi_tsangan_split_bs( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
- K80, K90, K81, K92, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -173,13 +200,13 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_arrow_split_bs
+
#define LAYOUT_60_ansi_arrow_split_bs( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K92, K94, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K94, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -192,13 +219,13 @@
{ K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_arrow_split_spc
+
#define LAYOUT_60_ansi_arrow_split_spc( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -211,13 +238,13 @@
{ K80, K81, K82, XXX, K84, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_arrow_split_bs_spc
+
#define LAYOUT_60_ansi_arrow_split_bs_spc( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -230,13 +257,13 @@
{ K80, K81, K82, XXX, K84, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_arrow_7u_spc
-#define LAYOUT_60_ansi_arrow_7u_spc( \
+
+#define LAYOUT_60_ansi_arrow_tsangan( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K92, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -249,14 +276,13 @@
{ K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_arrow
-//x
+
#define LAYOUT_60_ansi_arrow( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K92, K94, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K94, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -269,14 +295,13 @@
{ K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
-//x
-//LAYOUT_60_ansi_arrow_split_bs_7u_spc
-#define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \
+
+#define LAYOUT_60_ansi_arrow_tsangan_split_bs( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
- K80, K90, K81, K92, K85, K86, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K85, K86, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -289,13 +314,13 @@
{ K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_tsangan
-#define LAYOUT_60_ansi_tsangan( \
+
+#define LAYOUT_60_ansi_tsangan_split_rshift( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
- K80, K90, K81, K92, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
+ K80, K90, K81, K92, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, XXX }, \
@@ -308,13 +333,13 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_ansi_tsangan_split_bs
-#define LAYOUT_60_ansi_tsangan_split_bs( \
+
+#define LAYOUT_60_tsangan_hhkb( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
- K80, K90, K81, K92, K85, K95, K97 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
+ K80, K90, K81, K92, K85, K95, K97 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, XXX }, \
{ K10, K11, K12, K13, K14, K15, XXX, K17 }, \
@@ -327,7 +352,3 @@
{ K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
{ K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
}
-//LAYOUT_60_iso_tsangan
-#define LAYOUT_60_iso_tsangan LAYOUT_60_ansi_tsangan
-//LAYOUT_60_iso_tsangan_split_bs
-#define LAYOUT_60_iso_tsangan_split_bs LAYOUT_60_ansi_tsangan_split_bs
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/config.h b/keyboards/sawnsprojects/krush/krush65/solder/config.h
index 9356e6cfba..1afab16a0e 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/config.h
+++ b/keyboards/sawnsprojects/krush/krush65/solder/config.h
@@ -40,6 +40,7 @@
#define DIODE_DIRECTION COL2ROW
/* Caps Lock */
#define LED_CAPS_LOCK_PIN F0
+#define LED_PIN_ON_STATE 0
/* rotary */
#define ENCODERS_PAD_A { D0 }
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/info.json b/keyboards/sawnsprojects/krush/krush65/solder/info.json
index 6c10d660e2..b72946bf55 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/info.json
+++ b/keyboards/sawnsprojects/krush/krush65/solder/info.json
@@ -2,297 +2,237 @@
"keyboard_name": "Krush65 Solder",
"url": "",
"maintainer": "MaiTheSan",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs_sp"
+ },
"layouts": {
- "LAYOUT_all": {
- "layout": [
- { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
- { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
- { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
- { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
- { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
- { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
- { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
- { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
- { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
- { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
- { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
- { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
- { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
- { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
- { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
- { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
- { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
- { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
- { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
- { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
- { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
- { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
- { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
- { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
- { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
- { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
- { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
- { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
- { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
- { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
- { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
- { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
- { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
- { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
- { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
- { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
- { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
- { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
- { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
- { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
- { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
- { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
- { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
- { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
- { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
- { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
- { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
- { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
- { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
- { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
- { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
- { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
- { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
- { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
- { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
- { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
- { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
- { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
- { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
- { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
- { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 },
- { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 },
- { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 },
- { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
- { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
- { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
- { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
- { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
- ]
- },
"LAYOUT_65_ansi_blocker_split_bs_sp": {
"layout": [
- { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
- { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
- { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
- { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
- { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
- { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
- { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
- { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
- { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
- { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
- { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
- { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
- { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
- { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
- { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
- { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
- { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
- { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
- { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
- { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
- { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
- { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
- { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
- { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
- { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
- { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
- { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
- { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
- { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
- { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
- { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
- { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
- { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
- { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
- { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
- { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
- { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
- { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
- { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
- { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
- { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
- { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
- { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
- { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
- { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
- { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
- { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
- { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
- { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
- { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
- { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
- { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
- { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
- { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
- { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
- { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
- { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
- { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
- { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
- { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
- { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 },
- { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 },
- { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 },
- { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
- { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
- { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
- { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
- { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ {"label":"K00 (B1,C7)", "x":0, "y":0},
+ {"label":"K10 (B2,C7)", "x":1, "y":0},
+ {"label":"K01 (B1,C6)", "x":2, "y":0},
+ {"label":"K11 (B2,C6)", "x":3, "y":0},
+ {"label":"K02 (B1,B6)", "x":4, "y":0},
+ {"label":"K12 (B2,B6)", "x":5, "y":0},
+ {"label":"K03 (B1,B5)", "x":6, "y":0},
+ {"label":"K13 (B2,B5)", "x":7, "y":0},
+ {"label":"K04 (B1,B4)", "x":8, "y":0},
+ {"label":"K14 (B2,B4)", "x":9, "y":0},
+ {"label":"K05 (B1,D7)", "x":10, "y":0},
+ {"label":"K15 (B2,D7)", "x":11, "y":0},
+ {"label":"K06 (B1,D5)", "x":12, "y":0},
+ {"label":"K26 (D1,D5)", "x":13, "y":0},
+ {"label":"K17 (B2,D3)", "x":14, "y":0},
+ {"label":"K07 (B1,D3)", "x":15, "y":0},
+
+ {"label":"K20 (D1,C7)", "x":0, "y":1, "w":1.5},
+ {"label":"K30 (D2,C7)", "x":1.5, "y":1},
+ {"label":"K21 (D1,C6)", "x":2.5, "y":1},
+ {"label":"K31 (D2,C6)", "x":3.5, "y":1},
+ {"label":"K22 (D1,B6)", "x":4.5, "y":1},
+ {"label":"K32 (D2,B6)", "x":5.5, "y":1},
+ {"label":"K23 (D1,B5)", "x":6.5, "y":1},
+ {"label":"K33 (D2,B5)", "x":7.5, "y":1},
+ {"label":"K24 (D1,B4)", "x":8.5, "y":1},
+ {"label":"K34 (D2,B4)", "x":9.5, "y":1},
+ {"label":"K25 (D1,D7)", "x":10.5, "y":1},
+ {"label":"K35 (D2,D7)", "x":11.5, "y":1},
+ {"label":"K36 (D2,D5)", "x":12.5, "y":1},
+ {"label":"K46 (D4,D5)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K37 (D2,D3)", "x":15, "y":1},
+
+ {"label":"K40 (D4,C7)", "x":0, "y":2, "w":1.75},
+ {"label":"K50 (D6,C7)", "x":1.75, "y":2},
+ {"label":"K41 (D4,C6)", "x":2.75, "y":2},
+ {"label":"K51 (D6,C6)", "x":3.75, "y":2},
+ {"label":"K42 (D4,B6)", "x":4.75, "y":2},
+ {"label":"K52 (D6,B6)", "x":5.75, "y":2},
+ {"label":"K43 (D4,B5)", "x":6.75, "y":2},
+ {"label":"K53 (D6,B5)", "x":7.75, "y":2},
+ {"label":"K44 (D4,B4)", "x":8.75, "y":2},
+ {"label":"K54 (D6,B4)", "x":9.75, "y":2},
+ {"label":"K45 (D4,D7)", "x":10.75, "y":2},
+ {"label":"K55 (D6,D7)", "x":11.75, "y":2},
+ {"label":"K47 (D4,D3)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K57 (D6,D3)", "x":15, "y":2},
+
+ {"label":"K60 (F6,C7)", "x":0, "y":3, "w":2.25},
+ {"label":"K70 (F7,C7)", "x":2.25, "y":3},
+ {"label":"K61 (F6,C6)", "x":3.25, "y":3},
+ {"label":"K71 (F7,C6)", "x":4.25, "y":3},
+ {"label":"K62 (F6,B6)", "x":5.25, "y":3},
+ {"label":"K72 (F7,B6)", "x":6.25, "y":3},
+ {"label":"K63 (F6,B5)", "x":7.25, "y":3},
+ {"label":"K73 (F7,B5)", "x":8.25, "y":3},
+ {"label":"K64 (F6,B4)", "x":9.25, "y":3},
+ {"label":"K74 (F7,B4)", "x":10.25, "y":3},
+ {"label":"K65 (F6,D7)", "x":11.25, "y":3},
+ {"label":"K75 (F7,D7)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K77 (F7,D3)", "x":14, "y":3},
+ {"label":"K67 (F6,D3)", "x":15, "y":3},
+
+ {"label":"K80 (F5,C7)", "x":0, "y":4, "w":1.25},
+ {"label":"K90 (F4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K81 (F5,C6)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K82 (F5,B6)", "x":3.75, "y":4, "w":2.25},
+ {"label":"K92 (F4,B6)", "x":6, "y":4, "w":1.25},
+ {"label":"K93 (F4,B5)", "x":7.25, "y":4, "w":2.75},
+ {"label":"K94 (F4,B4)", "x":10, "y":4, "w":1.25},
+ {"label":"K85 (F5,D7)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K95 (F4,D7)", "x":13, "y":4},
+ {"label":"K97 (F4,D3)", "x":14, "y":4},
+ {"label":"K87 (F5,D3)", "x":15, "y":4}
]
},
-
- "LAYOUT_65_ansi_blocker": {
+ "LAYOUT_65_ansi_blocker": {
"layout": [
- { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
- { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
- { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
- { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
- { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
- { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
- { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
- { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
- { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
- { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
- { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
- { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
- { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
- { "label": "K26 (D1,D5)", "x": 13, "y": 0, "w": 2 },
- { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
- { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
- { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
- { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
- { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
- { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
- { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
- { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
- { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
- { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
- { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
- { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
- { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
- { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
- { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
- { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
- { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
- { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
- { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
- { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
- { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
- { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
- { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
- { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
- { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
- { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
- { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
- { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
- { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
- { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
- { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
- { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
- { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
- { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
- { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
- { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
- { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
- { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
- { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
- { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
- { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
- { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
- { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
- { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
- { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
- { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 },
- { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
- { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
- { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
- { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
- { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ {"label":"K00 (B1,C7)", "x":0, "y":0},
+ {"label":"K10 (B2,C7)", "x":1, "y":0},
+ {"label":"K01 (B1,C6)", "x":2, "y":0},
+ {"label":"K11 (B2,C6)", "x":3, "y":0},
+ {"label":"K02 (B1,B6)", "x":4, "y":0},
+ {"label":"K12 (B2,B6)", "x":5, "y":0},
+ {"label":"K03 (B1,B5)", "x":6, "y":0},
+ {"label":"K13 (B2,B5)", "x":7, "y":0},
+ {"label":"K04 (B1,B4)", "x":8, "y":0},
+ {"label":"K14 (B2,B4)", "x":9, "y":0},
+ {"label":"K05 (B1,D7)", "x":10, "y":0},
+ {"label":"K15 (B2,D7)", "x":11, "y":0},
+ {"label":"K06 (B1,D5)", "x":12, "y":0},
+ {"label":"K26 (D1,D5)", "x":13, "y":0, "w":2},
+ {"label":"K07 (B1,D3)", "x":15, "y":0},
+
+ {"label":"K20 (D1,C7)", "x":0, "y":1, "w":1.5},
+ {"label":"K30 (D2,C7)", "x":1.5, "y":1},
+ {"label":"K21 (D1,C6)", "x":2.5, "y":1},
+ {"label":"K31 (D2,C6)", "x":3.5, "y":1},
+ {"label":"K22 (D1,B6)", "x":4.5, "y":1},
+ {"label":"K32 (D2,B6)", "x":5.5, "y":1},
+ {"label":"K23 (D1,B5)", "x":6.5, "y":1},
+ {"label":"K33 (D2,B5)", "x":7.5, "y":1},
+ {"label":"K24 (D1,B4)", "x":8.5, "y":1},
+ {"label":"K34 (D2,B4)", "x":9.5, "y":1},
+ {"label":"K25 (D1,D7)", "x":10.5, "y":1},
+ {"label":"K35 (D2,D7)", "x":11.5, "y":1},
+ {"label":"K36 (D2,D5)", "x":12.5, "y":1},
+ {"label":"K46 (D4,D5)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K37 (D2,D3)", "x":15, "y":1},
+
+ {"label":"K40 (D4,C7)", "x":0, "y":2, "w":1.75},
+ {"label":"K50 (D6,C7)", "x":1.75, "y":2},
+ {"label":"K41 (D4,C6)", "x":2.75, "y":2},
+ {"label":"K51 (D6,C6)", "x":3.75, "y":2},
+ {"label":"K42 (D4,B6)", "x":4.75, "y":2},
+ {"label":"K52 (D6,B6)", "x":5.75, "y":2},
+ {"label":"K43 (D4,B5)", "x":6.75, "y":2},
+ {"label":"K53 (D6,B5)", "x":7.75, "y":2},
+ {"label":"K44 (D4,B4)", "x":8.75, "y":2},
+ {"label":"K54 (D6,B4)", "x":9.75, "y":2},
+ {"label":"K45 (D4,D7)", "x":10.75, "y":2},
+ {"label":"K55 (D6,D7)", "x":11.75, "y":2},
+ {"label":"K47 (D4,D3)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K57 (D6,D3)", "x":15, "y":2},
+
+ {"label":"K60 (F6,C7)", "x":0, "y":3, "w":2.25},
+ {"label":"K70 (F7,C7)", "x":2.25, "y":3},
+ {"label":"K61 (F6,C6)", "x":3.25, "y":3},
+ {"label":"K71 (F7,C6)", "x":4.25, "y":3},
+ {"label":"K62 (F6,B6)", "x":5.25, "y":3},
+ {"label":"K72 (F7,B6)", "x":6.25, "y":3},
+ {"label":"K63 (F6,B5)", "x":7.25, "y":3},
+ {"label":"K73 (F7,B5)", "x":8.25, "y":3},
+ {"label":"K64 (F6,B4)", "x":9.25, "y":3},
+ {"label":"K74 (F7,B4)", "x":10.25, "y":3},
+ {"label":"K65 (F6,D7)", "x":11.25, "y":3},
+ {"label":"K75 (F7,D7)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K77 (F7,D3)", "x":14, "y":3},
+ {"label":"K67 (F6,D3)", "x":15, "y":3},
+
+ {"label":"K80 (F5,C7)", "x":0, "y":4, "w":1.25},
+ {"label":"K90 (F4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K81 (F5,C6)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K92 (F4,B6)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K94 (F4,B4)", "x":10, "y":4, "w":1.25},
+ {"label":"K85 (F5,D7)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K95 (F4,D7)", "x":13, "y":4},
+ {"label":"K97 (F4,D3)", "x":14, "y":4},
+ {"label":"K87 (F5,D3)", "x":15, "y":4}
]
},
- "LAYOUT_65_ansi_blocker_split_bs": {
+ "LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
- { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
- { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
- { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
- { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
- { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
- { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
- { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
- { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
- { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
- { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
- { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
- { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
- { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
- { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
- { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
- { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
- { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
- { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
- { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
- { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
- { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
- { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
- { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
- { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
- { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
- { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
- { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
- { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
- { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
- { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
- { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
- { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
- { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
- { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
- { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
- { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
- { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
- { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
- { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
- { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
- { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
- { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
- { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
- { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
- { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
- { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
- { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
- { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
- { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
- { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
- { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
- { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
- { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
- { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
- { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
- { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
- { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
- { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
- { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
- { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
- { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 },
- { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
- { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
- { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
- { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
- { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ {"label":"K00 (B1,C7)", "x":0, "y":0},
+ {"label":"K10 (B2,C7)", "x":1, "y":0},
+ {"label":"K01 (B1,C6)", "x":2, "y":0},
+ {"label":"K11 (B2,C6)", "x":3, "y":0},
+ {"label":"K02 (B1,B6)", "x":4, "y":0},
+ {"label":"K12 (B2,B6)", "x":5, "y":0},
+ {"label":"K03 (B1,B5)", "x":6, "y":0},
+ {"label":"K13 (B2,B5)", "x":7, "y":0},
+ {"label":"K04 (B1,B4)", "x":8, "y":0},
+ {"label":"K14 (B2,B4)", "x":9, "y":0},
+ {"label":"K05 (B1,D7)", "x":10, "y":0},
+ {"label":"K15 (B2,D7)", "x":11, "y":0},
+ {"label":"K06 (B1,D5)", "x":12, "y":0},
+ {"label":"K26 (D1,D5)", "x":13, "y":0},
+ {"label":"K17 (B2,D3)", "x":14, "y":0},
+ {"label":"K07 (B1,D3)", "x":15, "y":0},
+
+ {"label":"K20 (D1,C7)", "x":0, "y":1, "w":1.5},
+ {"label":"K30 (D2,C7)", "x":1.5, "y":1},
+ {"label":"K21 (D1,C6)", "x":2.5, "y":1},
+ {"label":"K31 (D2,C6)", "x":3.5, "y":1},
+ {"label":"K22 (D1,B6)", "x":4.5, "y":1},
+ {"label":"K32 (D2,B6)", "x":5.5, "y":1},
+ {"label":"K23 (D1,B5)", "x":6.5, "y":1},
+ {"label":"K33 (D2,B5)", "x":7.5, "y":1},
+ {"label":"K24 (D1,B4)", "x":8.5, "y":1},
+ {"label":"K34 (D2,B4)", "x":9.5, "y":1},
+ {"label":"K25 (D1,D7)", "x":10.5, "y":1},
+ {"label":"K35 (D2,D7)", "x":11.5, "y":1},
+ {"label":"K36 (D2,D5)", "x":12.5, "y":1},
+ {"label":"K46 (D4,D5)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K37 (D2,D3)", "x":15, "y":1},
+
+ {"label":"K40 (D4,C7)", "x":0, "y":2, "w":1.75},
+ {"label":"K50 (D6,C7)", "x":1.75, "y":2},
+ {"label":"K41 (D4,C6)", "x":2.75, "y":2},
+ {"label":"K51 (D6,C6)", "x":3.75, "y":2},
+ {"label":"K42 (D4,B6)", "x":4.75, "y":2},
+ {"label":"K52 (D6,B6)", "x":5.75, "y":2},
+ {"label":"K43 (D4,B5)", "x":6.75, "y":2},
+ {"label":"K53 (D6,B5)", "x":7.75, "y":2},
+ {"label":"K44 (D4,B4)", "x":8.75, "y":2},
+ {"label":"K54 (D6,B4)", "x":9.75, "y":2},
+ {"label":"K45 (D4,D7)", "x":10.75, "y":2},
+ {"label":"K55 (D6,D7)", "x":11.75, "y":2},
+ {"label":"K47 (D4,D3)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K57 (D6,D3)", "x":15, "y":2},
+
+ {"label":"K60 (F6,C7)", "x":0, "y":3, "w":2.25},
+ {"label":"K70 (F7,C7)", "x":2.25, "y":3},
+ {"label":"K61 (F6,C6)", "x":3.25, "y":3},
+ {"label":"K71 (F7,C6)", "x":4.25, "y":3},
+ {"label":"K62 (F6,B6)", "x":5.25, "y":3},
+ {"label":"K72 (F7,B6)", "x":6.25, "y":3},
+ {"label":"K63 (F6,B5)", "x":7.25, "y":3},
+ {"label":"K73 (F7,B5)", "x":8.25, "y":3},
+ {"label":"K64 (F6,B4)", "x":9.25, "y":3},
+ {"label":"K74 (F7,B4)", "x":10.25, "y":3},
+ {"label":"K65 (F6,D7)", "x":11.25, "y":3},
+ {"label":"K75 (F7,D7)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K77 (F7,D3)", "x":14, "y":3},
+ {"label":"K67 (F6,D3)", "x":15, "y":3},
+
+ {"label":"K80 (F5,C7)", "x":0, "y":4, "w":1.25},
+ {"label":"K90 (F4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K81 (F5,C6)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K92 (F4,B6)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K94 (F4,B4)", "x":10, "y":4, "w":1.25},
+ {"label":"K85 (F5,D7)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K95 (F4,D7)", "x":13, "y":4},
+ {"label":"K97 (F4,D3)", "x":14, "y":4},
+ {"label":"K87 (F5,D3)", "x":15, "y":4}
]
}
}
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c
index 99c42be954..b684282b65 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c
@@ -18,22 +18,20 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[0] = LAYOUT_65_ansi_blocker(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SPC, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SPC, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi_blocker(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
-
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md
index 181cc9a013..d69d73d349 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md
@@ -1 +1,3 @@
-# The keymap for krush65 solder layout ansi blocker \ No newline at end of file
+# The ansi_blocker keymap for krush65 solder
+
+* 65% ANSI layout with blocker
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c
deleted file mode 100644
index b2019e5ec8..0000000000
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2021 SawnsProjects
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-
- [0] = LAYOUT_65_ansi_blocker_split_bs_sp(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
-
- [1] = LAYOUT_65_ansi_blocker_split_bs_sp(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
-};
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md
deleted file mode 100644
index b6d1da89aa..0000000000
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The keymap for krush65 solder layout ansi blocker with split backspace and split spacebar \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c
index 6cd8dd4baf..c238e92a59 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c
@@ -18,22 +18,20 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-
[0] = LAYOUT_65_ansi_blocker_split_bs(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi_blocker_split_bs(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md
index 162da7a903..fffebdf6a0 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md
@@ -1 +1,4 @@
-# The keymap for krush65 solder layout ansi blocker with split backspace \ No newline at end of file
+# The ansi_blocker_split_bs keymap for krush65 solder
+
+* 65% ANSI layout with blocker
+ * split Backspace
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c
index eecb1e5f8f..fcadaac844 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c
@@ -18,22 +18,20 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
-
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md
index 1f98b857ce..9e7dd186d9 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md
@@ -1 +1,5 @@
-# The default keymap for krush65 solder \ No newline at end of file
+# The default keymap for krush65 solder
+
+* 65% ANSI layout with blocker
+ * split Backspace
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c
index 3a7fa10cfa..d252058bde 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c
index 8036529c91..59eebc774e 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c
@@ -18,34 +18,36 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[0] = LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
[2] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
[3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
};
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md
index 2c88050060..1c17d4e53b 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md
@@ -1 +1,5 @@
-# The VIA keymap for krush65 solder \ No newline at end of file
+# The VIA keymap for krush65 solder
+
+* 65% ANSI layout with blocker
+ * split Backspace
+ * split Spacebar
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk
index 1adb996504..9b2c9fa3e8 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/rules.mk
+++ b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/solder.h b/keyboards/sawnsprojects/krush/krush65/solder/solder.h
index 58f6bed57b..11140aac9c 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/solder.h
+++ b/keyboards/sawnsprojects/krush/krush65/solder/solder.h
@@ -18,76 +18,79 @@
#include "quantum.h"
-#define LAYOUT_all( \
- K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
- K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
- K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
- { K30, K31, K32, K33, K34, K35, K36, K37 }, \
- { K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
- { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \
- { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \
-}
+#define XXX KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │26 │17 │07 │ │26 │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │36 │46 │37 │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐47 │ ISO Enter
+ * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │47 │57 │ │46 │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │77 │67 │
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │80 │90 │81 │82 │92 │93 │94 │85 │ │95 │97 │87 │ Split Spacebar
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬────┬────┐
+ * │80 │90 │81 │92 │94 │85 │ Standard
+ * └────┴────┴────┴────────────────────────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┐
+ * │80 │90 │81 │92 │85 │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
#define LAYOUT_65_ansi_blocker( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K07, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
- K80, K90, K81, K92, K94, K85, K95, K97, K87 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K92, K94, K85, K95, K97, K87 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, KC_NO, KC_NO }, \
- { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
- { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \
- { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, K57 }, \
+ { K60, K61, K62, K63, K64, K65, XXX, K67 }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, K87 }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
#define LAYOUT_65_ansi_blocker_split_bs( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
- K80, K90, K81, K92, K94, K85, K95, K97, K87 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K92, K94, K85, K95, K97, K87 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
- { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \
- { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, K57 }, \
+ { K60, K61, K62, K63, K64, K65, XXX, K67 }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, K87 }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
}
#define LAYOUT_65_ansi_blocker_split_bs_sp( \
K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
- K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
- K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
- K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
- { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
- { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
- { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
- { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
- { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
- { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \
- { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, K57 }, \
+ { K60, K61, K62, K63, K64, K65, XXX, K67 }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, K82, XXX, XXX, K85, XXX, K87 }, \
+ { K90, XXX, K92, K93, K94, K95, XXX, K97 }, \
}
-
diff --git a/keyboards/sawnsprojects/satxri6key/config.h b/keyboards/sawnsprojects/satxri6key/config.h
index bb334c7221..5ad3f20093 100644
--- a/keyboards/sawnsprojects/satxri6key/config.h
+++ b/keyboards/sawnsprojects/satxri6key/config.h
@@ -102,7 +102,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/sawnsprojects/satxri6key/rules.mk b/keyboards/sawnsprojects/satxri6key/rules.mk
index bff898cce5..a2b29b5ae5 100644
--- a/keyboards/sawnsprojects/satxri6key/rules.mk
+++ b/keyboards/sawnsprojects/satxri6key/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/scarletbandana/keymaps/default/config.h b/keyboards/scarletbandana/keymaps/default/config.h
deleted file mode 100644
index 8533e6f6d6..0000000000
--- a/keyboards/scarletbandana/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Cole Markham, WoodKeys.click
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/scarletbandana/keymaps/default/keymap.c b/keyboards/scarletbandana/keymaps/default/keymap.c
index 3060bb76ae..7b2687a607 100644
--- a/keyboards/scarletbandana/keymaps/default/keymap.c
+++ b/keyboards/scarletbandana/keymaps/default/keymap.c
@@ -42,31 +42,31 @@ int RGB_current_mode;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_all(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, KC_DEL, KC_PGUP,\
- KC_F3, KC_F4, KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,\
- KC_F5, KC_F6, KC_CAPS,KC_A,KC_S,KC_D,KC_F, KC_G, KC_H,KC_J,KC_K,KC_L, KC_SCLN,KC_QUOT,KC_ENT, KC_HOME,\
- KC_F7, KC_F8, KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLASH,KC_RSFT,KC_UP,KC_END,\
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, KC_DEL, KC_PGUP,
+ KC_F3, KC_F4, KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_PGDN,
+ KC_F5, KC_F6, KC_CAPS,KC_A,KC_S,KC_D,KC_F, KC_G, KC_H,KC_J,KC_K,KC_L, KC_SCLN,KC_QUOT,KC_ENT, KC_HOME,
+ KC_F7, KC_F8, KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLASH,KC_RSFT,KC_UP,KC_END,
KC_F9, KC_F10, KC_LCTL,KC_LGUI,KC_LALT, RAISE, KC_SPACE, LOWER, KC_RALT,KC_APP,KC_RCTRL,KC_LEFT,KC_DOWN,KC_RIGHT),
[_RAISE] = LAYOUT_all(
- RGB_MOD, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\
+ RGB_MOD, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______, _______,_______,_______, _______, _______, _______, _______,_______,_______,_______,_______,_______),
[_LOWER] = LAYOUT_all(
- RGB_MOD, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\
+ RGB_MOD, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______, _______,_______,_______, _______, _______, _______, _______,_______,_______,_______,_______,_______),
[_ADJUST] = LAYOUT_all(
- RESET, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
- _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\
+ RESET, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______, _______,_______,_______, _______, _______, _______, _______,_______,_______,_______,_______,_______)
};
diff --git a/keyboards/scarletbandana/rules.mk b/keyboards/scarletbandana/rules.mk
index f8c675daaa..a6313e3b41 100644
--- a/keyboards/scarletbandana/rules.mk
+++ b/keyboards/scarletbandana/rules.mk
@@ -12,11 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
AUDIO_ENABLE = yes # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality, also set ISSI_ENABLE below for Miera
-EXTRAFLAGS += -flto
+LTO_ENABLE = yes
diff --git a/keyboards/scatter42/rules.mk b/keyboards/scatter42/rules.mk
index 04adaadcc9..3e7f833dc5 100644
--- a/keyboards/scatter42/rules.mk
+++ b/keyboards/scatter42/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sck/gtm/rules.mk b/keyboards/sck/gtm/rules.mk
index 3585bec2e3..756963d95d 100644
--- a/keyboards/sck/gtm/rules.mk
+++ b/keyboards/sck/gtm/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # [Crawlpad] Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # [Crawlpad] This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # [Crawlpad] This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/sck/m0116b/keymaps/m0118/config.h b/keyboards/sck/m0116b/keymaps/m0118/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/m0116b/keymaps/m0118/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/m0116b/rules.mk b/keyboards/sck/m0116b/rules.mk
index 10e9616d6f..73ac281e0b 100644
--- a/keyboards/sck/m0116b/rules.mk
+++ b/keyboards/sck/m0116b/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sck/neiso/keymaps/default/config.h b/keyboards/sck/neiso/keymaps/default/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/neiso/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/neiso/rules.mk b/keyboards/sck/neiso/rules.mk
index 43530f6244..f95b846883 100644
--- a/keyboards/sck/neiso/rules.mk
+++ b/keyboards/sck/neiso/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sck/osa/keymaps/all/config.h b/keyboards/sck/osa/keymaps/all/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/osa/keymaps/all/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/osa/keymaps/default/config.h b/keyboards/sck/osa/keymaps/default/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/osa/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/osa/keymaps/ocm/config.h b/keyboards/sck/osa/keymaps/ocm/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/osa/keymaps/ocm/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/osa/keymaps/splitbs/config.h b/keyboards/sck/osa/keymaps/splitbs/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/osa/keymaps/splitbs/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/osa/keymaps/splitrs/config.h b/keyboards/sck/osa/keymaps/splitrs/config.h
deleted file mode 100644
index 499a4753f4..0000000000
--- a/keyboards/sck/osa/keymaps/splitrs/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 jrfhoutx
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sck/osa/rules.mk b/keyboards/sck/osa/rules.mk
index 9841c0ca88..f6eabd4d0f 100644
--- a/keyboards/sck/osa/rules.mk
+++ b/keyboards/sck/osa/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/scythe/keymaps/default/config.h b/keyboards/scythe/keymaps/default/config.h
deleted file mode 100644
index cea12f905c..0000000000
--- a/keyboards/scythe/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/scythe/keymaps/forties/config.h b/keyboards/scythe/keymaps/forties/config.h
deleted file mode 100644
index cea12f905c..0000000000
--- a/keyboards/scythe/keymaps/forties/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 ENDO Katsuhiro <ka2hiro@kagizaraya.jp>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/scythe/rules.mk b/keyboards/scythe/rules.mk
index 017023d00e..174790a3e9 100644
--- a/keyboards/scythe/rules.mk
+++ b/keyboards/scythe/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/seigaiha/rules.mk b/keyboards/seigaiha/rules.mk
index a56deff61e..0e494f8488 100644
--- a/keyboards/seigaiha/rules.mk
+++ b/keyboards/seigaiha/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sekigon/grs_70ec/rules.mk b/keyboards/sekigon/grs_70ec/rules.mk
index aeb1f81ced..eb2fa4ae5b 100644
--- a/keyboards/sekigon/grs_70ec/rules.mk
+++ b/keyboards/sekigon/grs_70ec/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sendyyeah/75pixels/rules.mk b/keyboards/sendyyeah/75pixels/rules.mk
index 3feebbc51e..f1f2e02f32 100644
--- a/keyboards/sendyyeah/75pixels/rules.mk
+++ b/keyboards/sendyyeah/75pixels/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sendyyeah/bevi/keymaps/default/keymap.c b/keyboards/sendyyeah/bevi/keymaps/default/keymap.c
index 4f5e135672..d3fda60ae7 100644
--- a/keyboards/sendyyeah/bevi/keymaps/default/keymap.c
+++ b/keyboards/sendyyeah/bevi/keymaps/default/keymap.c
@@ -34,17 +34,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1)
),
[1] = LAYOUT(
- _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ , \
- _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ \
+ _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______
),
};
diff --git a/keyboards/sendyyeah/bevi/keymaps/via/keymap.c b/keyboards/sendyyeah/bevi/keymaps/via/keymap.c
index 4f5e135672..d3fda60ae7 100644
--- a/keyboards/sendyyeah/bevi/keymaps/via/keymap.c
+++ b/keyboards/sendyyeah/bevi/keymaps/via/keymap.c
@@ -34,17 +34,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1) \
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_1 , KC_2 , KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_PPLS, KC_P7 , KC_P8 , KC_P9 , KC_TAB , KC_Q , KC_W , KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_P4 , KC_P5 , KC_P6 , KC_CAPS , KC_A , KC_S , KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_PENT, KC_P1 , KC_P2 , KC_P3 , KC_LSFT , KC_Z , KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_P0 , DBL_0 , KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1)
),
[1] = LAYOUT(
- _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ , \
- _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______ \
+ _______, _______, _______, _______, KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______
),
};
diff --git a/keyboards/sendyyeah/bevi/rules.mk b/keyboards/sendyyeah/bevi/rules.mk
index 58a5b43332..8075263133 100644
--- a/keyboards/sendyyeah/bevi/rules.mk
+++ b/keyboards/sendyyeah/bevi/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sendyyeah/pix/config.h b/keyboards/sendyyeah/pix/config.h
index a9c3080d8c..86c6d26e16 100644
--- a/keyboards/sendyyeah/pix/config.h
+++ b/keyboards/sendyyeah/pix/config.h
@@ -49,15 +49,17 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-// #define RGB_DI_PIN B5
-// #ifdef RGB_DI_PIN
-// #define RGBLED_NUM 5
-// #define RGBLIGHT_HUE_STEP 8
-// #define RGBLIGHT_SAT_STEP 8
-// #define RGBLIGHT_VAL_STEP 8
-// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
-// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
-// #define RGBLIGHT_ANIMATIONS
-// #define RGBLIGHT_LAYERS
-// #define RGBLIGHT_LAYER_BLINK
-// #endif
+#define USB_MAX_POWER_CONSUMPTION 500
+
+#define RGB_DI_PIN B5
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 15
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYER_BLINK
+#endif
diff --git a/keyboards/sendyyeah/pix/keymaps/default/glcdfont.c b/keyboards/sendyyeah/pix/keymaps/default/glcdfont.c
index 7af69f796c..53f25b92ed 100644
--- a/keyboards/sendyyeah/pix/keymaps/default/glcdfont.c
+++ b/keyboards/sendyyeah/pix/keymaps/default/glcdfont.c
@@ -165,11 +165,11 @@ const unsigned char font[] PROGMEM = {
0xF1, 0xF9, 0xFD, 0x01, 0x01, 0xFE,
0xFE, 0x01, 0x01, 0xFD, 0xF9, 0xF1,
0x61, 0x01, 0xFD, 0x01, 0x01, 0xFE,
+ 0xFE, 0x01, 0xF9, 0xF9, 0x31, 0xE1,
+ 0xE1, 0x31, 0xF9, 0xF9, 0x01, 0xFE,
+ 0xFE, 0x01, 0xF9, 0xF9, 0x61, 0x61,
+ 0x61, 0x61, 0xF9, 0xF9, 0x01, 0xFE,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xF0, 0x08, 0x04, 0xC4, 0x24, 0x24,
- 0x24, 0xC4, 0x04, 0x08, 0xF0, 0x00,
- 0xF0, 0xF8, 0xFC, 0x3C, 0xDC, 0xDC,
- 0xDC, 0x3C, 0xFC, 0xF8, 0xF0, 0x00,
0xFE, 0xC1, 0xC1, 0xC9, 0xC5, 0xDD,
0xC5, 0xC9, 0xC1, 0xC1, 0xFE, 0x00,
0xFC, 0xFE, 0xFE, 0xEE, 0xF6, 0xC6,
@@ -197,15 +197,15 @@ const unsigned char font[] PROGMEM = {
0x08, 0x09, 0x0B, 0x08, 0x08, 0x07,
0x07, 0x08, 0x08, 0x0B, 0x09, 0x08,
0x08, 0x08, 0x0B, 0x08, 0x08, 0x07,
+ 0x07, 0x08, 0x09, 0x09, 0x08, 0x08,
+ 0x08, 0x08, 0x09, 0x09, 0x08, 0x07,
+ 0x07, 0x08, 0x09, 0x09, 0x08, 0x08,
+ 0x08, 0x08, 0x09, 0x09, 0x08, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x07, 0x08, 0x10, 0x13, 0x11, 0x11,
- 0x11, 0x13, 0x10, 0x08, 0x07, 0x00,
- 0x07, 0x0F, 0x1F, 0x1C, 0x1E, 0x1E,
- 0x1E, 0x1C, 0x1F, 0x0F, 0x07, 0x00,
0xFE, 0x01, 0xF1, 0xF9, 0xFD, 0xFD,
0x05, 0x05, 0x09, 0xF1, 0x01, 0xFE,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0x01, 0x39, 0x7D, 0x6D, 0x6D,
+ 0x6D, 0x6D, 0xED, 0xC9, 0x01, 0xFE,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -236,8 +236,8 @@ const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x08, 0x08, 0x09, 0x0B, 0x0B,
0x0A, 0x0A, 0x09, 0x08, 0x08, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x08, 0x09, 0x0B, 0x0B, 0x0B,
+ 0x0B, 0x0B, 0x0B, 0x09, 0x08, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff --git a/keyboards/sendyyeah/pix/keymaps/default/keymap.c b/keyboards/sendyyeah/pix/keymaps/default/keymap.c
index bcaf52d53b..75914a0b0f 100644
--- a/keyboards/sendyyeah/pix/keymaps/default/keymap.c
+++ b/keyboards/sendyyeah/pix/keymaps/default/keymap.c
@@ -16,11 +16,12 @@
#include QMK_KEYBOARD_H
-#define LAYERNUM 2
+#define LAYERNUM 3
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, TO(1)),
- [1] = LAYOUT(KC_TRNS, KC_MSTP, KC_MRWD, KC_MFFD, TO(0))
+ [1] = LAYOUT(KC_TRNS, KC_MSTP, KC_MRWD, KC_MFFD, TO(2)),
+ [2] = LAYOUT(KC_LSFT, RGB_MOD, RGB_HUI, RGB_SAI, TO(0))
};
int get_icon_start_position(int key_position) {
@@ -44,13 +45,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
oled_write_P(UP_ICON, false);
} else {
tap_code(KC_VOLD);
-
oled_set_cursor(get_icon_start_position(7), 2);
oled_write_P(PSTR(" "), false);
oled_set_cursor(get_icon_start_position(7), 3);
oled_write_P(DOWN_ICON, false);
}
- } else {
+ } else if (layer_state_is(1)) {
if (clockwise) {
tap_code(KC_BRIU);
oled_set_cursor(get_icon_start_position(7), 3);
@@ -64,6 +64,20 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
oled_set_cursor(get_icon_start_position(7), 3);
oled_write_P(DOWN_ICON, false);
}
+ } else if (layer_state_is(2)) {
+ if (clockwise) {
+ rgblight_increase_val();
+ oled_set_cursor(get_icon_start_position(7), 3);
+ oled_write_P(PSTR(" "), false);
+ oled_set_cursor(get_icon_start_position(7), 2);
+ oled_write_P(UP_ICON, false);
+ } else {
+ rgblight_decrease_val();
+ oled_set_cursor(get_icon_start_position(7), 2);
+ oled_write_P(PSTR(" "), false);
+ oled_set_cursor(get_icon_start_position(7), 3);
+ oled_write_P(DOWN_ICON, false);
+ }
}
}
return true;
@@ -174,6 +188,33 @@ void draw_brightness_icon(int key_position, int row) {
oled_write_P(ICON_BRIGHTNESS_1, false);
}
+void draw_mode_icon(int key_position, int row) {
+ static const char PROGMEM ICON_MODE_0[] = {0x94, 0x95, 0};
+ static const char PROGMEM ICON_MODE_1[] = {0xB4, 0xB5, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_MODE_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_MODE_1, false);
+}
+
+void draw_hue_icon(int key_position, int row) {
+ static const char PROGMEM ICON_HUE_0[] = {0x96, 0x97, 0};
+ static const char PROGMEM ICON_HUE_1[] = {0xB6, 0xB7, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_HUE_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_HUE_1, false);
+}
+
+void draw_sat_icon(int key_position, int row) {
+ static const char PROGMEM ICON_SAT_0[] = {0xBB, 0xBC, 0};
+ static const char PROGMEM ICON_SAT_1[] = {0xDB, 0xDC, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_SAT_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_SAT_1, false);
+}
+
bool oled_task_user(void) {
// Host Keyboard Layer Status
static const char PROGMEM ICON_LAYER[] = {0x80, 0x81, 0x82, 0x83, 0};
@@ -189,6 +230,9 @@ bool oled_task_user(void) {
case 1:
oled_write_P(PSTR("2ND "), false);
break;
+ case 2:
+ oled_write_P(PSTR("3RD "), false);
+ break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_P(PSTR("UNDF"), false);
@@ -204,6 +248,9 @@ bool oled_task_user(void) {
case 1:
oled_write_P(PSTR("BRGT"), false);
break;
+ case 2:
+ oled_write_P(PSTR("RGB "), false);
+ break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_P(PSTR("UNDF"), false);
@@ -227,6 +274,14 @@ bool oled_task_user(void) {
draw_lower_icon(5, 2);
draw_brightness_icon(6, 2);
break;
+ case 2:
+ draw_raise_icon(1, 2);
+ draw_mode_icon(2, 2);
+ draw_hue_icon(3, 2);
+ draw_sat_icon(4, 2);
+ draw_lower_icon(5, 2);
+ draw_brightness_icon(6, 2);
+ break;
}
return false;
diff --git a/keyboards/sendyyeah/pix/keymaps/via/keymap.c b/keyboards/sendyyeah/pix/keymaps/via/keymap.c
index bcaf52d53b..75914a0b0f 100644
--- a/keyboards/sendyyeah/pix/keymaps/via/keymap.c
+++ b/keyboards/sendyyeah/pix/keymaps/via/keymap.c
@@ -16,11 +16,12 @@
#include QMK_KEYBOARD_H
-#define LAYERNUM 2
+#define LAYERNUM 3
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, TO(1)),
- [1] = LAYOUT(KC_TRNS, KC_MSTP, KC_MRWD, KC_MFFD, TO(0))
+ [1] = LAYOUT(KC_TRNS, KC_MSTP, KC_MRWD, KC_MFFD, TO(2)),
+ [2] = LAYOUT(KC_LSFT, RGB_MOD, RGB_HUI, RGB_SAI, TO(0))
};
int get_icon_start_position(int key_position) {
@@ -44,13 +45,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
oled_write_P(UP_ICON, false);
} else {
tap_code(KC_VOLD);
-
oled_set_cursor(get_icon_start_position(7), 2);
oled_write_P(PSTR(" "), false);
oled_set_cursor(get_icon_start_position(7), 3);
oled_write_P(DOWN_ICON, false);
}
- } else {
+ } else if (layer_state_is(1)) {
if (clockwise) {
tap_code(KC_BRIU);
oled_set_cursor(get_icon_start_position(7), 3);
@@ -64,6 +64,20 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
oled_set_cursor(get_icon_start_position(7), 3);
oled_write_P(DOWN_ICON, false);
}
+ } else if (layer_state_is(2)) {
+ if (clockwise) {
+ rgblight_increase_val();
+ oled_set_cursor(get_icon_start_position(7), 3);
+ oled_write_P(PSTR(" "), false);
+ oled_set_cursor(get_icon_start_position(7), 2);
+ oled_write_P(UP_ICON, false);
+ } else {
+ rgblight_decrease_val();
+ oled_set_cursor(get_icon_start_position(7), 2);
+ oled_write_P(PSTR(" "), false);
+ oled_set_cursor(get_icon_start_position(7), 3);
+ oled_write_P(DOWN_ICON, false);
+ }
}
}
return true;
@@ -174,6 +188,33 @@ void draw_brightness_icon(int key_position, int row) {
oled_write_P(ICON_BRIGHTNESS_1, false);
}
+void draw_mode_icon(int key_position, int row) {
+ static const char PROGMEM ICON_MODE_0[] = {0x94, 0x95, 0};
+ static const char PROGMEM ICON_MODE_1[] = {0xB4, 0xB5, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_MODE_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_MODE_1, false);
+}
+
+void draw_hue_icon(int key_position, int row) {
+ static const char PROGMEM ICON_HUE_0[] = {0x96, 0x97, 0};
+ static const char PROGMEM ICON_HUE_1[] = {0xB6, 0xB7, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_HUE_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_HUE_1, false);
+}
+
+void draw_sat_icon(int key_position, int row) {
+ static const char PROGMEM ICON_SAT_0[] = {0xBB, 0xBC, 0};
+ static const char PROGMEM ICON_SAT_1[] = {0xDB, 0xDC, 0};
+ oled_set_cursor(get_icon_start_position(key_position), row);
+ oled_write_P(ICON_SAT_0, false);
+ oled_set_cursor(get_icon_start_position(key_position), row + 1);
+ oled_write_P(ICON_SAT_1, false);
+}
+
bool oled_task_user(void) {
// Host Keyboard Layer Status
static const char PROGMEM ICON_LAYER[] = {0x80, 0x81, 0x82, 0x83, 0};
@@ -189,6 +230,9 @@ bool oled_task_user(void) {
case 1:
oled_write_P(PSTR("2ND "), false);
break;
+ case 2:
+ oled_write_P(PSTR("3RD "), false);
+ break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_P(PSTR("UNDF"), false);
@@ -204,6 +248,9 @@ bool oled_task_user(void) {
case 1:
oled_write_P(PSTR("BRGT"), false);
break;
+ case 2:
+ oled_write_P(PSTR("RGB "), false);
+ break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_P(PSTR("UNDF"), false);
@@ -227,6 +274,14 @@ bool oled_task_user(void) {
draw_lower_icon(5, 2);
draw_brightness_icon(6, 2);
break;
+ case 2:
+ draw_raise_icon(1, 2);
+ draw_mode_icon(2, 2);
+ draw_hue_icon(3, 2);
+ draw_sat_icon(4, 2);
+ draw_lower_icon(5, 2);
+ draw_brightness_icon(6, 2);
+ break;
}
return false;
diff --git a/keyboards/sendyyeah/pix/rules.mk b/keyboards/sendyyeah/pix/rules.mk
index ff1b29b718..c5eb6c7bcc 100644
--- a/keyboards/sendyyeah/pix/rules.mk
+++ b/keyboards/sendyyeah/pix/rules.mk
@@ -12,12 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
OLED_ENABLE = yes
diff --git a/keyboards/senselessclay/ck60/ck60.c b/keyboards/senselessclay/ck60/ck60.c
index a2fe38aac7..1c30b77185 100644
--- a/keyboards/senselessclay/ck60/ck60.c
+++ b/keyboards/senselessclay/ck60/ck60.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Hadi Iskandarani
+/* Copyright 2022 kb-elmo<mail@elmo.space>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -14,4 +14,30 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ck60.h" \ No newline at end of file
+#include "ck60.h"
+
+#define __ NO_LED
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ //Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, __ },
+ { 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, __ },
+ { 54, 55, 56, __, __, __, 57, __, __, __, 58, 59, 60, 61 }
+}, {
+ //LED Index to Physical Positon
+ { 0, 0 }, { 17, 0 }, { 34, 0 }, { 52, 0 }, { 69, 0 }, { 86, 0 }, { 103, 0 }, { 121, 0 }, { 138, 0 }, { 155, 0 }, { 172, 0 }, { 190, 0 }, { 207, 0 }, { 215, 0 },
+ { 224, 24 }, { 215, 16 }, { 198, 16 }, { 180, 16 }, { 164, 16 }, { 146, 16 }, { 129, 16 }, { 112, 16 }, { 95, 16 }, { 78, 16 }, { 60, 16 }, { 43, 16 }, { 26 , 16 }, { 0, 16 },
+ { 0, 32 }, { 30, 32 }, { 47, 32 }, { 65, 32 }, { 81, 32 }, { 99, 32 }, { 116, 32 }, { 133, 32 }, { 150, 32 }, { 168, 32 }, { 185, 32 }, { 202, 32 }, { 220, 32 },
+ { 207, 48 }, { 190, 48 }, { 172, 48 }, { 155, 48 }, { 138, 48 }, { 121, 48 }, { 103, 48 }, { 86, 48 }, { 69, 48 }, { 52, 48 }, { 34, 48 }, { 17, 48 }, { 0, 48 },
+ { 0, 64 }, { 17, 64 }, { 34, 64 }, { 103, 64 }, { 172, 64 }, { 190, 64 }, { 207, 64 }, { 224, 64 }
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1
+} };
+#endif
diff --git a/keyboards/senselessclay/ck60/ck60.h b/keyboards/senselessclay/ck60/ck60.h
index fa83202dfa..a9408ba2ea 100644
--- a/keyboards/senselessclay/ck60/ck60.h
+++ b/keyboards/senselessclay/ck60/ck60.h
@@ -18,18 +18,18 @@
#include "quantum.h"
-#define ____ KC_NO
+#define ___ KC_NO
-#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
- K400, K401, K402, K406, K410, K411, K412, K413 \
+#define LAYOUT_60_iso( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____ }, \
- { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, ___ }, \
+ { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D } \
}
diff --git a/keyboards/senselessclay/ck60/config.h b/keyboards/senselessclay/ck60/config.h
index 7e4a493701..f826ad9ad7 100644
--- a/keyboards/senselessclay/ck60/config.h
+++ b/keyboards/senselessclay/ck60/config.h
@@ -30,90 +30,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-/* rev0 */
+/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 }
#define MATRIX_COL_PINS { F0, D5, D3, D2, D1, D0, C7, C6, B6, B5, B4, D7, D6, D4 }
-//#define UNUSED_PINS { B0, B7, E6 }
-
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+/* Debounce reduces chatter */
#define DEBOUNCE 5
-/* define if matrix has ghost (lacks anti-ghosting diodes) */
-//#define MATRIX_HAS_GHOST
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
- * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
- */
-//#define GRAVE_ESC_CTRL_OVERRIDE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Feature disable options
- * These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
+/* RGB matrix lighting */
+#define RGB_DI_PIN B1
+#define DRIVER_LED_TOTAL 62
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160 // limit brightness to not overamp the USB
+#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // 16 is equivalent to limiting to 60fps
+#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
-
-/* RGB Backlighting */
-#define RGB_DI_PIN B1
-#define RGBLED_NUM 62
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_LIMIT_VAL 128
-#define RGBLIGHT_SLEEP
-#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5 \ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/info.json b/keyboards/senselessclay/ck60/info.json
index e188740c3c..55a7e95b46 100644
--- a/keyboards/senselessclay/ck60/info.json
+++ b/keyboards/senselessclay/ck60/info.json
@@ -1,10 +1,80 @@
{
- "keyboard_name": "CK60",
- "url": "https://candykeys.com",
- "maintainer": "hadi",
- "layouts": {
- "LAYOUT": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
- }
- }
-} \ No newline at end of file
+ "keyboard_name": "CK60",
+ "url": "https://candykeys.com",
+ "maintainer": "had-i",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60_iso"
+ },
+ "layouts": {
+ "LAYOUT_60_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/senselessclay/ck60/keymaps/default/keymap.c b/keyboards/senselessclay/ck60/keymaps/default/keymap.c
index 2ac1e06981..d88f9e303c 100644
--- a/keyboards/senselessclay/ck60/keymaps/default/keymap.c
+++ b/keyboards/senselessclay/ck60/keymaps/default/keymap.c
@@ -23,29 +23,33 @@ enum layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_0] = LAYOUT(
+ [_0] = LAYOUT_60_iso(
/*Base*/
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
- [_1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
- KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-}; \ No newline at end of file
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+ [_1] = LAYOUT_60_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_DOWN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_2] = LAYOUT_60_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_3] = LAYOUT_60_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/senselessclay/ck60/keymaps/via/keymap.c b/keyboards/senselessclay/ck60/keymaps/via/keymap.c
index 2ac1e06981..d88f9e303c 100644
--- a/keyboards/senselessclay/ck60/keymaps/via/keymap.c
+++ b/keyboards/senselessclay/ck60/keymaps/via/keymap.c
@@ -23,29 +23,33 @@ enum layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_0] = LAYOUT(
+ [_0] = LAYOUT_60_iso(
/*Base*/
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
- [_1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
- KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-}; \ No newline at end of file
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
+ ),
+ [_1] = LAYOUT_60_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_DOWN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_2] = LAYOUT_60_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_3] = LAYOUT_60_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/senselessclay/ck60/rules.mk b/keyboards/senselessclay/ck60/rules.mk
index 56ba35b4b8..ba0eba494f 100644
--- a/keyboards/senselessclay/ck60/rules.mk
+++ b/keyboards/senselessclay/ck60/rules.mk
@@ -8,14 +8,16 @@ BOOTLOADER = atmel-dfu
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys
+MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output \ No newline at end of file
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes # RGB matrix lighting
+RGB_MATRIX_DRIVER = WS2812
+
+LAYOUTS = 60_iso
diff --git a/keyboards/senselessclay/ck65/ck65.h b/keyboards/senselessclay/ck65/ck65.h
index 1d258ee346..cd33e428ba 100644
--- a/keyboards/senselessclay/ck65/ck65.h
+++ b/keyboards/senselessclay/ck65/ck65.h
@@ -18,18 +18,18 @@
#include "quantum.h"
-#define ____ KC_NO
+#define ___ KC_NO
-#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
- K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \
+#define LAYOUT_65_iso( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
- { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, ___, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E } \
}
diff --git a/keyboards/senselessclay/ck65/info.json b/keyboards/senselessclay/ck65/info.json
index fbcc959376..c1dcf3cebd 100644
--- a/keyboards/senselessclay/ck65/info.json
+++ b/keyboards/senselessclay/ck65/info.json
@@ -1,10 +1,87 @@
{
- "keyboard_name": "CK65",
- "url": "https://candykeys.com",
- "maintainer": "hadi",
- "layouts": {
- "LAYOUT": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
- }
- }
-} \ No newline at end of file
+ "keyboard_name": "CK65",
+ "url": "https://candykeys.com",
+ "maintainer": "had-i",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_65_iso"
+ },
+ "layouts": {
+ "LAYOUT_65_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Home", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"End", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"Page Up", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"Page Down", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"GUI", "x":11, "y":4},
+ {"label":"Fn", "x":12, "y":4},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/senselessclay/ck65/keymaps/default/keymap.c b/keyboards/senselessclay/ck65/keymaps/default/keymap.c
index be627f899d..2767c9c776 100644
--- a/keyboards/senselessclay/ck65/keymaps/default/keymap.c
+++ b/keyboards/senselessclay/ck65/keymaps/default/keymap.c
@@ -23,29 +23,33 @@ enum layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_0] = LAYOUT(
+ [_0] = LAYOUT_65_iso(
/*Base*/
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
- [_1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-}; \ No newline at end of file
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_1] = LAYOUT_65_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_2] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_3] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/senselessclay/ck65/keymaps/via/keymap.c b/keyboards/senselessclay/ck65/keymaps/via/keymap.c
index be627f899d..2767c9c776 100644
--- a/keyboards/senselessclay/ck65/keymaps/via/keymap.c
+++ b/keyboards/senselessclay/ck65/keymaps/via/keymap.c
@@ -23,29 +23,33 @@ enum layers {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_0] = LAYOUT(
+ [_0] = LAYOUT_65_iso(
/*Base*/
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP,
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
- [_1] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [_3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-}; \ No newline at end of file
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_1] = LAYOUT_65_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, _______, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_2] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_3] = LAYOUT_65_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/senselessclay/ck65/rules.mk b/keyboards/senselessclay/ck65/rules.mk
index 56ba35b4b8..a5e9413383 100644
--- a/keyboards/senselessclay/ck65/rules.mk
+++ b/keyboards/senselessclay/ck65/rules.mk
@@ -12,10 +12,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output \ No newline at end of file
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_iso
diff --git a/keyboards/senselessclay/gos65/config.h b/keyboards/senselessclay/gos65/config.h
new file mode 100644
index 0000000000..e910f5a15d
--- /dev/null
+++ b/keyboards/senselessclay/gos65/config.h
@@ -0,0 +1,123 @@
+/*
+Copyright 2020 Hadi Iskandarani
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4849 // HI
+#define PRODUCT_ID 0x0650 // 65rgb (0)
+#define DEVICE_VER 0x0001 // rev1
+#define MANUFACTURER senselessclay
+#define PRODUCT gos65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* rev0 */
+/*
+#define MATRIX_ROW_PINS { B1, B2, F6, F5, F4 }
+#define MATRIX_COL_PINS { F1, D5, D3, D2, D1, D0, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+*/
+/* rev1 */
+#define MATRIX_ROW_PINS { B1, B2, F1, F6, F5 }
+#define MATRIX_COL_PINS { F4, D5, D3, D2, D1, D0, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+//#define UNUSED_PINS { B0, B7, E6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+/* RGB Backlighting */
+#define RGB_DI_PIN B0
+#define RGBLED_NUM 68
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_LIMIT_VAL 125
+#define RGBLIGHT_SLEEP \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/gos65.c b/keyboards/senselessclay/gos65/gos65.c
new file mode 100644
index 0000000000..fd77aa79ab
--- /dev/null
+++ b/keyboards/senselessclay/gos65/gos65.c
@@ -0,0 +1,26 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gos65.h"
+
+void eeconfig_init_kb(void) { // EEPROM is getting reset!
+ rgblight_enable(); // Enable RGB by default
+ rgblight_sethsv(0, 255, 125); // Set default HSV - red hue, full saturation, medium brightness
+ rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 5); // set to RGB_RAINBOW_SWIRL by default
+
+ eeconfig_update_kb(0);
+ eeconfig_init_user();
+} \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/gos65.h b/keyboards/senselessclay/gos65/gos65.h
new file mode 100644
index 0000000000..b8222688d2
--- /dev/null
+++ b/keyboards/senselessclay/gos65/gos65.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K406, K410, K411, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
+ { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413, K414 } \
+}
diff --git a/keyboards/senselessclay/gos65/info.json b/keyboards/senselessclay/gos65/info.json
new file mode 100644
index 0000000000..95f0960a47
--- /dev/null
+++ b/keyboards/senselessclay/gos65/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "gos65",
+ "url": "https://senselessclay.com/",
+ "maintainer": "hadi",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/keymaps/default/keymap.c b/keyboards/senselessclay/gos65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c35af25888
--- /dev/null
+++ b/keyboards/senselessclay/gos65/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT(
+ /*Base*/
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, RGB_VAI,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_HOME, KC_PGUP, KC_TRNS, RGB_MODE_FORWARD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_MUTE, KC_VOLU, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+}; \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/keymaps/via/keymap.c b/keyboards/senselessclay/gos65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..74ebce7df5
--- /dev/null
+++ b/keyboards/senselessclay/gos65/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _0,
+ _1,
+ _2,
+ _3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_0] = LAYOUT(
+ /*Base*/
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, RGB_VAI,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, RGB_VAD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_HOME, KC_PGUP, KC_TRNS, RGB_MODE_FORWARD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_MUTE, KC_VOLU, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [_2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+}; \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/keymaps/via/rules.mk b/keyboards/senselessclay/gos65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/senselessclay/gos65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/readme.md b/keyboards/senselessclay/gos65/readme.md
new file mode 100644
index 0000000000..bae450ee79
--- /dev/null
+++ b/keyboards/senselessclay/gos65/readme.md
@@ -0,0 +1,18 @@
+# gos65
+
+A 65% keyboard implementation based around the ATMEGA32u4 with per-key RGB. Designed for the GOS65 from OPS Keyboard.
+
+* Keyboard Maintainer: [hadi](https://github.com/senselessclay)
+* Hardware Supported: gos65 PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make senselessclay/gos65:default
+
+Flashing example for this keyboard:
+
+ make senselessclay/gos65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB. \ No newline at end of file
diff --git a/keyboards/senselessclay/gos65/rules.mk b/keyboards/senselessclay/gos65/rules.mk
new file mode 100644
index 0000000000..08b268c041
--- /dev/null
+++ b/keyboards/senselessclay/gos65/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/senselessclay/had60/rules.mk b/keyboards/senselessclay/had60/rules.mk
index 8075959d81..6b9a97646d 100644
--- a/keyboards/senselessclay/had60/rules.mk
+++ b/keyboards/senselessclay/had60/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/sentraq/number_pad/keymaps/default/keymap.c b/keyboards/sentraq/number_pad/keymaps/default/keymap.c
index 207f01abd5..3e722eb59b 100644
--- a/keyboards/sentraq/number_pad/keymaps/default/keymap.c
+++ b/keyboards/sentraq/number_pad/keymaps/default/keymap.c
@@ -33,10 +33,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | 0 | . | |
* `---------------'
*/
- MO(_FN), KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, \
- KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_P1, KC_P2, KC_P3, \
+ MO(_FN), KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
KC_P0, KC_PDOT, KC_PENT
),
/* Function Layer: RGB Controls and Numlock
@@ -53,10 +53,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------'
*/
[_FN] = LAYOUT_numpad_5x4(
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, \
- KC_NO, RGB_HUD, RGB_HUI, \
- KC_NO, RGB_SAD, RGB_SAI, KC_NO, \
- KC_NO, RGB_VAD, RGB_VAI, \
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,
+ KC_NO, RGB_HUD, RGB_HUI,
+ KC_NO, RGB_SAD, RGB_SAI, KC_NO,
+ KC_NO, RGB_VAD, RGB_VAI,
KC_NO, KC_NO, KC_NLCK
),
};
diff --git a/keyboards/sentraq/number_pad/rules.mk b/keyboards/sentraq/number_pad/rules.mk
index 4fe63f4f8b..8434db38dd 100644
--- a/keyboards/sentraq/number_pad/rules.mk
+++ b/keyboards/sentraq/number_pad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sentraq/s60_x/default/rules.mk b/keyboards/sentraq/s60_x/default/rules.mk
index 5da97f696d..2785738022 100644
--- a/keyboards/sentraq/s60_x/default/rules.mk
+++ b/keyboards/sentraq/s60_x/default/rules.mk
@@ -10,9 +10,6 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no # Audio output
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_hhkb
diff --git a/keyboards/sentraq/s60_x/keymaps/default/keymap.c b/keyboards/sentraq/s60_x/keymaps/default/keymap.c
index 33789a5696..7903159576 100644
--- a/keyboards/sentraq/s60_x/keymaps/default/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/default/keymap.c
@@ -17,11 +17,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 0: ANSI qwerty */
[0] = LAYOUT_60_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL
),
/* 1: Fn layer
@@ -38,10 +38,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
- _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/sentraq/s60_x/keymaps/default_rgb/keymap.c b/keyboards/sentraq/s60_x/keymaps/default_rgb/keymap.c
index e707a5d960..794b6d1b32 100644
--- a/keyboards/sentraq/s60_x/keymaps/default_rgb/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/default_rgb/keymap.c
@@ -17,11 +17,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* 0: ANSI qwerty */
[0] = LAYOUT_60_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL
),
/* 1: Fn layer
@@ -40,10 +40,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, \
- _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, BL_DEC, BL_TOGG, BL_INC, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______ \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, BL_DEC, BL_TOGG, BL_INC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/sentraq/s60_x/keymaps/iso_rgb/keymap.c b/keyboards/sentraq/s60_x/keymaps/iso_rgb/keymap.c
index 22651885d9..7b0f12c8cd 100644
--- a/keyboards/sentraq/s60_x/keymaps/iso_rgb/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/iso_rgb/keymap.c
@@ -16,10 +16,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ANSI qwerty */
- LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NO, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, \
+ LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_NO,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT ,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL),
/* 1: Fn layer
@@ -38,9 +38,9 @@ BL = Backlighting = In-Switch LED
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/sentraq/s60_x/rgb/rules.mk b/keyboards/sentraq/s60_x/rgb/rules.mk
index 9fd43fea37..1077b8016b 100644
--- a/keyboards/sentraq/s60_x/rgb/rules.mk
+++ b/keyboards/sentraq/s60_x/rgb/rules.mk
@@ -10,13 +10,10 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no # Audio output
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB light
diff --git a/keyboards/sentraq/s65_plus/keymaps/default/keymap.c b/keyboards/sentraq/s65_plus/keymaps/default/keymap.c
index bbeea6a8fb..0db09d2b46 100644
--- a/keyboards/sentraq/s65_plus/keymaps/default/keymap.c
+++ b/keyboards/sentraq/s65_plus/keymaps/default/keymap.c
@@ -20,11 +20,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ANSI qwerty */
[_BL] = LAYOUT_ansi(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
@@ -43,11 +43,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_AL] = LAYOUT_ansi(
- _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/sentraq/s65_plus/keymaps/iso/keymap.c b/keyboards/sentraq/s65_plus/keymaps/iso/keymap.c
index 2218d051fd..bb2d1fa2ba 100644
--- a/keyboards/sentraq/s65_plus/keymaps/iso/keymap.c
+++ b/keyboards/sentraq/s65_plus/keymaps/iso/keymap.c
@@ -20,11 +20,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ISO qwerty */
[_BL] = LAYOUT_iso(
- KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, \
- KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, \
- KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, \
- KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_F1, KC_F2, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_AL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
@@ -43,11 +43,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_AL] = LAYOUT_iso(
- _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/sentraq/s65_plus/rules.mk b/keyboards/sentraq/s65_plus/rules.mk
index 22d25d56c6..964b81fb50 100644
--- a/keyboards/sentraq/s65_plus/rules.mk
+++ b/keyboards/sentraq/s65_plus/rules.mk
@@ -10,9 +10,7 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
AUDIO_ENABLE = no # Audio output
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB light
diff --git a/keyboards/sentraq/s65_x/keymaps/default/keymap.c b/keyboards/sentraq/s65_x/keymaps/default/keymap.c
index 00ae4d0a20..9354e6e40a 100644
--- a/keyboards/sentraq/s65_x/keymaps/default/keymap.c
+++ b/keyboards/sentraq/s65_x/keymaps/default/keymap.c
@@ -24,11 +24,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ANSI qwerty */
[_BL] = LAYOUT_65_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, \
- FL_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ FL_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
@@ -47,11 +47,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_AL] = LAYOUT_65_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, AG_SWAP, AG_NORM, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, AG_SWAP, AG_NORM, _______, _______, _______, _______, _______, _______, _______
),
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_65_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
- _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, \
- _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
+ _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY
),
@@ -93,10 +93,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_UL] = LAYOUT_65_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/sentraq/s65_x/keymaps/iso/keymap.c b/keyboards/sentraq/s65_x/keymaps/iso/keymap.c
index f5a0a86306..d1023415f3 100644
--- a/keyboards/sentraq/s65_x/keymaps/iso/keymap.c
+++ b/keyboards/sentraq/s65_x/keymaps/iso/keymap.c
@@ -24,11 +24,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: ISO qwerty */
[_BL] = LAYOUT_65_iso(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END, \
- FL_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_END,
+ FL_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
@@ -47,11 +47,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_AL] = LAYOUT_65_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
@@ -70,11 +70,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_65_iso(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
- _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, \
- _______, _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______, \
- _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, TG(_AL), KC_UP, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______,
+ _______, _______, TG(_UL), _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY
),
@@ -93,10 +93,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_UL] = LAYOUT_65_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/sentraq/s65_x/rules.mk b/keyboards/sentraq/s65_x/rules.mk
index 212786d8e6..137df360ee 100644
--- a/keyboards/sentraq/s65_x/rules.mk
+++ b/keyboards/sentraq/s65_x/rules.mk
@@ -10,10 +10,8 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
AUDIO_ENABLE = no # Audio output
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB light
diff --git a/keyboards/sergiopoverony/creator_pro/rules.mk b/keyboards/sergiopoverony/creator_pro/rules.mk
index 962be94542..1599639564 100644
--- a/keyboards/sergiopoverony/creator_pro/rules.mk
+++ b/keyboards/sergiopoverony/creator_pro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sets3n/kk980/rules.mk b/keyboards/sets3n/kk980/rules.mk
index eb485c4349..85eec9079f 100644
--- a/keyboards/sets3n/kk980/rules.mk
+++ b/keyboards/sets3n/kk980/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/setta21/rules.mk b/keyboards/setta21/rules.mk
index 3cd0f2b5fe..e31a7b5c7a 100644
--- a/keyboards/setta21/rules.mk
+++ b/keyboards/setta21/rules.mk
@@ -12,14 +12,12 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
OLED_ENABLE = no
USE_I2C = no
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/shambles/rules.mk b/keyboards/shambles/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/shambles/rules.mk
+++ b/keyboards/shambles/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/shapeshifter4060/config.h b/keyboards/shapeshifter4060/config.h
new file mode 100644
index 0000000000..c8953821a7
--- /dev/null
+++ b/keyboards/shapeshifter4060/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+
+#define VENDOR_ID 0x1209 // pid.codes Vendor ID
+#define PRODUCT_ID 0xA1F1 // Shapeshifter 4060: https://pid.codes/1209/A1F1/
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Vosechu
+#define PRODUCT Shapeshifter 4060
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D0, D1, B1, B3, B2, B6, B5, B4, E6, D7, C6, D4 }
+#define UNUSED_PINS { D2, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+// #define NO_DEBUG
+
+/* disable print */
+// #define NO_PRINT
+
+/* disable action features */
+// #define NO_ACTION_LAYER
+// #define NO_ACTION_TAPPING
+// #define NO_ACTION_ONESHOT
+// #define NO_ACTION_MACRO
+// #define NO_ACTION_FUNCTION
diff --git a/keyboards/shapeshifter4060/info.json b/keyboards/shapeshifter4060/info.json
new file mode 100644
index 0000000000..5ec2bc2b03
--- /dev/null
+++ b/keyboards/shapeshifter4060/info.json
@@ -0,0 +1,62 @@
+{
+ "keyboard_name": "Shapeshifter 4060",
+ "url": "kitsunekeyboards.com",
+ "maintainer": "vosechu",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.67},
+ {"x":1, "y":0.67},
+ {"x":2, "y":0.33},
+ {"x":3, "y":0},
+ {"x":4, "y":0.33},
+ {"x":5, "y":0.33},
+ {"x":8, "y":0.33},
+ {"x":9, "y":0.33},
+ {"x":10, "y":0},
+ {"x":11, "y":0.33},
+ {"x":12, "y":0.67},
+ {"x":13, "y":0.67},
+
+ {"x":0, "y":1.67},
+ {"x":1, "y":1.67},
+ {"x":2, "y":1.33},
+ {"x":3, "y":1},
+ {"x":4, "y":1.33},
+ {"x":5, "y":1.33},
+ {"x":8, "y":1.33},
+ {"x":9, "y":1.33},
+ {"x":10, "y":1},
+ {"x":11, "y":1.33},
+ {"x":12, "y":1.67},
+ {"x":13, "y":1.67},
+
+ {"x":0, "y":2.67},
+ {"x":1, "y":2.67},
+ {"x":2, "y":2.33},
+ {"x":3, "y":2},
+ {"x":4, "y":2.33},
+ {"x":5, "y":2.33},
+ {"x":8, "y":2.33},
+ {"x":9, "y":2.33},
+ {"x":10, "y":2},
+ {"x":11, "y":2.33},
+ {"x":12, "y":2.67},
+ {"x":13, "y":2.67},
+
+ {"x":0, "y":3.67},
+ {"x":1, "y":3.67},
+ {"x":2, "y":3.67},
+ {"x":3, "y":3.67},
+ {"x":4.5, "y":3.42},
+ {"x":5.5, "y":3.67},
+ {"x":7.5, "y":3.67},
+ {"x":8.5, "y":3.42},
+ {"x":10, "y":3.67},
+ {"x":11, "y":3.67},
+ {"x":12, "y":3.67},
+ {"x":13, "y":3.67}
+ ]
+ }
+ }
+}
diff --git a/keyboards/shapeshifter4060/keymaps/debug/keymap.c b/keyboards/shapeshifter4060/keymaps/debug/keymap.c
new file mode 100644
index 0000000000..06f9d8ea8f
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/debug/keymap.c
@@ -0,0 +1,28 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* ============================= DEBUG LAYER ============================= */
+ [0] = LAYOUT(
+ KC_A, KC_1, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_2, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_3, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
+ KC_A, KC_4, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/debug/readme.md b/keyboards/shapeshifter4060/keymaps/debug/readme.md
new file mode 100644
index 0000000000..3dcbc27ae7
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/debug/readme.md
@@ -0,0 +1,85 @@
+# Debug layout
+
+This layout is expressly for debugging to see if your keys are working.
+
+## Flashing
+
+**NOTE**: Make sure you don't have a second QMK keyboard plugged in when you do this!
+
+To compile and flash to the board:
+
+ make shapeshifter4060:debug:avrdude
+
+If you want to use this with a Proton C, do this instead:
+
+ make shapeshifter4060:debug CTPC=yes
+
+To just compile:
+
+ make shapeshifter4060:debug
+
+Then use QMK toolbox to write the file
+
+# Testing
+
+Now that you've got the image flashed, do the following:
+
+* Open a new text document
+* Click each key in order and hit enter (with the other keyboard) between each line
+* For any keys that don't register, hit space (with the other keyboard) and continue on
+* You'll end up with something looking like this:
+
+ a1bcdefghijkl
+ a2bcdefghijkl
+ a3bcdefghijkl
+ a4bcdefghijkl
+
+But almost certainly it won't be perfect, so lets go through some scenarios:
+
+## Step 1: Get all the letters to output _something_
+
+For lines that look like this:
+
+ a1bc efg ijkl
+
+* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
+* Option 2: Broken joint on hotswap - If the pin looks okay, try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out. If it does, reflow (aka, apply some flux to both pads and reheat) the solder joint.
+* Option 3: Diode is backwards - If connecting the two metal pins didn't work, double check that the diode is the right direction. This may also need to be reflowed.
+* Option 4: ??? - Hop in [the discord]() and let's chat!
+
+## Step 2: Correct double letters
+
+Once you have all the keys outputting _anything_, flash the default layout and do the same thing. If everything is working, your layout will look something like this:
+
+ qwertyuiop
+ asdfghjkl;'
+ zxcvbnm,./
+
+**Note**: Don't worry about hitting the backspace or command keys
+
+### Duplicate letters
+
+For lines that look like this:
+
+ qwertyyuiop (double y)
+
+* Option 1: Bent pin - Pull out the switch in those spots, probably the pin got bent when you inserted it into the hotswap socket. Gently bend the pin straight and re-insert.
+* Option 2: Switch is broken - Try connecting the two metal plated holes underneath the hotswap holes to see if the letter comes out just once. If it does, the switch is broken and should be replaced. If you don't have another switch, you _may_ be able to unbend the leaf inside the switch, but it's really tricky.
+
+### Second letter sent (same row)
+
+For lines that look like this:
+
+ qwertyyuiop (t sent t AND y)
+
+* Option 1: ??? - I can't imagine how this would happen with this layout, but let me know if it does!
+
+### Second letter sent (same column)
+
+For lines that look like this:
+
+ qwertgyuiop (t sent t AND g)
+ qwertgbyuiop (t sent t AND g AND b)
+
+* Option 1: Diodes are backwards - Some of the diodes on this column are backwards, you can use a diode tester to confirm the direction, or just check them with a magnifying glass and switch them if needed.
+* Option 2: ???
diff --git a/keyboards/shapeshifter4060/keymaps/default/keymap.c b/keyboards/shapeshifter4060/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e390b5a36f
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/default/keymap.c
@@ -0,0 +1,91 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _QWERTY = 0,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _LIFT
+};
+
+// Fillers to make layering more clear
+#define _LAYER_ KC_TRNS
+
+// Adding macros to make the keymaps below much easier to read.
+#define CTL_ESC CTL_T(KC_ESC)
+#define CTL_GRV CTL_T(KC_GRV)
+#define ALT_TAB ALT_T(KC_TAB)
+#define SFT_SPC SFT_T(KC_SPC)
+
+// Extended alpha key layers
+#define RSE_J LT(_RAISE, KC_J)
+#define LWR_F LT(_LOWER, KC_F)
+#define RSE_H LT(_RAISE, KC_H)
+#define LWR_U LT(_LOWER, KC_U)
+#define LFT_BK LT(_LIFT, KC_BSPC)
+#define LFT_ENT LT(_LIFT, KC_ENT)
+
+// Macro keys for some apps
+#define SLACKUP LALT(LSFT(KC_UP))
+#define SLACKDN LALT(LSFT(KC_DOWN))
+#define TAB_LFT LGUI(LSFT(KC_LBRC))
+#define TAB_RGT LGUI(LSFT(KC_RBRC))
+#define BWSR_BK LGUI(KC_LBRC)
+#define BWSR_FW LGUI(KC_RBRC)
+#define SCR_LFT HYPR(KC_LEFT)
+#define SCR_RGT HYPR(KC_RGHT)
+#define SCR_FUL HYPR(KC_F)
+
+// Layer toggles
+#define TO_QW TO(_QWERTY)
+#define TO_DV TO(_DVORAK)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
+ KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [_DVORAK] = LAYOUT(
+ KC_TAB , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_BSPC ,
+ KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , KC_SLSH ,
+ KC_LSFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [_LOWER] = LAYOUT(
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_DOT , _______ , _______
+ ),
+ [_RAISE] = LAYOUT(
+ _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , KC_EQL , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , KC_MINS , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , KC_BSLS , KC_SLSH , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+ ),
+ [_LIFT] = LAYOUT(
+ _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
+ _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO_QW , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO_DV , _______ ,
+ _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/default/readme.md b/keyboards/shapeshifter4060/keymaps/default/readme.md
new file mode 100644
index 0000000000..9dbe80e645
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/default/readme.md
@@ -0,0 +1,79 @@
+# Default layout
+
+This is the default layout for the Shapeshifter 4060
+
+## Layout
+
+Some special things:
+
+* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
+* Enter and Backspace also activate the Lift layer.
+* -- To get repeated backspace, hold BkLft and then press Shift
+
+### Qwerty
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Dvorak
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | / |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| ; | Q | J | K | X | B | M | W | V | Z | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Raise
+
+ ,-----------------------------------------------------------------------------------.
+ | | < | > | { | } | | | | | | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | ( | ) | [ | ] | | | | | | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | | | | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space|EntLft| | | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lower
+
+ ,-----------------------------------------------------------------------------------.
+ | | | | | | | | 7 | 8 | 9 | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | | | | | | 4 | 5 | 6 | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | 1 | 2 | 3 | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lift
+
+ ,-----------------------------------------------------------------------------------.
+ | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
+ `-----------------------------------------------------------------------------------'
+
+Special things:
+
+* Hist: Back button in your browser
+* Tab: Move one tab left/right in most mac apps
+* Slk: Go to the previous/next unread conversation in Slack
+* Scr: Make this app fill the left/right side of your monitor (or full screen)
+* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
new file mode 100644
index 0000000000..eb04506ec0
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#include "vosechu.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [DV] = LAYOUT(
+ PAWFIVE , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , RESET ,
+ KC_ESC , KC_A , KC_O , KC_E , LWR_U , KC_I , KC_D , RSE_H , KC_T , KC_N , KC_S , XXXXXXX ,
+ XXXXXXX , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_ENT ,
+ XXXXXXX , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_MINS , KC_EQL , KC_SLSH , KC_BSLS
+ ),
+ [QW] = LAYOUT(
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC ,
+ KC_ESC , KC_A , KC_S , KC_D , LWR_F , KC_G , KC_H , RSE_J , KC_K , KC_L , KC_SCLN , KC_QUOT ,
+ KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT ,
+ KC_HYPR , CTL_GRV , ALT_TAB , KC_LGUI , LFT_BK , SFT_SPC , KC_SPC , LFT_ENT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT
+ ),
+ [LWR] = LAYOUT(
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_7 , KC_8 , KC_9 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , KC_4 , KC_5 , KC_6 , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_0 , KC_0 , KC_DOT , _______ , _______
+ ),
+ [RSE] = LAYOUT(
+ _______ , KC_LABK , KC_RABK , KC_LCBR , KC_RCBR , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , KC_LPRN , KC_RPRN , KC_LBRC , KC_RBRC , XXXXXXX , XXXXXXX , _LAYER_ , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
+ ),
+ [LFT] = LAYOUT(
+ _______ , BWSR_BK , TAB_LFT , KC_UP , TAB_RGT , BWSR_FW , KC_MUTE , XXXXXXX , SCR_LFT , SCR_FUL , SCR_RGT , _______ ,
+ _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_RGHT , KC_PGUP , KC_VOLU , SLACKUP , XXXXXXX , XXXXXXX , TO(QW) , _______ ,
+ _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PGDN , KC_VOLD , SLACKDN , XXXXXXX , XXXXXXX , TO(DV) , _______ ,
+ _______ , RESET , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
+ )
+};
diff --git a/keyboards/shapeshifter4060/keymaps/vosechu/readme.md b/keyboards/shapeshifter4060/keymaps/vosechu/readme.md
new file mode 100644
index 0000000000..a438e5536d
--- /dev/null
+++ b/keyboards/shapeshifter4060/keymaps/vosechu/readme.md
@@ -0,0 +1,82 @@
+# Vosechu layout
+
+This is my personal layout for the Shapeshifter. It's taken a long time to get
+to this point, but I think there are some things that are cool and special about
+it.
+
+## Layout
+
+Some special things:
+
+* Lower/Raise are on the F/J keys. Tap to type the character, hold to activate the layer
+* Enter and Backspace also activate the Lift layer.
+* -- To get repeated backspace, hold BkLft and then press Shift
+
+
+### Dvorak
+
+ ,-----------------------------------------------------------------------------------.
+ | Nada | ' | , | . | P | Y | F | G | C | R | L | Reset|
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | O | E | Lwr/U| I | D | Rse/H| T | N | S | Nada |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Nada | ; | Q | J | K | X | B | M | W | V | Z | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Nada |Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| - | = | / | \ |
+ `-----------------------------------------------------------------------------------'
+
+### Qwerty
+
+ ,-----------------------------------------------------------------------------------.
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | Back |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | Esc | A | S | D | Lwr/F| G | H | Rse/J| K | L | ; | " |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | Hyper|Ctrl/~|AltTab| Cmd | BkLft| Shift| Space|EntLft| Left | Down | Up | Right|
+ `-----------------------------------------------------------------------------------'
+
+### Raise
+
+ ,-----------------------------------------------------------------------------------.
+ | | < | > | { | } | | | | | | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | ( | ) | [ | ] | | | | | | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | | | | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space|EntLft| | | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lower
+
+ ,-----------------------------------------------------------------------------------.
+ | | | | | | | | 7 | 8 | 9 | | |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | | | | | | 4 | 5 | 6 | | |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | | | 1 | 2 | 3 | | |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | | | | BkLft| Shift| Space| 0 | 0 | . | | |
+ `-----------------------------------------------------------------------------------'
+
+### Lift
+
+ ,-----------------------------------------------------------------------------------.
+ | |Hist ←| Tab ←| ↑ | Tab →|Hist →| Mute | |ScrLft|ScrFul|ScrRgt| |
+ |------+------+------+------+------+-------------+------+------+------+------+------|
+ | | | ← | ↓ | → | Pg Up|Vol up|Slk up| | |Qwerty| |
+ |------+------+------+------+------+------|------+------+------+------+------+------|
+ | | | | | | Pg Dn|Vol dn|Slk dn| | |Dvorak| |
+ |------+------+------+------+------+------+------+------+------+------+------+------|
+ | | Reset| | | | Bksp | | Shift| Cmd | Opt | Ctrl | |
+ `-----------------------------------------------------------------------------------'
+
+Special things:
+
+* Hist: Back button in your browser
+* Tab: Move one tab left/right in most mac apps
+* Slk: Go to the previous/next unread conversation in Slack
+* Scr: Make this app fill the left/right side of your monitor (or full screen)
+* Since arrows are on this layer, the command keys are moved to the right side
diff --git a/keyboards/shapeshifter4060/readme.md b/keyboards/shapeshifter4060/readme.md
new file mode 100644
index 0000000000..2f134ce15b
--- /dev/null
+++ b/keyboards/shapeshifter4060/readme.md
@@ -0,0 +1,37 @@
+Shapeshifter 4060
+![Shapeshifter 4060](#TODO)
+
+The Shapeshifter 4060 is a 40% keyboard that takes inspiration from the Atreus and makes it accessible by putting it on a standard-sized 60% keyboard pcb. Ergonomics should be accessible by anyone!
+
+Keyboard Maintainer: [Chuck Lauer Vose](https://github.com/vosechu)
+Hardware Supported: Kitsune Shapeshifter 4060 (v3.0.3) with a Pro Micro Compatible board / Proton C
+Hardware Availability: GB coming soon
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shapeshifter4060:default
+
+For use with the Proton C
+
+ make shapeshifter4060:default CTPC=yes
+
+Flashing example for this keyboard:
+
+ make shapeshifter4060:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+- **Physical reset button**: Briefly press the button on the top of the PCB
+- **Keycode in layout**: Press the key mapped to `RESET` if it is available
+
+## Changelog
+
+v3.0.3: Complete rewrite using a standard pro micro pinout.
+
+## Build log
+
+https://docs.google.com/document/d/1ml2rBdiO6GhrUx2HyLqip0i24bCU8d-fQR8adSEPWzQ/edit
diff --git a/keyboards/shapeshifter4060/rules.mk b/keyboards/shapeshifter4060/rules.mk
new file mode 100644
index 0000000000..00cb7fbcf7
--- /dev/null
+++ b/keyboards/shapeshifter4060/rules.mk
@@ -0,0 +1,17 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+KEY_LOCK_ENABLE = no
diff --git a/keyboards/shapeshifter4060/shapeshifter4060.c b/keyboards/shapeshifter4060/shapeshifter4060.c
new file mode 100644
index 0000000000..abe6d65e76
--- /dev/null
+++ b/keyboards/shapeshifter4060/shapeshifter4060.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "shapeshifter4060.h"
diff --git a/keyboards/shapeshifter4060/shapeshifter4060.h b/keyboards/shapeshifter4060/shapeshifter4060.h
new file mode 100644
index 0000000000..0c5bd7e089
--- /dev/null
+++ b/keyboards/shapeshifter4060/shapeshifter4060.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 Chuck "@vosechu" Lauer Vose <vosechu@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, \
+ k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, \
+ k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, \
+ k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11 }, \
+ { k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23 }, \
+ { k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35 }, \
+ { k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46, k47 }, \
+}
diff --git a/keyboards/shiro/keymaps/check/config.h b/keyboards/shiro/keymaps/check/config.h
deleted file mode 100644
index 369388adad..0000000000
--- a/keyboards/shiro/keymaps/check/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 T.Shinohara
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/shiro/keymaps/default/config.h b/keyboards/shiro/keymaps/default/config.h
deleted file mode 100644
index 369388adad..0000000000
--- a/keyboards/shiro/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 T.Shinohara
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/shiro/keymaps/default_mac/config.h b/keyboards/shiro/keymaps/default_mac/config.h
deleted file mode 100644
index 369388adad..0000000000
--- a/keyboards/shiro/keymaps/default_mac/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 T.Shinohara
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/shiro/rules.mk b/keyboards/shiro/rules.mk
index 0099557cbe..eae129b29b 100644
--- a/keyboards/shiro/rules.mk
+++ b/keyboards/shiro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/shk9/rules.mk b/keyboards/shk9/rules.mk
index 739557beb6..f0cdbb9b0c 100644
--- a/keyboards/shk9/rules.mk
+++ b/keyboards/shk9/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sidderskb/majbritt/rev1/rules.mk b/keyboards/sidderskb/majbritt/rev1/rules.mk
index 71e5c41e74..a2a5932cdc 100644
--- a/keyboards/sidderskb/majbritt/rev1/rules.mk
+++ b/keyboards/sidderskb/majbritt/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sidderskb/majbritt/rev2/rules.mk b/keyboards/sidderskb/majbritt/rev2/rules.mk
index 5d39fd5c33..a8f1418466 100644
--- a/keyboards/sidderskb/majbritt/rev2/rules.mk
+++ b/keyboards/sidderskb/majbritt/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/signum/3_0/rules.mk b/keyboards/signum/3_0/rules.mk
index a2f2bc9c01..d1eef7d82f 100644
--- a/keyboards/signum/3_0/rules.mk
+++ b/keyboards/signum/3_0/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change yes to no to disable
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/silverbullet44/rules.mk b/keyboards/silverbullet44/rules.mk
index 832dcdae3e..b2e192e5b8 100644
--- a/keyboards/silverbullet44/rules.mk
+++ b/keyboards/silverbullet44/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = no
diff --git a/keyboards/singa/keymaps/default/config.h b/keyboards/singa/keymaps/default/config.h
deleted file mode 100644
index 93b81b57ba..0000000000
--- a/keyboards/singa/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 amnesia0287
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/singa/keymaps/default/keymap.c b/keyboards/singa/keymaps/default/keymap.c
index 7beef8a64d..20936116b1 100644
--- a/keyboards/singa/keymaps/default/keymap.c
+++ b/keyboards/singa/keymaps/default/keymap.c
@@ -19,21 +19,21 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_wkl( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_DEL, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, LT(1, KC_END), \
- KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, LT(1, KC_END),
+ KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_wkl( /* Base */
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, \
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/singa/keymaps/test/keymap.c b/keyboards/singa/keymaps/test/keymap.c
index a8f31b49c1..6e284a4ac1 100644
--- a/keyboards/singa/keymaps/test/keymap.c
+++ b/keyboards/singa/keymaps/test/keymap.c
@@ -27,21 +27,21 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_ESC, RESET, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_DEL, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, LT(1, KC_END), \
- KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_NO, KC_RCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, RESET, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NO, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, LT(1, KC_END),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_SPC, KC_NO, KC_RALT, KC_NO, KC_RCTL, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* Base */
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_NO, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/singa/rules.mk b/keyboards/singa/rules.mk
index 3bff3ee31b..4dcdfe886a 100644
--- a/keyboards/singa/rules.mk
+++ b/keyboards/singa/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/sirius/uni660/rev1/rules.mk b/keyboards/sirius/uni660/rev1/rules.mk
index 8cbb59fb2a..836bf6b442 100644
--- a/keyboards/sirius/uni660/rev1/rules.mk
+++ b/keyboards/sirius/uni660/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sirius/uni660/rev2/rules.mk b/keyboards/sirius/uni660/rev2/rules.mk
index f22f1f869b..0abebb07c6 100644
--- a/keyboards/sirius/uni660/rev2/rules.mk
+++ b/keyboards/sirius/uni660/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sirius/unigo66/keymaps/default/config.h b/keyboards/sirius/unigo66/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/sirius/unigo66/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/sirius/unigo66/rules.mk b/keyboards/sirius/unigo66/rules.mk
index 23c51b3ac2..cf5df2f2c3 100644
--- a/keyboards/sirius/unigo66/rules.mk
+++ b/keyboards/sirius/unigo66/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sixkeyboard/keymaps/default/keymap.c b/keyboards/sixkeyboard/keymaps/default/keymap.c
index 0c9b519353..7fdf3d64c1 100644
--- a/keyboards/sixkeyboard/keymaps/default/keymap.c
+++ b/keyboards/sixkeyboard/keymaps/default/keymap.c
@@ -4,8 +4,8 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_2x3(
- KC_A, KC_B, KC_C, \
- KC_D, KC_E, KC_F \
+ KC_A, KC_B, KC_C,
+ KC_D, KC_E, KC_F
)
};
diff --git a/keyboards/sixkeyboard/rules.mk b/keyboards/sixkeyboard/rules.mk
index 1ce62d90d0..3e1b51fa86 100644
--- a/keyboards/sixkeyboard/rules.mk
+++ b/keyboards/sixkeyboard/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega16u2
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
CUSTOM_MATRIX = yes
diff --git a/keyboards/skeletn87/hotswap/rules.mk b/keyboards/skeletn87/hotswap/rules.mk
index 490ca4bb1f..b64324fb16 100644
--- a/keyboards/skeletn87/hotswap/rules.mk
+++ b/keyboards/skeletn87/hotswap/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/skeletn87/soldered/rules.mk b/keyboards/skeletn87/soldered/rules.mk
index dedf9658cf..877bbc95a3 100644
--- a/keyboards/skeletn87/soldered/rules.mk
+++ b/keyboards/skeletn87/soldered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/skergo/rules.mk b/keyboards/skergo/rules.mk
index 9354e10b87..fe2be33f82 100644
--- a/keyboards/skergo/rules.mk
+++ b/keyboards/skergo/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/skippys_custom_pcs/roopad/config.h b/keyboards/skippys_custom_pcs/roopad/config.h
new file mode 100644
index 0000000000..53a29c6158
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/config.h
@@ -0,0 +1,71 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x36B6 // skippys_custom_pcs
+#define PRODUCT_ID 0x0001 // RooPad
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER ToastyStoemp
+#define PRODUCT RooPad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 5
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B5, F6, F5, F4, F1 }
+#define MATRIX_COL_PINS { F0, B4, D7, D6, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN B6
+#define RGBLED_NUM 21
+#define RGBLIGHT_SLEEP
+
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/skippys_custom_pcs/roopad/info.json b/keyboards/skippys_custom_pcs/roopad/info.json
new file mode 100644
index 0000000000..e866a1cc29
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "RooPad",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Num Lock", "x":1.5, "y":0}, {"label":"/", "x":2.5, "y":0}, {"label":"*", "x":3.5, "y":0}, {"label":"-", "x":4.5, "y":0}, {"x":0, "y":1}, {"label":"7", "x":1.5, "y":1}, {"label":"8", "x":2.5, "y":1}, {"label":"9", "x":3.5, "y":1}, {"label":"+", "x":4.5, "y":1, "h":2}, {"x":0, "y":2}, {"label":"4", "x":1.5, "y":2}, {"label":"5", "x":2.5, "y":2}, {"label":"6", "x":3.5, "y":2}, {"x":0, "y":3}, {"label":"1", "x":1.5, "y":3}, {"label":"2", "x":2.5, "y":3}, {"label":"3", "x":3.5, "y":3}, {"label":"Enter", "x":4.5, "y":3, "h":2}, {"x":0, "y":4}, {"label":"0", "x":1.5, "y":4, "w":2}, {"label":".", "x":3.5, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c b/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2d8f5dce9e
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/keymaps/default/keymap.c
@@ -0,0 +1,67 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │Num│ / │ * │ - │
+ * ┌───┬─┼───┼───┼───┼───┤
+ * │Cal│ │ 7 │ 8 │ 9 │ │
+ * ├───┼─┼───┼───┼───┤ + │
+ * │WWW│ │ 4 │ 5 │ 6 │ │
+ * ├───┼─┼───┼───┼───┼───┤
+ * │Mai│ │ 1 │ 2 │ 3 │ E │
+ * ├───┼─┼───┴───┼───┤ N │
+ * │FN │ │ 0 │ . │ T │
+ * └───┴─┴───────┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_WSCH, KC_P4, KC_P5, KC_P6,
+ KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT,
+ MO(1), KC_P0, KC_PDOT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │Num│ / │ * │-BR│
+ * ┌───┬─┼───┼───┼───┼───┤
+ * │ │ │F7 │F8 │F9 │ │
+ * ├───┼─┼───┼───┼───┤+BR│
+ * │ │ │F4 │F5 │F6 │ │
+ * ├───┼─┼───┼───┼───┼───┤
+ * │ │ │F1 │F2 │F3 │RGB│
+ * ├───┼─┼───┴───┼───┤ │
+ * │FN │ │ │TOG│MOD│
+ * └───┴─┴───────┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI,
+ KC_TRNS, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD,
+ KC_TRNS, KC_TRNS, RGB_TOG
+ )
+};
diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c b/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d4dedc9a0c
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/keymaps/via/keymap.c
@@ -0,0 +1,85 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │Num│ / │ * │ - │
+ * ┌───┬─┼───┼───┼───┼───┤
+ * │Cal│ │ 7 │ 8 │ 9 │ │
+ * ├───┼─┼───┼───┼───┤ + │
+ * │WWW│ │ 4 │ 5 │ 6 │ │
+ * ├───┼─┼───┼───┼───┼───┤
+ * │Mai│ │ 1 │ 2 │ 3 │ E │
+ * ├───┼─┼───┴───┼───┤ N │
+ * │FN │ │ 0 │ . │ T │
+ * └───┴─┴───────┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_CALC, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_WSCH, KC_P4, KC_P5, KC_P6,
+ KC_MAIL, KC_P1, KC_P2, KC_P3, KC_PENT,
+ MO(1), KC_P0, KC_PDOT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┐
+ * │Num│ / │ * │-BR│
+ * ┌───┬─┼───┼───┼───┼───┤
+ * │ │ │F7 │F8 │F9 │ │
+ * ├───┼─┼───┼───┼───┤+BR│
+ * │ │ │F4 │F5 │F6 │ │
+ * ├───┼─┼───┼───┼───┼───┤
+ * │ │ │F1 │F2 │F3 │RGB│
+ * ├───┼─┼───┴───┼───┤ │
+ * │FN │ │ │TOG│MOD│
+ * └───┴─┴───────┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, RGB_VAD,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, RGB_VAI,
+ KC_TRNS, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, RGB_MOD,
+ KC_TRNS, KC_TRNS, RGB_TOG
+ ),
+
+ [_LAYER2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk b/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/skippys_custom_pcs/roopad/readme.md b/keyboards/skippys_custom_pcs/roopad/readme.md
new file mode 100644
index 0000000000..e10cc9fb4f
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/readme.md
@@ -0,0 +1,22 @@
+# Roopad
+
+The following is the QMK Firmware for the kuku65 Hotswap PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+* Underglow
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make skippys_custom_pcs/roopad:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
diff --git a/keyboards/skippys_custom_pcs/roopad/roopad.c b/keyboards/skippys_custom_pcs/roopad/roopad.c
new file mode 100644
index 0000000000..408d7d56f1
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/roopad.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "roopad.h"
diff --git a/keyboards/skippys_custom_pcs/roopad/roopad.h b/keyboards/skippys_custom_pcs/roopad/roopad.h
new file mode 100644
index 0000000000..f520383339
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/roopad.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* RooPad Keymap Definitions */
+#define LAYOUT( \
+ K01, K02, K03, K04, \
+ K10, K11, K12, K13, K14, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, K33, K34, \
+ K40, K41, K43 \
+) { \
+ { KC_NO, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, KC_NO }, \
+ { K30, K31, K32, K33, K34 }, \
+ { K40, K41, KC_NO, K43, KC_NO } \
+}
diff --git a/keyboards/skippys_custom_pcs/roopad/rules.mk b/keyboards/skippys_custom_pcs/roopad/rules.mk
new file mode 100644
index 0000000000..3aaf70166e
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/roopad/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/slz40/rules.mk b/keyboards/slz40/rules.mk
index 9906266f48..1275531ef6 100644
--- a/keyboards/slz40/rules.mk
+++ b/keyboards/slz40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/smallice/rules.mk b/keyboards/smallice/rules.mk
index 33e1763375..1f52c37154 100644
--- a/keyboards/smallice/rules.mk
+++ b/keyboards/smallice/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h
index 0a7d06f39d..2630666359 100644
--- a/keyboards/smallkeyboard/config.h
+++ b/keyboards/smallkeyboard/config.h
@@ -84,7 +84,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_FRACTAL
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/smallkeyboard/rules.mk b/keyboards/smallkeyboard/rules.mk
index a7fab999d6..342a6fb6c1 100644
--- a/keyboards/smallkeyboard/rules.mk
+++ b/keyboards/smallkeyboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/smk60/rules.mk b/keyboards/smk60/rules.mk
index b78ba10b0f..b7e6d8751c 100644
--- a/keyboards/smk60/rules.mk
+++ b/keyboards/smk60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Use RGB bottom light
diff --git a/keyboards/snampad/keymaps/default/config.h b/keyboards/snampad/keymaps/default/config.h
deleted file mode 100644
index d97bb38dda..0000000000
--- a/keyboards/snampad/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Peter Tillemans
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/snampad/rules.mk b/keyboards/snampad/rules.mk
index 487122c026..c2c4fbb198 100644
--- a/keyboards/snampad/rules.mk
+++ b/keyboards/snampad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sneakbox/aliceclone/rules.mk b/keyboards/sneakbox/aliceclone/rules.mk
index 7d6d1e8abd..72564f0687 100644
--- a/keyboards/sneakbox/aliceclone/rules.mk
+++ b/keyboards/sneakbox/aliceclone/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sneakbox/aliceclonergb/aliceclonergb.c b/keyboards/sneakbox/aliceclonergb/aliceclonergb.c
new file mode 100644
index 0000000000..e2136312d3
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/aliceclonergb.c
@@ -0,0 +1,32 @@
+/*
+Copyright 2021 Bryan Ong
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "aliceclonergb.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index,clockwise)) { return false; }
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/sneakbox/aliceclonergb/aliceclonergb.h b/keyboards/sneakbox/aliceclonergb/aliceclonergb.h
new file mode 100644
index 0000000000..a946202ba4
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/aliceclonergb.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2021 Bryan Ong
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all LAYOUT_alice_split_bs
+
+#define LAYOUT_alice_split_bs( \
+ K020, K000, K001, K002, K003, K004, K005, K006, K010, K011, K012, K013, K014, K015, K016, K017, \
+ K040, K021, K022, K023, K024, K025, K026, K030, K031, K032, K033, K034, K035, K036, K037, \
+ K060, K041, K042, K043, K044, K045, K046, K050, K051, K052, K053, K054, K055, K056, \
+ K061, K062, K063, K064, K065, K066, K070, K071, K072, K073, K074, K075, K076, K077, \
+ K081, K083, K085, K086, K091, K093, K097 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, KC_NO }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017 }, \
+ { K020, K021, K022, K023, K024, K025, K026, KC_NO }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037 }, \
+ { K040, K041, K042, K043, K044, K045, K046, KC_NO }, \
+ { K050, K051, K052, K053, K054, K055, K056, KC_NO }, \
+ { K060, K061, K062, K063, K064, K065, K066, KC_NO }, \
+ { K070, K071, K072, K073, K074, K075, K076, K077 }, \
+ { KC_NO, K081, KC_NO, K083, KC_NO, K085, K086, KC_NO }, \
+ { KC_NO, K091, KC_NO, K093, KC_NO, KC_NO, KC_NO, K097 } \
+}
+
+#define LAYOUT_alice( \
+ K020, K000, K001, K002, K003, K004, K005, K006, K010, K011, K012, K013, K014, K015, K016, \
+ K040, K021, K022, K023, K024, K025, K026, K030, K031, K032, K033, K034, K035, K036, K037, \
+ K060, K041, K042, K043, K044, K045, K046, K050, K051, K052, K053, K054, K055, K056, \
+ K061, K062, K063, K064, K065, K066, K070, K071, K072, K073, K074, K075, K076, K077, \
+ K081, K083, K085, K086, K091, K093, K097 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, KC_NO }, \
+ { K010, K011, K012, K013, K014, K015, K016, KC_NO }, \
+ { K020, K021, K022, K023, K024, K025, K026, KC_NO }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037 }, \
+ { K040, K041, K042, K043, K044, K045, K046, KC_NO }, \
+ { K050, K051, K052, K053, K054, K055, K056, KC_NO }, \
+ { K060, K061, K062, K063, K064, K065, K066, KC_NO }, \
+ { K070, K071, K072, K073, K074, K075, K076, K077 }, \
+ { KC_NO, K081, KC_NO, K083, KC_NO, K085, K086, KC_NO }, \
+ { KC_NO, K091, KC_NO, K093, KC_NO, KC_NO, KC_NO, K097 } \
+}
diff --git a/keyboards/sneakbox/aliceclonergb/config.h b/keyboards/sneakbox/aliceclonergb/config.h
new file mode 100644
index 0000000000..6e30dbca96
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/config.h
@@ -0,0 +1,73 @@
+/*
+Copyright 2021 Bryan Ong
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5342
+#define PRODUCT_ID 0x0006
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Sneakbox
+#define PRODUCT AliceClone RGB
+
+/*Bootmagic boot button, set to topmost, leftmost key */
+#define BOOTMAGIC_LITE_ROW 2
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* encoder */
+/* #define NUMBER_OF_ENCODERS 1 */
+#define ENCODERS_PAD_A { D3 }
+#define ENCODERS_PAD_B { D2 }
+#define ENCODER_RESOLUTION 1
+
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F1, E6, F4, B1, F5, B2, F6, B3, F7, B7 }
+#define MATRIX_COL_PINS { F0, D0, C7, C6, B6, B5, B4, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define LED_NUM_LOCK_PIN D4
+#define LED_CAPS_LOCK_PIN D6
+#define LED_SCROLL_LOCK_PIN D7
+
+#define RGB_DI_PIN D5
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 16
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/sneakbox/aliceclonergb/info.json b/keyboards/sneakbox/aliceclonergb/info.json
new file mode 100644
index 0000000000..9fbee0c692
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "Alice Clone",
+ "url": "https://sneakbox.design",
+ "maintainer": "mujimanic",
+ "layouts": {
+ "LAYOUT_alice_split_bs": {
+ "layout": [
+ {"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0},
+ {"x":0, "y":1}, {"x":1.25, "y":1, "w":1.5}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1, "w":1.5},
+ {"x":0, "y":2}, {"x":1.25, "y":2, "w":1.75}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2, "w":2.25},
+ {"x":1.25, "y":3, "w":2.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.5, "y":3, "w":1.75}, {"x":17.25, "y":3},
+ {"x":1.25, "y":4, "w":1.5}, {"x":4, "y":4, "w":1.5}, {"x":5.5, "y":4, "w":2.25}, {"x":7.75, "y":4}, {"x":9.75, "y":4, "w":2.75}, {"x":12.5, "y":4, "w":1.5}, {"x":16.75, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_alice": {
+ "layout": [
+ {"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0, "w":2},
+ {"x":0, "y":1}, {"x":1.25, "y":1, "w":1.5}, {"x":2.75, "y":1}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1, "w":1.5},
+ {"x":0, "y":2}, {"x":1.25, "y":2, "w":1.75}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2, "w":2.25},
+ {"x":1.25, "y":3, "w":2.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.5, "y":3, "w":1.75}, {"x":17.25, "y":3},
+ {"x":1.25, "y":4, "w":1.5}, {"x":4, "y":4, "w":1.5}, {"x":5.5, "y":4, "w":2.25}, {"x":7.75, "y":4}, {"x":9.75, "y":4, "w":2.75}, {"x":12.5, "y":4, "w":1.5}, {"x":16.75, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/sneakbox/aliceclonergb/keymaps/default/keymap.c b/keyboards/sneakbox/aliceclonergb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9dd7ee5eae
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 Bryan Ong
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_alice_split_bs(
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LGUI,
+ KC_LCTL, KC_LALT, KC_SPC, LT(_FN, KC_SPC), KC_SPC, KC_RALT, KC_RCTL),
+ [_FN] = LAYOUT_alice_split_bs(
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_MOD, RGB_TOG,
+ RESET, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_HUI,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/sneakbox/aliceclonergb/keymaps/via/keymap.c b/keyboards/sneakbox/aliceclonergb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0f1e600bd1
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+Copyright 2021 Bryan Ong
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN,
+ _L3,
+ _L4
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_alice_split_bs(
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LGUI,
+ KC_LCTL, KC_LALT, KC_SPC, LT(_FN, KC_SPC), KC_SPC, KC_RALT, KC_RCTL),
+ [_FN] = LAYOUT_alice_split_bs(
+ KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_MOD, RGB_TOG,
+ RESET, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_HUI,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_L3] = LAYOUT_alice_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_L4] = LAYOUT_alice_split_bs(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
diff --git a/keyboards/sneakbox/aliceclonergb/keymaps/via/rules.mk b/keyboards/sneakbox/aliceclonergb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/sneakbox/aliceclonergb/readme.md b/keyboards/sneakbox/aliceclonergb/readme.md
new file mode 100644
index 0000000000..dc4291bcdf
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/readme.md
@@ -0,0 +1,23 @@
+# Sneakbox Alice Clone RGB PCB
+
+![Sneakbox Alice Clone RGB PCB](https://i.imgur.com/pMZNqLXl.jpg)
+
+An Alice-compatible PCB with hotswap with pushbutton rotary encoder socket placed at the top left key position. This PCB is the successor to the v3 AliceClone PCB and features RGB underglow lighting along with revised hardware components.
+
+* Keyboard Maintainer: [mujimanic](https://github.com/mujimanic)
+* Hardware Supported: Any Alice-layout case.
+* Hardware Availability: [sneakbox.design](https://sneakbox.design/products/sneakbox-alice-hotswap-pcbs)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sneakbox/aliceclonergb:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the top left key in the nevigation cluster (Escape key) and plug in the keyboard
+* **Physical reset button**: Briefly press the small metal button on the back of the PCB
+* **Keycode in layout**: Press and hold the key next to the right split spacebar (to the right of the spacebar) and then press the End key (located on the bottom of the four-key navigation cluster)
diff --git a/keyboards/sneakbox/aliceclonergb/rules.mk b/keyboards/sneakbox/aliceclonergb/rules.mk
new file mode 100644
index 0000000000..6d57d29a86
--- /dev/null
+++ b/keyboards/sneakbox/aliceclonergb/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+
+LAYOUTS = alice alice_split_bs
diff --git a/keyboards/sneakbox/ava/rules.mk b/keyboards/sneakbox/ava/rules.mk
index c28edc9134..19d0131a73 100644
--- a/keyboards/sneakbox/ava/rules.mk
+++ b/keyboards/sneakbox/ava/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sneakbox/disarray/ortho/rules.mk b/keyboards/sneakbox/disarray/ortho/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/sneakbox/disarray/ortho/rules.mk
+++ b/keyboards/sneakbox/disarray/ortho/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sneakbox/disarray/staggered/rules.mk b/keyboards/sneakbox/disarray/staggered/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/sneakbox/disarray/staggered/rules.mk
+++ b/keyboards/sneakbox/disarray/staggered/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sofle/keyhive/config.h b/keyboards/sofle/keyhive/config.h
index 14303be411..c934754e65 100755
--- a/keyboards/sofle/keyhive/config.h
+++ b/keyboards/sofle/keyhive/config.h
@@ -20,43 +20,33 @@
#include "config_common.h"
// USB Device descriptor parameter
-
#define VENDOR_ID 0xFC32
#define PRODUCT_ID 0x1287
#define DEVICE_VER 0x0002
#define MANUFACTURER Keyhive
-#define PRODUCT Sofle // VIA version for this PCB is incorrect for the bottom row
+#define PRODUCT Sofle
// Key matrix size
// Rows are doubled-up. Added extra column for rotary encoder VIA mapping.
#define MATRIX_ROWS 10
-#define MATRIX_COLS 6
+#define MATRIX_COLS 7
// wiring of each half
-#define MATRIX_ROW_PINS \
- { C6, D7, E6, B4, B5 }
-#define MATRIX_COL_PINS \
- { B6, B2, B3, B1, F7, F6 }
-#define MATRIX_ROW_PINS_RIGHT \
- { C6, D7, E6, B4, B5 }
-#define MATRIX_COL_PINS_RIGHT \
- { F6, F7, B1, B3, B2, B6 }
+#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, NO_PIN } // A virtual pin is needed for the encoder key matrix in via.
+#define MATRIX_ROW_PINS_RIGHT { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS_RIGHT { F6, F7, B1, B3, B2, B6, NO_PIN } // A virtual pin is needed for the encoder key matrix in via.
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
// Encoder support
-#define ENCODERS_PAD_A \
- { F5 }
-#define ENCODERS_PAD_B \
- { F4 }
-#define ENCODERS_PAD_A_RIGHT \
- { F4 }
-#define ENCODERS_PAD_B_RIGHT \
- { F5 }
-#define ENCODER_RESOLUTIONS \
- { 4, 2 } // Left encoder seems to have double-output issue but right does not.
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F4 }
+#define ENCODERS_PAD_A_RIGHT { F4 }
+#define ENCODERS_PAD_B_RIGHT { F5 }
+#define ENCODER_RESOLUTIONS { 4, 2 } // Left encoder seems to have double-output issue but right does not.
#define TAP_CODE_DELAY 10
@@ -72,34 +62,41 @@
#define SPLIT_TRANSPORT_MIRROR
// Add RGB underglow
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 74
-#define RGBLED_SPLIT \
- { 37, 37 }
-
-#define RGBLIGHT_LIMIT_VAL 160 // Power draw may exceed 0.6A at max brightness with white colour.
-#define RGBLIGHT_LAYERS
-#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
-#define RGBLIGHT_SLEEP
-
-#define DRIVER_LED_TOTAL RGBLED_NUM
-#define RGB_MATRIX_SPLIT RGBLED_SPLIT
-
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
-// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
-// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
-
-#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
-
-#define RGB_MATRIX_HUE_STEP 8
-#define RGB_MATRIX_SAT_STEP 8
-#define RGB_MATRIX_VAL_STEP 8
-#define RGB_MATRIX_SPD_STEP 10
+// by defining in the keyboard, incompatible keymaps will fail to compile.
+#ifdef RGBLIGHT_ENABLE
+# define RGB_DI_PIN D3
+# define RGBLED_NUM 74
+# define RGBLED_SPLIT {37,37}
+# define RGBLIGHT_LIMIT_VAL 100 // LED Brightness, high power draw may exceed the USB limitations of 0.6A and cause a crash.
+# define RGBLIGHT_HUE_STEP 10
+# define RGBLIGHT_SAT_STEP 17
+# define RGBLIGHT_VAL_STEP 17
+//# define RGBLIGHT_LAYERS //Enable layer light indicators. Not required as updates are done in layer_state_set_user and led_update_user (+588).
+# define RGBLIGHT_SLEEP //Turn off LEDs when computer sleeping (+72)
+
+//RGB LED Conversion macro from physical array to electric array (+146). This results in better looking animated effects.
+//First section is the LED matrix, second section is the electrical wiring order, and the third section is the desired mapping
+# define LED_LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L08, L09, L010, L011, L012, L013, \
+ L10, L12, L14, L19, L111, L113, \
+ L20, L21, L22, L23, L24, L25, L28, L29, L210, L211, L212, L213, \
+ L30, L31, L32, L33, L34, L35, L38, L39, L310, L311, L312, L313, \
+ L40, L42, L44, L49, L411, L413, \
+ L50, L51, L52, L53, L54, L55, L58, L59, L510, L511, L512, L513, \
+ L62, L63, L64, L65, L66, L67, L68, L69, L610, L611, \
+ L71, L76, L77, L712 )\
+ { \
+ L14,L12,L10,L40,L42,L44,L71,L76,L66,L65,L55,L35,L25,L05,L04,L24,L34,L54,L64,L63,L53,L33,L23,L03,L02,L22,L32,L52,L62,L51,L31,L21,L01,L00,L20,L30,L50,L19,L111,L113,L413,L411,L49,L712,L77,L67,L68,L58,L38,L28,L08,L09,L29,L39,L59,L69,L610,L510,L310,L210,L010,L011,L211,L311,L511,L611,L512,L312,L212,L012,L013,L213,L313,L513, \
+ }
+//RGB LED logical order map
+# define RGBLIGHT_LED_MAP LED_LAYOUT( \
+ 5, 6, 17, 18, 29, 30, 43, 44, 55, 56, 67, 68, \
+ 4, 16, 28, 45, 57, 69, \
+ 3, 7, 15, 19, 27, 31, 42, 46, 54, 58, 66, 70, \
+ 2, 8, 14, 20, 26, 32, 41, 47, 53, 59, 65, 71, \
+ 1, 13, 25, 48, 60, 72, \
+ 0, 9, 12, 21, 24, 33, 40, 49, 52, 61, 64, 73, \
+ 11, 22, 23, 34, 35, 38, 39, 50, 51, 62, \
+ 10, 36, 37, 63 )
+
+#endif
diff --git a/keyboards/sofle/keyhive/info.json b/keyboards/sofle/keyhive/info.json
index e2cbf0c716..aafc6a8c8b 100644
--- a/keyboards/sofle/keyhive/info.json
+++ b/keyboards/sofle/keyhive/info.json
@@ -6,7 +6,7 @@
{"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5},
{"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5},
{"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5},
- {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5},
+ {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5},
{"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.125}, {"x":14, "y":4.375}
]
}
diff --git a/keyboards/sofle/keyhive/keyhive.c b/keyboards/sofle/keyhive/keyhive.c
index c7ad988761..72e2d583f1 100755
--- a/keyboards/sofle/keyhive/keyhive.c
+++ b/keyboards/sofle/keyhive/keyhive.c
@@ -17,74 +17,3 @@
*/
#include "keyhive.h"
-#ifdef RGB_MATRIX_ENABLE
-// Physical Layout
-// Columns
-// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
-// ROWS
-// 12 13 22 23 32 33 33 32 23 22 13 12 0
-// 02 03 04 04 03 02
-// 11 14 21 24 31 34 34 31 24 21 14 11 1
-// 01 01
-// 10 15 20 25 30 35 35 30 25 20 15 10 2
-//
-// 09 16 19 26 29 36 36 29 26 19 16 09 3
-//
-// 08 17 18 27 28 28 27 18 17 08 4
-// 07 06 05 05 06 07
-
-// clang-format off
-
-led_config_t g_led_config = {
- {
- { 11, 12, 21, 22, 31, 32 },
- { 10, 13, 20, 23, 30, 33 },
- { 9, 14, 19, 24, 29, 34},
- { 8, 15, 18, 25, 28, 35},
- { 7, 16, 17, 26, 27, NO_LED },
- { 47, 48, 57, 58, 67, 68},
- { 46, 49, 56, 59, 66, 69},
- { 45, 50, 55, 60, 65, 70},
- { 44, 51, 54, 61, 64, 71},
- { 43, 52, 53, 62, 63, NO_LED }
- },
- {
- // Left side underglow
- {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60},
- // Left side Matrix
- {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12},
- {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55},
- {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32, 9},
- {48, 7}, {48, 19}, {48, 31}, {48, 43}, {80, 59},
- {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64, 9},
- {80, 10}, {80, 22}, {80, 34}, {80, 47},
-
-
- // Right side underglow
- {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60},
- // Right side Matrix
- {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12},
- {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55},
- {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192, 9},
- {176, 7}, {176, 19}, {176, 31}, {176, 43}, {144, 59},
- {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160, 9},
- {144, 10}, {144, 22}, {144, 34}, {144, 47},
- },
- {
- LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
- LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT
- }
-};
-#endif
diff --git a/keyboards/sofle/keyhive/keyhive.h b/keyboards/sofle/keyhive/keyhive.h
index d8b21e16d7..c4fdd85219 100755
--- a/keyboards/sofle/keyhive/keyhive.h
+++ b/keyboards/sofle/keyhive/keyhive.h
@@ -21,27 +21,26 @@
#include "quantum.h"
// clang-format off
-// Extra keys are added for rotary encoder support in VIA
+
#define LAYOUT( \
LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \
LB1, LB2, LB3, LB4, LB5, LB6, RB6, RB5, RB4, RB3, RB2, RB1, \
LC1, LC2, LC3, LC4, LC5, LC6, RC6, RC5, RC4, RC3, RC2, RC1, \
LD1, LD2, LD3, LD4, LD5, LD6, LE1, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \
- LE2, LE3, LE4, LE5, LE6, RE5, RE4, RE3, RE2, RE1 \
+ LE2, LE3, LE4, LE5, LE6, RE5, RE4, RE3, RE2, RE1 \
) \
{ \
- { LA1, LA2, LA3, LA4, LA5, LA6 }, \
- { LB1, LB2, LB3, LB4, LB5, LB6 }, \
- { LC1, LC2, LC3, LC4, LC5, LC6 }, \
- { LD1, LD2, LD3, LD4, LD5, LD6 }, \
- { LE1, LE2, LE3, LE4, LE5, LE6 }, \
- { RA1, RA2, RA3, RA4, RA5, RA6 }, \
- { RB1, RB2, RB3, RB4, RB5, RB6 }, \
- { RC1, RC2, RC3, RC4, RC5, RC6 }, \
- { RD1, RD2, RD3, RD4, RD5, RD6 }, \
- { RE1, RE2, RE3, RE4, RE5, RE6 } \
+ { LA1, LA2, LA3, LA4, LA5, LA6, KC_NO }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6, KC_NO }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, KC_NO }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, KC_NO }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO }, \
+ { RD1, RD2, RD3, RD4, RD5, RD6, KC_NO }, \
+ { RE1, RE2, RE3, RE4, RE5, RE6, KC_NO } \
}
-
//RGB LED Conversion macro from physical array to electric array (+146 to firmware size)
// clang-format on
diff --git a/keyboards/sofle/keyhive/readme.md b/keyboards/sofle/keyhive/readme.md
index 43813b856a..3847dfe6bb 100755
--- a/keyboards/sofle/keyhive/readme.md
+++ b/keyboards/sofle/keyhive/readme.md
@@ -1,66 +1,54 @@
-# Sofle Keyboard
+# Keyhive Sofle Keyboard
![SofleKeyboard version 2.1 RGB Keyhive](https://i.imgur.com/WH9OoWuh.jpg)
Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
-For detailed instructions on using VIA and flashing, please refer to the sections further down the page!
-
For details about the keyboard design, refer to Josef's blog: [Sofle Keyboard - a split keyboard based on Lily58 and Crkbd](https://josef-adamcik.cz/electronics/let-me-introduce-you-sofle-keyboard-split-keyboard-based-on-lily58.html)
Build guide: [Keyhive Sofle RGB build guide](https://github.com/keyhive/build_guides/blob/master/docs/keyboards/sofle-rgb.md)
-* Keyboard Maintainer: [Solartempest]
-* Hardware Supported: SofleKeyboard V2.1 RGB PCB, ProMicro / Elite-C
+* Keyboard Maintainer: [Winder](https://github.com/winder)
+* Hardware Supported: Keyhive Sofle RGB, ProMicro / Elite-C
* Hardware Availability: [Keyhive](https://keyhive.xyz/shop/sofle)
-# Custom Features:
-
-### OLED Features:
-- Includes Snakey keyboard pet! Slithers according to WPM, bites, and sticks its tongue out at you!
-- OLED displays current layer, lock key status, WPM, custom logo, and custom name.
-- OLED shuts off on idle and when computer is sleeping.
-- Includes working Luna keyboard pet.
-- Includes working Bongocat (disable RGB for sufficient space).
-- Includes stock OLED code as well.
+### Acknowledgements
-### RGB Features:
-- Adds custom layer lighting with custom gradients for each layer.
-- RGB underglow support and remapped to physical locations (nicer gradients and effects).
-- Adds white caps lock, scroll lock, and num lock key indicators using the top row/underglow LEDs.
+* Solartempest - the image on this page and most of the code is either copied directly or inspired by their fork. [Solartempest's fork.](https://github.com/solartempest/qmk_firmware/tree/master/keyboards/solartempest/sofle).
+* [Keyhive fork](https://github.com/keyhive/qmk_firmware) defined all of the board settings.
-### Rotary Encoder and VIA Features:
-- Fully emappable left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
-- Allows for live remapping of per-layer rotary encoder functions in VIA.
-- VIA support included by default.
-- This fixes the Keyhive left bottom row offset issue in VIA. You will need to import sofle.json in VIA.
-- Custom macro key in VIA for Super Alt Tab, which is fully compatible with rotary encoders.
-- Custom macro key in VIA for moving windows to other monitors in Windows, which is fully compatible with rotary encoders.
+# Supported Keymaps
-### Tap and Other Features:
-- Push left-shift + backspace to delete whole words. Right-shift + backspace to delete whole words in the opposite direction.
-- Double tap layers to stay on a layer instead of momentary push.
-- Adds key combo functionality.
-- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift).
+The keyhive schematic has been slightly modified compared to the open source sofle and not all keymaps are compatible.
-## Using with VIA
+* **default**: Basic functionality, no rgb, no VIA.
+* [keyhive_via](../keymaps/keyhive_via/readme.md) - Includes rgblighting and special support for remapping encoders with VIA.
+* **Other**: may work but backwards compatibility is not guaranteed or tested.
-- After flashing, in VIA make sure to Import Keymap, which is "sofle VIA keymap.json". This will alow VIA to recognize the updated layout and custom functions. VIA will not auto-recognize the keyboard with this firmware because of the necessary customization.
-- Go to Save+Load to Load Saved Layout. You can import my own layout "sofle VIA layout.json" or just use the Keymap tab to assign your own keys. Having another keyboard connected can be handy for doing this step.
-- It is a good idea to Save Current Layout after you decide on your mapping.
+# VIA Support
+As of 1.3.1, the VIA tool does not support Keyhive/Sofle V2 out of the box.
+See [keyhive_via](../keymaps/keyhive_via/readme.md) for details about configuring and using VIA.
+# Compiling
Make example for this keyboard (after setting up your build environment):
make sofle/keyhive:default
-Flashing example for this keyboard:
+## Flashing
- make sofle/keyhive:default:flash
+Flash using the correct command below (or use QMK Toolbox). These commands can be mixed if, for example, you have an Elite C on the left and a pro micro on the right.
-Press reset button on he keyboard when asked.
+Press reset button on the keyboard when asked.
Disconnect the first half, connect the second one and repeat the process.
+ # for Pro Micro-based builds
+ make sofle/keyhive:default:avrdude-split-left
+ make sofle/keyhive:default:avrdude-split-right
+
+ # for Elite C or DFU bootloader builds
+ make sofle/keyhive:default:dfu-split-left
+ make sofle/keyhive:default:dfu-split-right
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/sofle/keyhive/rules.mk b/keyboards/sofle/keyhive/rules.mk
index 44846f97cc..1934963819 100755
--- a/keyboards/sofle/keyhive/rules.mk
+++ b/keyboards/sofle/keyhive/rules.mk
@@ -12,12 +12,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes
LTO_ENABLE = yes
diff --git a/keyboards/sofle/keymaps/default/keymap.c b/keyboards/sofle/keymaps/default/keymap.c
index 6c078a1292..1d3a02b450 100644
--- a/keyboards/sofle/keymaps/default/keymap.c
+++ b/keyboards/sofle/keymaps/default/keymap.c
@@ -40,12 +40,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------' '------''---------------------------'
*/
-[_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI \
+[_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI
),
/*
* COLEMAK
@@ -63,12 +63,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------' '------''---------------------------'
*/
-[_COLEMAK] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
- KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LGUI,KC_LALT,KC_LCTRL,KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI \
+[_COLEMAK] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI,KC_LALT,KC_LCTRL,KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI
),
/* LOWER
* ,-----------------------------------------. ,-----------------------------------------.
@@ -84,12 +84,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
-[_LOWER] = LAYOUT( \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,\
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, \
- _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
- _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
+[_LOWER] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* RAISE
* ,----------------------------------------. ,-----------------------------------------.
@@ -105,12 +105,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
-[_RAISE] = LAYOUT( \
- _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______, \
- _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC, \
- _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, \
- _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+[_RAISE] = LAYOUT(
+ _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
+ _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC,
+ _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
+ _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
@@ -126,12 +126,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
- [_ADJUST] = LAYOUT( \
- XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- RESET , XXXXXXX,KC_QWERTY,KC_COLEMAK,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, \
- XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [_ADJUST] = LAYOUT(
+ XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RESET , XXXXXXX,KC_QWERTY,KC_COLEMAK,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX,
+ XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/sofle/keymaps/flare576/config.h b/keyboards/sofle/keymaps/flare576/config.h
new file mode 100644
index 0000000000..c0f0a7d563
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#define MAIN_BOARD
+#define MASTER_RIGHT
+#define ENCODER_DIRECTION_FLIP
+#define OLED_TIMEOUT 10000
+
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
+#define TAPPING_TERM_PER_KEY
+
+#ifdef ENCODER_RESOLUTION
+ #undef ENCODER_RESOLUTION
+#endif
+#define ENCODER_RESOLUTION 4
+
+#ifdef TAPPING_TERM
+ #undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 200
+
+#undef MANUFACTURER
+#define MANUFACTURER Flare576
diff --git a/keyboards/sofle/keymaps/flare576/enums.h b/keyboards/sofle/keymaps/flare576/enums.h
new file mode 100644
index 0000000000..7edcc1110f
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/enums.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+enum _layers {
+ /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
+ _BASE,
+ _MOUS,
+ _SYMS,
+ _FF14,
+ _ESDF,
+};
+
+enum custom_keycodes {
+ _COMP1 = SAFE_RANGE,
+ _COMP2,
+};
+
+enum custom_tapdance {
+ TD_PLAY,
+ TD_HOME,
+};
diff --git a/keyboards/sofle/keymaps/flare576/graphics.c b/keyboards/sofle/keymaps/flare576/graphics.c
new file mode 100644
index 0000000000..918334a508
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/graphics.c
@@ -0,0 +1,290 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "enums.h"
+#include "logos.h"
+int current_wpm = -1; // Enable screen-on at startup
+bool isJumping = false;
+bool showedJump = true;
+
+#ifdef OLED_DRIVER_ENABLE
+
+#ifdef MAIN_BOARD
+static void render_logos(void){}
+void luna_jump(bool newJump){
+ isJumping = newJump;
+ if (newJump) {
+ showedJump = false;
+ }
+}
+
+// START Luna vars
+#define MIN_WALK_SPEED 10
+#define MIN_RUN_SPEED 40
+
+#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+#define ANIM_SIZE 96 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+uint32_t anim_timer = 0;
+uint8_t current_frame = 0;
+
+bool isSneaking = false;
+static void render_luna(int LUNA_X, int LUNA_Y) {
+
+ static const char PROGMEM sit[2][ANIM_SIZE] = {
+ // 'sit1', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c,
+ 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28,
+ 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ // 'sit2', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c,
+ 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28,
+ 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ };
+
+ static const char PROGMEM walk[2][ANIM_SIZE] = {
+ // 'walk1', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80,
+ 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03,
+ 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ // 'walk2', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e,
+ 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }
+ };
+
+ static const char PROGMEM run[2][ANIM_SIZE] = {
+ // 'run1', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01,
+ 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ // 'run2', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37,
+ 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }
+ };
+
+ static const char PROGMEM sneak[2][ANIM_SIZE] = {
+ // 'sneak1', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04,
+ 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06,
+ 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ },
+
+ // 'sneak2', 32x22px
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04,
+ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04,
+ 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ }
+ };
+
+ // animation state
+ void animation_phase(void) {
+
+ if (isJumping || !showedJump) {
+
+ // clear
+ oled_set_cursor(LUNA_X,LUNA_Y +2);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X,LUNA_Y -1);
+
+ showedJump = true;
+ } else {
+
+ // clear
+ oled_set_cursor(LUNA_X,LUNA_Y -1);
+ oled_write(" ", false);
+
+ oled_set_cursor(LUNA_X,LUNA_Y);
+ }
+
+ current_frame = (current_frame + 1) % 2;
+
+ if(isSneaking) {
+ oled_write_raw_P(sneak[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if(current_wpm <= MIN_WALK_SPEED) {
+ oled_write_raw_P(sit[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else if(current_wpm <= MIN_RUN_SPEED) {
+ oled_write_raw_P(walk[abs(1 - current_frame)], ANIM_SIZE);
+
+ } else {
+ oled_write_raw_P(run[abs(1 - current_frame)], ANIM_SIZE);
+ }
+ }
+
+ // animation timer
+ if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+
+}
+// END Luna vars
+
+
+static void main_board(void) {
+ int layer = get_highest_layer(layer_state);
+ isSneaking = false;
+ // Print current mode
+ oled_write_ln_P(PSTR("Flare"), false);
+ oled_write_ln_P(PSTR("Sofle"), false);
+ if (layer == _FF14) {
+ oled_write_raw_P(ffxiv, 16*8);
+ } else if (keymap_config.swap_lalt_lgui) {
+ oled_write_raw_P(windows, 16*8);
+ } else {
+ oled_write_raw_P(apple, 16*8);
+ }
+ oled_set_cursor(0, 9);
+
+ switch (layer) {
+ case _BASE:
+ oled_write_ln_P(PSTR("ALL"), false);
+ oled_write_P(PSTR(" YOUR"), false);
+ oled_write_ln_P(PSTR("BASE"), false);
+ break;
+ case _MOUS:
+ isSneaking = true;
+ oled_write_ln_P(PSTR("Mouse"), false);
+ break;
+ case _SYMS:
+ oled_write_ln_P(PSTR("@$*&#"), false);
+ break;
+ case _FF14:
+ oled_write_ln_P(PSTR("FFXIV"), false);
+ break;
+ case _ESDF:
+ oled_write_ln_P(PSTR("ESDF "), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ if (layer != _BASE) {
+ oled_write_P(PSTR("\n"), false);
+ }
+
+ // Don't re-write if not in use
+ if (current_wpm > 0) {
+ render_luna(0,13);
+ }
+}
+
+// End "MAIN_BOARD"
+#else
+static void main_board(void){}
+static void luna_jump(bool newJump){}
+
+#define MARQUEE_FRAME_DURATION 200 // how long each frame lasts in ms
+#define LOGO_BYTES 128
+#define LOGO_COUNT 7
+static const char *const secondary_logos[] = { js, apple, docker, python, qmk, brew, windows };
+#define MARQUEE_FRAMES (LOGO_COUNT * 4)
+#define MARQUEE_SIZE ( LOGO_COUNT * LOGO_BYTES)
+#define MARQUEE_SCROLL_UP true
+uint32_t marquee_timer = 0;
+uint32_t marquee_frame = 0;
+
+static void render_logos(void) {
+ void marquee_phase(void) {
+ marquee_frame = (marquee_frame + 1) % MARQUEE_FRAMES;
+ int marquee_start = MARQUEE_SIZE - (marquee_frame * 32);
+ static char output[MARQUEE_SIZE];
+ for (int i = 0; i < LOGO_COUNT; i++) {
+ for (int j = 0; j < LOGO_BYTES; j++) {
+ int pos = ( i * LOGO_BYTES + j + marquee_start ) % MARQUEE_SIZE;
+ output[pos] = pgm_read_byte_near(secondary_logos[i] + j);
+ }
+ }
+ oled_write_raw(output, MARQUEE_SIZE);
+ }
+
+ // animation timer
+ if(timer_elapsed32(marquee_timer) > MARQUEE_FRAME_DURATION) {
+ marquee_timer = timer_read32();
+ marquee_phase();
+ }
+}
+
+// End "MAIN_BOARD" false
+#endif
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+void oled_task_user(void) {
+ // Prevent blank screen on startup
+ if (current_wpm == -1) {
+ set_current_wpm(10);
+ }
+ current_wpm = get_current_wpm();
+ if (is_keyboard_master()) {
+ // can't gate main_board on wpm; won't get mode changes that don't trigger wpm
+ main_board();
+ } else if (current_wpm > 0) {
+ render_logos();
+ }
+}
+
+// End "OLED_DRIVER_ENABLE"
+#else
+static void luna_jump(bool newJump){}
+// End "OLED_DRIVER_ENABLE" false
+#endif
diff --git a/keyboards/sofle/keymaps/flare576/graphics.h b/keyboards/sofle/keymaps/flare576/graphics.h
new file mode 100644
index 0000000000..3979ee43d9
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/graphics.h
@@ -0,0 +1,16 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+void luna_jump(bool newJump);
diff --git a/keyboards/sofle/keymaps/flare576/keymap.c b/keyboards/sofle/keymaps/flare576/keymap.c
new file mode 100644
index 0000000000..68f611a1b5
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/keymap.c
@@ -0,0 +1,196 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "print.h"
+#include "enums.h"
+#include "graphics.h"
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_PLAY] = ACTION_TAP_DANCE_DOUBLE(KC_MPLY, KC_MNXT),
+ [TD_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
+};
+
+#define KC_TPLY TD(TD_PLAY)
+#define KC_THME TD(TD_HOME)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * BASE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |Alt/Tb| Q | W | E | R | T | | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| PLAY | | PAGE |------+------+------+------+------+------|
+ * |LCtrl | Z | X | C | V | B |-------| |-------| N | M | , | . | / |+/SHFT|
+ * `-----------------------------------------/ / \Enter \-----------------------------------------'
+ * | ESDF | LAlt | ESC/ | LGUI | /Space / \ or \ | Bspc | Alt+ |Delete|FFXIV |
+ * | | |Symbol| |/ / \Mouse \ | |Shift | | |
+ * `----------------------------------' '------''---------------------------'
+ *
+ * Note: Apple's keyboard settings don't seem to discern right- and left-ALT, so swapping keys there breaks TAB & META
+ */
+[_BASE] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ RALT_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TPLY, KC_THME, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_PLUS),
+ TG(_ESDF), KC_LALT, LT(_SYMS,KC_ESC), KC_LGUI, KC_SPC, LT(_MOUS, KC_ENT), KC_BSPC, RSFT(KC_RALT), KC_DEL, TG(_FF14)
+),
+
+/*
+ * MOUS
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * |CTRL+W|ALT+A | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TRNS |PRNTSC| | M UP | HOME | PGUP | |M Wl U|M Wl D|M Wl L|M Wl R| |COMP1 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TRNS |SC LCK|M LFT |M DWN |M RGHT| |-------. ,-------| UP | DOWN | LEFT |RIGHT | |COMP2 |
+ * |------+------+------+------+------+------| TRNS | | TRNS |------+------+------+------+------+------|
+ * | TRNS |PAUSE | | | END | PGDN |-------| |-------|MOUS1 |MOUS2 | | | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | TRNS | TRNS |TRNS | / TRNS / \ TRNS \ |MOUS3 |MOUS4 |MOUS5 | |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_MOUS] = LAYOUT(
+ LCTL(KC_W), LALT(KC_A), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_PSCR, XXXXXXX, KC_MS_U, KC_HOME, KC_PGUP, KC_WH_U, KC_WH_D, KC_WH_L, KC_WH_R, XXXXXXX, _COMP1,
+ _______, KC_SLCK, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, _COMP2,
+ _______, KC_PAUS, XXXXXXX, XXXXXXX, KC_END, KC_PGDN, _______, _______, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, _______, _______, _______, _______, _______, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX
+),
+
+/* SYMS
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | | | { | } | | RESET|
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TRNS | F6 | F7 | F8 | F9 | F10 | | | | ( | ) | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TRNS | F11 | F12 | F13 | F14 | F15 |-------. ,-------| | | [ | ] | | |
+ * |------+------+------+------+------+------| TRNS | | TRNS |------+------+------+------+------+------|
+ | TRNS | UNDO | CUT | COPY |PASTE | F20 |-------| |-------| | | < | > | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | TRNS | TRNS | TRNS | TRNS | / TRNS / \ TRNS \ | TRNS | TRNS | TRNS | TRNS |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_SYMS] = LAYOUT(
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, RESET,
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX,
+ _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX,
+ _______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), KC_F20, _______, _______, XXXXXXX, XXXXXXX, KC_LT, KC_GT, XXXXXXX, XXXXXXX,
+ XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX
+),
+
+/* FF14
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | TRNS | TRNS | TRNS | TRNS | TRNS | | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |-------. ,-------| TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * |------+------+------+------+------+------| TRNS | | TRNS |------+------+------+------+------+------|
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |-------| |-------| TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | ESDF | | ESC | TRNS | / TRNS / \ TRNS \ | TRNS |PrntSc| TRNS | TRNS |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_FF14] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ TO(_ESDF), XXXXXXX, KC_ESC, _______, _______, _______, _______, KC_PSCR, _______, _______
+),
+
+/* ESDF
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | T | Tab | Q | W | E | R | | Ctl-Y| Ctl-U| Ctl-I| Ctl-O| Ctl-P| PGUP |
+ * |------|------+------+------+------+------+ |------+------+------+------+------+------|
+ * | G |LShift| A | S | D | F |-------. ,-------| Ctl-H| Ctl-J| Ctl-K| Ctl-L| Ctl-;| PGDN |
+ * |------|------+------+------+------+------+ | | |------+------+------+------+------+------|
+ * | LCtrl| Z | X | C | V | B |-------| |-------| Ctl-N| Ctl-M| Ctl-,| Ctl-.| Ctl-/| M |
+ * `-----------------------------------------/ / \Enter \-----------------------------------------'
+ * | TRNS | | ESC | LAlt | /Space / \ \ |PrnScr| | | FF14 |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_ESDF] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R, RCTL(KC_Y), RCTL(KC_U), RCTL(KC_I), RCTL(KC_O), RCTL(KC_P), KC_PGUP,
+ KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F, RCTL(KC_H), RCTL(KC_J), RCTL(KC_K), RCTL(KC_L), RCTL(KC_SCLN), KC_PGDN,
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, RCTL(KC_N), RCTL(KC_M), RCTL(KC_COMM), RCTL(KC_DOT), RCTL(KC_SLSH), KC_M,
+ _______, XXXXXXX, _______, _______, _______, _______, _______, KC_PSCR, _______, TO(_FF14)
+)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case _COMP1:
+ if (record->event.pressed) {
+ // SEND_STRING(SS_TAP(X_RCTRL) SS_DELAY(100) SS_TAP(X_RCTRL) SS_DELAY(100) "1" SS_TAP(X_ENTER));
+ keymap_config.swap_lalt_lgui = false;
+ }
+ return false;
+ case _COMP2:
+ if (record->event.pressed) {
+ // SEND_STRING(SS_TAP(X_RCTRL) SS_DELAY(100) SS_TAP(X_RCTRL) SS_DELAY(100) "2" SS_TAP(X_ENTER));
+ keymap_config.swap_lalt_lgui = true;
+ }
+ return false;
+ case KC_SPC:
+ luna_jump(record->event.pressed);
+ break;
+ }
+ return true;
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_THME:
+ case KC_TPLY:
+ return TAPPING_TERM + 250;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
+#ifdef ENCODER_ENABLE
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDOWN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+
+#endif
diff --git a/keyboards/sofle/keymaps/flare576/logos.h b/keyboards/sofle/keymaps/flare576/logos.h
new file mode 100644
index 0000000000..18de1b3d52
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/logos.h
@@ -0,0 +1,96 @@
+/* Copyright 2021 Flare576 <flare576@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+static const char PROGMEM ffxiv[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xf0, 0x00, 0xf0, 0xc0, 0xe0, 0x80, 0x00, 0x02,
+ 0x0c, 0x2e, 0xfc, 0xfc, 0xfc, 0xfc, 0x78, 0x78, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x3f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf8,
+ 0xf8, 0xf8, 0xf1, 0xff, 0xff, 0xff, 0xf8, 0xf0, 0xf0, 0xb0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x7b, 0xdf, 0x1f, 0x3f, 0x3f,
+ 0x1f, 0x1f, 0x3f, 0x5f, 0x9f, 0x8f, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x06, 0x07, 0x0f, 0x1c, 0x74,
+ 0x0c, 0x0d, 0x09, 0x09, 0x11, 0x01, 0x03, 0x03, 0x07, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+static const char PROGMEM windows[] = {
+ 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0xf8,
+ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0x00,
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00,
+ 0x00, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x00, 0x1f,
+ 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00
+};
+static const char PROGMEM apple[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x78, 0x7c, 0x7e, 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f,
+ 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00
+};
+const char PROGMEM docker[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+ 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x80, 0xb0, 0xb0, 0xb0, 0x80, 0xb7, 0xb7, 0xb7, 0x80, 0xb7, 0xb7, 0xb7, 0x80, 0xb7,
+ 0xb7, 0xb7, 0x80, 0xb0, 0xb0, 0xb0, 0x80, 0x80, 0xfe, 0xfe, 0xfc, 0xf0, 0xf0, 0xf0, 0x70, 0x00,
+ 0x03, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const char PROGMEM python[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7e, 0x66, 0x66, 0x67, 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
+ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x3f, 0x9f, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf0,
+ 0x0f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf9, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff,
+ 0xfe, 0xfe, 0xfe, 0xe6, 0x66, 0x66, 0x7e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const char PROGMEM js[] = {
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0x78, 0x7c, 0x3c, 0x1e, 0x9f,
+ 0x9e, 0x1e, 0x3c, 0x3c, 0x78, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x01, 0xf1, 0xf8, 0xfc, 0xfc, 0x06, 0x06, 0xff, 0x0f,
+ 0x0f, 0x67, 0x67, 0xe6, 0xcc, 0x8c, 0xf8, 0xf9, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x80, 0x1f, 0x3f, 0x3f, 0x3f, 0x00, 0x80, 0xff, 0xe3,
+ 0xe2, 0xce, 0xce, 0x4c, 0x64, 0x20, 0x11, 0x9f, 0x80, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x1f, 0x1f, 0x3c, 0x3c, 0x78, 0x79,
+ 0xf9, 0x78, 0x3c, 0x3c, 0x1e, 0x1f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00,
+};
+static const char PROGMEM qmk[] = {
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xf0, 0xf8,
+ 0xf8, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xf0, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0xf1, 0xf3, 0xe3, 0xe7, 0x00,
+ 0x00, 0xe7, 0xe3, 0xf3, 0xf1, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x0f, 0x0f, 0x1f,
+ 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x0f, 0x0f, 0x1f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00,
+};
+static const char PROGMEM brew[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xe7, 0xff, 0xfe, 0xfc, 0xf8, 0xfe,
+ 0xe4, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xe7, 0x43, 0x41, 0x41, 0x4b, 0xcf, 0x87, 0x87, 0x8f,
+ 0x87, 0x03, 0x03, 0xc3, 0x47, 0xe7, 0xa4, 0xb8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x02, 0x02, 0x03, 0x00, 0xfe, 0x02, 0x02, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0xc0, 0x40, 0x7b, 0x0a, 0x0a, 0x0b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
diff --git a/keyboards/sofle/keymaps/flare576/readme.md b/keyboards/sofle/keymaps/flare576/readme.md
new file mode 100644
index 0000000000..9f8ad5f248
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/readme.md
@@ -0,0 +1,22 @@
+![Flare576 Keycaps](https://raw.githubusercontent.com/Flare576/sofle/main/images/keycaps.png)
+![Flare576 Chord Guide](https://raw.githubusercontent.com/Flare576/sofle/main/images/chords.png)
+
+# Flare576's keymap for Sofle Keyboard
+
+[Layout](http://www.keyboard-layout-editor.com/#/gists/fb8b42a6156458e20ca421a6f80cec48) and [Chord Mapping](http://www.keyboard-layout-editor.com/#/gists/884e3bc833cdf80fed9337ffee93a500) in Keyboard Layout Manager
+
+
+Features:
+
+- WASD -> ESDF Gaming layer
+- Mouse/Arrow Keys Layer with **amazing** rates
+- Tap/Hold keys for `=/+`/`SHIFT`, `TAB`/`ALT`
+- Bracket layer with Fn Keys
+- Right-hand primary OLED
+ * Mode logo
+ * Mode title
+ * Luna WPM indicator
+- Left-hand secondary OLED scrolling logo marquee
+- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN/Home.
+
+See [My Sofle Project](https://github.com/flare576/sofle) for more details
diff --git a/keyboards/sofle/keymaps/flare576/rules.mk b/keyboards/sofle/keymaps/flare576/rules.mk
new file mode 100644
index 0000000000..a7505f5386
--- /dev/null
+++ b/keyboards/sofle/keymaps/flare576/rules.mk
@@ -0,0 +1,7 @@
+MOUSEKEY_ENABLE = yes
+ENCODER_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+WPM_ENABLE = yes
+OLED_DRIVER_ENABLE = yes
+SRC += graphics.c
diff --git a/keyboards/sofle/keymaps/keyhive_via/config.h b/keyboards/sofle/keymaps/keyhive_via/config.h
new file mode 100644
index 0000000000..0e2cb6d2c4
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/config.h
@@ -0,0 +1,48 @@
+ /* Copyright 2020 Josef Adamcik
+ * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* The way how "handedness" is decided (which half is which),
+see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
+for more options.
+*/
+
+// More lighting options in quantum/rgblight/rgblight.h
+#ifdef RGBLIGHT_ENABLE
+# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+2
+
+// Disabling some of these is a good way to save flash space.
+# define RGBLIGHT_EFFECT_ALTERNATING // 108
+# define RGBLIGHT_EFFECT_RGB_TEST // 158
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD // 160
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT // 168
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL // 192
+# define RGBLIGHT_EFFECT_BREATHING // 348
+# define RGBLIGHT_EFFECT_KNIGHT // 336
+# define RGBLIGHT_EFFECT_SNAKE // 406
+# define RGBLIGHT_EFFECT_CHRISTMAS // 508
+/*
+#define RGBLIGHT_EFFECT_TWINKLE // 1156
+*/
+#endif
+
+// Disabled to save space
+#define NO_ACTION_ONESHOT // 332
+#define NO_ACTION_MACRO // 0
+#define NO_ACTION_FUNCTION // 0
+#define DISABLE_LEADER // 0
diff --git a/keyboards/sofle/keymaps/keyhive_via/encoder.c b/keyboards/sofle/keymaps/keyhive_via/encoder.c
new file mode 100644
index 0000000000..0883c4a48a
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/encoder.c
@@ -0,0 +1,49 @@
+ /* Copyright 2020 Josef Adamcik
+ * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Setting up what encoder rotation does. If your encoder can be pressed as a button, that function can be set in Via.
+
+#ifdef ENCODER_ENABLE
+ static uint8_t encoder_state[2] = {0};
+ //Use these keymap positions to specify the encoder functions on rotate.
+ static keypos_t encoder_ccw[2] = {{6, 3}, {6, 8}};
+ static keypos_t encoder_cw[2] = {{6, 1}, {6, 6}};
+
+ void encoder_action_unregister(void) {
+ for (int index = 0; index < 2; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t){.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], .pressed = false, .time = (timer_read() | 1)};
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+ }
+
+ void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+ }
+
+ void matrix_scan_user(void) { encoder_action_unregister(); }
+
+ bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
+ };
+#endif
+
diff --git a/keyboards/sofle/keymaps/keyhive_via/keymap.c b/keyboards/sofle/keymaps/keyhive_via/keymap.c
new file mode 100644
index 0000000000..878638e1a2
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/keymap.c
@@ -0,0 +1,191 @@
+ /* Copyright 2020 Josef Adamcik
+ * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#include "oled.c"
+#include "encoder.c"
+
+// Base layer is the number of layers CYCLE selects from.
+#define BASE_LAYERS 2
+
+enum custom_keycodes {
+ PLACEHOLDER = SAFE_RANGE, // can always be here (4 bytes)
+ CYCLE // cycle through first BASE_LAYERS (62 bytes)
+};
+
+enum custom_layers {
+ _QWERTY,
+ _COLEMAK,
+ _LOWER,
+ _RAISE
+};
+
+// Extra keys are added for rotary encoder support in VIA
+#define LAYOUT_via( \
+ LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \
+ LB1, LB2, LB3, LB4, LB5, LB6, LB7, RB7, RB6, RB5, RB4, RB3, RB2, RB1, \
+ LC1, LC2, LC3, LC4, LC5, LC6, LE1, RE6, RC6, RC5, RC4, RC3, RC2, RC1, \
+ LD1, LD2, LD3, LD4, LD5, LD6, LD7, RD7, RD6, RD5, RD4, RD3, RD2, RD1, \
+ LE2, LE3, LE4, LE5, LE6, RE5, RE4, RE3, RE2, RE1 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6, KC_NO }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, LB7 }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6, LD7 }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, KC_NO }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7 }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO }, \
+ { RD1, RD2, RD3, RD4, RD5, RD6, RD7 }, \
+ { RE1, RE2, RE3, RE4, RE5, RE6, KC_NO } \
+ }
+
+//Default keymap. This can be changed in Via. Use oled.c to change beavior that Via cannot change.
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 |-------. E ,-------| 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| VolUp |< N >| Pg Up |------+------+------+------+------+------|
+ * | ESC | Q | W | E | R | T |-------. C ,-------| Y | U | I | O | P | Bspc |
+ * |------+------+------+------+------+------| Mute |< O >| |------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G |-------. D ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| VolDn |< E >| Pg Dn |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| R |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `-----------------------------------' '------''---------------------------'
+ */
+
+[_QWERTY] = LAYOUT_via(
+ KC_GRV, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_GRV ,
+ KC_ESC, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_VOLU, KC_PGUP, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC,
+ KC_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_NO , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_VOLD, KC_PGDN, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LGUI,KC_LALT ,KC_LCTRL,MO(_LOWER), KC_ENT , KC_SPC ,MO(_RAISE),KC_RCTRL, KC_RALT, KC_RGUI
+),
+/*
+ * COLEMAK - Vanilla
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 |-------. E ,-------| 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| VolUp |< N >| Pg Up |------+------+------+------+------+------|
+ * | ESC | Q | W | F | P | G |-------. C ,-------| J | L | U | Y | ; | Bspc |
+ * |------+------+------+------+------+------| Mute |< O >| |------+------+------+------+------+------|
+ * | TAB | A | R | S | T | D |-------. D ,-------| H | N | E | I | O | ' |
+ * |------+------+------+------+------+------| VolDn |< E >| Pg Dn |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| R |-------| K | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `-----------------------------------' '------''---------------------------'
+ */
+/*
+[_COLEMAK] = LAYOUT_via(
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_GRV ,
+ KC_ESC , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_VOLU, KC_PGUP, KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSPC,
+ KC_TAB , KC_A , KC_R , KC_S , KC_T , KC_D , KC_MUTE, KC_NO , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_VOLD, KC_PGDN, KC_N , KC_M , KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT,KC_LCTRL,MO(_LOWER), KC_ENT , KC_SPC ,MO(_RAISE),KC_RCTRL, KC_RALT, KC_RGUI
+),
+*/
+
+/*
+ * COLEMAK-DH
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 |-------. E ,-------| 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| VolUp |< N >| Pg Up |------+------+------+------+------+------|
+ * | ESC | Q | W | F | P | B |-------. C ,-------| J | L | U | Y | ; | Bspc |
+ * |------+------+------+------+------+------| Mute |< O >| |------+------+------+------+------+------|
+ * | TAB | A | R | S | T | G |-------. D ,-------| M | N | E | I | O | ' |
+ * |------+------+------+------+------+------| VolDn |< E >| Pg Dn |------+------+------+------+------+------|
+ * |LShift| Z | X | C | D | V |-------| R |-------| K | H | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `-----------------------------------' '------''---------------------------'
+ */
+[_COLEMAK] = LAYOUT_via(
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_GRV ,
+ KC_ESC , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_VOLU, KC_PGUP, KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_BSPC,
+ KC_TAB , KC_A , KC_R , KC_S , KC_T , KC_G , KC_MUTE, KC_NO , KC_M , KC_N , KC_E , KC_I , KC_O , KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_D , KC_V , KC_VOLD, KC_PGDN, KC_K , KC_H , KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT,KC_LCTRL,MO(_LOWER), KC_ENT , KC_SPC ,MO(_RAISE),KC_RCTRL, KC_RALT, KC_RGUI
+),
+
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 |-------. E ,-------| F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------| |< N >| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 |-------. C ,-------| 6 | 7 | 8 | 9 | 0 | F12 |
+ * |------+------+------+------+------+------| |< O >| |------+------+------+------+------+------|
+ * | Tab | ! | @ | # | $ | % |-------. D ,-------| ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------| |< E >| |------+------+------+------+------+------|
+ * | Shift| = | - | + | { | } |-------| R |-------| [ | ] | ; | : | \ | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `-----------------------------------' '------''---------------------------'
+ */
+[_LOWER] = LAYOUT_via(
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_F12 ,
+ _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ _______, KC_EQL , KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* RAISE
+ * ,----------------------------------------. ,-----------------------------------------.
+ * |Cycle | | | | | |-------. E ,-------| | | | | | |
+ * |------+------+------+------+------+------| |< N >| |------+------+------+------+------+------|
+ * | Esc | Ins | Pscr | Menu | | |-------. C ,-------| | | Up | | DLine| Bspc |
+ * |------+------+------+------+------+------| |< O >| |------+------+------+------+------+------|
+ * | Tab | LAt | LCtl |LShift| | Caps |-------. D ,-------| | Left | Down | Rigth| Del | Bspc |
+ * |------+------+------+------+------+------| |< E >| |------+------+------+------+------+------|
+ * |Shift | Undo | Cut | Copy | Paste| |-------| R |-------| | LStr | | LEnd | | Shift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_RAISE] = LAYOUT_via(
+ CYCLE, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_INS , KC_PSCR, KC_APP , XXXXXXX , XXXXXXX, _______, _______, KC_PGUP, _______, KC_UP , _______, _______, KC_BSPC,
+ _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX , KC_CAPS, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_BSPC,
+ _______, KC_UNDO, KC_CUT , KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+};
+
+// Custom keycode handling.
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // handling this once instead of in each keycode uses less program memory.
+ if ((keycode >= SAFE_RANGE) && !(record->event.pressed)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case CYCLE:
+ set_single_persistent_default_layer((1+get_highest_layer(default_layer_state)) % BASE_LAYERS);
+ break;
+ }
+
+ // this uses less memory than returning in each case.
+ return keycode < SAFE_RANGE;
+};
diff --git a/keyboards/sofle/keymaps/keyhive_via/oled.c b/keyboards/sofle/keymaps/keyhive_via/oled.c
new file mode 100644
index 0000000000..ef3a189f9d
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/oled.c
@@ -0,0 +1,85 @@
+ /* Copyright 2020 Josef Adamcik
+ * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//Sets up what the OLED screens display.
+
+#ifdef OLED_ENABLE
+
+static void render_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
+ };
+
+ oled_write_P(qmk_logo, false);
+}
+
+static void print_status_narrow(void) {
+ // Print current mode
+ oled_write_P(PSTR("\n\n"), false);
+
+ switch (get_highest_layer(default_layer_state)) {
+ case 0: // _QWERTY
+ oled_write_ln_P(PSTR("Qwrt\n"), false);
+ break;
+ case 1: // _COLEMAK
+ oled_write_ln_P(PSTR("Clmk\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Mod"), false);
+ break;
+ }
+ oled_write_P(PSTR("\n\n"), false);
+ // Print current layer
+ oled_write_ln_P(PSTR("LAYER"), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0: // _QWERTY
+ case 1: // _COLEMAK
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Lower"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Raise"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ oled_write_P(PSTR("\n\n"), false);
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
+}
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ print_status_narrow();
+ } else {
+ render_logo();
+ }
+ return false;
+}
+
+#endif
diff --git a/keyboards/sofle/keymaps/keyhive_via/readme.md b/keyboards/sofle/keymaps/keyhive_via/readme.md
new file mode 100644
index 0000000000..e7a2beebcf
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/readme.md
@@ -0,0 +1,49 @@
+# Only compatible with sofle/keyhive firmware which adds an extra column of keys for encoder mapping.
+
+![SofleKeyboard version 2.1 RGB Keyhive](https://i.imgur.com/Oa6spvZ.png)
+
+# Configuring VIA / Vial App
+
+This firmware will not auto-recognize until [PR #1060](https://github.com/the-via/keyboards/pull/1060) is accepted to the VIA keyboard database. For now you must install the new layout:
+
+1. Download [keyhive_sofle_rgb.json](https://raw.githubusercontent.com/the-via/keyboards/48372baae5ab451d752988121fa4f1dd47b2c1ce/src/sofle/keyhive_sofle_rgb.json).
+2. In the VIA app, select `File > Import Keymap` from the menu.
+3. Open the file you just downloaded.
+
+**You'll have to do this every time you use VIA or Vial until the PR is accepted.**
+
+# Using with VIA
+* The default layouts should be loaded automatically.
+* Layouts can be backed up in VIA in the SAVE+LOAD section.
+* It is a good idea to Save Current Layout after you decide on your mapping.
+
+# Custom Features:
+
+### Rotary Encoder and VIA Features:
+* Fully remappable. Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
+* Allows for live remapping of per-layer rotary encoder functions in VIA.
+* VIA support with **keyhive_via** keymap.
+
+# Compiling
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sofle/keyhive:keyhive_via
+
+## Flashing
+
+Flash using the correct command below (or use QMK Toolbox). These commands can be mixed if, for example, you have an Elite C on the left and a pro micro on the right.
+
+Press reset button on the keyboard when asked.
+
+Disconnect the first half, connect the second one and repeat the process.
+
+ # for Pro Micro-based builds
+ make sofle/keyhive:keyhive_via:avrdude-split-left
+ make sofle/keyhive:keyhive_via:avrdude-split-right
+
+ # for Elite C or DFU bootloader builds
+ make sofle/keyhive:keyhive_via:dfu-split-left
+ make sofle/keyhive:keyhive_via:dfu-split-right
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/sofle/keymaps/keyhive_via/rules.mk b/keyboards/sofle/keymaps/keyhive_via/rules.mk
new file mode 100644
index 0000000000..2875254096
--- /dev/null
+++ b/keyboards/sofle/keymaps/keyhive_via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/sofle/keymaps/via/keymap.c b/keyboards/sofle/keymaps/via/keymap.c
index 2f917f42dc..b8bbe195fe 100644
--- a/keyboards/sofle/keymaps/via/keymap.c
+++ b/keyboards/sofle/keymaps/via/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
- * `----------------------------------' '------''---------------------------'
+ * `-----------------------------------' '------''---------------------------'
*/
[1] = LAYOUT(
@@ -96,8 +96,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
- * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
- * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * |Shift | Undo | Cut | Copy | Paste| |--------| |-------| | LStr | | LEnd | | Shift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
* | | | | |/ / \ \ | | | | |
diff --git a/keyboards/soup10/rules.mk b/keyboards/soup10/rules.mk
index a683e5c39d..b453f189ab 100644
--- a/keyboards/soup10/rules.mk
+++ b/keyboards/soup10/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/southpole/keymaps/default/keymap.c b/keyboards/southpole/keymaps/default/keymap.c
index 20333f0e3f..2777f00b5b 100644
--- a/keyboards/southpole/keymaps/default/keymap.c
+++ b/keyboards/southpole/keymaps/default/keymap.c
@@ -3,18 +3,18 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
- KC_NLCK, KC_SLSH, KC_ASTR, KC_MINS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME, \
- KC_7, KC_8, KC_9, KC_PLUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP, \
- KC_4, KC_5, KC_6, KC_ENT, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_1, KC_2, KC_3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END, \
- KC_0, KC_DOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), \
+ KC_NLCK, KC_SLSH, KC_ASTR, KC_MINS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME,
+ KC_7, KC_8, KC_9, KC_PLUS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_4, KC_5, KC_6, KC_ENT, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_1, KC_2, KC_3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_END,
+ KC_0, KC_DOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RESET, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/southpole/rules.mk b/keyboards/southpole/rules.mk
index 00c8642a66..278ee36f23 100644
--- a/keyboards/southpole/rules.mk
+++ b/keyboards/southpole/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
#AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/sowbug/68keys/rules.mk b/keyboards/sowbug/68keys/rules.mk
index a2fd3d0310..44ea7fc29a 100644
--- a/keyboards/sowbug/68keys/rules.mk
+++ b/keyboards/sowbug/68keys/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sowbug/ansi_tkl/keymaps/default/keymap.c b/keyboards/sowbug/ansi_tkl/keymaps/default/keymap.c
index 6570dedb09..0af19b3587 100644
--- a/keyboards/sowbug/ansi_tkl/keymaps/default/keymap.c
+++ b/keyboards/sowbug/ansi_tkl/keymaps/default/keymap.c
@@ -20,29 +20,29 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, RESET , \
- _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
- _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
- _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, RESET ,
+ _______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU,
+ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
[X] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
*/
};
diff --git a/keyboards/sowbug/ansi_tkl/rules.mk b/keyboards/sowbug/ansi_tkl/rules.mk
index a2fd3d0310..44ea7fc29a 100644
--- a/keyboards/sowbug/ansi_tkl/rules.mk
+++ b/keyboards/sowbug/ansi_tkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/soy20/rules.mk b/keyboards/soy20/rules.mk
index 673cc411ad..ccf4eb740e 100644
--- a/keyboards/soy20/rules.mk
+++ b/keyboards/soy20/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/space_space/rev1/rules.mk b/keyboards/space_space/rev1/rules.mk
index 698cce9fb1..5f58c5684b 100644
--- a/keyboards/space_space/rev1/rules.mk
+++ b/keyboards/space_space/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/space_space/rev2/config.h b/keyboards/space_space/rev2/config.h
index 66f8f6add4..bb8f04da2b 100644
--- a/keyboards/space_space/rev2/config.h
+++ b/keyboards/space_space/rev2/config.h
@@ -41,12 +41,11 @@
/* ROTARY ENCODERS */
#define ENCODERS_PAD_A \
- { D7, F7 }
-#define ENCODERS_PAD_B \
{ B4, C7 }
+#define ENCODERS_PAD_B \
+ { D7, F7 }
#define ENCODER_RESOLUTION 3
-#define ENCODER_DIRECTION_FLIP
#define DEBOUNCE 5
diff --git a/keyboards/space_space/rev2/rules.mk b/keyboards/space_space/rev2/rules.mk
index c1ecc763c5..8876a45881 100644
--- a/keyboards/space_space/rev2/rules.mk
+++ b/keyboards/space_space/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/spaceman/2_milk/rules.mk b/keyboards/spaceman/2_milk/rules.mk
index 30b6073636..77b594bd81 100644
--- a/keyboards/spaceman/2_milk/rules.mk
+++ b/keyboards/spaceman/2_milk/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = yes # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/spaceman/pancake/rev1/feather/rules.mk b/keyboards/spaceman/pancake/rev1/feather/rules.mk
index 2bf9079970..6530422734 100644
--- a/keyboards/spaceman/pancake/rev1/feather/rules.mk
+++ b/keyboards/spaceman/pancake/rev1/feather/rules.mk
@@ -8,15 +8,14 @@ F_CPU = 8000000
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/spaceman/pancake/rev1/promicro/rules.mk b/keyboards/spaceman/pancake/rev1/promicro/rules.mk
index 4d95e61b42..561b3da8fe 100644
--- a/keyboards/spaceman/pancake/rev1/promicro/rules.mk
+++ b/keyboards/spaceman/pancake/rev1/promicro/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/spaceman/pancake/rev2/info.json b/keyboards/spaceman/pancake/rev2/info.json
index 1af0dbcdb4..a5a4aad132 100644
--- a/keyboards/spaceman/pancake/rev2/info.json
+++ b/keyboards/spaceman/pancake/rev2/info.json
@@ -1,6 +1,5 @@
{
"keyboard_name": "Pancake 2",
- "keyboard_folder": "pancake/rev2",
"url": "",
"maintainer": "Spaceman",
"layouts": {
diff --git a/keyboards/spaceman/pancake/rev2/rules.mk b/keyboards/spaceman/pancake/rev2/rules.mk
index 27b9094b57..fa32ecc897 100644
--- a/keyboards/spaceman/pancake/rev2/rules.mk
+++ b/keyboards/spaceman/pancake/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/spaceman/yun65/rules.mk b/keyboards/spaceman/yun65/rules.mk
index a824dac4ae..d2c47c1529 100644
--- a/keyboards/spaceman/yun65/rules.mk
+++ b/keyboards/spaceman/yun65/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Custom backlighting code is used, so this should not be enabled
AUDIO_ENABLE = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
RGBLIGHT_ENABLE = no # This can be enabled if a ws2812 strip is connected to the expansion port.
diff --git a/keyboards/spacetime/keymaps/default/config.h b/keyboards/spacetime/keymaps/default/config.h
deleted file mode 100644
index 26a960039d..0000000000
--- a/keyboards/spacetime/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Kyle Terry
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/spacetime/keymaps/default/keymap.c b/keyboards/spacetime/keymaps/default/keymap.c
index ffd867ca0b..deb34e4800 100644
--- a/keyboards/spacetime/keymaps/default/keymap.c
+++ b/keyboards/spacetime/keymaps/default/keymap.c
@@ -27,9 +27,9 @@ enum layers {
/* layer template:
* [_LAYER] = LAYOUT(
- * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ * _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* _______, _______, _______, _______, _______, _______, _______, _______
* ),
*/
diff --git a/keyboards/spacetime/rules.mk b/keyboards/spacetime/rules.mk
index 05efe18d29..3260715dc5 100644
--- a/keyboards/spacetime/rules.mk
+++ b/keyboards/spacetime/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/spacey/config.h b/keyboards/spacey/config.h
index 58249d4f19..81f3df6a89 100644
--- a/keyboards/spacey/config.h
+++ b/keyboards/spacey/config.h
@@ -20,8 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
+#define VENDOR_ID 0x5641 // "VA"
+#define PRODUCT_ID 0x2045 // "Space E"
#define DEVICE_VER 0x0001
#define MANUFACTURER vanilla
#define PRODUCT spacey
diff --git a/keyboards/spacey/keymaps/via/keymap.c b/keyboards/spacey/keymaps/via/keymap.c
new file mode 100644
index 0000000000..660f427da7
--- /dev/null
+++ b/keyboards/spacey/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 vanilla
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CLCK,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_UP,
+ KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_LEFT, KC_DOWN,
+ KC_LCTL, KC_LGUI, MO(1), KC_MUTE, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_DEL, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC,
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT, KC_MS_U,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_MS_L, KC_MS_D,
+ KC_LCTL, KC_LGUI, KC_NO, KC_ESC, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_RALT, KC_NO, KC_APP, KC_RGUI, KC_RCTL, KC_MS_R
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/spacey/keymaps/via/rules.mk b/keyboards/spacey/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/spacey/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/spacey/rules.mk b/keyboards/spacey/rules.mk
index baba7d9d86..77d9fdb410 100644
--- a/keyboards/spacey/rules.mk
+++ b/keyboards/spacey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sparrow62/rules.mk b/keyboards/sparrow62/rules.mk
index d2af5cf14a..8f9772df22 100644
--- a/keyboards/sparrow62/rules.mk
+++ b/keyboards/sparrow62/rules.mk
@@ -12,8 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/specskeys/rules.mk b/keyboards/specskeys/rules.mk
index bec579b641..382c5a7f3f 100644
--- a/keyboards/specskeys/rules.mk
+++ b/keyboards/specskeys/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/spiderisland/split78/rules.mk b/keyboards/spiderisland/split78/rules.mk
index e125ff05a3..c5319e8410 100644
--- a/keyboards/spiderisland/split78/rules.mk
+++ b/keyboards/spiderisland/split78/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/spiderisland/winry25tc/rules.mk b/keyboards/spiderisland/winry25tc/rules.mk
index 4eb00f7407..b0352b513c 100644
--- a/keyboards/spiderisland/winry25tc/rules.mk
+++ b/keyboards/spiderisland/winry25tc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/splitish/rules.mk b/keyboards/splitish/rules.mk
index 755a4d5d2d..76fa2e63fb 100644
--- a/keyboards/splitish/rules.mk
+++ b/keyboards/splitish/rules.mk
@@ -4,13 +4,13 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
diff --git a/keyboards/splitkb/kyria/keymaps/default/config.h b/keyboards/splitkb/kyria/keymaps/default/config.h
index be87e7ac99..f989d67408 100644
--- a/keyboards/splitkb/kyria/keymaps/default/config.h
+++ b/keyboards/splitkb/kyria/keymaps/default/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,7 +26,3 @@
// Lets you roll mod-tap keys
#define IGNORE_MOD_TAP_INTERRUPT
-
-// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
-// #define SPLIT_USB_DETECT
-// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/config.h b/keyboards/splitkb/kyria/keymaps/drashna/config.h
index 8239e28cdc..89a162a9b1 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/config.h
+++ b/keyboards/splitkb/kyria/keymaps/drashna/config.h
@@ -19,17 +19,21 @@
#define EE_HANDS
#ifdef OLED_ENABLE
-# define OLED_DISPLAY_128X64
+# ifdef OLED_DRIVER_SH1107
+# undef OLED_DISPLAY_128X64
+# define OLED_DISPLAY_128X128
+# endif
#endif
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_SLEEP
-# define RGBLIGHT_LIMIT_VAL 200
+# undef RGBLIGHT_LIMIT_VAL
+# define RGBLIGHT_LIMIT_VAL 120
# define RGBLIGHT_HUE_STEP 8
# define RGBLIGHT_SAT_STEP 8
# define RGBLIGHT_VAL_STEP 8
# define RGBLIGHT_SPLIT
-// # define RGBLIGHT_LAYERS
+# define RGBLIGHT_LAYERS
#endif
#define KEYLOGGER_LENGTH 10
@@ -41,3 +45,6 @@
#define BOOTMAGIC_LITE_COLUMN 7
#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 7
+
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
index 6c7ac34d51..41ef4b2705 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
UC_MOD, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS,
- _______, _______, KEYLOCK, KC_NUKE, _______, _______, _______, _______, _______, _______
+ REBOOT, _______, KEYLOCK, KC_NUKE, _______, _______, _______, _______, _______, AUTO_CTN
),
// [_LAYERINDEX] = LAYOUT_wrapper(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -121,7 +121,32 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
// clang-format on
#ifdef OLED_ENABLE
-oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_180; }
+oled_rotation_t oled_init_keymap(oled_rotation_t rotation) {
+#ifdef OLED_DRIVER_SH1107
+ return OLED_ROTATION_0;
+#else
+ return OLED_ROTATION_180;
+#endif
+}
+
+void oled_render_large_display(void) {
+ if (is_keyboard_left()) {
+ render_wpm_graph(54, 64);
+ } else {
+ static const char PROGMEM kyria_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+ // clang-format on
+ oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
+ }
+}
#endif
#ifdef ENCODER_ENABLE
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
index 2f4f4d091f..ddba0780a2 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -1,20 +1,29 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
+MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = yes # Console for debug
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # USB Nkey Rollover
-UNICODE_ENABLE = yes # Unicode
OLED_ENABLE = yes
-OLED_DRIVER = SSD1306 # Enables the use of OLED displays
ENCODER_ENABLE = yes # Enables the use of one or more encoders
-
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-RGBLIGHT_STARTUP_ANIMATION = yes
-RGB_MATRIX_ENABLE = yes
-TAP_DANCE_ENABLE = yes
KEY_LOCK_ENABLE = no
WPM_ENABLE = yes
-SWAP_HANDS_ENABLE = yes
-LTO_ENABLE = no
-CTPC = yes
+
+ifeq ($(strip $(KEYBOARD)), splitkb/kyria/rev1/proton_c)
+ RGB_MATRIX_ENABLE = yes
+ CONSOLE_ENABLE = yes # Console for debug
+ MOUSEKEY_ENABLE = yes # Mouse keys
+ TAP_DANCE_ENABLE = yes
+ SWAP_HANDS_ENABLE = yes
+ LTO_ENABLE = no
+ CTPC = yes
+ AUTOCORRECTION_ENABLE = yes
+ CAPS_WORD_ENABLE = yes
+ DEBUG_MATRIX_SCAN_RATE_ENABLE = api
+else
+ LTO_ENABLE = yes
+ BOOTLOADER = qmk-hid
+ BOOTLOADER_SIZE = 512
+ CUSTOM_UNICODE_ENABLE = no
+endif
diff --git a/keyboards/splitkb/kyria/keymaps/lw/config.h b/keyboards/splitkb/kyria/keymaps/lw/config.h
new file mode 100644
index 0000000000..038a8ff3dd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/lw/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2022 Lucas Waelti (@LucasWaelti)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// Lets you roll mod-tap keys
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
+
+#define UNICODE_SELECTED_MODES UC_LNX, UC_WINC // support for Linux and Windows unicode \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/lw/keymap.c b/keyboards/splitkb/kyria/keymaps/lw/keymap.c
new file mode 100644
index 0000000000..411295e86c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/lw/keymap.c
@@ -0,0 +1,251 @@
+/* Copyright 2022 Lucas Waelti (@LucasWaelti)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#include <keymap_us_international.h>
+// US_ACUT KC_QUOT // ´ (dead)
+// US_DGRV KC_GRV // ` (dead)
+// US_DCIR S(US_6) // ^ (dead)
+// US_DIAE S(US_ACUT) // ¨ (dead)
+
+enum layers {
+ _QWERTZ = 0, // base text layer
+ _SYM, // symbol layer
+ _NAV, // navigation layer + accents
+};
+
+enum unicode_names {
+ APOST,
+ QUOTE,
+ CIRCUM,
+ GRAVE,
+ ACUTE,
+ UMLAUT,
+ CEDIL_MAJ,
+ CEDIL,
+ SECTION,
+ DEGREE,
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [APOST] = 0x0027, // '
+ [QUOTE] = 0x0022, // "
+ [ACUTE] = 0x00B4, // ´
+ [GRAVE] = 0x0060, // `
+ [CIRCUM] = 0x005E, // ^
+ [UMLAUT] = 0x00A8, // ¨
+ [CEDIL_MAJ] = 0x00C7, // Ç
+ [CEDIL] = 0x00E7, // ç
+ [SECTION] = 0x00A7, // §
+ [DEGREE] = 0x00B0, // °
+};
+// usage: X(ACUTE), XP(CEDIL,CEDIL_MAJ)
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * 0. Base Layer: QWERTZ
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Esc | Q | W | E | R | T | | Z | U | I | O | P | Del |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | S | D | F | G | | H | J | K | L | ' " | BkSpace|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Y | X | C | V | B | \ | | ` ~ | | ( | ) | N | M | , < | . > | ; : | CpLock |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |LCtrl | LGUI | LAlt | Space| MO(1)| | MO(2)| Enter| - _ | ! | / ? |
+ * | | | | | | | |/shift| | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_QWERTZ] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_DEL,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XP(APOST,QUOTE), KC_BSPC, // XP(APOST,QUOTE) or KC_QUOT
+ KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_BSLS, KC_GRV, KC_LPRN, KC_RPRN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_CAPS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_SFTENT, KC_MINS, KC_EXLM, KC_SLSH
+ ),
+
+// /*
+// * 1. Sym Layer: Numbers and symbols (DEPRECATED)
+// *
+// * ,-------------------------------------------. ,-------------------------------------------.
+// * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+// * | . | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
+// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+// * | LAlt | ? | ! | @ | # | < | [ | { | | } | ] | > | ^ | / | * | - | + |
+// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+// * | $ | % | & | | MO(1)| | MO(2)| RAlt | ~ | _ | | |
+// * | | | | | | | | | | | |
+// * `----------------------------------' `----------------------------------'
+// */
+// [_SYM] = LAYOUT(
+// KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+// KC_DOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PEQL,
+// KC_LALT, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_LT, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_GT, KC_CIRC, KC_PSLS, KC_ASTR, KC_PMNS, KC_PLUS,
+// KC_DLR, KC_PERC, KC_AMPR, _______, MO(1), MO(2), KC_RALT, KC_TILD, KC_UNDS, KC_PIPE
+// ),
+
+/*
+ * 1. Sym Layer: Numbers and symbols
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | F1 | F2 | F3 | F4 | LAlt | PASTE| | , | 7 | 8 | 9 | * | / |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | F5 | F6 | F7 | F8 | @ | COPY | | . | 6 | 7 | 8 | = | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | F9 | F10 | F11 | F12 | & | CUT | UNDO | FIND | | [ | ] | 0 | 1 | 2 | 3 | + | - |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | $ | # | % | | MO(1)| | MO(2)| | \ | | { | } |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_SYM] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_LALT,LCTL(KC_V), KC_COMM, KC_7, KC_8, KC_9, KC_ASTR, KC_PSLS,
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_AT, LCTL(KC_C), KC_DOT, KC_4, KC_5, KC_6, KC_PEQL, _______,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_AMPR,LCTL(KC_X),LCTL(KC_Z), LCTL(KC_F), KC_LBRC, KC_RBRC, KC_0, KC_1, KC_2, KC_3, KC_PLUS, KC_PMNS,
+ KC_DLR, KC_HASH, KC_PERC, _______, MO(1), MO(2), _______, KC_BSLS, KC_LCBR, KC_RCBR
+ ),
+
+/*
+ * 2. Nav Layer: Media, navigation, accents
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | Brt+ | Next | Fwd | Play | Vol+ | | Home | PgUp | Up | PgDn | | Del |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | Brt- | Prev | Bckw | Stop | Vol- | | End | Left | Down | Right|ScrLck| BkSpace|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | ´ | ` | ^ | ¨ | Mute | |UC_MOD| |RShift| Menu | PrtSc| ç/Ç | § ° | | SAVE | Insert |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |LCtrl | LGUI | LAlt | | MO(1)| | MO(2)| UNDO | CUT | COPY | PASTE|
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_NAV] = LAYOUT(
+ _______, KC_BRIU, KC_MNXT, KC_MFFD, KC_MPLY, KC_VOLU, KC_HOME, KC_PGUP, KC_UP, KC_PGDN, _______, KC_DEL,
+ _______, KC_BRID, KC_MPRV, KC_MRWD, KC_MSTP, KC_VOLD, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_SLCK, KC_BSPC,
+ KC_LSFT, US_ACUT, US_DGRV, US_DCIR, US_DIAE, KC_MUTE, _______, UC_MOD, KC_RSFT, KC_APP, KC_PSCR, XP(CEDIL,CEDIL_MAJ), XP(SECTION,DEGREE), _______, LCTL(KC_S), KC_INS,
+ KC_LCTL, KC_LGUI, KC_LALT, _______, MO(1), MO(2), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
+ ),
+
+// /*
+// * Layer template
+// *
+// * ,-------------------------------------------. ,-------------------------------------------.
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | | | | | |
+// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * `----------------------------------' `----------------------------------'
+// */
+// [_LAYERINDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// ),
+};
+
+/* The default OLED and rotary encoder code can be found at the bottom of qmk_firmware/keyboards/splitkb/kyria/rev1/rev1.c
+ * These default settings can be overriden by your own settings in your keymap.c
+ * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications.
+ * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own.
+ */
+
+/* DELETE THIS LINE TO UNCOMMENT (1/2)
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // QMK Logo and version information
+ // clang-format off
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
+ // clang-format on
+
+ oled_write_P(qmk_logo, false);
+ oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
+
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state|default_layer_state)) {
+ case _QWERTZ:
+ oled_write_P(PSTR("QWERTZ\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYM:
+ oled_write_P(PSTR("Sym\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined\n"), false);
+ }
+
+ // Write host Keyboard LED Status to OLEDs
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+ } else {
+ // clang-format off
+ static const char PROGMEM kyria_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+ // clang-format on
+ oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
+ }
+ return false;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (index == 0) {
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ // Page up/Page down
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
+#endif
+// DELETE THIS LINE TO UNCOMMENT (2/2) */
diff --git a/keyboards/splitkb/kyria/keymaps/lw/readme.md b/keyboards/splitkb/kyria/keymaps/lw/readme.md
new file mode 100644
index 0000000000..67be1950ab
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/lw/readme.md
@@ -0,0 +1,104 @@
+# Kyria's lw Keymap
+
+Custom keymap for the [kyria keyboard](https://blog.splitkb.com/blog/introducing-the-kyria). It is intended to be used with an *English (US, intl. with dead keys)* keyboard layout (includes the `keymap_us_international.h` header).
+
+This layout is mainly designed for every day writing in either English, French or German and programming.
+
+The layout implements all accents and symbols (leveraging dead keys) found on a **swiss** keyboard. It uses Unicode for special characters. It makes use of the [Linux built-in IBus Unicode input](https://docs.qmk.fm/#/feature_unicode?id=input-modes) and relies on [WinCompose](https://github.com/samhocevar/wincompose) for Windows.
+
+## Build this keymap
+```bash
+qmk compile -kb splitkb/kyria/rev1 -km lw
+```
+
+## Flash this keymap
+
+> **Note**: this was tested for an Elite-C microcontroller.
+
+First, check that the bootloader is visible. For instance:
+```bash
+$ lsusb
+...
+Bus 001 Device 034: ID 03eb:2ff4 Atmel Corp. atmega32u4 DFU bootloader
+...
+```
+If the bootloader is not visible, press the reset button of the microcontroller. The bootloader should become visible when running the `lsusb` command again.
+
+The microcontroller can now be flashed:
+```bash
+qmk flash -kb splitkb/kyria/rev1 -km lw
+```
+> **Note**: if there is any issue, run `qmk doctor` to see whether the qmk configuration is valid.
+
+## Implemented keymaps
+The default keymap contains 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys.
+Hardware features of the Kyria such as OLEDs, rotary encoders and underglow are also supported.
+
+The five different layers are the following:
+1. Base layer (QWERTZ)
+2. Symbols/Numbers layer
+3. Navigation layer
+
+### Base layer
+This layer is activated by default.
+
+```
+/*
+ * 0. Base Layer: QWERTZ
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Esc | Q | W | E | R | T | | Z | U | I | O | P | Del |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | S | D | F | G | | H | J | K | L | ' " | BkSpace|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Y | X | C | V | B | \ | | ` ~ | | ( | ) | N | M | , < | . > | ; : | CpLock |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |LCtrl | LGUI | LAlt | Space| MO(1)| | MO(2)| Enter| - _ | ! | / ? |
+ * | | | | | | | |/shift| | | |
+ * `----------------------------------' `----------------------------------'
+ */
+```
+
+Hold down the `Enter` key to make it a shift. This compensates for the poor placement of the dedicated `LShift` key.
+
+### Symbol layer
+This layer is activated when holding `MO(1)`.
+
+```
+/*
+ * 1. Sym Layer: Numbers and symbols
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | F1 | F2 | F3 | F4 | LAlt | PASTE| | , | 7 | 8 | 9 | * | / |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | F5 | F6 | F7 | F8 | @ | COPY | | . | 6 | 7 | 8 | = | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | F9 | F10 | F11 | F12 | & | CUT | UNDO | FIND | | [ | ] | 0 | 1 | 2 | 3 | + | - |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | $ | # | % | | MO(1)| | MO(2)| | \ | | { | } |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+```
+
+### Navigation layer
+This layer is activated when holding `MO(2)`.
+
+```
+/*
+ * 2. Nav Layer: Media, navigation, accents
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | Brt+ | Next | Fwd | Play | Vol+ | | Home | PgUp | Up | PgDn | | Del |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | Brt- | Prev | Bckw | Stop | Vol- | | End | Left | Down | Right|ScrLck| BkSpace|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | ´ | ` | ^ | ¨ | Mute | |UC_MOD| |RShift| Menu | PrtSc| ç/Ç | § ° | | SAVE | Insert |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |LCtrl | LGUI | LAlt | | MO(1)| | MO(2)| UNDO | CUT | COPY | PASTE|
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+```
+
+The key `UC_MOD` allows to switch between Linux and Windows unicode. Note however that [WinCompose](https://github.com/samhocevar/wincompose) must be installed on Windows (simply download and install the latest release and it will run). \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/lw/rules.mk b/keyboards/splitkb/kyria/keymaps/lw/rules.mk
new file mode 100644
index 0000000000..41156dd41c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/lw/rules.mk
@@ -0,0 +1,6 @@
+OLED_ENABLE = no
+OLED_DRIVER = SSD1306 # Enables the use of OLED displays
+ENCODER_ENABLE = no # Enables the use of one or more encoders
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+
+UNICODEMAP_ENABLE = yes # Enable unicode \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/uqs/config.h b/keyboards/splitkb/kyria/keymaps/uqs/config.h
new file mode 100644
index 0000000000..ae34b0e04d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/uqs/config.h
@@ -0,0 +1,13 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifdef RGBLIGHT_ENABLE
+ //#define RGBLIGHT_ANIMATIONS
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 150
+#endif
+
+#define EE_HANDS
diff --git a/keyboards/splitkb/kyria/keymaps/uqs/keymap.c b/keyboards/splitkb/kyria/keymaps/uqs/keymap.c
new file mode 100644
index 0000000000..53b6ee77b1
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/uqs/keymap.c
@@ -0,0 +1,158 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4 cc=5,15,25,35,45,55,65:
+
+#include "uqs.h"
+
+/*
+ * My custom layout macro that allows for easy diff(1) operations between
+ * various keyboards. It probably doesn't make sense to you.
+ */
+#define LAYOUT_uqs( \
+ L00, L01, L02, L03, L04, L05, \
+ L12, L13, L14, L15, L16, L17, \
+ L24, L25, L26, L27, L28, L29, \
+ L40, L41, \
+ L42, L43, L44, \
+ L30, L31, \
+ R06, R07, R08, R09, R10, R11, \
+ R18, R19, R20, R21, R22, R23, \
+ R34, R35, R36, R37, R38, R39, \
+ R48, R49, \
+ R45, R46, R47, \
+ R32, R33 \
+) \
+LAYOUT_stack( \
+ L00, L01, L02, L03, L04, L05, \
+ L12, L13, L14, L15, L16, L17, \
+ L24, L25, L26, L27, L28, L29, L30, L31, \
+ L40, L41, L42, L43, L44, \
+ \
+ R06, R07, R08, R09, R10, R11, \
+ R18, R19, R20, R21, R22, R23, \
+ R32, R33, R34, R35, R36, R37, R38, R39, \
+ R45, R46, R47, R48, R49 \
+)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [L_QWER] = LAYOUT_uqs(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_LBRC, KC_RBRC,
+ /*thumb*/ LT_EXTD_ESC, KC_SPC, LT_MOUSE_ALT_SHIFT_INS,
+ /*aux*/ OSM_GUI, KC_LALT,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
+ KC_MINS, KC_EQL,
+ /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
+ /*aux*/ KC_RALT, KC_APP
+ ),
+
+ [L_WASD] = LAYOUT_uqs(
+ KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R,
+ KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F,
+ KC_B, KC_GRV, KC_Z, KC_X, KC_C, KC_V,
+ KC_LBRC, KC_RBRC,
+ /*thumb*/ KC_LCTL, KC_SPC, KC_R,
+ /*aux*/ OSM_GUI, KC_LALT,
+ KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
+ KC_MINS, KC_EQL,
+ /*thumb*/ DF(L_COLM), KC_ENT, KC_BSPC,
+ /*aux*/ KC_RALT, KC_APP
+ ),
+
+ [L_COLM] = LAYOUT_uqs(
+ KC_BTN2, KC_Q, KC_W, KC_F, KC_P, KC_B,
+ KC_BTN1, KC_G_A, KC_A_R, KC_S_S, KC_C_T, KC_G,
+ KC_BTN3, KC_Z, KC_X, KC_C, KC_D, KC_V,
+ MS_WHUP, MS_WHDN,
+ /*thumb*/ LT_EXTD_ESC, SFT_T(KC_SPC), LT(L_MOUSE, KC_TAB),
+ /*aux*/ OSM_GUI, KC_LALT,
+ KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_NO,
+ KC_M, KC_C_N, KC_S_E, KC_A_I, KC_G_O, KC_NO,
+ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
+ KC_NO, KC_NO,
+ /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
+ /*aux*/ KC_RALT, KC_APP
+ ),
+
+ // Updated with inspiration from https://forum.colemak.com/topic/2014-extend-extra-extreme/
+ // I like the AltGr trick from https://stevep99.github.io/seniply/ and should probably incorporate some stuff from it.
+ [L_EXTD] = LAYOUT_uqs(
+ _______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, KC_LEAD,
+ _______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT,
+ _______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD,
+ _______, _______,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______,
+ /* ^^^^ can't be used */
+ KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
+ WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO, // KC_PSTE works in XTerm to emulate middle-click
+ _______, _______,
+ /*thumb*/ _______, _______, KC_BSPC,
+ /*aux*/ _______, _______
+ /* ^^^^ use these */
+ ),
+
+ // TODO: maybe swap # with ;, that way I can roll :w or :wq which I need
+ // often ... probably better to add a combo?
+ [L_NUM] = LAYOUT_uqs(
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
+ _______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC,
+ _______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC,
+ KC_GRV, KC_TILDE,
+ /*thumb*/ KC_ESC, KC_SPC, KC_0,
+ /*aux*/ _______,_______,
+ /* ^^^^ use these */
+
+ KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______,
+ KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______,
+ KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied
+ KC_0, KC_KP_DOT,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_FUNC] = LAYOUT_uqs(
+ _______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, DF(L_WASD),
+ _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(L_QWER),
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, DF(L_COLM),
+ KC_NO, KC_NO,
+ /*thumb*/ KC_NO, KC_NO, KC_NO,
+ /*aux*/ _______, _______,
+ /* ^^^^ use these */
+
+ KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
+ KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
+ KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO,
+ KC_NO, KC_NO,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______
+ /* ^^^^ can't be used */
+ ),
+
+ [L_MOUSE] = LAYOUT_uqs(
+ _______, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU,
+ _______, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD,
+ _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
+ KC_NO, KC_NO,
+ /*thumb*/ _______, _______, _______,
+ /*aux*/ _______, _______,
+ /* ^^^^ can't be used */
+
+ _______, _______, KC_MS_UP, MS_WHUP, _______, _______,
+ MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______,
+ _______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______,
+ KC_NO, KC_NO,
+ /*thumb*/ KC_NO, KC_BTN1, KC_BTN2,
+ /*aux*/ _______, _______
+ /* use these ^^^^ */
+ ),
+};
diff --git a/keyboards/splitkb/kyria/keymaps/uqs/rules.mk b/keyboards/splitkb/kyria/keymaps/uqs/rules.mk
new file mode 100644
index 0000000000..517f469b6d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/uqs/rules.mk
@@ -0,0 +1 @@
+OLED_ENABLE = no
diff --git a/keyboards/splitkb/kyria/kyria.c b/keyboards/splitkb/kyria/kyria.c
index 21ed5e84c8..9bc3b2068a 100644
--- a/keyboards/splitkb/kyria/kyria.c
+++ b/keyboards/splitkb/kyria/kyria.c
@@ -14,3 +14,105 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "kyria.h"
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ if (is_keyboard_master()) {
+ // QMK Logo and version information
+ // clang-format off
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
+ // clang-format on
+
+ oled_write_P(qmk_logo, false);
+ oled_write_P(PSTR("Kyria "), false);
+#if defined(KEYBOARD_splitkb_kyria_rev1)
+ oled_write_P(PSTR("rev1\n\n"), false);
+#elif defined(KEYBOARD_splitkb_kyria_rev2)
+ oled_write_P(PSTR("rev2\n\n"), false);
+#endif
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state | default_layer_state)) {
+ case 0:
+ oled_write_P(PSTR("QWERTY\n"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Dvorak\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Colemak-DH\n"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case 4:
+ oled_write_P(PSTR("Sym\n"), false);
+ break;
+ case 5:
+ oled_write_P(PSTR("Function\n"), false);
+ break;
+ case 6:
+ oled_write_P(PSTR("Adjust\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined\n"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_usb_state = host_keyboard_led_state();
+ oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+ } else {
+ // clang-format off
+ static const char PROGMEM kyria_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+ // clang-format on
+ oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
+ }
+ return false;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+
+ if (index == 0) {
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 1) {
+ // Page up/Page down
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/splitkb/kyria/kyria.h b/keyboards/splitkb/kyria/kyria.h
index 2b1a298152..984a83897f 100644
--- a/keyboards/splitkb/kyria/kyria.h
+++ b/keyboards/splitkb/kyria/kyria.h
@@ -1,4 +1,4 @@
-/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,6 +20,9 @@
#if defined(KEYBOARD_splitkb_kyria_rev1)
# include "rev1.h"
#endif
+#if defined(KEYBOARD_splitkb_kyria_rev2)
+# include "rev2.h"
+#endif
/* This a shortcut to help you visually see your layout.
*
diff --git a/keyboards/splitkb/kyria/readme.md b/keyboards/splitkb/kyria/readme.md
index 7ecf3946f7..32e6ae5f8e 100644
--- a/keyboards/splitkb/kyria/readme.md
+++ b/keyboards/splitkb/kyria/readme.md
@@ -10,12 +10,16 @@ Hardware Availability: [splitkb.com](https://splitkb.com) and partners.
Make example for this keyboard (after setting up your build environment):
- make splitkb/kyria/rev1:default
- make splitkb/kyria/rev1/proton_c:default
+ make splitkb/kyria/rev2:default
+ make splitkb/kyria/rev2/proton_c:default
Example of flashing this keyboard:
- make splitkb/kyria/rev1:default:flash
+ make splitkb/kyria/rev2:default:flash
+
+Replace "rev2" with "rev1" if you have a Kyria of revision 1.4 or below.
+Not sure what revision yours is? It is printed on the outer lower edge of the PCB!
+As a rule of thumb, all Kyrias sold after January 1st 2022 are revision 2.x.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
index e19e8dfa9c..2fc34070f4 100644
--- a/keyboards/splitkb/kyria/rev1/config.h
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2019 Thomas Baart <thomas@splitkb.com>
+Copyright 2022 Thomas Baart <thomas@splitkb.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,8 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID 0x8D1D
#define PRODUCT_ID 0x9D9D
#define DEVICE_VER 0x0001
-#define MANUFACTURER splitKB
-#define PRODUCT Kyria
+#define MANUFACTURER splitkb
+#define PRODUCT Kyria rev1
/* key matrix size */
/* Rows are doubled up */
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
index 9e0942398f..1a5f9a7cb3 100644
--- a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
+++ b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
@@ -1,3 +1,10 @@
+# MCU name
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
WS2812_DRIVER = pwm
SERIAL_DRIVER = usart
AUDIO_ENABLE = no
diff --git a/keyboards/splitkb/kyria/rev1/rev1.c b/keyboards/splitkb/kyria/rev1/rev1.c
index b2641fb40e..8398366e71 100644
--- a/keyboards/splitkb/kyria/rev1/rev1.c
+++ b/keyboards/splitkb/kyria/rev1/rev1.c
@@ -1,4 +1,4 @@
-/* Copyright 2019 Thomas Baart <thomas@splitkb.com>
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,7 +31,13 @@ __attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATR
#endif
#ifdef RGB_MATRIX_ENABLE
-/* Map physical under glow LEDs for RGB matrix support */
+/* Map physical under glow LEDs for RGB matrix support
+ *
+ * 09, 05, xx, xx, 04, xx, xx, 14, xx, xx, 15, 19,
+ * xx, xx, xx, xx, xx, 03, 13, xx, xx, xx, xx, xx,
+ * 08, 06, 07, xx, xx, xx, 00, xx, xx, 10, xx, xx, xx, 17, 16, 18,
+ * xx, 02, 01, xx, xx, xx, xx, 11, 12, xx
+ */
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ NO_LED, NO_LED, NO_LED, 4, NO_LED, NO_LED, 5, 9 },
@@ -54,101 +60,3 @@ led_config_t g_led_config = { {
LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
} };
#endif
-
-#ifdef OLED_ENABLE
-oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- return OLED_ROTATION_180;
-}
-
-bool oled_task_kb(void) {
- if (!oled_task_user()) {
- return false;
- }
- if (is_keyboard_master()) {
- // QMK Logo and version information
- // clang-format off
- static const char PROGMEM qmk_logo[] = {
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
- // clang-format on
-
- oled_write_P(qmk_logo, false);
- oled_write_P(PSTR("Kyria rev1.0\n\n"), false);
-
- // Host Keyboard Layer Status
- oled_write_P(PSTR("Layer: "), false);
- switch (get_highest_layer(layer_state | default_layer_state)) {
- case 0:
- oled_write_P(PSTR("QWERTY\n"), false);
- break;
- case 1:
- oled_write_P(PSTR("Dvorak\n"), false);
- break;
- case 2:
- oled_write_P(PSTR("Colemak-DH\n"), false);
- break;
- case 3:
- oled_write_P(PSTR("Nav\n"), false);
- break;
- case 4:
- oled_write_P(PSTR("Sym\n"), false);
- break;
- case 5:
- oled_write_P(PSTR("Function\n"), false);
- break;
- case 6:
- oled_write_P(PSTR("Adjust\n"), false);
- break;
- default:
- oled_write_P(PSTR("Undefined\n"), false);
- }
-
- // Host Keyboard LED Status
- led_t led_usb_state = host_keyboard_led_state();
- oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
- oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
- oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
- } else {
- // clang-format off
- static const char PROGMEM kyria_logo[] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
- 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
- // clang-format on
- oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
- }
- return false;
-}
-#endif
-
-#ifdef ENCODER_ENABLE
-bool encoder_update_kb(uint8_t index, bool clockwise) {
- if (!encoder_update_user(index, clockwise)) {
- return false;
- }
-
- if (index == 0) {
- // Volume control
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) {
- // Page up/Page down
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
- }
- }
- return true;
-}
-#endif
diff --git a/keyboards/splitkb/kyria/rev2/config.h b/keyboards/splitkb/kyria/rev2/config.h
new file mode 100644
index 0000000000..8ff3813964
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/config.h
@@ -0,0 +1,107 @@
+/*
+Copyright 2022 Thomas Baart <thomas@splitkb.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8D1D
+#define PRODUCT_ID 0x9D9D
+#define DEVICE_VER 0x0002
+#define MANUFACTURER splitkb
+#define PRODUCT Kyria rev2
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+// wiring
+#define MATRIX_ROW_PINS \
+ { F6, F7, B1, B3 }
+#define MATRIX_COL_PINS \
+ { B2, B6, B5, B4, E6, D7, C6, D4 }
+#define MATRIX_ROW_PINS_RIGHT \
+ { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS_RIGHT \
+ { B4, B5, B6, B2, B3, B1, F7, F6 }
+#define UNUSED_PINS
+
+#define ENCODERS_PAD_A \
+ { F4 }
+#define ENCODERS_PAD_B \
+ { F5 }
+#define ENCODERS_PAD_A_RIGHT \
+ { F5 }
+#define ENCODERS_PAD_B_RIGHT \
+ { F4 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// Side detection
+// col 4 row 3 on right-hand-side
+#define SPLIT_HAND_MATRIX_GRID E6, B3 // row first because the board is col2row
+#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
+#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `rev2.c`
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+
+#if defined(CONVERT_TO_PROTON_C)
+# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+# define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
+# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
+# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
+# define SERIAL_USART_TX_PIN D3
+# define SERIAL_USART_RX_PIN D2
+
+# define RGB_DI_PIN PAL_LINE(GPIOA, 3)
+# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
+# define WS2812_PWM_CHANNEL 4 // default: 2
+# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
+# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
+#else
+# define RGB_DI_PIN D3
+# define SOFT_SERIAL_PIN D2
+#endif
+
+#define RGBLED_SPLIT \
+ { 10, 10 }
+#define RGBLED_NUM 20
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X64
+# define SPLIT_OLED_ENABLE
+#endif
+
+/* RGB matrix support */
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL RGBLED_NUM // Number of LEDs
+# define RGB_MATRIX_SPLIT { 10, 10 }
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+#endif
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/chconf.h b/keyboards/splitkb/kyria/rev2/proton_c/chconf.h
new file mode 100644
index 0000000000..7ca1d3d243
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/chconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next "chconf.h"
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/halconf.h b/keyboards/splitkb/kyria/rev2/proton_c/halconf.h
new file mode 100644
index 0000000000..99f2e11b9a
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/mcuconf.h b/keyboards/splitkb/kyria/rev2/proton_c/mcuconf.h
new file mode 100644
index 0000000000..58348af390
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/mcuconf.h
@@ -0,0 +1,29 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM2
+#define STM32_PWM_USE_TIM2 TRUE
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 FALSE
+
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 3
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/proton_c.c b/keyboards/splitkb/kyria/rev2/proton_c/proton_c.c
new file mode 100644
index 0000000000..9c74b45f77
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/proton_c.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "proton_c.h"
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/proton_c.h b/keyboards/splitkb/kyria/rev2/proton_c/proton_c.h
new file mode 100644
index 0000000000..143b9e39dd
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/proton_c.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "rev2.h"
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/rules.mk b/keyboards/splitkb/kyria/rev2/proton_c/rules.mk
new file mode 100644
index 0000000000..1a5f9a7cb3
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/proton_c/rules.mk
@@ -0,0 +1,12 @@
+# MCU name
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+AUDIO_ENABLE = no
+LTO_ENABLE = no
+CONVERT_TO_PROTON_C = yes
diff --git a/keyboards/splitkb/kyria/rev2/rev2.c b/keyboards/splitkb/kyria/rev2/rev2.c
new file mode 100644
index 0000000000..0a181cdf12
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/rev2.c
@@ -0,0 +1,76 @@
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "rev2.h"
+
+// Mask out handedness diode to prevent it
+// from keeping the keyboard awake
+// - just mirroring `KC_NO` in the `LAYOUT`
+// macro to keep it simple
+const matrix_row_t matrix_mask[] = {
+ 0b11111100,
+ 0b11111100,
+ 0b11111111,
+ 0b00101111,
+ 0b11111100,
+ 0b11111100,
+ 0b11111111,
+ 0b00101111,
+};
+
+#ifdef SWAP_HANDS_ENABLE
+// clang-format off
+__attribute__ ((weak)) const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}, {7, 4}},
+ {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}, {7, 5}},
+ {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}, {7, 6}},
+ {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}, {7, 7}},
+ {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}, {7, 0}},
+ {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}, {7, 1}},
+ {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7, 2}},
+ {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}, {7, 3}}
+};
+// clang-format on
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+/* Map physical under glow LEDs for RGB matrix support
+ * 09, 02, xx, xx, 01, xx, xx, 11, xx, xx, 12, 19,
+ * xx, xx, xx, xx, xx, 00, 10, xx, xx, xx, xx, xx,
+ * 08, 03, 04, xx, xx, xx, 07, xx, xx, 17, xx, xx, xx, 14, 13, 18,
+ * xx, 05, 06, xx, xx, xx, xx, 16, 15, xx
+ */
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { NO_LED, NO_LED, NO_LED, 1, NO_LED, NO_LED, 2, 9 },
+ { NO_LED, NO_LED, 0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 7, NO_LED, NO_LED, NO_LED, 4, 3, 8 },
+ { NO_LED, NO_LED, 6, 5, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, 11, NO_LED, NO_LED, 12, 19 },
+ { NO_LED, NO_LED, 10, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 17, NO_LED, NO_LED, NO_LED, 14, 13, 18 },
+ { NO_LED, NO_LED, 16, 15, NO_LED, NO_LED, NO_LED, NO_LED },
+}, {
+ // LED Index to Physical Position
+ {77,24}, {63,8}, {21,8}, {21,40}, {35,40}, {63,56}, {77,56}, {91,40}, {7,40}, {7,8},
+ {147,24}, {161,8}, {203,8}, {203,40}, {189,40}, {161,56}, {147,56}, {133,40}, {217,40}, {217,8}
+}, {
+ // LED Index to Flag
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
+} };
+#endif
diff --git a/keyboards/splitkb/kyria/rev2/rev2.h b/keyboards/splitkb/kyria/rev2/rev2.h
new file mode 100644
index 0000000000..ed4169b0ed
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/rev2.h
@@ -0,0 +1,70 @@
+/* Copyright 2022 Thomas Baart <thomas@splitkb.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "kyria.h"
+#ifdef KEYBOARD_splitkb_kyria_rev2_proton_c
+# include "proton_c.h"
+#endif
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \
+ L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \
+ L24, L25, L26, L27, L28, L29, L30, L31, R32, R33, R34, R35, R36, R37, R38, R39, \
+ L40, L41, L42, L43, L44, R45, R46, R47, R48, R49 \
+) \
+{ \
+ { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \
+ { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \
+ { L31, L30, L29, L28, L27, L26, L25, L24 }, \
+ { L44, L43, L42, L41, KC_NO, L40, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
+ { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
+ { R32, R33, R34, R35, R36, R37, R38, R39 }, \
+ { R45, R46, R47, R48, KC_NO, R49, KC_NO, KC_NO }, \
+}
+
+#define LAYOUT_stack( \
+ L00, L01, L02, L03, L04, L05, \
+ L12, L13, L14, L15, L16, L17, \
+ L24, L25, L26, L27, L28, L29, L30, L31, \
+ L40, L41, L42, L43, L44, \
+ \
+ R06, R07, R08, R09, R10, R11, \
+ R18, R19, R20, R21, R22, R23, \
+ R32, R33, R34, R35, R36, R37, R38, R39, \
+ R45, R46, R47, R48, R49 \
+) \
+{ \
+ { KC_NO, KC_NO, L05, L04, L03, L02, L01, L00 }, \
+ { KC_NO, KC_NO, L17, L16, L15, L14, L13, L12 }, \
+ { L31, L30, L29, L28, L27, L26, L25, L24 }, \
+ { L44, L43, L42, L41, KC_NO, L40, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, R06, R07, R08, R09, R10, R11 }, \
+ { KC_NO, KC_NO, R18, R19, R20, R21, R22, R23 }, \
+ { R32, R33, R34, R35, R36, R37, R38, R39 }, \
+ { R45, R46, R47, R48, KC_NO, R49, KC_NO, KC_NO }, \
+}
+
+#define LAYOUT_split_3x6_5 LAYOUT
diff --git a/keyboards/splitkb/kyria/rev2/rules.mk b/keyboards/splitkb/kyria/rev2/rules.mk
new file mode 100644
index 0000000000..355c12024f
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/rules.mk
@@ -0,0 +1,8 @@
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 # Enables the use of OLED displays
+ENCODER_ENABLE = yes # Enables the use of one or more encoders
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+RGB_MATRIX_SUPPORTED = yes
diff --git a/keyboards/splitkb/kyria/rules.mk b/keyboards/splitkb/kyria/rules.mk
index 42016a3ca8..7952bfe302 100644
--- a/keyboards/splitkb/kyria/rules.mk
+++ b/keyboards/splitkb/kyria/rules.mk
@@ -12,13 +12,10 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes # Split common
LTO_ENABLE = yes
-DEFAULT_FOLDER = splitkb/kyria/rev1
+DEFAULT_FOLDER = splitkb/kyria/rev2
diff --git a/keyboards/splitkb/zima/keymaps/drashna/config.h b/keyboards/splitkb/zima/keymaps/drashna/config.h
index 8d0908182e..b4457ec4b8 100644
--- a/keyboards/splitkb/zima/keymaps/drashna/config.h
+++ b/keyboards/splitkb/zima/keymaps/drashna/config.h
@@ -17,7 +17,7 @@
#pragma once
-#define OLED_FONT_H "users/drashna/drashna_font.h"
+#define OLED_FONT_H "users/drashna/oled/drashna_font.h"
#define OLED_UPDATE_INTERVAL 15
#define OLED_DISABLE_TIMEOUT
#define OLED_FONT_END 255
diff --git a/keyboards/splitkb/zima/rules.mk b/keyboards/splitkb/zima/rules.mk
index 070d4fec9f..4de2f506eb 100644
--- a/keyboards/splitkb/zima/rules.mk
+++ b/keyboards/splitkb/zima/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/splitreus62/keymaps/scheiklp/config.h b/keyboards/splitreus62/keymaps/scheiklp/config.h
new file mode 100644
index 0000000000..04af418d8f
--- /dev/null
+++ b/keyboards/splitreus62/keymaps/scheiklp/config.h
@@ -0,0 +1,84 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xBEEF
+#define PRODUCT_ID 0xFED0
+#define DEVICE_VER 0x0001
+#define MANUFACTURER NaCly
+#define PRODUCT Splitreus62
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D3, D2, D1, D4, C6, D7 }
+#define MATRIX_COL_PINS { E6, B4, B5, B6, B2, B3 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define SPLIT_HAND_PIN F4
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define AUTO_SHIFT_TIMEOUT 100
+#define NO_AUTO_SHIFT_SPECIAL
+#define NO_AUTO_SHIFT_NUMERIC
+
+// require two taps for a TT layer switch (default 5)
+#define TAPPING_TOGGLE 2
+
+// Mouse control
+// constant mode (velocity)
+#define MK_3_SPEED
+// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
+
+// Cursor offset per movement (unmodified)
+#define MK_C_OFFSET_UNMOD 16
+// Time between cursor movements (unmodified)
+#define MK_C_INTERVAL_UNMOD 10
+/* #define MK_C_INTERVAL_UNMOD 16 */
+
+// Cursor offset per movement (KC_ACL0)
+#define MK_C_OFFSET_0 1
+// Time between cursor movements (KC_ACL0)
+#define MK_C_INTERVAL_0 32
+
+// Cursor offset per movement (KC_ACL1)
+#define MK_C_OFFSET_1 4
+// Time between cursor movements (KC_ACL1)
+#define MK_C_INTERVAL_1 16
+
+// Cursor offset per movement (KC_ACL2)
+#define MK_C_OFFSET_2 20
+/* #define MK_C_OFFSET_2 32 */
+// Time between cursor movements (KC_ACL2)
+#define MK_C_INTERVAL_2 16
diff --git a/keyboards/splitreus62/keymaps/scheiklp/keymap.c b/keyboards/splitreus62/keymaps/scheiklp/keymap.c
new file mode 100644
index 0000000000..b192e357f0
--- /dev/null
+++ b/keyboards/splitreus62/keymaps/scheiklp/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2019 NaCly
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "koy_keys_on_quertz_de_latin1.h"
+// Layer shorthand
+#define _1 0
+#define _3 1
+#define _4 2
+#define _7 3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_1] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, N_Y, KC_V, KC_G, KC_C, KC_L, N_SS, N_Z,
+ MO(_3), KC_H, KC_A, KC_E, KC_I, KC_U, KC_D, KC_T, KC_R, KC_N, KC_S, KC_F,
+ KC_LSFT, KC_X, KC_Q, N_AE, N_UE, N_OE, KC_B, KC_P, KC_W, KC_M, KC_J, KC_RSFT,
+ KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_RCTL, MO(_3), MO(_4), KC_TRNS, KC_TRNS, KC_CAPS, TT(_7)
+ ),
+
+ [_3] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
+ KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, KC_TRNS,
+ KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
+ KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
+ KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_4] = LAYOUT(
+ KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
+ KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS,
+ KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
+ KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT,
+ KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_0, KC_ENTER, KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_7] = LAYOUT(
+ KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LCTL, KC_MS_ACCEL2, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/splitreus62/keymaps/scheiklp/rules.mk b/keyboards/splitreus62/keymaps/scheiklp/rules.mk
new file mode 100644
index 0000000000..cbfc44e1bd
--- /dev/null
+++ b/keyboards/splitreus62/keymaps/scheiklp/rules.mk
@@ -0,0 +1,9 @@
+BOOTLOADER = atmel-dfu
+
+# Build Options
+AUTO_SHIFT_ENABLE = yes
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+NKRO_ENABLE = yes # USB Nkey Rollover
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/splitreus62/rules.mk b/keyboards/splitreus62/rules.mk
index e82ed29fc2..d585e3b4b3 100644
--- a/keyboards/splitreus62/rules.mk
+++ b/keyboards/splitreus62/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/splitty/rules.mk b/keyboards/splitty/rules.mk
index 566bdc0fc6..cdd74b0677 100644
--- a/keyboards/splitty/rules.mk
+++ b/keyboards/splitty/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/squiggle/keymaps/defaultfull/config.h b/keyboards/squiggle/keymaps/defaultfull/config.h
new file mode 100644
index 0000000000..1c8cff4bb6
--- /dev/null
+++ b/keyboards/squiggle/keymaps/defaultfull/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define COMBO_TERM 100
+#define COMBO_COUNT 38
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
diff --git a/keyboards/squiggle/keymaps/defaultfull/keymap.c b/keyboards/squiggle/keymaps/defaultfull/keymap.c
new file mode 100644
index 0000000000..97785f0614
--- /dev/null
+++ b/keyboards/squiggle/keymaps/defaultfull/keymap.c
@@ -0,0 +1,157 @@
+/* Copyright 2020 Ibnu D. Aji
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// enum for combos.
+enum combos {
+ // left hand combinations.
+ Q_W,
+ W_E,
+ E_R,
+ Z_X,
+ C_X,
+ C_V,
+
+ // right hand combinations.
+ P_O,
+ O_U,
+ U_I,
+ SLASH_DOT,
+ DOT_COMMA,
+ COMMA_M,
+
+ // both hands combinations.
+ SLASH_Z,
+ COMMA_X,
+ J_F,
+};
+
+enum {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+// thumb keys.
+#define ALT_ENT ALT_T(KC_ENT)
+#define SFT_ESC SFT_T(KC_ESC)
+
+// home row mods.
+#define CT_S RCTL_T(KC_S)
+#define CT_L RCTL_T(KC_L)
+#define SH_A RSFT_T(KC_A)
+#define SH_SCLN RSFT_T(KC_SCLN)
+#define AL_D RALT_T(KC_D)
+#define AL_K RALT_T(KC_K)
+#define GU_G RGUI_T(KC_G)
+#define GU_H RGUI_T(KC_H)
+
+// layer toggle.
+#define LW_BSPC LT(_LOWER, KC_BSPC)
+#define RS_SPC LT(_RAISE, KC_SPC)
+
+// idk, man. not used, i guess.
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#define ADDDD MO(_ADJUST)
+#define MUIS MO(_MUIS)
+
+// common shortcuts for windows and linux that i use.
+#define NXTTAB LCTL(KC_PGDN)
+#define PRVTAB LCTL(KC_PGUP)
+#define UPTAB LCTL(LSFT(KC_PGUP))
+#define DNTAB LCTL(LSFT(KC_PGDN))
+#define NXTWIN LALT(KC_TAB)
+#define PRVWIN LALT(LSFT(KC_TAB))
+#define CALDL LCTL(LALT(KC_DELT))
+#define TSKMGR LCTL(LSFT(KC_ESC))
+#define EXPLR LGUI(KC_E)
+#define LCKGUI LGUI(KC_L)
+#define CONPST LSFT(KC_INS)
+#define CLSGUI LALT(KC_F4)
+
+// left hand combinations.
+const uint16_t PROGMEM q_w_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM w_e_combo[] = {KC_W, KC_E, COMBO_END};
+const uint16_t PROGMEM e_r_combo[] = {KC_E, KC_R, COMBO_END};
+const uint16_t PROGMEM z_x_combo[] = {KC_Z, KC_X, COMBO_END};
+const uint16_t PROGMEM x_c_combo[] = {KC_X, KC_C, COMBO_END};
+const uint16_t PROGMEM c_v_combo[] = {KC_C, KC_V, COMBO_END};
+
+// right hand combinations.
+const uint16_t PROGMEM p_o_combo[] = {KC_P, KC_O, COMBO_END};
+const uint16_t PROGMEM o_u_combo[] = {KC_O, KC_U, COMBO_END};
+const uint16_t PROGMEM u_i_combo[] = {KC_U, KC_I, COMBO_END};
+const uint16_t PROGMEM slash_dot_combo[] = {KC_SLSH, KC_DOT, COMBO_END};
+const uint16_t PROGMEM dot_comma_combo[] = {KC_DOT, KC_COMM,COMBO_END};
+const uint16_t PROGMEM comma_m_combo[] = {KC_COMM, KC_M, COMBO_END};
+
+// both hand combinations.
+const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END};
+const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END};
+const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ // left hand combinations.
+ [Q_W] = COMBO(q_w_combo, KC_TAB),
+ [W_E] = COMBO(w_e_combo, KC_DQT),
+ [E_R] = COMBO(e_r_combo, KC_UNDS),
+ [Z_X] = COMBO(z_x_combo, KC_ENT),
+ [C_X] = COMBO(x_c_combo, LCTL(KC_W)),
+ [C_V] = COMBO(c_v_combo, KC_DELT),
+
+ // right hand combinations.
+ [P_O] = COMBO(p_o_combo, KC_BSPC),
+ [O_U] = COMBO(o_u_combo, KC_QUOT),
+ [U_I] = COMBO(u_i_combo, KC_MINS),
+ [SLASH_DOT] = COMBO(slash_dot_combo, KC_PIPE),
+ [DOT_COMMA] = COMBO(dot_comma_combo, KC_APP),
+ [COMMA_M] = COMBO(comma_m_combo, KC_DELT),
+
+ // both hand combinations.
+ [SLASH_Z] = COMBO(z_slash_combo, KC_HOME),
+ [COMMA_X] = COMBO(x_comma_combo, KC_END),
+ [J_F] = COMBO(j_f_combo, KC_ENT),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_BASE] = LAYOUT_full(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ SH_A, CT_S, AL_D, KC_F, GU_G, GU_H, KC_J, AL_K, CT_L, SH_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,
+ KC_LCTL,KC_LGUI,KC_LALT,LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC, KC_RALT,KC_RGUI,KC_RCTL
+),
+
+[_RAISE] = LAYOUT_full(
+ KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR ,
+ KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR, KC_EQL, KC_4, KC_5, KC_6, KC_0 ,
+ KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS ,
+ _______,_______,_______,ADDDD, _______, ALT_ENT,RS_SPC, _______,_______,_______
+),
+[_LOWER] = LAYOUT_full(
+ KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC ,
+ KC_LSFT,KC_TAB, KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT ,
+ KC_CLCK,KC_SLCK,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH ,
+ _______,_______,_______,ADDDD, _______, KC_DELT,ADDDD, _______,_______,_______
+),
+[_ADJUST] = LAYOUT_full(
+ _______,EXPLR, KC_UP, PRVTAB, PRVWIN, NXTWIN, NXTTAB, _______,_______,LCKGUI,
+ TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB, DNTAB, KC_ENT, KC_LGUI,_______,CALDL,
+ _______,CLSGUI, _______,CONPST, RESET, _______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______
+),
+};
diff --git a/keyboards/squiggle/keymaps/defaultfull/readme.md b/keyboards/squiggle/keymaps/defaultfull/readme.md
new file mode 100644
index 0000000000..41e1ef7b1c
--- /dev/null
+++ b/keyboards/squiggle/keymaps/defaultfull/readme.md
@@ -0,0 +1,6 @@
+# The default keymap for squiggle
+
+Because of the key count in this board is less than 40, it uses combo
+extensively.
+For example, to input `KC_TAB`, you have to press `KC_Q` and `KC_W`
+simultaneously.
diff --git a/keyboards/squiggle/keymaps/defaultfull/rules.mk b/keyboards/squiggle/keymaps/defaultfull/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/squiggle/keymaps/defaultfull/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/squiggle/readme.md b/keyboards/squiggle/readme.md
index dd1256e74a..8d7b58125e 100644
--- a/keyboards/squiggle/readme.md
+++ b/keyboards/squiggle/readme.md
@@ -5,17 +5,20 @@
It's a keyboard family which has the following requirements:
- 5 columns per hand.
-- At most 3 keys for each side's thumb row.
- No numrow.
- Split.
- Symmetric.
* Keyboard Maintainer: [ibnuda](https://github.com/ibnuda)
* Hardware Supported: Atmega32u4.
-* Hardware Availability: [shop](https://dactyl.bigcartel.com/product/squiggle-keyboard-kit) or [repo](https://github.com/ibnuda/squiggle).
+* Hardware Availability: [repo](https://github.com/ibnuda/squiggle).
Make example for this keyboard (after setting up your build environment):
make squiggle:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+To enter to the bootloader you need to:
+
+* Press the key mapped to `RESET`
diff --git a/keyboards/squiggle/rev1/rev1.h b/keyboards/squiggle/rev1/rev1.h
index e1eec20594..73cb7abd2f 100644
--- a/keyboards/squiggle/rev1/rev1.h
+++ b/keyboards/squiggle/rev1/rev1.h
@@ -99,3 +99,21 @@
{ R24, R23, R22, R21, R20 }, \
{ ___, R33, R32, R31, R30 }, \
}
+
+#define LAYOUT_full(\
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
+) \
+{ \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { L30, L31, L32, L33, L34 }, \
+ { R04, R03, R02, R01, R00 }, \
+ { R14, R13, R12, R11, R10 }, \
+ { R24, R23, R22, R21, R20 }, \
+ { R34, R33, R32, R31, R30 }, \
+}
+
diff --git a/keyboards/squiggle/rev1/rules.mk b/keyboards/squiggle/rev1/rules.mk
index 3fbdcdb56f..c5eccd2db9 100644
--- a/keyboards/squiggle/rev1/rules.mk
+++ b/keyboards/squiggle/rev1/rules.mk
@@ -4,15 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/standaside/keymaps/default/config.h b/keyboards/standaside/keymaps/default/config.h
deleted file mode 100644
index d533d806c9..0000000000
--- a/keyboards/standaside/keymaps/default/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/standaside/rules.mk b/keyboards/standaside/rules.mk
index 52bb635940..8e4bcc5f9b 100644
--- a/keyboards/standaside/rules.mk
+++ b/keyboards/standaside/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable RGB underlighting support
diff --git a/keyboards/steal_this_keyboard/rules.mk b/keyboards/steal_this_keyboard/rules.mk
index aa183cd9eb..03ff795574 100644
--- a/keyboards/steal_this_keyboard/rules.mk
+++ b/keyboards/steal_this_keyboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
diff --git a/keyboards/stella/rules.mk b/keyboards/stella/rules.mk
index f9ce5db399..1632d897c7 100644
--- a/keyboards/stella/rules.mk
+++ b/keyboards/stella/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/stratos/rules.mk b/keyboards/stratos/rules.mk
index 152a85dd4d..b94e1a68f4 100644
--- a/keyboards/stratos/rules.mk
+++ b/keyboards/stratos/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/bourgeau/bourgeau.h b/keyboards/studiokestra/bourgeau/bourgeau.h
index 32a848eca7..170b7eb329 100644
--- a/keyboards/studiokestra/bourgeau/bourgeau.h
+++ b/keyboards/studiokestra/bourgeau/bourgeau.h
@@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT_all( \
+#define LAYOUT_75_ansi_rwkl( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K114, K115, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
diff --git a/keyboards/studiokestra/bourgeau/info.json b/keyboards/studiokestra/bourgeau/info.json
index 8fd62f6518..a2170cabf6 100644
--- a/keyboards/studiokestra/bourgeau/info.json
+++ b/keyboards/studiokestra/bourgeau/info.json
@@ -1,9 +1,12 @@
{
"keyboard_name": "Bourgeau",
"url": "https://studiokestra.ca/bourgeau/",
- "maintainer": "Studio Kestra",
+ "maintainer": "studiokestra",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_75_ansi_rwkl"
+ },
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT_75_ansi_rwkl": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":1, "y":0},
diff --git a/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c b/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c
index 31d7d70a09..62e3209582 100644
--- a/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c
+++ b/keyboards/studiokestra/bourgeau/keymaps/default/keymap.c
@@ -23,7 +23,7 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_all( /* Base */
+ [_BASE] = LAYOUT_75_ansi_rwkl( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL,
KC_GRAVE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
- [_FN] = LAYOUT_all( /* FN */
+ [_FN] = LAYOUT_75_ansi_rwkl( /* FN */
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c b/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c
index d0491c30a9..c1604b5633 100644
--- a/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c
+++ b/keyboards/studiokestra/bourgeau/keymaps/via/keymap.c
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_all(
+ [0] = LAYOUT_75_ansi_rwkl(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, KC_DEL,
KC_GRAVE,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
- [1] = LAYOUT_all( /* FN */
+ [1] = LAYOUT_75_ansi_rwkl( /* FN */
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [2] = LAYOUT_all( /* Layer 3 */
+ [2] = LAYOUT_75_ansi_rwkl( /* Layer 3 */
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [3] = LAYOUT_all( /* Layer 3 */
+ [3] = LAYOUT_75_ansi_rwkl( /* Layer 3 */
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/studiokestra/bourgeau/rules.mk b/keyboards/studiokestra/bourgeau/rules.mk
index 0acd19e670..42e7cc3f2e 100644
--- a/keyboards/studiokestra/bourgeau/rules.mk
+++ b/keyboards/studiokestra/bourgeau/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/cascade/rules.mk b/keyboards/studiokestra/cascade/rules.mk
index 0acd19e670..42e7cc3f2e 100644
--- a/keyboards/studiokestra/cascade/rules.mk
+++ b/keyboards/studiokestra/cascade/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/galatea/config.h b/keyboards/studiokestra/galatea/config.h
new file mode 100644
index 0000000000..e9a6b80b14
--- /dev/null
+++ b/keyboards/studiokestra/galatea/config.h
@@ -0,0 +1,77 @@
+/*
+Copyright 2021 Studio Kestra
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7C10
+#define MANUFACTURER Studio Kestra
+#define PRODUCT Galatea
+
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B2, D5 }
+#define MATRIX_ROW_PINS { D1, D0, B0, B7, E6, B3, B6, C6, D6, D7, B4, D3 }
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN B5
+#define LED_SCROLL_LOCK_PIN D2
+#define LED_PIN_ON_STATE 0
+
+#if defined(KEYBOARD_studiokestra_galatea_rev2)
+ #define RGB_DI_PIN D4
+ #define RGBLED_NUM 24
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+// /*== customize breathing effect ==*/
+// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+ #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+// /*==== use exp() and sin() ====*/
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/studiokestra/galatea/galatea.c b/keyboards/studiokestra/galatea/galatea.c
new file mode 100644
index 0000000000..30e7939159
--- /dev/null
+++ b/keyboards/studiokestra/galatea/galatea.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "galatea.h"
diff --git a/keyboards/studiokestra/galatea/galatea.h b/keyboards/studiokestra/galatea/galatea.h
new file mode 100644
index 0000000000..a1f2aa77b5
--- /dev/null
+++ b/keyboards/studiokestra/galatea/galatea.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_studiokestra_galatea_rev1)
+ #include "rev1.h"
+#elif defined(KEYBOARD_studiokestra_galatea_rev2)
+ #include "rev2.h"
+#endif
diff --git a/keyboards/studiokestra/galatea/keymaps/default/keymap.c b/keyboards/studiokestra/galatea/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8224c98751
--- /dev/null
+++ b/keyboards/studiokestra/galatea/keymaps/default/keymap.c
@@ -0,0 +1,42 @@
+ /* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT ),
+
+ [_FN] = LAYOUT_all(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+}; \ No newline at end of file
diff --git a/keyboards/studiokestra/galatea/keymaps/default/readme.md b/keyboards/studiokestra/galatea/keymaps/default/readme.md
new file mode 100644
index 0000000000..1dbd94b7bf
--- /dev/null
+++ b/keyboards/studiokestra/galatea/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Galatea
diff --git a/keyboards/studiokestra/galatea/keymaps/via/keymap.c b/keyboards/studiokestra/galatea/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6d49b79bef
--- /dev/null
+++ b/keyboards/studiokestra/galatea/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+ /* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT ),
+
+ [_FN1] = LAYOUT_all(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+ [_FN2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS )
+};
diff --git a/keyboards/studiokestra/galatea/keymaps/via/readme.md b/keyboards/studiokestra/galatea/keymaps/via/readme.md
new file mode 100644
index 0000000000..a54a78203e
--- /dev/null
+++ b/keyboards/studiokestra/galatea/keymaps/via/readme.md
@@ -0,0 +1 @@
+# Studio Kestra's Galatea keymap for VIA
diff --git a/keyboards/studiokestra/galatea/keymaps/via/rules.mk b/keyboards/studiokestra/galatea/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/studiokestra/galatea/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/studiokestra/galatea/readme.md b/keyboards/studiokestra/galatea/readme.md
new file mode 100644
index 0000000000..1268c596bf
--- /dev/null
+++ b/keyboards/studiokestra/galatea/readme.md
@@ -0,0 +1,27 @@
+# Galatea
+
+TKL H87/88c compatible PCB with support for the most common layouts.
+
+* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/)
+* Hardware Supported: [studiokestra.ca/galatea](https://studiokestra.ca/galatea/)
+* Hardware Availability: In-Stock Sale (Dec 2021)
+* Rev1 firmware is used for Galatea PCBs with no RGB underglow.
+* Rev2 firmware is used for Galatea PCBs with RGB underglow.
+
+## Bootload Sequence
+
+There are 3 ways to put the board in bootloader mode:
+
+- Hold the top-left key (typically `Esc`) while plugging in the USB cable, OR
+- While the PCB is plugged into the PC, press the physical `RESET` button on the back of the board, OR
+- With the default layout, toggle Layer 1 and press the `R` key.
+
+## Compiling Firmware
+
+Make example for this keyboard (after setting up your build environment):
+
+ make studiokestra/galatea/rev1:default
+
+If no revision is specified, it will build rev1 firmware by default.
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/studiokestra/galatea/rev1/config.h b/keyboards/studiokestra/galatea/rev1/config.h
new file mode 100644
index 0000000000..9f8fb44f9a
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev1/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 Studio Kestra
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define PRODUCT_ID 0x8801
+#define DEVICE_VER 0x0001
diff --git a/keyboards/studiokestra/galatea/rev1/info.json b/keyboards/studiokestra/galatea/rev1/info.json
new file mode 100644
index 0000000000..e3f31198fe
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev1/info.json
@@ -0,0 +1,308 @@
+{
+ "keyboard_name": "Galatea",
+ "url": "https://studiokestra.ca/galatea",
+ "maintainer": "studiokestra",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+
+ {"x": 1.25, "y": 0},
+ {"x": 2.25, "y": 0},
+ {"x": 3.25, "y": 0},
+ {"x": 4.25, "y": 0},
+ {"x": 5.5, "y": 0},
+ {"x": 6.5, "y": 0},
+ {"x": 7.5, "y": 0},
+ {"x": 8.5, "y": 0},
+ {"x": 9.75, "y": 0},
+ {"x": 10.75, "y": 0},
+ {"x": 11.75, "y": 0},
+ {"x": 12.75, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 15.25, "y": 0},
+ {"x": 16.25, "y": 0},
+ {"x": 17.25, "y": 0},
+
+ {"x": 0, "y": 1.25},
+ {"x": 1, "y": 1.25},
+ {"x": 2, "y": 1.25},
+ {"x": 3, "y": 1.25},
+ {"x": 4, "y": 1.25},
+ {"x": 5, "y": 1.25},
+ {"x": 6, "y": 1.25},
+ {"x": 7, "y": 1.25},
+ {"x": 8, "y": 1.25},
+ {"x": 9, "y": 1.25},
+ {"x": 10, "y": 1.25},
+ {"x": 11, "y": 1.25},
+ {"x": 12, "y": 1.25},
+ {"x": 13, "y": 1.25},
+ {"x": 14, "y": 1.25},
+
+ {"x": 15.25, "y": 1.25},
+ {"x": 16.25, "y": 1.25},
+ {"x": 17.25, "y": 1.25},
+
+ {"x": 0, "y": 2.25, "w": 1.5},
+ {"x": 1.5, "y": 2.25},
+ {"x": 2.5, "y": 2.25},
+ {"x": 3.5, "y": 2.25},
+ {"x": 4.5, "y": 2.25},
+ {"x": 5.5, "y": 2.25},
+ {"x": 6.5, "y": 2.25},
+ {"x": 7.5, "y": 2.25},
+ {"x": 8.5, "y": 2.25},
+ {"x": 9.5, "y": 2.25},
+ {"x": 10.5, "y": 2.25},
+ {"x": 11.5, "y": 2.25},
+ {"x": 12.5, "y": 2.25},
+ {"x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"x": 15.25, "y": 2.25},
+ {"x": 16.25, "y": 2.25},
+ {"x": 17.25, "y": 2.25},
+
+ {"x": 0, "y": 3.25, "w": 1.75},
+ {"x": 1.75, "y": 3.25},
+ {"x": 2.75, "y": 3.25},
+ {"x": 3.75, "y": 3.25},
+ {"x": 4.75, "y": 3.25},
+ {"x": 5.75, "y": 3.25},
+ {"x": 6.75, "y": 3.25},
+ {"x": 7.75, "y": 3.25},
+ {"x": 8.75, "y": 3.25},
+ {"x": 9.75, "y": 3.25},
+ {"x": 10.75, "y": 3.25},
+ {"x": 11.75, "y": 3.25},
+ {"x": 12.75, "y": 3.25, "w": 2.25},
+
+ {"x": 0, "y": 4.25, "w": 1.25},
+ {"x": 1.25, "y": 4.25},
+ {"x": 2.25, "y": 4.25},
+ {"x": 3.25, "y": 4.25},
+ {"x": 4.25, "y": 4.25},
+ {"x": 5.25, "y": 4.25},
+ {"x": 6.25, "y": 4.25},
+ {"x": 7.25, "y": 4.25},
+ {"x": 8.25, "y": 4.25},
+ {"x": 9.25, "y": 4.25},
+ {"x": 10.25, "y": 4.25},
+ {"x": 11.25, "y": 4.25},
+ {"x": 12.25, "y": 4.25, "w": 1.75},
+ {"x": 14, "y": 4.25},
+
+ {"x": 16.25, "y": 4.25},
+
+ {"x": 0, "y": 5.25, "w": 1.25},
+ {"x": 1.25, "y": 5.25, "w": 1.25},
+ {"x": 2.5, "y": 5.25, "w": 1.25},
+ {"x": 3.75, "y": 5.25, "w": 6.25},
+ {"x": 10, "y": 5.25, "w": 1.25},
+ {"x": 11.25, "y": 5.25, "w": 1.25},
+ {"x": 12.5, "y": 5.25, "w": 1.25},
+ {"x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"x": 15.25, "y": 5.25},
+ {"x": 16.25, "y": 5.25},
+ {"x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"F13", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"F13", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2\"", "x":2, "y":1.25},
+ {"label":"3\u00a3", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'@", "x":11.75, "y":3.25},
+ {"label":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/studiokestra/galatea/rev1/rev1.c b/keyboards/studiokestra/galatea/rev1/rev1.c
new file mode 100644
index 0000000000..f34f9f9200
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev1.h"
diff --git a/keyboards/studiokestra/galatea/rev1/rev1.h b/keyboards/studiokestra/galatea/rev1/rev1.h
new file mode 100644
index 0000000000..55aed02db8
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev1/rev1.h
@@ -0,0 +1,116 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+ * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐
+ * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤
+ * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter
+ * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤
+ * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘
+ * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌────┬────┬───────────────────────────────────────┬────┬────┐
+ * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space
+ * └────┴────┴───────────────────────────────────────┴────┴────┘
+ * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐
+ * │A0 │ │A3 │ │A7 │ WKL 10u Space
+ * └─────┘ └───────────────────────────────────────┘ └─────┘
+ */
+
+#define LAYOUT_all(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \
+ { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
+
+#define LAYOUT_tkl_f13_ansi(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \
+ k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \
+ { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
+
+#define LAYOUT_tkl_f13_iso(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k47, k66, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \
+ { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
diff --git a/keyboards/studiokestra/galatea/rev1/rules.mk b/keyboards/studiokestra/galatea/rev1/rules.mk
new file mode 100644
index 0000000000..a61e60c8a4
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev1/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/galatea/rev2/config.h b/keyboards/studiokestra/galatea/rev2/config.h
new file mode 100644
index 0000000000..4e0170a0f9
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev2/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 Studio Kestra
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define PRODUCT_ID 0x8802
+#define DEVICE_VER 0x0002
diff --git a/keyboards/studiokestra/galatea/rev2/info.json b/keyboards/studiokestra/galatea/rev2/info.json
new file mode 100644
index 0000000000..e3f31198fe
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev2/info.json
@@ -0,0 +1,308 @@
+{
+ "keyboard_name": "Galatea",
+ "url": "https://studiokestra.ca/galatea",
+ "maintainer": "studiokestra",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+
+ {"x": 1.25, "y": 0},
+ {"x": 2.25, "y": 0},
+ {"x": 3.25, "y": 0},
+ {"x": 4.25, "y": 0},
+ {"x": 5.5, "y": 0},
+ {"x": 6.5, "y": 0},
+ {"x": 7.5, "y": 0},
+ {"x": 8.5, "y": 0},
+ {"x": 9.75, "y": 0},
+ {"x": 10.75, "y": 0},
+ {"x": 11.75, "y": 0},
+ {"x": 12.75, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 15.25, "y": 0},
+ {"x": 16.25, "y": 0},
+ {"x": 17.25, "y": 0},
+
+ {"x": 0, "y": 1.25},
+ {"x": 1, "y": 1.25},
+ {"x": 2, "y": 1.25},
+ {"x": 3, "y": 1.25},
+ {"x": 4, "y": 1.25},
+ {"x": 5, "y": 1.25},
+ {"x": 6, "y": 1.25},
+ {"x": 7, "y": 1.25},
+ {"x": 8, "y": 1.25},
+ {"x": 9, "y": 1.25},
+ {"x": 10, "y": 1.25},
+ {"x": 11, "y": 1.25},
+ {"x": 12, "y": 1.25},
+ {"x": 13, "y": 1.25},
+ {"x": 14, "y": 1.25},
+
+ {"x": 15.25, "y": 1.25},
+ {"x": 16.25, "y": 1.25},
+ {"x": 17.25, "y": 1.25},
+
+ {"x": 0, "y": 2.25, "w": 1.5},
+ {"x": 1.5, "y": 2.25},
+ {"x": 2.5, "y": 2.25},
+ {"x": 3.5, "y": 2.25},
+ {"x": 4.5, "y": 2.25},
+ {"x": 5.5, "y": 2.25},
+ {"x": 6.5, "y": 2.25},
+ {"x": 7.5, "y": 2.25},
+ {"x": 8.5, "y": 2.25},
+ {"x": 9.5, "y": 2.25},
+ {"x": 10.5, "y": 2.25},
+ {"x": 11.5, "y": 2.25},
+ {"x": 12.5, "y": 2.25},
+ {"x": 13.5, "y": 2.25, "w": 1.5},
+
+ {"x": 15.25, "y": 2.25},
+ {"x": 16.25, "y": 2.25},
+ {"x": 17.25, "y": 2.25},
+
+ {"x": 0, "y": 3.25, "w": 1.75},
+ {"x": 1.75, "y": 3.25},
+ {"x": 2.75, "y": 3.25},
+ {"x": 3.75, "y": 3.25},
+ {"x": 4.75, "y": 3.25},
+ {"x": 5.75, "y": 3.25},
+ {"x": 6.75, "y": 3.25},
+ {"x": 7.75, "y": 3.25},
+ {"x": 8.75, "y": 3.25},
+ {"x": 9.75, "y": 3.25},
+ {"x": 10.75, "y": 3.25},
+ {"x": 11.75, "y": 3.25},
+ {"x": 12.75, "y": 3.25, "w": 2.25},
+
+ {"x": 0, "y": 4.25, "w": 1.25},
+ {"x": 1.25, "y": 4.25},
+ {"x": 2.25, "y": 4.25},
+ {"x": 3.25, "y": 4.25},
+ {"x": 4.25, "y": 4.25},
+ {"x": 5.25, "y": 4.25},
+ {"x": 6.25, "y": 4.25},
+ {"x": 7.25, "y": 4.25},
+ {"x": 8.25, "y": 4.25},
+ {"x": 9.25, "y": 4.25},
+ {"x": 10.25, "y": 4.25},
+ {"x": 11.25, "y": 4.25},
+ {"x": 12.25, "y": 4.25, "w": 1.75},
+ {"x": 14, "y": 4.25},
+
+ {"x": 16.25, "y": 4.25},
+
+ {"x": 0, "y": 5.25, "w": 1.25},
+ {"x": 1.25, "y": 5.25, "w": 1.25},
+ {"x": 2.5, "y": 5.25, "w": 1.25},
+ {"x": 3.75, "y": 5.25, "w": 6.25},
+ {"x": 10, "y": 5.25, "w": 1.25},
+ {"x": 11.25, "y": 5.25, "w": 1.25},
+ {"x": 12.5, "y": 5.25, "w": 1.25},
+ {"x": 13.75, "y": 5.25, "w": 1.25},
+
+ {"x": 15.25, "y": 5.25},
+ {"x": 16.25, "y": 5.25},
+ {"x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"F13", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"F13", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2\"", "x":2, "y":1.25},
+ {"label":"3\u00a3", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'@", "x":11.75, "y":3.25},
+ {"label":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/studiokestra/galatea/rev2/rev2.c b/keyboards/studiokestra/galatea/rev2/rev2.c
new file mode 100644
index 0000000000..5e7125b0b6
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev2/rev2.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev2.h"
diff --git a/keyboards/studiokestra/galatea/rev2/rev2.h b/keyboards/studiokestra/galatea/rev2/rev2.h
new file mode 100644
index 0000000000..55aed02db8
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev2/rev2.h
@@ -0,0 +1,116 @@
+/* Copyright 2021 Studio Kestra
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │00 │ │01 │02 │12 │03 │ │13 │04 │14 │05 │ │15 │06 │16 │07 │ │17 │08 │18 │ Standard
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+ * │00 ││10 │01 │02 │12 ││03 │13 │04 │14 ││05 │15 │06 │16 ││07 │ │17 │08 │18 │ F13
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐
+ * │20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │36 │27 │ │37 │28 │38 │ │36 │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤
+ * │40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │47 │ │57 │48 │58 │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐47 │ ISO Enter
+ * LShift │60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │ │66 │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤
+ * │80 │ │80 │90 │81 │91 │82 │92 │83 │93 │84 │94 │85 │95 │86 │87 │ │88 │ │86 │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ └──────────┘
+ * │A0 │B0 │A1 │A3 │A5 │B5 │A6 │A7 │ │B7 │A8 │B8 │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │A0 │B0 │A1 │A3 │B5 │A6 │A7 │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌────┬────┬───────────────────────────────────────┬────┬────┐
+ * │A0 │B0 │A3 │A6 │A7 │ WK 10u Space
+ * └────┴────┴───────────────────────────────────────┴────┴────┘
+ * ┌─────┐ ┌───────────────────────────────────────┐ ┌─────┐
+ * │A0 │ │A3 │ │A7 │ WKL 10u Space
+ * └─────┘ └───────────────────────────────────────┘ └─────┘
+ */
+
+#define LAYOUT_all(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k27, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k87, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, k87, k88 }, \
+ { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
+
+#define LAYOUT_tkl_f13_ansi(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k47, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, \
+ k80, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \
+ { ___, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
+
+#define LAYOUT_tkl_f13_iso(\
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k07, k17, k08, k18, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k37, k28, k38, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k57, k48, k58, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k47, k66, \
+ k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k88, \
+ kA0, kB0, kA1, kA3, kA5, kB5, kA6, kA7, kB7, kA8, kB8 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
+ { k10, ___, k12, k13, k14, k15, k16, k17, k18 }, \
+ { k20, k21, k22, k23, k24, k25, k26, ___, k28 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
+ { k50, k51, k52, k53, k54, k55, ___, k57, k58 }, \
+ { k60, k61, k62, k63, k64, k65, k66, ___, ___ }, \
+ { k70, k71, k72, k73, k74, k75, ___, ___, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86, ___, k88 }, \
+ { k90, k91, k92, k93, k94, k95, ___, ___, ___ }, \
+ { kA0, kA1, ___, kA3, ___, kA5, kA6, kA7, kA8 }, \
+ { kB0, ___, ___, ___, ___, kB5, ___, kB7, kB8 } \
+}
diff --git a/keyboards/studiokestra/galatea/rev2/rules.mk b/keyboards/studiokestra/galatea/rev2/rules.mk
new file mode 100644
index 0000000000..a0a1e94e36
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rev2/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/galatea/rules.mk b/keyboards/studiokestra/galatea/rules.mk
new file mode 100644
index 0000000000..c60419c59e
--- /dev/null
+++ b/keyboards/studiokestra/galatea/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = studiokestra/galatea/rev1
diff --git a/keyboards/studiokestra/nue/rules.mk b/keyboards/studiokestra/nue/rules.mk
index 5c194d1aeb..717cc07b4b 100644
--- a/keyboards/studiokestra/nue/rules.mk
+++ b/keyboards/studiokestra/nue/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/subatomic/rules.mk b/keyboards/subatomic/rules.mk
index f024da0b20..58d8c130a1 100644
--- a/keyboards/subatomic/rules.mk
+++ b/keyboards/subatomic/rules.mk
@@ -5,19 +5,15 @@ MCU = at90usb1286
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = yes # MIDI support
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/suihankey/alpha/keymaps/default/config.h b/keyboards/suihankey/alpha/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/suihankey/alpha/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/suihankey/rev1/keymaps/default/config.h b/keyboards/suihankey/rev1/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/suihankey/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/suihankey/rules.mk b/keyboards/suihankey/rules.mk
index 89b68dc07f..8e1e7f7856 100644
--- a/keyboards/suihankey/rules.mk
+++ b/keyboards/suihankey/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/suihankey/split/keymaps/default/config.h b/keyboards/suihankey/split/keymaps/default/config.h
deleted file mode 100644
index bf1149ebc6..0000000000
--- a/keyboards/suihankey/split/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 kakunpc
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/superuser/ext/rules.mk b/keyboards/superuser/ext/rules.mk
index 419f20a431..4fdac83bca 100644
--- a/keyboards/superuser/ext/rules.mk
+++ b/keyboards/superuser/ext/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/superuser/frl/rules.mk b/keyboards/superuser/frl/rules.mk
index 419f20a431..4fdac83bca 100644
--- a/keyboards/superuser/frl/rules.mk
+++ b/keyboards/superuser/frl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/superuser/tkl/rules.mk b/keyboards/superuser/tkl/rules.mk
index 419f20a431..4fdac83bca 100644
--- a/keyboards/superuser/tkl/rules.mk
+++ b/keyboards/superuser/tkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/swiftrax/retropad/rules.mk b/keyboards/swiftrax/retropad/rules.mk
index 700fc37e41..f178369897 100644
--- a/keyboards/swiftrax/retropad/rules.mk
+++ b/keyboards/swiftrax/retropad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/switchplate/southpaw_65/rules.mk b/keyboards/switchplate/southpaw_65/rules.mk
index 36287cd37b..864e780606 100644
--- a/keyboards/switchplate/southpaw_65/rules.mk
+++ b/keyboards/switchplate/southpaw_65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/switchplate/southpaw_fullsize/rules.mk b/keyboards/switchplate/southpaw_fullsize/rules.mk
index 756d8d421d..db0ff42ef4 100644
--- a/keyboards/switchplate/southpaw_fullsize/rules.mk
+++ b/keyboards/switchplate/southpaw_fullsize/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/switchplate/switchplate910/rules.mk b/keyboards/switchplate/switchplate910/rules.mk
index 4f1faaec80..02fbe72525 100644
--- a/keyboards/switchplate/switchplate910/rules.mk
+++ b/keyboards/switchplate/switchplate910/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/sx60/rules.mk b/keyboards/sx60/rules.mk
index 1d4118233d..0848a4d73f 100755
--- a/keyboards/sx60/rules.mk
+++ b/keyboards/sx60/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/synapse/config.h b/keyboards/synapse/config.h
index 82a0aadea5..809194afe8 100644
--- a/keyboards/synapse/config.h
+++ b/keyboards/synapse/config.h
@@ -41,12 +41,11 @@
/* ROTARY ENCODERS */
#define ENCODERS_PAD_A \
- { D6, C6 }
-#define ENCODERS_PAD_B \
{ D7, C7 }
+#define ENCODERS_PAD_B \
+ { D6, C6 }
#define ENCODER_RESOLUTION 4
-#define ENCODER_DIRECTION_FLIP
#define DEBOUNCE 5
diff --git a/keyboards/synapse/rules.mk b/keyboards/synapse/rules.mk
index c1ecc763c5..8876a45881 100644
--- a/keyboards/synapse/rules.mk
+++ b/keyboards/synapse/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/system76/launch_1/config.h b/keyboards/system76/launch_1/config.h
new file mode 100644
index 0000000000..19752d58de
--- /dev/null
+++ b/keyboards/system76/launch_1/config.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+// USB device descriptor parameter
+#define VENDOR_ID 0x3384
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER System76
+#define PRODUCT Launch Configurable Keyboard (launch_1)
+
+// Key matrix size
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+/*
+ * Key matrix pins
+ * ROWS: AVR pins used for rows, top to bottom
+ * COLS: AVR pins used for columns, left to right
+ */
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { D7, C7, C6, B6, B5, B4, D6, D4, E6, D5, D3, D2, B7, B0 }
+#define UNUSED_PINS
+
+/*
+ * Diode Direction
+ * COL2ROW = COL => Anode (+), ROW => Cathode (-)
+ * ROW2COL = ROW => Anode (+), COL => Cathode (-)
+ */
+#define DIODE_DIRECTION COL2ROW
+
+// Set 0 if debouncing isn't needed
+#define DEBOUNCE 5
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_DI_PIN E2
+# define DRIVER_LED_TOTAL 84
+# define RGB_MATRIX_KEYPRESSES // Reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // Reacts to keyreleases (instead of keypresses)
+// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables framebuffer effects
+# define RGB_DISABLE_TIMEOUT 0 // Number of milliseconds to wait until RGB automatically turns off
+# define RGB_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: Number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // Turns off effects when suspended
+// Limit brightness to support USB-A at 0.5 A
+// TODO: Do this dynamically based on power source
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 176 // Limits maximum brightness of LEDs to 176 out of 255. If not defined, maximum brightness is set to 255
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Sets the default mode, if none has been set
+# define RGB_MATRIX_STARTUP_HUE 142 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
+# define RGB_MATRIX_STARTUP_SPD 127 // Sets the default animation speed, if none has been set
+# define RGB_MATRIX_DISABLE_KEYCODES // Disables control of rgb matrix by keycodes (must use code functions to control the feature)
+
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+#endif // RGB_MATRIX_ENABLE
+
+// Mechanical locking support; use KC_LCAP, KC_LNUM, or KC_LSCR instead in keymap
+#define LOCKING_SUPPORT_ENABLE
+
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+
+// I2C {
+#define F_SCL 100000UL // Run I2C bus at 100 kHz
+#define I2C_START_RETRY_COUNT 20
+#define I2C_TIMEOUT 100 // milliseconds
+// } I2C
+
+// EEPROM {
+#define EEPROM_SIZE 1024
+// TODO: Refactor with new user EEPROM code (coming soon)
+#define EEPROM_MAGIC 0x76EC
+#define EEPROM_MAGIC_ADDR 64
+// Bump this every time we change what we store
+// This will automatically reset the EEPROM with defaults
+// and avoid loading invalid data from the EEPROM
+#define EEPROM_VERSION 0x02
+#define EEPROM_VERSION_ADDR (EEPROM_MAGIC_ADDR + 2)
+// } EEPROM
+
+// Dynamic keymap {
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+#define DYNAMIC_KEYMAP_MACRO_COUNT 0
+// Dynamic keymap starts after EEPROM version
+#define DYNAMIC_KEYMAP_EEPROM_ADDR (EEPROM_VERSION_ADDR + 1)
+// Dynamic macro starts after dynamic keymaps, it is disabled
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR (DYNAMIC_KEYMAP_EEPROM_ADDR + (DYNAMIC_KEYMAP_LAYER_COUNT * MATRIX_ROWS * MATRIX_COLS * 2))
+#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 0
+// } Dynamic keymap
+
+// System76 EC {
+#define SYSTEM76_EC_EEPROM_ADDR (DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE)
+#define SYSTEM76_EC_EEPROM_SIZE (EEPROM_SIZE - SYSTEM76_EC_EEPROM_ADDR)
+// } System76 EC
diff --git a/keyboards/system76/launch_1/info.json b/keyboards/system76/launch_1/info.json
new file mode 100644
index 0000000000..10d39cc758
--- /dev/null
+++ b/keyboards/system76/launch_1/info.json
@@ -0,0 +1,94 @@
+{
+ "keyboard_name": "System76 Launch Configurable Keyboard (launch_1)",
+ "url": "https://system76.com/accessories/launch",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1, "y": 0 },
+ { "label": "F2", "x": 2, "y": 0 },
+ { "label": "F3", "x": 3, "y": 0 },
+ { "label": "F4", "x": 4, "y": 0 },
+ { "label": "F5", "x": 5, "y": 0 },
+ { "label": "F6", "x": 6, "y": 0 },
+ { "label": "F7", "x": 7, "y": 0 },
+ { "label": "F8", "x": 8, "y": 0 },
+ { "label": "F9", "x": 9, "y": 0 },
+ { "label": "F10", "x": 10, "y": 0 },
+ { "label": "F11", "x": 11, "y": 0 },
+ { "label": "F12", "x": 12, "y": 0 },
+ { "label": "Del", "x": 13, "y": 0, "w": 1.5 },
+ { "label": "Home", "x": 14.75, "y": 0 },
+ { "label": "`", "x": 0, "y": 1 },
+ { "label": "1", "x": 1, "y": 1 },
+ { "label": "2", "x": 2, "y": 1 },
+ { "label": "3", "x": 3, "y": 1 },
+ { "label": "4", "x": 4, "y": 1 },
+ { "label": "5", "x": 5, "y": 1 },
+ { "label": "6", "x": 6, "y": 1 },
+ { "label": "7", "x": 7, "y": 1 },
+ { "label": "8", "x": 8, "y": 1 },
+ { "label": "9", "x": 9, "y": 1 },
+ { "label": "0", "x": 10, "y": 1 },
+ { "label": "-", "x": 11, "y": 1 },
+ { "label": "=", "x": 12, "y": 1 },
+ { "label": "Bksp", "x": 13, "y": 1, "w": 1.5 },
+ { "label": "PgUp", "x": 14.75, "y": 1 },
+ { "label": "Tab", "x": 0, "y": 2, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2 },
+ { "label": "W", "x": 2.5, "y": 2 },
+ { "label": "E", "x": 3.5, "y": 2 },
+ { "label": "R", "x": 4.5, "y": 2 },
+ { "label": "T", "x": 5.5, "y": 2 },
+ { "label": "Y", "x": 6.5, "y": 2 },
+ { "label": "U", "x": 7.5, "y": 2 },
+ { "label": "I", "x": 8.5, "y": 2 },
+ { "label": "O", "x": 9.5, "y": 2 },
+ { "label": "P", "x": 10.5, "y": 2 },
+ { "label": "[", "x": 11.5, "y": 2 },
+ { "label": "]", "x": 12.5, "y": 2 },
+ { "label": "\\", "x": 13.5, "y": 2 },
+ { "label": "PgDn", "x": 14.75, "y": 2 },
+ { "label": "Caps", "x": 0.25, "y": 3, "w": 1.5 },
+ { "label": "A", "x": 1.75, "y": 3 },
+ { "label": "S", "x": 2.75, "y": 3 },
+ { "label": "D", "x": 3.75, "y": 3 },
+ { "label": "F", "x": 4.75, "y": 3 },
+ { "label": "G", "x": 5.75, "y": 3 },
+ { "label": "H", "x": 6.75, "y": 3 },
+ { "label": "J", "x": 7.75, "y": 3 },
+ { "label": "K", "x": 8.75, "y": 3 },
+ { "label": "L", "x": 9.75, "y": 3 },
+ { "label": ";", "x": 10.75, "y": 3 },
+ { "label": "'", "x": 11.75, "y": 3 },
+ { "label": "Enter", "x": 12.75, "y": 3, "w": 1.5 },
+ { "label": "End", "x": 14.75, "y": 3 },
+ { "label": "LShift", "x": 0.25, "y": 4, "w": 2 },
+ { "label": "Z", "x": 2.25, "y": 4 },
+ { "label": "X", "x": 3.25, "y": 4 },
+ { "label": "C", "x": 4.25, "y": 4 },
+ { "label": "V", "x": 5.25, "y": 4 },
+ { "label": "B", "x": 6.25, "y": 4 },
+ { "label": "N", "x": 7.25, "y": 4 },
+ { "label": "M", "x": 8.25, "y": 4 },
+ { "label": ",", "x": 9.25, "y": 4 },
+ { "label": ".", "x": 10.25, "y": 4 },
+ { "label": "/", "x": 11.25, "y": 4 },
+ { "label": "RShift", "x": 12.25, "y": 4, "w": 1.5 },
+ { "label": "Up", "x": 13.75, "y": 4 },
+ { "label": "LCtrl", "x": 0.25, "y": 5, "w": 1.5 },
+ { "label": "LAlt", "x": 1.75, "y": 5 },
+ { "label": "LFn", "x": 2.75, "y": 5 },
+ { "label": "Super", "x": 3.75, "y": 5 },
+ { "label": "Space", "x": 4.75, "y": 5, "w": 2 },
+ { "label": "Space", "x": 6.75, "y": 5, "w": 2 },
+ { "label": "RCtrl", "x": 8.75, "y": 5 },
+ { "label": "RAlt", "x": 9.75, "y": 5 },
+ { "label": "RFn", "x": 10.75, "y": 5, "w": 1.5 },
+ { "label": "Left", "x": 12.75, "y": 5 },
+ { "label": "Down", "x": 13.75, "y": 5 },
+ { "label": "Right", "x": 14.75, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/system76/launch_1/keymaps/default/keymap.c b/keyboards/system76/launch_1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f9f86b6584
--- /dev/null
+++ b/keyboards/system76/launch_1/keymaps/default/keymap.c
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Layer 0, default layer
+ _________________________________________________________________________________________________________________________________ ________
+| | | | | | | | | | | | | | || |
+| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DELETE || HOME |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
+| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | || |
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BACKSPACE || PGUP |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
+| | | | | | | | | | | | [ | ] | | || |
+| TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | \ || PGDN |
+|____________|________|________|________|________|________|________|________|________|________|________|________|________|________||________|
+ | | | | | | | | | | | : | " | | | |
+ | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | | END |
+ |____________|________|________|________|________|________|________|________|________|________|________|________|____________|___|________|
+ | | | | | | | | | < | > | ? | | |
+ | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP |
+ |________________|________|________|________|________|________|________|________|________|________|________|____________|________|________
+ | | | | | | | | | | | | | |
+ | CTRL | LALT | FN | LGUI | SPACE | SPACE | RCTRL | RALT | FN | | LEFT | DOWN | RIGHT |
+ |____________|________|_______|________|_________________|_________________|________|________|_____________| |________|________|________|
+ */
+
+ [0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, MO(1), KC_LGUI, KC_SPC, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Layer 1, function layer
+ _________________________________________________________________________________________________________________________________ ________
+| | | | | | | | | | | | | | || PLAY/ |
+| RESET | | | | | | | | | | | | | || PAUSE |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
+| | | | | | | | | | | LED | LED | LED | || VOLUME |
+| | | | | | | | | | | TOGGLE | DOWN | UP | || UP |
+|________|________|________|________|________|________|________|________|________|________|________|________|________|____________||________|
+| | | | | | | | | | | | | | || VOLUME |
+|PRINT SCREEN| | | | | | HOME | PGDN | PGUP | END | | | | || DOWN |
+|____________|________|________|________|________|________|________|________|________|________|________|________|________|________||________|
+ | | | | | | | | | | | | | | | |
+ | | | | | | | LEFT | DOWN | UP | RIGHT | | | | | MUTE |
+ |____________|________|________|________|________|________|________|________|________|________|________|________|____________|___|________|
+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | PGUP |
+ |________________|________|________|________|________|________|________|________|________|________|________|____________|________|________
+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | HOME | PGDN | END |
+ |____________|________|_______|________|_________________|_________________|________|________|_____________| |________|________|________|
+
+ * `RESET' resets the controller and puts the board into firmware flashing mode.
+ * If this key is hit accidentally, just unplug the board and plug it back in.
+ */
+
+ [1] = LAYOUT(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAD, RGB_VAI, KC_TRNS, KC_VOLU,
+ KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/system76/launch_1/launch_1.c b/keyboards/system76/launch_1/launch_1.c
new file mode 100644
index 0000000000..0250b9d9cc
--- /dev/null
+++ b/keyboards/system76/launch_1/launch_1.c
@@ -0,0 +1,240 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "launch_1.h"
+
+#include "usb_mux.h"
+
+// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+// LEDs by index
+// 0 1 2 3 4 5 6 7 8 9
+// 00 LM4 LL4 LK4 LJ4 LI4 LH4 LG4 LF4 LE4 LD4
+// 10 LC4 LB4 LA4 LA5 LB5 LC5 LD5 LE5 LG5 LH5
+// 20 LI5 LJ5 LK5 LL5 LM5 LO3 LM3 LL3 LK3 LJ3
+// 30 LI3 LH3 LG3 LF3 LE3 LD3 LC3 LB3 LA3 LA2
+// 40 LB2 LC2 LD2 LE2 LF2 LG2 LH2 LI2 LJ2 LK2
+// 50 LL2 LM2 LN2 LO2 LO1 LN1 LM1 LL1 LK1 LJ1
+// 60 LI1 LH1 LG1 LF1 LE1 LD1 LC1 LB1 LA1 LA0
+// 70 LB0 LC0 LD0 LE0 LF0 LG0 LH0 LI0 LJ0 LK0
+// 80 LL0 LM0 LN0 LO0
+led_config_t g_led_config = { LAYOUT(
+ // Key matrix to LED index
+ /* A B C D E F G H I J K L M N O */
+/* 0 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+/* 1 */ 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54,
+/* 2 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+/* 3 */ 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25,
+/* 4 */ 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,
+/* 5 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
+), {
+ // LED index to physical position (see leds.sh in `launch' repo)
+/* 00 */ {209, 51}, {190, 51}, {171, 51}, {156, 51}, {140, 51}, {125, 51}, {110, 51}, {95, 51}, {80, 51}, {65, 51},
+/* 10 */ {49, 51}, {34, 51}, {11, 51}, {8, 64}, {27, 64}, {42, 64}, {57, 64}, {80, 64}, {110, 64}, {133, 64},
+/* 20 */ {148, 64}, {167, 64}, {194, 64}, {209, 64}, {224, 64}, {224, 38}, {197, 38}, {178, 38}, {163, 38}, {148, 38},
+/* 30 */ {133, 38}, {118, 38}, {103, 38}, {87, 38}, {72, 38}, {57, 38}, {42, 38}, {27, 38}, {8, 38}, {4, 26},
+/* 40 */ {23, 26}, {38, 26}, {53, 26}, {68, 26}, {84, 26}, {99, 26}, {114, 26}, {129, 26}, {144, 26}, {159, 26},
+/* 50 */ {175, 26}, {190, 26}, {205, 26}, {224, 26}, {224, 13}, {201, 13}, {182, 13}, {167, 13}, {152, 13}, {137, 13},
+/* 60 */ {121, 13}, {106, 13}, {91, 13}, {76, 13}, {61, 13}, {46, 13}, {30, 13}, {15, 13}, {0, 13}, {0, 0},
+/* 70 */ {15, 0}, {30, 0}, {46, 0}, {61, 0}, {76, 0}, {91, 0}, {106, 0}, {121, 0}, {137, 0}, {152, 0},
+/* 80 */ {167, 0}, {182, 0}, {201, 0}, {224, 0}
+}, {
+ // LED index to flags (set all to LED_FLAG_KEYLIGHT)
+ /* 0 1 2 3 4 5 6 7 8 9 */
+/* 00 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 10 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 20 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 30 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 40 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 50 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 60 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 70 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+/* 80 */ 4, 4, 4, 4
+} };
+#endif // RGB_MATRIX_ENABLE
+
+bool eeprom_is_valid(void) {
+ return (
+ eeprom_read_word(((void *)EEPROM_MAGIC_ADDR)) == EEPROM_MAGIC &&
+ eeprom_read_byte(((void *)EEPROM_VERSION_ADDR)) == EEPROM_VERSION
+ );
+}
+// clang-format on
+
+void eeprom_set_valid(bool valid) {
+ eeprom_update_word(((void *)EEPROM_MAGIC_ADDR), valid ? EEPROM_MAGIC : 0xFFFF);
+ eeprom_update_byte(((void *)EEPROM_VERSION_ADDR), valid ? EEPROM_VERSION : 0xFF);
+}
+
+void bootmagic_lite_reset_eeprom(void) {
+ // Set the keyboard-specific EEPROM state as invalid
+ eeprom_set_valid(false);
+ // Set the TMK/QMK EEPROM state as invalid
+ eeconfig_disable();
+}
+
+// The lite version of TMK's bootmagic based on Wilba.
+// 100% less potential for accidentally making the keyboard do stupid things.
+void bootmagic_lite(void) {
+ // Perform multiple scans because debouncing can't be turned off.
+ matrix_scan();
+#if defined(DEBOUNCE) && DEBOUNCE > 0
+ wait_ms(DEBOUNCE * 2);
+#else
+ wait_ms(30);
+#endif
+ matrix_scan();
+
+ // If the configured key (commonly Esc) is held down on power up,
+ // reset the EEPROM valid state and jump to bootloader.
+ uint8_t row = 0; // BOOTMAGIC_LITE_ROW;
+ uint8_t col = 0; // BOOTMAGIC_LITE_COLUMN;
+
+ if (matrix_get_row(row) & (1 << col)) {
+ bootmagic_lite_reset_eeprom();
+
+ // Jump to bootloader.
+ bootloader_jump();
+ }
+}
+
+void system76_ec_rgb_eeprom(bool write);
+void system76_ec_rgb_layer(layer_state_t layer_state);
+void system76_ec_unlock(void);
+bool system76_ec_is_unlocked(void);
+
+rgb_config_t layer_rgb[DYNAMIC_KEYMAP_LAYER_COUNT];
+
+void matrix_init_kb(void) {
+ usb_mux_init();
+
+ bootmagic_lite();
+ if (!eeprom_is_valid()) {
+ dynamic_keymap_reset();
+ dynamic_keymap_macro_reset();
+ system76_ec_rgb_eeprom(true);
+ eeprom_set_valid(true);
+ } else {
+ system76_ec_rgb_eeprom(false);
+ }
+
+ system76_ec_rgb_layer(layer_state);
+}
+
+void matrix_scan_kb(void) {
+ usb_mux_event();
+
+ matrix_scan_user();
+}
+
+#define LEVEL(value) (uint8_t)(((uint16_t)value) * ((uint16_t)RGB_MATRIX_MAXIMUM_BRIGHTNESS) / ((uint16_t)255))
+
+// clang-format off
+static const uint8_t levels[] = {
+ LEVEL(48),
+ LEVEL(72),
+ LEVEL(96),
+ LEVEL(144),
+ LEVEL(192),
+ LEVEL(255)
+};
+// clang-format on
+
+static uint8_t toggle_level = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
+extern bool input_disabled;
+
+static void set_value_all_layers(uint8_t value) {
+ if (!system76_ec_is_unlocked()) {
+ for (int8_t layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
+ layer_rgb[layer].hsv.v = value;
+ }
+ system76_ec_rgb_layer(layer_state);
+ }
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (input_disabled) {
+ return false;
+ }
+
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case RESET:
+ if (record->event.pressed) {
+ system76_ec_unlock();
+ }
+#ifdef SYSTEM76_EC
+ return false;
+#else
+ return true;
+#endif
+ case RGB_VAD:
+ if (record->event.pressed) {
+ uint8_t level = rgb_matrix_config.hsv.v;
+ for (int i = sizeof(levels) - 1; i >= 0; i--) {
+ if (levels[i] < level) {
+ level = levels[i];
+ break;
+ }
+ }
+ set_value_all_layers(level);
+ }
+ return false;
+ case RGB_VAI:
+ if (record->event.pressed) {
+ uint8_t level = rgb_matrix_config.hsv.v;
+ for (int i = 0; i < sizeof(levels); i++) {
+ if (levels[i] > level) {
+ level = levels[i];
+ break;
+ }
+ }
+ set_value_all_layers(level);
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ uint8_t level = 0;
+ if (rgb_matrix_config.hsv.v == 0) {
+ level = toggle_level;
+ } else {
+ toggle_level = rgb_matrix_config.hsv.v;
+ }
+ set_value_all_layers(level);
+ }
+ return false;
+ }
+
+ return true;
+}
+
+layer_state_t layer_state_set_kb(layer_state_t layer_state) {
+ system76_ec_rgb_layer(layer_state);
+
+ return layer_state_set_user(layer_state);
+}
+
+#ifdef CONSOLE_ENABLE
+void keyboard_post_init_user(void) {
+ debug_enable = true;
+ debug_matrix = false;
+ debug_keyboard = false;
+}
+#endif // CONSOLE_ENABLE
diff --git a/keyboards/system76/launch_1/launch_1.h b/keyboards/system76/launch_1/launch_1.h
new file mode 100644
index 0000000000..335b8ecbdf
--- /dev/null
+++ b/keyboards/system76/launch_1/launch_1.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+// clang-format off
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, \
+ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K0E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K1E }, \
+ { K50, K51, K52, K53, K54, K3D, K55, K56, K57, K58, K59, K5A, K5B, K2E }, \
+}
+// clang-format on
diff --git a/keyboards/system76/launch_1/post_rules.mk b/keyboards/system76/launch_1/post_rules.mk
new file mode 100644
index 0000000000..3751a8b8c3
--- /dev/null
+++ b/keyboards/system76/launch_1/post_rules.mk
@@ -0,0 +1,12 @@
+# System76 EC
+# remove the RESET HID command
+VALID_SYSTEM76_EC_TYPES := yes
+SYSTEM76_EC_ENABLE ?= no
+ifneq ($(strip $(SYSTEM76_EC_ENABLE)),no)
+ ifeq ($(filter $(SYSTEM76_EC_ENABLE),$(VALID_SYSTEM76_EC_TYPES)),)
+ $(error SYSTEM76_EC_EN="$(strip $(SYSTEM76_EC_ENABLE))" is not a valid type for the System76 EC option)
+ endif
+ ifneq ($(strip $(SYSTEM76_EC_ENABLE)),no)
+ OPT_DEFS += -DSYSTEM76_EC
+ endif
+endif
diff --git a/keyboards/system76/launch_1/readme.md b/keyboards/system76/launch_1/readme.md
new file mode 100644
index 0000000000..1dcdeccc39
--- /dev/null
+++ b/keyboards/system76/launch_1/readme.md
@@ -0,0 +1,62 @@
+# System76 Launch Configurable Keyboard (launch_1)
+
+![System76 Launch Configurable Keyboard](https://images.prismic.io/system76/b71307ac-dae6-4863-b7ca-804cd61c7ef8_launch_overhead.png?auto=compress,format&w=750)
+
+The Launch Configurable Keyboard is engineered to be comfortable, fully customizable, and make your workflow more efficient.
+
+- High-speed USB Hub
+- Works on Linux, Windows and macOS
+- 100% Open Source
+- Made in Colorado
+
+Additional Launch Keyboard resources:
+
+- Keyboard Maintainer: [System76](https://github.com/system76)
+- Hardware Supported: [System76 Launch GitHub Repository](https://github.com/system76/launch)
+- Hardware Availability: [Shop System76](https://system76.com/accessories/launch)
+
+## Building Firmware
+
+To build the firmware using `make` (after setting up the build environment), e.g.:
+
+```bash
+make -r system76/launch_1:default
+```
+
+Equivalently, using the QMK CLI:
+
+```bash
+qmk compile -kb system76/launch_1 -km default
+```
+
+## Flashing Firmware (DFU)
+
+To build and flash the firmware on the keyboard, e.g.:
+
+```bash
+make -r system76/launch_1:default:flash
+```
+
+Equivalently, using the QMK CLI:
+
+```bash
+qmk flash -kb system76/launch_1 -km default
+```
+
+## Flashing Firmware (ISP)
+
+To flash the firmware (and/or bootloader) using ISP refer to the [_ISP Flashing Guide_](https://docs.qmk.fm/#/isp_flashing_guide).
+
+> **Factory fuse values** => Low: `0x5E`, High: `0x99`, Extended: `0xF3`, Lock Bits: `0xFF`
+
+## Environment Setup
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. If new to QMK, start with the [_Complete Newbs Guide_](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Escape) and plug in the keyboard.
+- **Keycode in layout**: Press the key mapped to `RESET` in the second layer (Escape).
+- **Electrical reset**: Briefly short AVR ISP's GND (6) and RST (5) pads on the back of the PCB.
diff --git a/keyboards/system76/launch_1/rgb_matrix_kb.inc b/keyboards/system76/launch_1/rgb_matrix_kb.inc
new file mode 100644
index 0000000000..484483e0a1
--- /dev/null
+++ b/keyboards/system76/launch_1/rgb_matrix_kb.inc
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+RGB_MATRIX_EFFECT(active_keys)
+RGB_MATRIX_EFFECT(raw_rgb)
+RGB_MATRIX_EFFECT(unlocked)
+
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+#include "dynamic_keymap.h"
+
+static bool active_keys_initialized = false;
+static uint8_t active_keys_table[DRIVER_LED_TOTAL] = {0};
+
+static void active_keys_initialize(void) {
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ uint8_t led = g_led_config.matrix_co[row][col];
+ if (led < DRIVER_LED_TOTAL && row < 16 && col < 16) {
+ active_keys_table[led] = (row << 4) | col;
+ }
+ }
+ }
+ active_keys_initialized = true;
+}
+
+static bool active_keys(effect_params_t* params) {
+ if (!active_keys_initialized) {
+ active_keys_initialize();
+ }
+
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ uint8_t layer = get_highest_layer(layer_state);
+ RGB rgb = hsv_to_rgb(rgb_matrix_config.hsv);
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+
+ uint8_t rowcol = active_keys_table[i];
+ uint8_t row = rowcol >> 4;
+ uint8_t col = rowcol & 0xF;
+ uint16_t keycode = dynamic_keymap_get_keycode(layer, row, col);
+ switch (keycode) {
+ case KC_NO:
+ case KC_TRNS:
+ rgb_matrix_set_color(i, 0, 0, 0);
+ break;
+ default:
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ break;
+ }
+ }
+
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+RGB raw_rgb_data[DRIVER_LED_TOTAL] = {0};
+
+static uint8_t normalize_component(uint8_t component) {
+ uint16_t x = (uint16_t)component;
+ x *= rgb_matrix_config.hsv.v; // Multiply by current brightness
+ x /= 255; // Divide by maximum brightness
+ return (uint8_t)x;
+}
+
+static RGB normalize_index(uint8_t i) {
+ RGB raw = raw_rgb_data[i];
+ RGB rgb = {
+ .r = normalize_component(raw.r),
+ .g = normalize_component(raw.g),
+ .b = normalize_component(raw.b),
+ };
+ return rgb;
+}
+
+static bool raw_rgb(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ RGB rgb = normalize_index(i);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+static uint8_t unlocked_keys[8][2] = {
+ {2, 7}, // U
+ {4, 6}, // N
+ {3, 9}, // L
+ {2, 9}, // O
+ {4, 3}, // C
+ {3, 8}, // K
+ {2, 3}, // E
+ {3, 3}, // D
+};
+
+static uint8_t unlocked_ticks = 0;
+static uint8_t unlocked_i = 0;
+static uint8_t unlocked_leds_count = 0;
+static uint8_t unlocked_leds[2] = {0, 0};
+
+static bool unlocked(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ unlocked_ticks++;
+
+ if (params->init) {
+ unlocked_ticks = 0;
+ unlocked_i = 0;
+ }
+
+ if (unlocked_ticks == 0) {
+ if (unlocked_i == 8) {
+ unlocked_leds_count = 0;
+ unlocked_i = 0;
+ } else {
+ unlocked_leds_count = rgb_matrix_map_row_column_to_led(unlocked_keys[unlocked_i][0], unlocked_keys[unlocked_i][1], unlocked_leds);
+ unlocked_i++;
+ }
+ }
+
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+
+ HSV hsv = {
+ .h = i + unlocked_ticks,
+ .s = 0xFF,
+ .v = 0x70,
+ };
+ for (uint8_t j = 0; j < unlocked_leds_count; j++) {
+ if (i == unlocked_leds[j]) {
+ hsv.s = 0;
+ hsv.v = 0xFF;
+ }
+ }
+
+ RGB rgb = hsv_to_rgb(hsv);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
diff --git a/keyboards/system76/launch_1/rules.mk b/keyboards/system76/launch_1/rules.mk
new file mode 100644
index 0000000000..1a0cd63b0d
--- /dev/null
+++ b/keyboards/system76/launch_1/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# CPU frequency divided by two since AVR is at 3.3 V
+F_CPU = 8000000
+
+# External oscillator is 16 MHz
+F_USB = 16000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build options
+# change yes to no to disable
+BOOTMAGIC_ENABLE = no # Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and system control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+DYNAMIC_KEYMAP_ENABLE = yes # Reconfigurable keyboard without flashing firmware
+NKRO_ENABLE = yes # USB N-key rollover
+RAW_ENABLE = yes # Raw HID commands (used by Keyboard Configurator)
+BACKLIGHT_ENABLE = no # RGB backlight (conflicts with RGB matrix)
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGB_MATRIX_ENABLE = yes # RGB matrix
+RGB_MATRIX_DRIVER = WS2812
+RGB_MATRIX_CUSTOM_KB = yes # Custom keyboard effects
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes # Link-time optimization for smaller binary
+
+# Add System76 EC command interface as well as I2C and USB mux drivers
+SRC += system76_ec.c usb_mux.c
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/system76/launch_1/usb_mux.c b/keyboards/system76/launch_1/usb_mux.c
new file mode 100644
index 0000000000..6cb04dcdd7
--- /dev/null
+++ b/keyboards/system76/launch_1/usb_mux.c
@@ -0,0 +1,478 @@
+/*
+ * Copyright (C) 2021 System76
+ * Copyright (C) 2021 Jimmy Cassis <KernelOops@outlook.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "usb_mux.h"
+
+#include <stdbool.h>
+
+#include "i2c_master.h"
+#include "wait.h"
+
+#define REG_PF1_CTL 0xBF800C04
+#define REG_PIO64_OEN 0xBF800908
+#define REG_PIO64_OUT 0xBF800928
+#define REG_VID 0xBF803000
+#define REG_PRT_SWAP 0xBF8030FA
+#define REG_USB3_HUB_VID 0xBFD2E548
+#define REG_RUNTIME_FLAGS2 0xBFD23408
+#define REG_I2S_FEAT_SEL 0xBFD23412
+
+struct USB7206 {
+ uint8_t addr;
+};
+
+struct USB7206 usb_hub = {.addr = 0x2D};
+
+// Perform USB7206 register access.
+// Returns zero on success or a negative number on error.
+i2c_status_t usb7206_register_access(struct USB7206* self) {
+ uint8_t register_access[3] = {
+ 0x99,
+ 0x37,
+ 0x00,
+ };
+
+ return i2c_transmit(self->addr << 1, register_access, sizeof(register_access), I2C_TIMEOUT);
+}
+
+// Read data from USB7206 register region.
+// Returns number of bytes read on success or a negative number on error.
+i2c_status_t usb7206_read_reg(struct USB7206* self, uint32_t addr, uint8_t* data, int length) {
+ i2c_status_t status;
+
+ uint8_t register_read[9] = {
+ 0x00, // Buffer address MSB: always 0
+ 0x00, // Buffer address LSB: always 0
+ 0x06, // Number of bytes to write to command block buffer area
+ 0x01, // Direction: 0 = write, 1 = read
+ (uint8_t)length, // Number of bytes to read from register
+ (uint8_t)(addr >> 24), // Register address byte 3
+ (uint8_t)(addr >> 16), // Register address byte 2
+ (uint8_t)(addr >> 8), // Register address byte 1
+ (uint8_t)(addr >> 0), // Register address byte 0
+ };
+
+ status = i2c_transmit(self->addr << 1, register_read, sizeof(register_read), I2C_TIMEOUT);
+ if (status < 0) {
+ return status;
+ }
+
+ status = usb7206_register_access(self);
+ if (status < 0) {
+ return status;
+ }
+
+ uint8_t read[2] = {
+ 0x00, // Buffer address MSB: always 0
+ 0x06, // Buffer address LSB: 6 to skip header
+ };
+
+ status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT);
+ if (status >= 0) {
+ for (uint16_t i = 0; i < sizeof(read); i++) {
+ status = i2c_write(read[i], I2C_TIMEOUT);
+ if (status < 0) {
+ goto error;
+ }
+ }
+ } else {
+ goto error;
+ }
+
+ status = i2c_start((self->addr << 1) | I2C_READ, I2C_TIMEOUT);
+ if (status < 0) {
+ goto error;
+ }
+
+ // Read and ignore buffer length
+ status = i2c_read_ack(I2C_TIMEOUT);
+ if (status < 0) {
+ goto error;
+ }
+
+ for (uint16_t i = 0; i < (length - 1) && status >= 0; i++) {
+ status = i2c_read_ack(I2C_TIMEOUT);
+ if (status >= 0) {
+ data[i] = (uint8_t)status;
+ }
+ }
+
+ if (status >= 0) {
+ status = i2c_read_nack(I2C_TIMEOUT);
+ if (status >= 0) {
+ data[(length - 1)] = (uint8_t)status;
+ }
+ }
+
+error:
+ i2c_stop();
+
+ return (status < 0) ? status : length;
+}
+
+// Read 32-bit value from USB7206 register region.
+// Returns number of bytes read on success or a negative number on error.
+i2c_status_t usb7206_read_reg_32(struct USB7206* self, uint32_t addr, uint32_t* data) {
+ i2c_status_t status;
+
+ // First byte is available length
+ uint8_t bytes[4] = {0, 0, 0, 0};
+
+ status = usb7206_read_reg(self, addr, bytes, sizeof(bytes));
+ if (status < 0) {
+ return status;
+ }
+
+ // Convert from little endian
+ *data = (((uint32_t)bytes[0]) << 0) | (((uint32_t)bytes[1]) << 8) | (((uint32_t)bytes[2]) << 16) | (((uint32_t)bytes[3]) << 24);
+
+ return status;
+}
+
+// Write data to USB7206 register region.
+// Returns number of bytes written on success or a negative number on error.
+i2c_status_t usb7206_write_reg(struct USB7206* self, uint32_t addr, uint8_t* data, int length) {
+ i2c_status_t status;
+
+ uint8_t register_write[9] = {
+ 0x00, // Buffer address MSB: always 0
+ 0x00, // Buffer address LSB: always 0
+ ((uint8_t)length) + 6, // Number of bytes to write to command block buffer area
+ 0x00, // Direction: 0 = write, 1 = read
+ (uint8_t)length, // Number of bytes to write to register
+ (uint8_t)(addr >> 24), // Register address byte 3
+ (uint8_t)(addr >> 16), // Register address byte 2
+ (uint8_t)(addr >> 8), // Register address byte 1
+ (uint8_t)(addr >> 0), // Register address byte 0
+ };
+
+ status = i2c_start((self->addr << 1) | I2C_WRITE, I2C_TIMEOUT);
+ if (status >= 0) {
+ for (uint16_t i = 0; i < sizeof(register_write); i++) {
+ status = i2c_write(register_write[i], I2C_TIMEOUT);
+ if (status < 0) {
+ goto error;
+ }
+ }
+
+ for (uint16_t i = 0; i < length; i++) {
+ status = i2c_write(data[i], I2C_TIMEOUT);
+ if (status < 0) {
+ goto error;
+ }
+ }
+ } else {
+ goto error;
+ }
+
+ i2c_stop();
+
+ status = usb7206_register_access(self);
+ if (status < 0) {
+ goto error;
+ }
+
+error:
+ i2c_stop();
+
+ return (status < 0) ? status : length;
+}
+
+// Write 8-bit value to USB7206 register region.
+// Returns number of bytes written on success or a negative number on error.
+i2c_status_t usb7206_write_reg_8(struct USB7206* self, uint32_t addr, uint8_t data) { return usb7206_write_reg(self, addr, &data, sizeof(data)); }
+
+// Write 32-bit value to USB7206 register region.
+// Returns number of bytes written on success or a negative number on error.
+i2c_status_t usb7206_write_reg_32(struct USB7206* self, uint32_t addr, uint32_t data) {
+ // Convert to little endian
+ uint8_t bytes[4] = {
+ (uint8_t)(data >> 0),
+ (uint8_t)(data >> 8),
+ (uint8_t)(data >> 16),
+ (uint8_t)(data >> 24),
+ };
+
+ return usb7206_write_reg(self, addr, bytes, sizeof(bytes));
+}
+
+// Initialize USB7206.
+// Returns zero on success or a negative number on error.
+int usb7206_init(struct USB7206* self) {
+ i2c_status_t status;
+ uint32_t data;
+
+ // DM and DP are swapped on ports 2 and 3
+ status = usb7206_write_reg_8(self, REG_PRT_SWAP, 0x0C);
+ if (status < 0) {
+ return status;
+ }
+
+ // Disable audio
+ status = usb7206_write_reg_8(self, REG_I2S_FEAT_SEL, 0);
+ if (status < 0) {
+ return status;
+ }
+
+ // Set HFC_DISABLE
+ data = 0;
+ status = usb7206_read_reg_32(self, REG_RUNTIME_FLAGS2, &data);
+ if (status < 0) {
+ return status;
+ }
+ data |= 1;
+ status = usb7206_write_reg_32(self, REG_RUNTIME_FLAGS2, data);
+ if (status < 0) {
+ return status;
+ }
+
+ // Set Vendor ID and Product ID of USB 2 hub
+ status = usb7206_write_reg_32(self, REG_VID, 0x00033384);
+ if (status < 0) {
+ return status;
+ }
+
+ // Set Vendor ID and Product ID of USB 3 hub
+ status = usb7206_write_reg_32(self, REG_USB3_HUB_VID, 0x00043384);
+ if (status < 0) {
+ return status;
+ }
+
+ return 0;
+}
+
+// Attach USB7206.
+// Returns bytes written on success or a negative number on error.
+i2c_status_t usb7206_attach(struct USB7206* self) {
+ uint8_t data[3] = {
+ 0xAA,
+ 0x56,
+ 0x00,
+ };
+
+ return i2c_transmit(self->addr << 1, data, sizeof(data), I2C_TIMEOUT);
+}
+
+struct USB7206_GPIO {
+ struct USB7206* usb7206;
+ uint32_t pf;
+};
+
+struct USB7206_GPIO usb_gpio_sink = {.usb7206 = &usb_hub, .pf = 29}; // UP_SEL = PF29 = GPIO93
+struct USB7206_GPIO usb_gpio_source_left = {.usb7206 = &usb_hub, .pf = 10}; // CL_SEL = PF10 = GPIO74
+struct USB7206_GPIO usb_gpio_source_right = {.usb7206 = &usb_hub, .pf = 25}; // CR_SEL = PF25 = GPIO88
+
+// Set USB7206 GPIO to specified value.
+// Returns zero on success or negative number on error.
+i2c_status_t usb7206_gpio_set(struct USB7206_GPIO* self, bool value) {
+ i2c_status_t status;
+ uint32_t data;
+
+ data = 0;
+ status = usb7206_read_reg_32(self->usb7206, REG_PIO64_OUT, &data);
+ if (status < 0) {
+ return status;
+ }
+
+ if (value) {
+ data |= (((uint32_t)1) << self->pf);
+ } else {
+ data &= ~(((uint32_t)1) << self->pf);
+ }
+ status = usb7206_write_reg_32(self->usb7206, REG_PIO64_OUT, data);
+ if (status < 0) {
+ return status;
+ }
+
+ return 0;
+}
+
+// Initialize USB7206 GPIO.
+// Returns zero on success or a negative number on error.
+i2c_status_t usb7206_gpio_init(struct USB7206_GPIO* self) {
+ i2c_status_t status;
+ uint32_t data;
+
+ // Set programmable function to GPIO
+ status = usb7206_write_reg_8(self->usb7206, REG_PF1_CTL + (self->pf - 1), 0);
+ if (status < 0) {
+ return status;
+ }
+
+ // Set GPIO to false by default
+ usb7206_gpio_set(self, false);
+
+ // Set GPIO to output
+ data = 0;
+ status = usb7206_read_reg_32(self->usb7206, REG_PIO64_OEN, &data);
+ if (status < 0) {
+ return status;
+ }
+
+ data |= (((uint32_t)1) << self->pf);
+ status = usb7206_write_reg_32(self->usb7206, REG_PIO64_OEN, data);
+ if (status < 0) {
+ return status;
+ }
+
+ return 0;
+}
+
+struct PTN5110 {
+ uint8_t addr;
+ uint8_t cc;
+ struct USB7206_GPIO* gpio;
+};
+
+struct PTN5110 usb_sink = {.addr = 0x51, .gpio = &usb_gpio_sink};
+struct PTN5110 usb_source_left = {.addr = 0x52, .gpio = &usb_gpio_source_left};
+struct PTN5110 usb_source_right = {.addr = 0x50, .gpio = &usb_gpio_source_right};
+
+// Initialize PTN5110.
+// Returns zero on success or a negative number on error.
+i2c_status_t ptn5110_init(struct PTN5110* self) {
+ // Set last cc to invalid value, to force update
+ self->cc = 0xFF;
+ // Initialize GPIO
+ return usb7206_gpio_init(self->gpio);
+}
+
+// Read PTN5110 CC_STATUS.
+// Returns zero on success or a negative number on error.
+i2c_status_t ptn5110_get_cc_status(struct PTN5110* self, uint8_t* cc) { return i2c_readReg(self->addr << 1, 0x1D, cc, 1, I2C_TIMEOUT); }
+
+// Set PTN5110 SSMUX orientation.
+// Returns zero on success or a negative number on error.
+i2c_status_t ptn5110_set_ssmux(struct PTN5110* self, bool orientation) { return usb7206_gpio_set(self->gpio, orientation); }
+
+// Write PTN5110 COMMAND.
+// Returns zero on success or negative number on error.
+i2c_status_t ptn5110_command(struct PTN5110* self, uint8_t command) { return i2c_writeReg(self->addr << 1, 0x23, &command, 1, I2C_TIMEOUT); }
+
+// Set orientation of PTN5110 operating as a sink, call this once.
+// Returns zero on success or a negative number on error.
+i2c_status_t ptn5110_sink_set_orientation(struct PTN5110* self) {
+ i2c_status_t status;
+ uint8_t cc;
+
+ status = ptn5110_get_cc_status(self, &cc);
+ if (status < 0) {
+ return status;
+ }
+
+ if ((cc & 0x03) == 0) {
+ status = ptn5110_set_ssmux(self, false);
+ if (status < 0) {
+ return status;
+ }
+ } else {
+ status = ptn5110_set_ssmux(self, true);
+ if (status < 0) {
+ return status;
+ }
+ }
+
+ return 0;
+}
+
+// Update PTN5110 operating as a source, call this repeatedly.
+// Returns zero on success or a negative number on error.
+i2c_status_t ptn5110_source_update(struct PTN5110* self) {
+ i2c_status_t status;
+ uint8_t cc;
+
+ status = ptn5110_get_cc_status(self, &cc);
+ if (status < 0) {
+ return status;
+ }
+
+ if (cc != self->cc) {
+ // WARNING: Setting this here will disable retries
+ self->cc = cc;
+
+ bool connected = false;
+ bool orientation = false;
+ if ((cc & 0x03) == 2) {
+ connected = true;
+ orientation = true;
+ } else if (((cc >> 2) & 0x03) == 2) {
+ connected = true;
+ orientation = false;
+ }
+
+ if (connected) {
+ // Set SS mux orientation
+ status = ptn5110_set_ssmux(self, orientation);
+ if (status < 0) {
+ return status;
+ }
+
+ // Enable source Vbus command
+ status = ptn5110_command(self, 0b01110111);
+ if (status < 0) {
+ return status;
+ }
+ } else {
+ // Disable source Vbus command
+ status = ptn5110_command(self, 0b01100110);
+ if (status < 0) {
+ return status;
+ }
+ }
+ }
+
+ return 0;
+}
+
+void usb_mux_event(void) {
+ // Run this on every 1000th matrix scan
+ static int cycle = 0;
+ if (cycle >= 1000) {
+ cycle = 0;
+ ptn5110_source_update(&usb_source_left);
+ ptn5110_source_update(&usb_source_right);
+ } else {
+ cycle += 1;
+ }
+}
+
+void usb_mux_init(void) {
+ // Run I2C bus at 100 kHz
+ i2c_init();
+
+ // Set up hub
+ usb7206_init(&usb_hub);
+
+ // Set up sink
+ ptn5110_init(&usb_sink);
+ ptn5110_sink_set_orientation(&usb_sink);
+
+ // Set up sources
+ ptn5110_init(&usb_source_left);
+ ptn5110_init(&usb_source_right);
+
+ // Attach hub
+ usb7206_attach(&usb_hub);
+
+ // Ensure orientation is correct after attaching hub
+ // TODO: Find reason why GPIO for sink orientation is reset
+ for (int i = 0; i < 100; i++) {
+ ptn5110_sink_set_orientation(&usb_sink);
+ wait_ms(10);
+ }
+}
diff --git a/keyboards/system76/launch_1/usb_mux.h b/keyboards/system76/launch_1/usb_mux.h
new file mode 100644
index 0000000000..26f84de864
--- /dev/null
+++ b/keyboards/system76/launch_1/usb_mux.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2021 System76
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+void usb_mux_init(void);
+void usb_mux_event(void);
diff --git a/keyboards/system76/layouts.sh b/keyboards/system76/layouts.sh
new file mode 100755
index 0000000000..1c9118562c
--- /dev/null
+++ b/keyboards/system76/layouts.sh
@@ -0,0 +1,75 @@
+#!/usr/bin/env bash
+#
+# This script produces layout data for the System76 Keyboard Configurator.
+#
+# Copyright (C) 2021 System76
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -eEuo pipefail
+
+R=$(git rev-parse --show-toplevel)
+cd "${R}"
+rm -rf .build/layouts
+mkdir -p .build/layouts
+D="$(realpath .build/layouts)"
+
+binary="${D}/keymap"
+source="${binary}.c"
+header="quantum/keycode.h"
+printf "#include <stdio.h>\n" >"$source"
+printf "#include \"%s\"\n\n" "${header}" >>"$source"
+echo "int main(int argc, char **argv) {" >>"$source"
+grep '^ KC_' "$header" |
+ cut -d ' ' -f5 |
+ cut -d ',' -f1 |
+ while read -r keycode; do
+ name=$(echo "${keycode}" | cut -d '_' -f2-)
+ printf " printf(\"%s,0x%%04X\\\n\", $keycode);\n" "${name}" >>"$source"
+ done
+printf "\n return 0;\n}\n" >>"$source"
+gcc -I. "$source" -o "$binary"
+"${binary}" | tee "${D}/keymap.csv"
+
+cd keyboards
+for board in system76/launch_*; do
+ file="$board/$(basename "$board").h"
+ if [ ! -e "$file" ]; then
+ continue
+ fi
+ echo "# ${board}"
+ mkdir -p "${D}/${board}"
+ cp "${D}/keymap.csv" "${D}/${board}"
+ row=0
+ rg \
+ --multiline \
+ --multiline-dotall \
+ --regexp '#define LAYOUT\(.*\) \{.*\}' \
+ "$file" |
+ grep --only-matching '\{.*\}' |
+ sed 's/^{ //' |
+ sed 's/ }$//' |
+ sed 's/, / /g' |
+ while read -r line; do
+ col=0
+ for word in $line; do
+ if [[ "${word}" != "___" ]]; then
+ echo "${word},${row},${col}"
+ fi
+ col=$((col + 1))
+ done
+ row=$((row + 1))
+ done |
+ sort -n |
+ tee "${D}/${board}/layout.csv"
+done
diff --git a/keyboards/system76/readme.md b/keyboards/system76/readme.md
new file mode 100644
index 0000000000..c0ebc942b8
--- /dev/null
+++ b/keyboards/system76/readme.md
@@ -0,0 +1,5 @@
+# System76 Keyboards
+
+Keyboards by [System76](https://system76.com/):
+
+- [launch_1](https://system76.com/accessories/launch)
diff --git a/keyboards/system76/system76_ec.c b/keyboards/system76/system76_ec.c
new file mode 100644
index 0000000000..7fff780e58
--- /dev/null
+++ b/keyboards/system76/system76_ec.c
@@ -0,0 +1,416 @@
+/*
+ * Copyright (C) 2021 System76
+ * Copyright (C) 2021 Jimmy Cassis <KernelOops@outlook.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+
+#include "dynamic_keymap.h"
+#include "raw_hid.h"
+#include "rgb_matrix.h"
+#include "version.h"
+
+enum Command {
+ CMD_PROBE = 1, // Probe for System76 EC protocol
+ CMD_BOARD = 2, // Read board string
+ CMD_VERSION = 3, // Read version string
+ CMD_RESET = 6, // Reset to bootloader
+ CMD_KEYMAP_GET = 9, // Get keyboard map index
+ CMD_KEYMAP_SET = 10, // Set keyboard map index
+ CMD_LED_GET_VALUE = 11, // Get LED value by index
+ CMD_LED_SET_VALUE = 12, // Set LED value by index
+ CMD_LED_GET_COLOR = 13, // Get LED color by index
+ CMD_LED_SET_COLOR = 14, // Set LED color by index
+ CMD_LED_GET_MODE = 15, // Get LED matrix mode and speed
+ CMD_LED_SET_MODE = 16, // Set LED matrix mode and speed
+ CMD_MATRIX_GET = 17, // Get currently pressed keys
+ CMD_LED_SAVE = 18, // Save LED settings to ROM
+ CMD_SET_NO_INPUT = 19, // Enable/disable no input mode
+};
+
+bool input_disabled = false;
+
+#define CMD_LED_INDEX_ALL 0xFF
+
+static bool keymap_get(uint8_t layer, uint8_t output, uint8_t input, uint16_t *value) {
+ if (layer < dynamic_keymap_get_layer_count()) {
+ if (output < MATRIX_ROWS) {
+ if (input < MATRIX_COLS) {
+ *value = dynamic_keymap_get_keycode(layer, output, input);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+static bool keymap_set(uint8_t layer, uint8_t output, uint8_t input, uint16_t value) {
+ if (layer < dynamic_keymap_get_layer_count()) {
+ if (output < MATRIX_ROWS) {
+ if (input < MATRIX_COLS) {
+ dynamic_keymap_set_keycode(layer, output, input, value);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+static bool bootloader_reset = false;
+static bool bootloader_unlocked = false;
+
+void system76_ec_unlock(void) {
+#ifdef RGB_MATRIX_CUSTOM_KB
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_unlocked);
+#endif
+#ifdef SYSTEM76_EC
+ bootloader_unlocked = true;
+#endif
+}
+
+bool system76_ec_is_unlocked(void) { return bootloader_unlocked; }
+
+#ifdef RGB_MATRIX_CUSTOM_KB
+enum Mode {
+ MODE_SOLID_COLOR = 0,
+ MODE_PER_KEY,
+ MODE_CYCLE_ALL,
+ MODE_CYCLE_LEFT_RIGHT,
+ MODE_CYCLE_UP_DOWN,
+ MODE_CYCLE_OUT_IN,
+ MODE_CYCLE_OUT_IN_DUAL,
+ MODE_RAINBOW_MOVING_CHEVRON,
+ MODE_CYCLE_PINWHEEL,
+ MODE_CYCLE_SPIRAL,
+ MODE_RAINDROPS,
+ MODE_SPLASH,
+ MODE_MULTISPLASH,
+ MODE_ACTIVE_KEYS,
+ MODE_DISABLED,
+ MODE_LAST,
+};
+
+// clang-format off
+static enum rgb_matrix_effects mode_map[] = {
+ RGB_MATRIX_SOLID_COLOR,
+ RGB_MATRIX_CUSTOM_raw_rgb,
+ RGB_MATRIX_CYCLE_ALL,
+ RGB_MATRIX_CYCLE_LEFT_RIGHT,
+ RGB_MATRIX_CYCLE_UP_DOWN,
+ RGB_MATRIX_CYCLE_OUT_IN,
+ RGB_MATRIX_CYCLE_OUT_IN_DUAL,
+ RGB_MATRIX_RAINBOW_MOVING_CHEVRON,
+ RGB_MATRIX_CYCLE_PINWHEEL,
+ RGB_MATRIX_CYCLE_SPIRAL,
+ RGB_MATRIX_RAINDROPS,
+ RGB_MATRIX_SPLASH,
+ RGB_MATRIX_MULTISPLASH,
+ RGB_MATRIX_CUSTOM_active_keys,
+ RGB_MATRIX_NONE,
+};
+// clang-format on
+
+_Static_assert(sizeof(mode_map) == MODE_LAST, "mode_map_length");
+
+RGB raw_rgb_data[DRIVER_LED_TOTAL];
+
+// clang-format off
+rgb_config_t layer_rgb[DYNAMIC_KEYMAP_LAYER_COUNT] = {
+ // Layer 0
+ {
+ .enable = 1,
+ .mode = RGB_MATRIX_STARTUP_MODE,
+ .hsv = {
+ .h = RGB_MATRIX_STARTUP_HUE,
+ .s = RGB_MATRIX_STARTUP_SAT,
+ .v = RGB_MATRIX_STARTUP_VAL,
+ },
+ .speed = RGB_MATRIX_STARTUP_SPD,
+ .flags = LED_FLAG_KEYLIGHT,
+ },
+ // Layer 1
+ {
+ .enable = 1,
+ .mode = RGB_MATRIX_CUSTOM_active_keys,
+ .hsv = {
+ .h = RGB_MATRIX_STARTUP_HUE,
+ .s = RGB_MATRIX_STARTUP_SAT,
+ .v = RGB_MATRIX_STARTUP_VAL,
+ },
+ .speed = RGB_MATRIX_STARTUP_SPD,
+ .flags = LED_FLAG_KEYLIGHT,
+ },
+ // Layer 2
+ {
+ .enable = 1,
+ .mode = RGB_MATRIX_CUSTOM_active_keys,
+ .hsv = {
+ .h = RGB_MATRIX_STARTUP_HUE,
+ .s = RGB_MATRIX_STARTUP_SAT,
+ .v = RGB_MATRIX_STARTUP_VAL,
+ },
+ .speed = RGB_MATRIX_STARTUP_SPD,
+ .flags = LED_FLAG_KEYLIGHT,
+ },
+ // Layer 3
+ {
+ .enable = 1,
+ .mode = RGB_MATRIX_CUSTOM_active_keys,
+ .hsv = {
+ .h = RGB_MATRIX_STARTUP_HUE,
+ .s = RGB_MATRIX_STARTUP_SAT,
+ .v = RGB_MATRIX_STARTUP_VAL,
+ },
+ .speed = RGB_MATRIX_STARTUP_SPD,
+ .flags = LED_FLAG_KEYLIGHT,
+ },
+};
+// clang-format on
+
+// Read or write EEPROM data with checks for being inside System76 EC region.
+static bool system76_ec_eeprom_op(void *buf, uint16_t size, uint16_t offset, bool write) {
+ uint16_t addr = SYSTEM76_EC_EEPROM_ADDR + offset;
+ uint16_t end = addr + size;
+ // Check for overflow and zero size
+ if ((end > addr) && (addr >= SYSTEM76_EC_EEPROM_ADDR) && (end <= (SYSTEM76_EC_EEPROM_ADDR + SYSTEM76_EC_EEPROM_SIZE))) {
+ if (write) {
+ eeprom_update_block((const void *)buf, (void *)addr, size);
+ } else {
+ eeprom_read_block((void *)buf, (const void *)addr, size);
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+// Read or write EEPROM RGB parameters.
+void system76_ec_rgb_eeprom(bool write) {
+ uint16_t layer_rgb_size = sizeof(layer_rgb);
+ system76_ec_eeprom_op((void *)layer_rgb, layer_rgb_size, 0, write);
+ system76_ec_eeprom_op((void *)raw_rgb_data, sizeof(raw_rgb_data), layer_rgb_size, write);
+}
+
+// Update RGB parameters on layer change.
+void system76_ec_rgb_layer(layer_state_t layer_state) {
+ if (!bootloader_unlocked) {
+ uint8_t layer = get_highest_layer(layer_state);
+ if (layer < DYNAMIC_KEYMAP_LAYER_COUNT) {
+ rgb_matrix_config = layer_rgb[layer];
+ }
+ }
+}
+#endif // RGB_MATRIX_CUSTOM_KB
+
+void raw_hid_receive(uint8_t *data, uint8_t length) {
+ // Error response by default, set to success by commands
+ data[1] = 1;
+
+ switch (data[0]) {
+ case CMD_PROBE:
+ // Signature
+ data[2] = 0x76;
+ data[3] = 0xEC;
+ // Version
+ data[4] = 0x01;
+ data[1] = 0;
+ break;
+ case CMD_BOARD:
+ strncpy((char *)&data[2], QMK_KEYBOARD, length - 2);
+ data[1] = 0;
+ break;
+ case CMD_VERSION:
+ strncpy((char *)&data[2], QMK_VERSION, length - 2);
+ data[1] = 0;
+ break;
+ case CMD_RESET:
+ if (bootloader_unlocked) {
+ data[1] = 0;
+ bootloader_reset = true;
+ }
+ break;
+ case CMD_KEYMAP_GET: {
+ uint16_t value = 0;
+ if (keymap_get(data[2], data[3], data[4], &value)) {
+ data[5] = (uint8_t)value;
+ data[6] = (uint8_t)(value >> 8);
+ data[1] = 0;
+ }
+ } break;
+ case CMD_KEYMAP_SET: {
+ uint16_t value = ((uint16_t)data[5]) | (((uint16_t)data[6]) << 8);
+ if (keymap_set(data[2], data[3], data[4], value)) {
+ data[1] = 0;
+ }
+ } break;
+#ifdef RGB_MATRIX_CUSTOM_KB
+ case CMD_LED_GET_VALUE:
+ if (!bootloader_unlocked) {
+ uint8_t index = data[2];
+ for (uint8_t layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
+ if (index == (0xF0 | layer)) {
+ data[3] = layer_rgb[layer].hsv.v;
+ data[4] = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
+ data[1] = 0;
+ break;
+ }
+ }
+ }
+ break;
+ case CMD_LED_SET_VALUE:
+ if (!bootloader_unlocked) {
+ uint8_t index = data[2];
+ uint8_t value = data[3];
+ if (value >= RGB_MATRIX_MAXIMUM_BRIGHTNESS) {
+ value = RGB_MATRIX_MAXIMUM_BRIGHTNESS;
+ }
+ for (uint8_t layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
+ if (index == (0xF0 | layer)) {
+ layer_rgb[layer].hsv.v = value;
+ data[1] = 0;
+ system76_ec_rgb_layer(layer_state);
+ break;
+ }
+ }
+ }
+ break;
+ case CMD_LED_GET_COLOR:
+ if (!bootloader_unlocked) {
+ uint8_t index = data[2];
+ if (index < DRIVER_LED_TOTAL) {
+ data[3] = raw_rgb_data[index].r;
+ data[4] = raw_rgb_data[index].g;
+ data[5] = raw_rgb_data[index].b;
+ data[1] = 0;
+ } else {
+ for (uint8_t layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
+ if (index == (0xF0 | layer)) {
+ data[3] = layer_rgb[layer].hsv.h;
+ data[4] = layer_rgb[layer].hsv.s;
+ data[5] = 0;
+ data[1] = 0;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case CMD_LED_SET_COLOR:
+ if (!bootloader_unlocked) {
+ uint8_t index = data[2];
+
+ RGB rgb = {
+ .r = data[3],
+ .g = data[4],
+ .b = data[5],
+ };
+
+ if (index < DRIVER_LED_TOTAL) {
+ raw_rgb_data[index] = rgb;
+ data[1] = 0;
+ } else {
+ for (uint8_t layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
+ if (index == (0xF0 | layer)) {
+ layer_rgb[layer].hsv.h = rgb.r;
+ layer_rgb[layer].hsv.s = rgb.g;
+ // Ignore rgb.b
+ data[1] = 0;
+ system76_ec_rgb_layer(layer_state);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case CMD_LED_GET_MODE:
+ if (!bootloader_unlocked) {
+ uint8_t layer = data[2];
+ if (layer < DYNAMIC_KEYMAP_LAYER_COUNT) {
+ enum rgb_matrix_effects mode = layer_rgb[layer].mode;
+ for (uint8_t i = 0; i < MODE_LAST; i++) {
+ if (mode_map[i] == mode) {
+ data[3] = i;
+ data[4] = layer_rgb[layer].speed;
+ data[1] = 0;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case CMD_LED_SET_MODE:
+ if (!bootloader_unlocked) {
+ uint8_t layer = data[2];
+ uint8_t mode = data[3];
+ uint8_t speed = data[4];
+ if (layer < DYNAMIC_KEYMAP_LAYER_COUNT && mode < MODE_LAST) {
+ layer_rgb[layer].mode = mode_map[mode];
+ layer_rgb[layer].speed = speed;
+ data[1] = 0;
+ system76_ec_rgb_layer(layer_state);
+ }
+ }
+ break;
+ case CMD_LED_SAVE:
+ if (!bootloader_unlocked) {
+ system76_ec_rgb_eeprom(true);
+ data[1] = 0;
+ }
+ break;
+#endif // RGB_MATRIX_CUSTOM_KB
+ case CMD_MATRIX_GET: {
+ // TODO: Improve performance?
+ data[2] = matrix_rows();
+ data[3] = matrix_cols();
+
+ uint8_t byte = 4;
+ uint8_t bit = 0;
+
+ for (uint8_t row = 0; row < matrix_rows(); row++) {
+ for (uint8_t col = 0; col < matrix_cols(); col++) {
+ if (byte < length) {
+ if (matrix_is_on(row, col)) {
+ data[byte] |= (1 << bit);
+ } else {
+ data[byte] &= ~(1 << bit);
+ }
+ }
+
+ bit++;
+ if (bit >= 8) {
+ byte++;
+ bit = 0;
+ }
+ }
+ }
+ data[1] = 0;
+ } break;
+ case CMD_SET_NO_INPUT: {
+ clear_keyboard();
+ input_disabled = data[2] != 0;
+ data[1] = 0;
+ } break;
+ }
+
+ raw_hid_send(data, length);
+
+ if (bootloader_reset) {
+ // Give host time to read response
+ wait_ms(100);
+ // Jump to the bootloader
+ bootloader_jump();
+ }
+}
diff --git a/keyboards/tada68/rules.mk b/keyboards/tada68/rules.mk
index e639cb4961..5f9ea244df 100755
--- a/keyboards/tada68/rules.mk
+++ b/keyboards/tada68/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/takashicompany/center_enter/info.json b/keyboards/takashicompany/center_enter/info.json
index f0f3af1f39..cd7861f453 100644
--- a/keyboards/takashicompany/center_enter/info.json
+++ b/keyboards/takashicompany/center_enter/info.json
@@ -5,187 +5,44 @@
"layouts": {
"LAYOUT": {
"layout": [
- {
- "label": "201",
- "x": 0,
- "y": 0,
- "w": 1.5
- },
- {
- "label": "1",
- "x": 1.5,
- "y": 0
- },
- {
- "label": "2",
- "x": 2.5,
- "y": 0
- },
- {
- "label": "3",
- "x": 3.5,
- "y": 0
- },
- {
- "label": "4",
- "x": 4.5,
- "y": 0
- },
- {
- "label": "5",
- "x": 5.5,
- "y": 0
- },
- {
- "label": "901",
- "x": 6.75,
- "y": 0,
- "w": 1.25,
- "h": 2
- },
- {
- "label": "6",
- "x": 8,
- "y": 0
- },
- {
- "label": "7",
- "x": 9,
- "y": 0
- },
- {
- "label": "8",
- "x": 10,
- "y": 0
- },
- {
- "label": "9",
- "x": 11,
- "y": 0
- },
- {
- "label": "10",
- "x": 12,
- "y": 0
- },
- {
- "label": "301",
- "x": 0,
- "y": 1,
- "w": 1.75
- },
- {
- "label": "11",
- "x": 1.75,
- "y": 1
- },
- {
- "label": "12",
- "x": 2.75,
- "y": 1
- },
- {
- "label": "13",
- "x": 3.75,
- "y": 1
- },
- {
- "label": "14",
- "x": 4.75,
- "y": 1
- },
- {
- "label": "15",
- "x": 5.75,
- "y": 1
- },
- {
- "label": "16",
- "x": 8,
- "y": 1
- },
- {
- "label": "17",
- "x": 9,
- "y": 1
- },
- {
- "label": "18",
- "x": 10,
- "y": 1
- },
- {
- "label": "19",
- "x": 11,
- "y": 1
- },
- {
- "label": "20",
- "x": 12,
- "y": 1
- },
- {
- "label": "401",
- "x": 0,
- "y": 2,
- "w": 2
- },
- {
- "label": "21",
- "x": 2,
- "y": 2
- },
- {
- "label": "22",
- "x": 3,
- "y": 2
- },
- {
- "label": "23",
- "x": 4,
- "y": 2
- },
- {
- "label": "24",
- "x": 5,
- "y": 2
- },
- {
- "label": "25",
- "x": 6,
- "y": 2
- },
- {
- "label": "31",
- "x": 7,
- "y": 2
- },
- {
- "label": "26",
- "x": 8,
- "y": 2
- },
- {
- "label": "27",
- "x": 9,
- "y": 2
- },
- {
- "label": "28",
- "x": 10,
- "y": 2
- },
- {
- "label": "29",
- "x": 11,
- "y": 2
- },
- {
- "label": "30",
- "x": 12,
- "y": 2
- }
+ {"label":"Tab", "x":0, "y":0, "w":1.5},
+ {"label":"Q", "x":1.5, "y":0},
+ {"label":"W", "x":2.5, "y":0},
+ {"label":"E", "x":3.5, "y":0},
+ {"label":"R", "x":4.5, "y":0},
+ {"label":"T", "x":5.5, "y":0},
+ {"label":"Y", "x":8, "y":0},
+ {"label":"U", "x":9, "y":0},
+ {"label":"I", "x":10, "y":0},
+ {"label":"O", "x":11, "y":0},
+ {"label":"P", "x":12, "y":0},
+
+ {"label":"Ctrl", "x":0, "y":1, "w":1.75},
+ {"label":"A", "x":1.75, "y":1},
+ {"label":"S", "x":2.75, "y":1},
+ {"label":"D", "x":3.75, "y":1},
+ {"label":"F", "x":4.75, "y":1},
+ {"label":"G", "x":5.75, "y":1},
+ {"label":"Switch Language", "x":6.75, "y":0, "w":1.25, "h":2},
+ {"label":"H", "x":8, "y":1},
+ {"label":"J", "x":9, "y":1},
+ {"label":"K", "x":10, "y":1},
+ {"label":"L", "x":11, "y":1},
+ {"label":"Enter", "x":12, "y":1},
+
+ {"label":"Shift", "x":0, "y":2, "w":2},
+ {"label":"Z", "x":2, "y":2},
+ {"label":"X", "x":3, "y":2},
+ {"label":"C", "x":4, "y":2},
+ {"label":"V", "x":5, "y":2},
+ {"label":"B", "x":6, "y":2},
+ {"label":"Space", "x":7, "y":2},
+ {"label":"N", "x":8, "y":2},
+ {"label":"M", "x":9, "y":2},
+ {"label":",<", "x":10, "y":2},
+ {"label":".>", "x":11, "y":2},
+ {"label":"Backspace", "x":12, "y":2}
]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/takashicompany/center_enter/rules.mk b/keyboards/takashicompany/center_enter/rules.mk
index d8e321ce2e..43d5350abb 100644
--- a/keyboards/takashicompany/center_enter/rules.mk
+++ b/keyboards/takashicompany/center_enter/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/takashicompany/compacx/rules.mk b/keyboards/takashicompany/compacx/rules.mk
index ed3cc7866f..52deaa5d04 100644
--- a/keyboards/takashicompany/compacx/rules.mk
+++ b/keyboards/takashicompany/compacx/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/takashicompany/dogtag/config.h b/keyboards/takashicompany/dogtag/config.h
new file mode 100644
index 0000000000..542a44ce62
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 takashicompany
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0018
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT DogTag
+
+/* key matrix size */
+#define MATRIX_ROWS 2 * 2
+#define MATRIX_COLS 5
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B2, B6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 }
+#define MATRIX_ROW_PINS_RIGHT { B2, B6 }
+#define MATRIX_COL_PINS_RIGHT { B1, F7, F6, F5, F4 }
+
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODER_RESOLUTION 1
+#define ENCODERS_PAD_A { D4 }
+#define ENCODERS_PAD_B { C6 }
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 3 * 2
+# define RGBLED_SPLIT {3, 3}
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/takashicompany/dogtag/dogtag.c b/keyboards/takashicompany/dogtag/dogtag.c
new file mode 100644
index 0000000000..459ca9d3f8
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/dogtag.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "dogtag.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_MS_WH_DOWN);
+ } else {
+ tap_code(KC_MS_WH_UP);
+ }
+
+ return true;
+}
diff --git a/keyboards/takashicompany/dogtag/dogtag.h b/keyboards/takashicompany/dogtag/dogtag.h
new file mode 100644
index 0000000000..f2b7f5f601
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/dogtag.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ l01, l02, l03, l04, r01, r02, r03, r04,\
+ l05, l06, l07, l08, l09, r05, r06, r07, r08, r09 \
+) { \
+ { l01, l02, l03, l04, KC_NO }, \
+ { l05, l06, l07, l08, l09 }, \
+ { KC_NO, r01, r02, r03, r04,}, \
+ { r05, r06, r07, r08, r09 } \
+}
diff --git a/keyboards/takashicompany/dogtag/info.json b/keyboards/takashicompany/dogtag/info.json
new file mode 100644
index 0000000000..9dad380b70
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "DogTag",
+ "url": "https://github.com/takashicompany/dogtag",
+ "maintainer": "takashicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 1,
+ "y": 0
+ },
+ {
+ "x": 2,
+ "y": 0
+ },
+ {
+ "x": 3,
+ "y": 0
+ },
+ {
+ "x": 7,
+ "y": 0
+ },
+ {
+ "x": 8,
+ "y": 0
+ },
+ {
+ "x": 9,
+ "y": 0
+ },
+ {
+ "x": 10,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 1
+ },
+ {
+ "x": 1,
+ "y": 1
+ },
+ {
+ "x": 2,
+ "y": 1
+ },
+ {
+ "x": 3,
+ "y": 1
+ },
+ {
+ "x": 7,
+ "y": 1
+ },
+ {
+ "x": 8,
+ "y": 1
+ },
+ {
+ "x": 9,
+ "y": 1
+ },
+ {
+ "x": 10,
+ "y": 1
+ },
+ {
+ "x": 4,
+ "y": 2
+ },
+ {
+ "x": 6,
+ "y": 2
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/takashicompany/dogtag/keymaps/default/keymap.c b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c
new file mode 100644
index 0000000000..790d1b8126
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ LT(1, KC_ESC), KC_Q, KC_W, KC_E, KC_Y, KC_U, KC_I, KC_O,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_SPC, KC_TAB, KC_H, KC_J, KC_K, KC_L
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_K, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/takashicompany/dogtag/keymaps/via/config.h b/keyboards/takashicompany/dogtag/keymaps/via/config.h
new file mode 100644
index 0000000000..2ae708b32d
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021 takashicompany
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 16 \ No newline at end of file
diff --git a/keyboards/takashicompany/dogtag/keymaps/via/keymap.c b/keyboards/takashicompany/dogtag/keymaps/via/keymap.c
new file mode 100644
index 0000000000..790d1b8126
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/keymaps/via/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ LT(1, KC_ESC), KC_Q, KC_W, KC_E, KC_Y, KC_U, KC_I, KC_O,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_SPC, KC_TAB, KC_H, KC_J, KC_K, KC_L
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_K, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
diff --git a/keyboards/takashicompany/dogtag/keymaps/via/rules.mk b/keyboards/takashicompany/dogtag/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/takashicompany/dogtag/readme.md b/keyboards/takashicompany/dogtag/readme.md
new file mode 100644
index 0000000000..a68ea6f53b
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/readme.md
@@ -0,0 +1,37 @@
+# DogTag
+
+![dogtag](https://github.com/takashicompany/dogtag/blob/master/images/qmk.jpg?raw=true)
+
+DogTag is a compact macro pad with 9 keys.
+It is assembled from a PCB no larger than 100mm x 100mm.
+It is reversible and can be used as a split macro pad by connecting two units with a TRRS cable.
+Other features include a rotary encoder and MX sockets for hot-swapping of keyswitches.
+LED underglow is also available.
+
+DogTagは9キーのコンパクトなマクロパッドです。
+100mm x 100mm 以内のPCBから組み立てます。
+リバーシブルに対応しており、2台をTRRSケーブルで接続することで分割型のマクロパッドとしても使用できます。
+その他にもロータリーエンコーダの搭載やMXソケットによるキースイッチの付け替え(ホットスワップ)も可能です。
+LEDによるアンダーグロウも可能です。
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/dogtag
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/dogtag:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/dogtag:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/takashicompany/dogtag/rules.mk b/keyboards/takashicompany/dogtag/rules.mk
new file mode 100644
index 0000000000..dc6f5127fc
--- /dev/null
+++ b/keyboards/takashicompany/dogtag/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/takashicompany/endzone34/endzone34.c b/keyboards/takashicompany/endzone34/endzone34.c
index 5b31490547..f96c6b3f35 100644
--- a/keyboards/takashicompany/endzone34/endzone34.c
+++ b/keyboards/takashicompany/endzone34/endzone34.c
@@ -15,3 +15,53 @@
*/
#include "endzone34.h"
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+//Variable that stores the number of times the key was pressed
+static uint16_t press_count = 0;
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+
+ // Increment the counter when a key is pressed
+ if (record->event.pressed) {
+ press_count++;
+ }
+
+ return process_record_user(keycode, record);
+}
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+
+ if (!oled_task_user()) { return false; }
+
+ static const char PROGMEM my_logo[] = {
+ 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0xe9, 0x0f, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0xbf, 0xa0, 0xa0, 0xa7, 0xa5, 0xa5, 0xa5, 0xa5, 0x25, 0x25, 0x3c, 0x00, 0x1f,
+ 0x20, 0x3e, 0x02, 0x3e, 0x20, 0x1f, 0x20, 0x2e, 0x2a, 0x2e, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
+ 0x87, 0x44, 0x24, 0x14, 0x0c, 0x00, 0xc0, 0xa0, 0x90, 0x88, 0x87, 0x00, 0xe0, 0x10, 0xd0, 0x50,
+ 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0x50, 0x10, 0xf0, 0x00,
+ 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00, 0x03, 0x04, 0x05, 0x05,
+ 0x05, 0x04, 0x03, 0x04, 0x07, 0x00, 0x07, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x07, 0x00
+ };
+
+ oled_write_raw_P(my_logo, sizeof(my_logo));
+ oled_set_cursor(0, 5);
+
+ oled_write_ln_P(PSTR("Layer"), false);
+ oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false);
+
+ oled_write_ln_P(PSTR(" "), false);
+ oled_write_ln_P(PSTR(" "), false);
+
+ oled_write_ln_P(PSTR("Count"), false);
+ oled_write_ln(get_u16_str(press_count, ' '), false);
+
+ return false;
+
+}
+#endif
diff --git a/keyboards/takashicompany/endzone34/keymaps/default/keymap.c b/keyboards/takashicompany/endzone34/keymaps/default/keymap.c
index e4bcb3625a..7c30fb231e 100644
--- a/keyboards/takashicompany/endzone34/keymaps/default/keymap.c
+++ b/keyboards/takashicompany/endzone34/keymaps/default/keymap.c
@@ -41,73 +41,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270;
-}
-
-//Variable that stores the number of times the key was pressed
-static uint16_t press_count = 0;
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
- // Increment the counter when a key is pressed
- if (record->event.pressed) {
- press_count++;
- }
-
- return true;
-}
-
-#ifdef OLED_ENABLE
-
-static void render_logo(void) {
-
- static const char PROGMEM my_logo[] = {
- 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0xe9, 0x0f, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x80, 0x80, 0xbf, 0xa0, 0xa0, 0xa7, 0xa5, 0xa5, 0xa5, 0xa5, 0x25, 0x25, 0x3c, 0x00, 0x1f,
- 0x20, 0x3e, 0x02, 0x3e, 0x20, 0x1f, 0x20, 0x2e, 0x2a, 0x2e, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
- 0x87, 0x44, 0x24, 0x14, 0x0c, 0x00, 0xc0, 0xa0, 0x90, 0x88, 0x87, 0x00, 0xe0, 0x10, 0xd0, 0x50,
- 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0x50, 0x10, 0xf0, 0x00,
- 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00, 0x03, 0x04, 0x05, 0x05,
- 0x05, 0x04, 0x03, 0x04, 0x07, 0x00, 0x07, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x07, 0x00
- };
-
- oled_write_raw_P(my_logo, sizeof(my_logo));
-}
-
-bool oled_task_user(void) {
-
- render_logo();
-
- oled_set_cursor(0, 5);
-
- oled_write_ln_P(PSTR("Layer"), false);
- uint8_t n = get_highest_layer(layer_state);
- char layer_str[4];
- layer_str[3] = '\0';
- layer_str[2] = '0' + n % 10;
- layer_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- layer_str[0] = n / 10 ? '0' + n / 10 : ' ';
-
- oled_write_ln(layer_str, false);
-
- oled_write_ln_P(PSTR(" "), false);
- oled_write_ln_P(PSTR(" "), false);
-
- oled_write_ln_P(PSTR("Count"), false);
- uint16_t m = press_count;
- char count_str[6];
- count_str[5] = '\0';
- count_str[4] = '0' + m % 10;
- count_str[3] = (m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
- count_str[2] = (m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
- count_str[1] = (m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
- count_str[0] = m / 10 ? '0' + m / 10 : ' ';
-
- oled_write_ln(count_str, false);
-
- return false;
-}
-#endif
diff --git a/keyboards/takashicompany/endzone34/keymaps/via/config.h b/keyboards/takashicompany/endzone34/keymaps/via/config.h
new file mode 100644
index 0000000000..ed834d1aef
--- /dev/null
+++ b/keyboards/takashicompany/endzone34/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021 takashicompany
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8 \ No newline at end of file
diff --git a/keyboards/takashicompany/endzone34/keymaps/via/keymap.c b/keyboards/takashicompany/endzone34/keymaps/via/keymap.c
index 5dbc4e13cf..336dce2f54 100644
--- a/keyboards/takashicompany/endzone34/keymaps/via/keymap.c
+++ b/keyboards/takashicompany/endzone34/keymaps/via/keymap.c
@@ -18,26 +18,50 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
- LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT,
- SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC,
+ LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT,
+ SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC,
ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1)),
LAYOUT(
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
LAYOUT(
- KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
- KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL,
+ KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
LAYOUT(
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
- RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
- RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO),
+
+ LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO),
+
+ LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO),
+
+ LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO)
};
diff --git a/keyboards/takashicompany/endzone34/keymaps/via/rules.mk b/keyboards/takashicompany/endzone34/keymaps/via/rules.mk
index 036bd6d1c3..36b7ba9cbc 100644
--- a/keyboards/takashicompany/endzone34/keymaps/via/rules.mk
+++ b/keyboards/takashicompany/endzone34/keymaps/via/rules.mk
@@ -1 +1,2 @@
-VIA_ENABLE = yes \ No newline at end of file
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/takashicompany/endzone34/rules.mk b/keyboards/takashicompany/endzone34/rules.mk
index 19fb27ff1b..653c8343e7 100644
--- a/keyboards/takashicompany/endzone34/rules.mk
+++ b/keyboards/takashicompany/endzone34/rules.mk
@@ -2,7 +2,7 @@
MCU = atmega32u4
# Bootloader selection
-BOOTLOADER = atmel-dfu
+BOOTLOADER = caterina
# Build Options
# change yes to no to disable
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/takashicompany/heavy_left/config.h b/keyboards/takashicompany/heavy_left/config.h
index e7f37f251c..b5a16def68 100644
--- a/keyboards/takashicompany/heavy_left/config.h
+++ b/keyboards/takashicompany/heavy_left/config.h
@@ -143,3 +143,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0
+
+#define EE_HANDS \ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/keymaps/takashicompany/keymap.c b/keyboards/takashicompany/heavy_left/keymaps/takashicompany/keymap.c
new file mode 100644
index 0000000000..11beb28ca0
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/keymaps/takashicompany/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+#include "keymap_jp.h"
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ KC_00 = USER00,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_JYEN, KC_BSPC, KC_DEL,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_HOME,
+ KC_P4, KC_P5, KC_P6, KC_PCMM,KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_END,
+ KC_P1, KC_P2, KC_P3, KC_PEQL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, KC_PGUP,
+ KC_P0, KC_00, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, LALT_T(KC_LANG2), LALT_T(KC_LANG2), LSFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MO(3)
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_00:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ return false;
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/keymaps/takashicompany/rules.mk b/keyboards/takashicompany/heavy_left/keymaps/takashicompany/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/keymaps/takashicompany/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/rules.mk b/keyboards/takashicompany/heavy_left/rules.mk
index d4e19e6546..ce3c5bfaeb 100644
--- a/keyboards/takashicompany/heavy_left/rules.mk
+++ b/keyboards/takashicompany/heavy_left/rules.mk
@@ -12,12 +12,9 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD=yes \ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/info.json b/keyboards/takashicompany/qoolee/info.json
index b2245a91c7..56ef36b6e9 100644
--- a/keyboards/takashicompany/qoolee/info.json
+++ b/keyboards/takashicompany/qoolee/info.json
@@ -1,156 +1,48 @@
{
"keyboard_name": "QooLee",
"url": "https://github.com/takashicompany/qoolee",
- "maintainer": "takachicompany",
+ "maintainer": "takashicompany",
"layouts": {
"LAYOUT": {
"layout": [
- {
- "x": 0,
- "y": 0,
- "w": 1.5
- },
- {
- "x": 1.5,
- "y": 0
- },
- {
- "x": 2.5,
- "y": 0
- },
- {
- "x": 3.5,
- "y": 0
- },
- {
- "x": 4.5,
- "y": 0
- },
- {
- "x": 5.5,
- "y": 0
- },
- {
- "x": 6.5,
- "y": 0
- },
- {
- "x": 7.5,
- "y": 0
- },
- {
- "x": 8.5,
- "y": 0
- },
- {
- "x": 9.5,
- "y": 0
- },
- {
- "x": 10.5,
- "y": 0
- },
- {
- "x": 11.75,
- "y": 0,
- "w": 1.25,
- "h": 2
- },
- {
- "x": 0,
- "y": 1,
- "w": 1.75
- },
- {
- "x": 1.75,
- "y": 1
- },
- {
- "x": 2.75,
- "y": 1
- },
- {
- "x": 3.75,
- "y": 1
- },
- {
- "x": 4.75,
- "y": 1
- },
- {
- "x": 5.75,
- "y": 1
- },
- {
- "x": 6.75,
- "y": 1
- },
- {
- "x": 7.75,
- "y": 1
- },
- {
- "x": 8.75,
- "y": 1
- },
- {
- "x": 9.75,
- "y": 1
- },
- {
- "x": 10.75,
- "y": 1
- },
- {
- "x": 0,
- "y": 2,
- "w": 2
- },
- {
- "x": 2,
- "y": 2
- },
- {
- "x": 3,
- "y": 2
- },
- {
- "x": 4,
- "y": 2
- },
- {
- "x": 5,
- "y": 2
- },
- {
- "x": 6,
- "y": 2
- },
- {
- "x": 7,
- "y": 2
- },
- {
- "x": 8,
- "y": 2
- },
- {
- "x": 9,
- "y": 2
- },
- {
- "x": 10,
- "y": 2
- },
- {
- "x": 11,
- "y": 2
- },
- {
- "x": 12,
- "y": 2
- }
+ {"x":0, "y":0, "w":1.5},
+ {"x":1.5, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+
+ {"x":0, "y":1, "w":1.75},
+ {"x":1.75, "y":1},
+ {"x":2.75, "y":1},
+ {"x":3.75, "y":1},
+ {"x":4.75, "y":1},
+ {"x":5.75, "y":1},
+ {"x":6.75, "y":1},
+ {"x":7.75, "y":1},
+ {"x":8.75, "y":1},
+ {"x":9.75, "y":1},
+ {"x":10.75, "y":1},
+ {"x":11.75, "y":0, "w":1.25, "h":2},
+
+ {"x":0, "y":2, "w":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":8, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2}
]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/takashicompany/qoolee/rules.mk b/keyboards/takashicompany/qoolee/rules.mk
index 314fa98118..2b0013386e 100644
--- a/keyboards/takashicompany/qoolee/rules.mk
+++ b/keyboards/takashicompany/qoolee/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/takashicompany/radialex/config.h b/keyboards/takashicompany/radialex/config.h
new file mode 100644
index 0000000000..ee6e958f9c
--- /dev/null
+++ b/keyboards/takashicompany/radialex/config.h
@@ -0,0 +1,139 @@
+/*
+Copyright 2021 takashicompany
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0019
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT Radialex
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B6, D4, C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 12
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/takashicompany/radialex/info.json b/keyboards/takashicompany/radialex/info.json
new file mode 100644
index 0000000000..d78e301ee9
--- /dev/null
+++ b/keyboards/takashicompany/radialex/info.json
@@ -0,0 +1,191 @@
+{
+ "keyboard_name": "Radialex",
+ "url": "https://github.com/takashicompany/radialex",
+ "maintainer": "takashicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "x": 1,
+ "y": 0
+ },
+ {
+ "x": 2,
+ "y": 0
+ },
+ {
+ "x": 3,
+ "y": 0
+ },
+ {
+ "x": 4,
+ "y": 0
+ },
+ {
+ "x": 5,
+ "y": 0
+ },
+ {
+ "x": 9,
+ "y": 0
+ },
+ {
+ "x": 10,
+ "y": 0
+ },
+ {
+ "x": 11,
+ "y": 0
+ },
+ {
+ "x": 12,
+ "y": 0
+ },
+ {
+ "x": 13,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 1
+ },
+ {
+ "x": 1,
+ "y": 1
+ },
+ {
+ "x": 2,
+ "y": 1
+ },
+ {
+ "x": 3,
+ "y": 1
+ },
+ {
+ "x": 4,
+ "y": 1
+ },
+ {
+ "x": 5,
+ "y": 1
+ },
+ {
+ "x": 7,
+ "y": 1
+ },
+ {
+ "x": 9,
+ "y": 1
+ },
+ {
+ "x": 10,
+ "y": 1
+ },
+ {
+ "x": 11,
+ "y": 1
+ },
+ {
+ "x": 12,
+ "y": 1
+ },
+ {
+ "x": 13,
+ "y": 1
+ },
+ {
+ "x": 14,
+ "y": 1
+ },
+ {
+ "x": 0,
+ "y": 2
+ },
+ {
+ "x": 1,
+ "y": 2
+ },
+ {
+ "x": 2,
+ "y": 2
+ },
+ {
+ "x": 3,
+ "y": 2
+ },
+ {
+ "x": 4,
+ "y": 2
+ },
+ {
+ "x": 5,
+ "y": 2
+ },
+ {
+ "x": 9,
+ "y": 2
+ },
+ {
+ "x": 10,
+ "y": 2
+ },
+ {
+ "x": 11,
+ "y": 2
+ },
+ {
+ "x": 12,
+ "y": 2
+ },
+ {
+ "x": 13,
+ "y": 2
+ },
+ {
+ "x": 14,
+ "y": 2
+ },
+ {
+ "x": 2,
+ "y": 3
+ },
+ {
+ "x": 3,
+ "y": 3
+ },
+ {
+ "x": 4,
+ "y": 3
+ },
+ {
+ "x": 5,
+ "y": 3
+ },
+ {
+ "x": 6,
+ "y": 3
+ },
+ {
+ "x": 8,
+ "y": 3
+ },
+ {
+ "x": 9,
+ "y": 3
+ },
+ {
+ "x": 10,
+ "y": 3
+ },
+ {
+ "x": 11,
+ "y": 3
+ },
+ {
+ "x": 12,
+ "y": 3
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/takashicompany/radialex/keymaps/default/keymap.c b/keyboards/takashicompany/radialex/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ad8274e432
--- /dev/null
+++ b/keyboards/takashicompany/radialex/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ RADIALEX = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_ESC, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, KC_DEL,
+ KC_LSFT, SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_LCTL, CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, SFT_T(LSFT(KC_LBRC)), LSFT(KC_LBRC), LSFT(KC_SLSH), LSFT(KC_MINS), LSFT(KC_RO), LSFT(KC_SCLN), LSFT(KC_QUOT), LSFT(KC_RBRC), LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RADIALEX:
+ if (record->event.pressed) {
+ SEND_STRING("Radialex");
+ rgblight_toggle();
+ }
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/takashicompany/radialex/keymaps/via/config.h b/keyboards/takashicompany/radialex/keymaps/via/config.h
new file mode 100644
index 0000000000..74f9e9e64f
--- /dev/null
+++ b/keyboards/takashicompany/radialex/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021 takashicompany
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
diff --git a/keyboards/takashicompany/radialex/keymaps/via/keymap.c b/keyboards/takashicompany/radialex/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ce9c9d78ea
--- /dev/null
+++ b/keyboards/takashicompany/radialex/keymaps/via/keymap.c
@@ -0,0 +1,89 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define RADIALEX USER00
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_ESC, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, KC_DEL,
+ KC_LSFT, SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_LCTL, CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, SFT_T(LSFT(KC_LBRC)), LSFT(KC_LBRC), LSFT(KC_SLSH), LSFT(KC_MINS), LSFT(KC_RO), LSFT(KC_SCLN), LSFT(KC_QUOT), LSFT(KC_RBRC), LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RADIALEX:
+ if (record->event.pressed) {
+ SEND_STRING("Radialex");
+ rgblight_toggle();
+ }
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/takashicompany/radialex/keymaps/via/rules.mk b/keyboards/takashicompany/radialex/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/takashicompany/radialex/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/takashicompany/radialex/radialex.c b/keyboards/takashicompany/radialex/radialex.c
new file mode 100644
index 0000000000..9146106973
--- /dev/null
+++ b/keyboards/takashicompany/radialex/radialex.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "radialex.h"
diff --git a/keyboards/takashicompany/radialex/radialex.h b/keyboards/takashicompany/radialex/radialex.h
new file mode 100644
index 0000000000..8ad5712201
--- /dev/null
+++ b/keyboards/takashicompany/radialex/radialex.h
@@ -0,0 +1,42 @@
+/* Copyright 2021 takashicompany
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, \
+ k41, k11, k12, k13, k14, k15, k45, k16, k17, k18, k19, k20, k43, \
+ k42, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k44, \
+ k31, k32, k33, k34, k35, k36, k37, k38, k39, k40 \
+) { \
+ { k01, k02, k03, k04, k05, k06, k07 }, \
+ { k08, k09, k10, k11, k12, k13, k14 }, \
+ { k15, k16, k17, k18, k19, k20, k21 }, \
+ { k22, k23, k24, k25, k26, k27, k28 }, \
+ { k29, k30, k31, k32, k33, k34, k35 }, \
+ { k36, k37, k38, k39, k40, k41, k42 }, \
+ { k43, k44, k45, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/takashicompany/radialex/readme.md b/keyboards/takashicompany/radialex/readme.md
new file mode 100644
index 0000000000..1468e7b0b1
--- /dev/null
+++ b/keyboards/takashicompany/radialex/readme.md
@@ -0,0 +1,31 @@
+# Radialex
+
+![Radialex](https://github.com/takashicompany/radialex/blob/master/images/qmk.jpg?raw=true)
+
+40% larger keyboard.
+The radial key layout allows you to place your hand in a natural position and move your fingers the shortest distance to type.
+Your iconic keys and keycaps can be placed in the center of the keyboard.
+It is possible to make it shine with LED backlighting.
+The keyswitches can also be replaced with MX sockets.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/yourusername)
+* Hardware Supported: PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/radialex
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/radialex:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/radialex:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/takashicompany/radialex/rules.mk b/keyboards/takashicompany/radialex/rules.mk
new file mode 100644
index 0000000000..d990e8cae3
--- /dev/null
+++ b/keyboards/takashicompany/radialex/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/taleguers/taleguers75/rules.mk b/keyboards/taleguers/taleguers75/rules.mk
index ebde6cceac..271385424a 100644
--- a/keyboards/taleguers/taleguers75/rules.mk
+++ b/keyboards/taleguers/taleguers75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tanuki/keymaps/default/keymap.c b/keyboards/tanuki/keymaps/default/keymap.c
index c10a868afe..789475b88d 100644
--- a/keyboards/tanuki/keymaps/default/keymap.c
+++ b/keyboards/tanuki/keymaps/default/keymap.c
@@ -25,27 +25,27 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BL] = LAYOUT(
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TG(_GL), \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT, \
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, TG(_GL),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_QUOT, KC_SLSH, KC_ENT,
KC_LCTL, KC_LALT, KC_COMMA, LT(_DL,KC_SPC), LT(_UL,KC_SPC), KC_DOT, KC_LGUI),
[_DL] = LAYOUT(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,\
- KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,\
- KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_UL] = LAYOUT(
- KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,\
- KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, \
- KC_TRNS, CUSTRGB, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, \
+ KC_GRV, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_PIPE, KC_BSLS, KC_PLUS, KC_UNDS, KC_MINS, KC_EQL, KC_DEL,
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
+ KC_TRNS, CUSTRGB, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, RGB_SAI, RGB_VAI),
[_GL] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/tanuki/rules.mk b/keyboards/tanuki/rules.mk
index 7b17aed247..453b0fb12f 100644
--- a/keyboards/tanuki/rules.mk
+++ b/keyboards/tanuki/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE =yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/tau4/rules.mk b/keyboards/tau4/rules.mk
index 15647fab75..0ddf255b13 100755
--- a/keyboards/tau4/rules.mk
+++ b/keyboards/tau4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/team0110/p1800fl/rules.mk b/keyboards/team0110/p1800fl/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/team0110/p1800fl/rules.mk
+++ b/keyboards/team0110/p1800fl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/technika/rules.mk b/keyboards/technika/rules.mk
index e3015bd416..ff93e18a78 100644
--- a/keyboards/technika/rules.mk
+++ b/keyboards/technika/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/teleport/numpad/rules.mk b/keyboards/teleport/numpad/rules.mk
index d13c9980f7..2d44d1885c 100644
--- a/keyboards/teleport/numpad/rules.mk
+++ b/keyboards/teleport/numpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/telophase/rules.mk b/keyboards/telophase/rules.mk
index ef3e986e51..c3a8aaf79f 100644
--- a/keyboards/telophase/rules.mk
+++ b/keyboards/telophase/rules.mk
@@ -12,9 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c
index 0ef205288a..09d7764362 100644
--- a/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c
+++ b/keyboards/tempo_turtle/bradpad/keymaps/via/keymap.c
@@ -23,28 +23,28 @@ enum layers {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = LAYOUT(
- KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, \
- KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, \
- KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, \
- KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK, \
+ KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS,
+ KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS,
+ KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH,
+ KC_NUMLOCK, KC_KP_0, KC_KP_DOT, KC_KP_ASTERISK,
KC_KP_ENTER, KC_EQUAL),
[_LAYER1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS),
[_LAYER2] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS),
[_LAYER3] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS)
};
// clang-format on
diff --git a/keyboards/tempo_turtle/bradpad/rules.mk b/keyboards/tempo_turtle/bradpad/rules.mk
index e91bfe74c7..70c4676db8 100644
--- a/keyboards/tempo_turtle/bradpad/rules.mk
+++ b/keyboards/tempo_turtle/bradpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tender/macrowo_pad/rules.mk b/keyboards/tender/macrowo_pad/rules.mk
index 265cb97514..039a613244 100644
--- a/keyboards/tender/macrowo_pad/rules.mk
+++ b/keyboards/tender/macrowo_pad/rules.mk
@@ -10,10 +10,7 @@ BOOTLOADER = caterina
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tenki/keymaps/default/keymap.c b/keyboards/tenki/keymaps/default/keymap.c
index 85a8f32302..1f308a4c7b 100644
--- a/keyboards/tenki/keymaps/default/keymap.c
+++ b/keyboards/tenki/keymaps/default/keymap.c
@@ -2,18 +2,18 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_5x4(
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
- KC_P7, KC_P8, KC_P9, KC_PPLS,\
- KC_P4, KC_P5, KC_P6, KC_BSPC,\
- KC_P1, KC_P2, KC_P3, KC_PEQL,\
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_BSPC,
+ KC_P1, KC_P2, KC_P3, KC_PEQL,
KC_P0, KC_PSCR , LT(1,KC_PDOT), KC_PENT
),
[1] = LAYOUT_ortho_5x4(
- KC_TRNS, RGB_HUI, RGB_HUD, RGB_VAD,\
- KC_TRNS, KC_VOLU, RGB_TOG, RGB_VAI,\
- KC_MPRV, KC_MUTE, KC_MNXT, KC_TRNS,\
- KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS,\
+ KC_TRNS, RGB_HUI, RGB_HUD, RGB_VAD,
+ KC_TRNS, KC_VOLU, RGB_TOG, RGB_VAI,
+ KC_MPRV, KC_MUTE, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS,
RESET, KC_TRNS, KC_TRNS, RGB_MOD
)
};
diff --git a/keyboards/tenki/keymaps/via/keymap.c b/keyboards/tenki/keymaps/via/keymap.c
index 9180d8d97f..5de6c439bb 100644
--- a/keyboards/tenki/keymaps/via/keymap.c
+++ b/keyboards/tenki/keymaps/via/keymap.c
@@ -2,34 +2,34 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_5x4(
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,\
- KC_P7, KC_P8, KC_P9, KC_PPLS,\
- KC_P4, KC_P5, KC_P6, KC_BSPC,\
- KC_P1, KC_P2, KC_P3, KC_PEQL,\
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_BSPC,
+ KC_P1, KC_P2, KC_P3, KC_PEQL,
KC_P0, KC_PSCR, LT(1,KC_PDOT), KC_PENT
),
[1] = LAYOUT_ortho_5x4(
- KC_TRNS, RGB_HUI, RGB_HUD, RGB_VAD,\
- KC_TRNS, KC_VOLU, RGB_TOG, RGB_VAI,\
- KC_MPRV, KC_MUTE, KC_MNXT, KC_TRNS,\
- KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS,\
+ KC_TRNS, RGB_HUI, RGB_HUD, RGB_VAD,
+ KC_TRNS, KC_VOLU, RGB_TOG, RGB_VAI,
+ KC_MPRV, KC_MUTE, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS,
RESET, KC_TRNS, KC_TRNS, RGB_MOD
),
[2] = LAYOUT_ortho_5x4(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_ortho_5x4(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
diff --git a/keyboards/tenki/rules.mk b/keyboards/tenki/rules.mk
index 8b706cd5e9..61e4c302ba 100644
--- a/keyboards/tenki/rules.mk
+++ b/keyboards/tenki/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/terrazzo/rules.mk b/keyboards/terrazzo/rules.mk
index c352147d21..e481089976 100644
--- a/keyboards/terrazzo/rules.mk
+++ b/keyboards/terrazzo/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tetris/rules.mk b/keyboards/tetris/rules.mk
index bbd62100b5..e68d632b65 100755
--- a/keyboards/tetris/rules.mk
+++ b/keyboards/tetris/rules.mk
@@ -5,17 +5,16 @@ MCU = atmega32u4
BOOTLOADER = qmk-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes
RGBLIGHT_ENABLE = yes
-EXTRAFLAGS = -flto
+LTO_ENABLE = yes
ENCODER_ENABLE = yes
diff --git a/keyboards/tg4x/keymaps/default/config.h b/keyboards/tg4x/keymaps/default/config.h
deleted file mode 100644
index 26c6d6ade1..0000000000
--- a/keyboards/tg4x/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/tg4x/rules.mk b/keyboards/tg4x/rules.mk
index c25369953c..9558b2243f 100644
--- a/keyboards/tg4x/rules.mk
+++ b/keyboards/tg4x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tgr/910/rules.mk b/keyboards/tgr/910/rules.mk
index 2dba9c3eb9..9a2e1da0de 100644
--- a/keyboards/tgr/910/rules.mk
+++ b/keyboards/tgr/910/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/tgr/alice/keymaps/default/keymap.c b/keyboards/tgr/alice/keymaps/default/keymap.c
index 4d4a3ecc7b..bd168e5d78 100644
--- a/keyboards/tgr/alice/keymaps/default/keymap.c
+++ b/keyboards/tgr/alice/keymaps/default/keymap.c
@@ -19,17 +19,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_alice_split_bs(
- KC_ESC, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, \
- KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \
- KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL \
+ KC_ESC, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_PGDN, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL
),
[1] = LAYOUT_alice_split_bs(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/tgr/alice/rules.mk b/keyboards/tgr/alice/rules.mk
index 2a437c3c13..0d63df82e7 100644
--- a/keyboards/tgr/alice/rules.mk
+++ b/keyboards/tgr/alice/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/tgr/jane/v2/keymaps/default/config.h b/keyboards/tgr/jane/v2/keymaps/default/config.h
deleted file mode 100644
index 93b81b57ba..0000000000
--- a/keyboards/tgr/jane/v2/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 amnesia0287
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/tgr/jane/v2/keymaps/default/keymap.c b/keyboards/tgr/jane/v2/keymaps/default/keymap.c
index e7579457e6..0e3c1d4e7b 100644
--- a/keyboards/tgr/jane/v2/keymaps/default/keymap.c
+++ b/keyboards/tgr/jane/v2/keymaps/default/keymap.c
@@ -17,11 +17,11 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT) \
+[0] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT)
};
diff --git a/keyboards/tgr/jane/v2/rules.mk b/keyboards/tgr/jane/v2/rules.mk
index 9d035a031a..853857ba7c 100644
--- a/keyboards/tgr/jane/v2/rules.mk
+++ b/keyboards/tgr/jane/v2/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/tgr/jane/v2ce/info.json b/keyboards/tgr/jane/v2ce/info.json
index bc9970fe78..97e12227f2 100644
--- a/keyboards/tgr/jane/v2ce/info.json
+++ b/keyboards/tgr/jane/v2ce/info.json
@@ -9,19 +9,27 @@
"layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":13.75, "y":3.5, "w":1.25}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5}, {"x":2.25, "y":5.5}, {"x":3.25, "y":5.5, "w":1.25}, {"x":4.5, "y":5.5, "w":1.25}, {"x":5.75, "y":5.5, "w":1.25}, {"x":7, "y":5.5, "w":1.25}, {"x":8.25, "y":5.5, "w":1.25}, {"x":9.5, "y":5.5, "w":1.25}, {"x":10.75, "y":5.5}, {"x":11.75, "y":5.5}, {"x":12.75, "y":5.5}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
},
- "LAYOUT_tkl_ansi_f13": {
+ "LAYOUT_tkl_f13_ansi": {
"layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
},
- "LAYOUT_tkl_ansi_tsangan_f13": {
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ },
+
+ "LAYOUT_tkl_f13_ansi_tsangan_split_rshift": {
"layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.5, "y":2.5, "w":1.5}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5, "w":2.25}, {"x":0, "y":4.5, "w":2.25}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
},
- "LAYOUT_tkl_iso_f13": {
+ "LAYOUT_tkl_f13_iso": {
"layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.25}, {"x":1.25, "y":5.5, "w":1.25}, {"x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"x":10, "y":5.5, "w":1.25}, {"x":11.25, "y":5.5, "w":1.25}, {"x":12.5, "y":5.5, "w":1.25}, {"x":13.75, "y":5.5, "w":1.25}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
},
- "LAYOUT_tkl_iso_tsangan_f13": {
+ "LAYOUT_tkl_f13_iso_tsangan": {
+ "layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":2.75}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
+ },
+
+ "LAYOUT_tkl_f13_iso_tsangan_split_rshift": {
"layout": [{"x":0, "y":0}, {"x":1.25, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.5, "y":0}, {"x":6.5, "y":0}, {"x":7.5, "y":0}, {"x":8.5, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":14, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":4, "y":1.5}, {"x":5, "y":1.5}, {"x":6, "y":1.5}, {"x":7, "y":1.5}, {"x":8, "y":1.5}, {"x":9, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.5}, {"x":12, "y":1.5}, {"x":13, "y":1.5, "w":2}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":0, "y":2.5, "w":1.5}, {"x":1.5, "y":2.5}, {"x":2.5, "y":2.5}, {"x":3.5, "y":2.5}, {"x":4.5, "y":2.5}, {"x":5.5, "y":2.5}, {"x":6.5, "y":2.5}, {"x":7.5, "y":2.5}, {"x":8.5, "y":2.5}, {"x":9.5, "y":2.5}, {"x":10.5, "y":2.5}, {"x":11.5, "y":2.5}, {"x":12.5, "y":2.5}, {"x":13.75, "y":2.5, "w":1.25, "h":2}, {"x":15.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":0, "y":3.5, "w":1.75}, {"x":1.75, "y":3.5}, {"x":2.75, "y":3.5}, {"x":3.75, "y":3.5}, {"x":4.75, "y":3.5}, {"x":5.75, "y":3.5}, {"x":6.75, "y":3.5}, {"x":7.75, "y":3.5}, {"x":8.75, "y":3.5}, {"x":9.75, "y":3.5}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.5}, {"x":12.75, "y":3.5}, {"x":0, "y":4.5, "w":1.25}, {"x":1.25, "y":4.5}, {"x":2.25, "y":4.5}, {"x":3.25, "y":4.5}, {"x":4.25, "y":4.5}, {"x":5.25, "y":4.5}, {"x":6.25, "y":4.5}, {"x":7.25, "y":4.5}, {"x":8.25, "y":4.5}, {"x":9.25, "y":4.5}, {"x":10.25, "y":4.5}, {"x":11.25, "y":4.5}, {"x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"x":16.25, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.5}, {"x":12.5, "y":5.5}, {"x":13.5, "y":5.5, "w":1.5}, {"x":15.25, "y":5.5}, {"x":16.25, "y":5.5}, {"x":17.25, "y":5.5}]
}
}
diff --git a/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c b/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c
index 45c09166fc..bace43c6fd 100644
--- a/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c
+++ b/keyboards/tgr/jane/v2ce/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi_f13(
+[0] = LAYOUT_tkl_f13_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR,KC_SLCK,KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN,
diff --git a/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c b/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c
index 47407346fa..1bf4a8c72d 100644
--- a/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c
+++ b/keyboards/tgr/jane/v2ce/keymaps/via/keymap.c
@@ -17,7 +17,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi_f13(
+[0] = LAYOUT_tkl_f13_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR,KC_SLCK,KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS ,KC_HOME,KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL ,KC_END ,KC_PGDN,
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT),
-[1] = LAYOUT_tkl_ansi_f13(
+[1] = LAYOUT_tkl_f13_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS),
-[2] = LAYOUT_tkl_ansi_f13(
+[2] = LAYOUT_tkl_f13_ansi(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/tgr/jane/v2ce/rules.mk b/keyboards/tgr/jane/v2ce/rules.mk
index 92e3fcec39..0a865321a6 100644
--- a/keyboards/tgr/jane/v2ce/rules.mk
+++ b/keyboards/tgr/jane/v2ce/rules.mk
@@ -12,8 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
+
+LAYOUTS = tkl_f13_ansi tkl_f13_ansi_tsangan tkl_f13_iso tkl_f13_iso_tsangan
diff --git a/keyboards/tgr/jane/v2ce/v2ce.h b/keyboards/tgr/jane/v2ce/v2ce.h
index 70f306912b..12ce1a80d3 100644
--- a/keyboards/tgr/jane/v2ce/v2ce.h
+++ b/keyboards/tgr/jane/v2ce/v2ce.h
@@ -40,7 +40,7 @@
}
-#define LAYOUT_tkl_ansi_f13( \
+#define LAYOUT_tkl_f13_ansi( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
@@ -58,7 +58,25 @@
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
}
-#define LAYOUT_tkl_ansi_tsangan_f13( \
+#define LAYOUT_tkl_f13_ansi_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3D, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
+ k50, k51, k52, k55, k58, k59, k5A, k5E, k3E, k4E \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, KC_NO, k3D, k3E }, \
+ { k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
+ { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, KC_NO, k5E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
+}
+
+#define LAYOUT_tkl_f13_ansi_tsangan_split_rshift( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k7C, k7D, k7E, \
@@ -76,7 +94,7 @@
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
}
-#define LAYOUT_tkl_iso_f13( \
+#define LAYOUT_tkl_f13_iso( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \
@@ -94,12 +112,30 @@
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
}
-#define LAYOUT_tkl_iso_tsangan_f13( \
+#define LAYOUT_tkl_f13_iso_tsangan( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
- k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k2E, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k2E, \
+ k50, k51, k52, k55, k58, k59, k5A, k5E, k3E, k4E \
+){ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, KC_NO, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, KC_NO, k4E }, \
+ { k50, k51, k52, KC_NO, KC_NO, k55, KC_NO, KC_NO, k58, k59, k5A, KC_NO, KC_NO, KC_NO, k5E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6A, k6B, k6C, k6D, k6E }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k7C, k7D, k7E }, \
+}
+
+#define LAYOUT_tkl_f13_iso_tsangan_split_rshift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k6A, k0D, k0E, k6B, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k6C, k6D, k6E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k7C, k7D, k7E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k2E, \
k50, k51, k52, k55, k58, k59, k5A, k5E, k3E, k4E \
){ \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E }, \
diff --git a/keyboards/the_royal/liminal/rules.mk b/keyboards/the_royal/liminal/rules.mk
index e240497ddc..88173a40c2 100644
--- a/keyboards/the_royal/liminal/rules.mk
+++ b/keyboards/the_royal/liminal/rules.mk
@@ -5,17 +5,14 @@ MCU = atmega32u2
BOOTLOADER = atmel-dfu
# Build Options
-# - change yes to no to disable
-
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/the_royal/schwann/rules.mk b/keyboards/the_royal/schwann/rules.mk
index ed04528a0d..53fe216163 100644
--- a/keyboards/the_royal/schwann/rules.mk
+++ b/keyboards/the_royal/schwann/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/the_ruler/keymaps/default/config.h b/keyboards/the_ruler/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/the_ruler/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/the_ruler/keymaps/default/keymap.c b/keyboards/the_ruler/keymaps/default/keymap.c
index e6740b0584..898881fc3c 100644
--- a/keyboards/the_ruler/keymaps/default/keymap.c
+++ b/keyboards/the_ruler/keymaps/default/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | FN_2 | 2 |TSKMGR |CALTDEL| ESC | FN_1 |
* `-----------------------------------------------'
*/
-[_DEFAULT] = LAYOUT( \
+[_DEFAULT] = LAYOUT(
MO(_FN_2), KC_2, TSKMGR, CALTDEL, KC_ESC, MO(_FN_1)
),
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |RGB_TOG|RGB_HUD|RGB_HUI|RGB_SAD|RGB_SAI| FN_1 |
* `-----------------------------------------------'
*/
-[_FN_1] = LAYOUT( \
+[_FN_1] = LAYOUT(
RGB_TOG, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______
),
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | FN_2 |RGB_VAD|RGB_VAI|RGB_MOD|TSKMGR | RESET |
* `-----------------------------------------------'
*/
-[_FN_2] = LAYOUT( \
+[_FN_2] = LAYOUT(
_______, RGB_VAD, RGB_VAI, RGB_MOD, TSKMGR, RESET
)
diff --git a/keyboards/the_ruler/rules.mk b/keyboards/the_ruler/rules.mk
index dc86223dd9..986f0f277a 100644
--- a/keyboards/the_ruler/rules.mk
+++ b/keyboards/the_ruler/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
diff --git a/keyboards/the_uni/pro_micro/rules.mk b/keyboards/the_uni/pro_micro/rules.mk
index 1a595e91e4..ba22869d5e 100644
--- a/keyboards/the_uni/pro_micro/rules.mk
+++ b/keyboards/the_uni/pro_micro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/the_uni/usb_c/rules.mk b/keyboards/the_uni/usb_c/rules.mk
index e5d2f2e042..5b78a2ede1 100644
--- a/keyboards/the_uni/usb_c/rules.mk
+++ b/keyboards/the_uni/usb_c/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/thedogkeyboard/rules.mk b/keyboards/thedogkeyboard/rules.mk
index 736a76b75d..b91a3736ad 100644
--- a/keyboards/thedogkeyboard/rules.mk
+++ b/keyboards/thedogkeyboard/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
index ee03434e2b..866a3204bb 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
+++ b/keyboards/themadnoodle/ncc1701kb/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/themadnoodle/noodlepad/rules.mk b/keyboards/themadnoodle/noodlepad/rules.mk
index ee03434e2b..866a3204bb 100644
--- a/keyboards/themadnoodle/noodlepad/rules.mk
+++ b/keyboards/themadnoodle/noodlepad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/default/config.h b/keyboards/thevankeyboards/bananasplit/keymaps/default/config.h
deleted file mode 100644
index b89b05009a..0000000000
--- a/keyboards/thevankeyboards/bananasplit/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2017 Balz Guenat
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/default/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/default/keymap.c
index 156e164a25..04c783c7c4 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/default/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/default/keymap.c
@@ -5,18 +5,18 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEFAULT_LAYER] = LAYOUT_base(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, _______, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, MO(LAYER_1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
),
- [LAYER_1] = LAYOUT_base( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ [LAYER_1] = LAYOUT_base(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/via/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/via/keymap.c
index 3094f69554..dbf0fbce00 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/via/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/via/keymap.c
@@ -26,26 +26,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
diff --git a/keyboards/thevankeyboards/bananasplit/rules.mk b/keyboards/thevankeyboards/bananasplit/rules.mk
index 095eec2fa0..36da451a6d 100644
--- a/keyboards/thevankeyboards/bananasplit/rules.mk
+++ b/keyboards/thevankeyboards/bananasplit/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes
LAYOUTS = 60_ansi 60_iso
diff --git a/keyboards/thevankeyboards/caravan/rules.mk b/keyboards/thevankeyboards/caravan/rules.mk
index 0741a01a98..b314e12196 100644
--- a/keyboards/thevankeyboards/caravan/rules.mk
+++ b/keyboards/thevankeyboards/caravan/rules.mk
@@ -12,6 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/thevankeyboards/jetvan/rules.mk b/keyboards/thevankeyboards/jetvan/rules.mk
index 3b5a20f343..fd41976778 100644
--- a/keyboards/thevankeyboards/jetvan/rules.mk
+++ b/keyboards/thevankeyboards/jetvan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/thevankeyboards/minivan/keymaps/default/config.h b/keyboards/thevankeyboards/minivan/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/thevankeyboards/minivan/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/thevankeyboards/minivan/rules.mk b/keyboards/thevankeyboards/minivan/rules.mk
index 51a3e08ac2..ffebb6f44c 100644
--- a/keyboards/thevankeyboards/minivan/rules.mk
+++ b/keyboards/thevankeyboards/minivan/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable support for RGB LEDs
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/default/config.h b/keyboards/thevankeyboards/roadkit/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/thevankeyboards/roadkit/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/default/keymap.c b/keyboards/thevankeyboards/roadkit/keymaps/default/keymap.c
index 9c045d7451..32e4694cd5 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/default/keymap.c
+++ b/keyboards/thevankeyboards/roadkit/keymaps/default/keymap.c
@@ -14,10 +14,10 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NP] = LAYOUT_numpad_4x4( /* Numpad */
- KC_P7, KC_P8, KC_P9, KC_PPLS, \
- KC_P4, KC_P5, KC_P6, \
- KC_P1, KC_P2, KC_P3, KC_PENT, \
- KC_P0, KC_PDOT \
+ KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6,
+ KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_P0, KC_PDOT
),
};
diff --git a/keyboards/thevankeyboards/roadkit/rules.mk b/keyboards/thevankeyboards/roadkit/rules.mk
index 11c22872f4..9cc0fe8fa5 100644
--- a/keyboards/thevankeyboards/roadkit/rules.mk
+++ b/keyboards/thevankeyboards/roadkit/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tiger910/rules.mk b/keyboards/tiger910/rules.mk
index b49ff27f8e..ee0b9bc30c 100644
--- a/keyboards/tiger910/rules.mk
+++ b/keyboards/tiger910/rules.mk
@@ -12,10 +12,8 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
diff --git a/keyboards/tkc/california/california.c b/keyboards/tkc/california/california.c
new file mode 100644
index 0000000000..002732208f
--- /dev/null
+++ b/keyboards/tkc/california/california.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "california.h"
diff --git a/keyboards/tkc/california/california.h b/keyboards/tkc/california/california.h
new file mode 100644
index 0000000000..a438e6a024
--- /dev/null
+++ b/keyboards/tkc/california/california.h
@@ -0,0 +1,50 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K61, K62, K63, K64, K65, K66, K67, K68, K69, \
+ K10, k11, K12, K13, K14, K15, K16, K17, K18, K19, K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K80, K81, K82, K83, K84, K85, K86, K87, K88, K89, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K90, K91, K92, K93, K96, K97, K98, K99, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, KA0, KA1, KA2, KA4, KA5, KA6, KA7, KA8, KA9, \
+ K50, K51, K52, K55, K58, KB0, KB2, KB4, KB5, KB6, KB7, KB8, KB9 \
+) { \
+ { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08, K09 }, \
+ { K10, k11, K12, K13, K14, K15, K16, K17, K18, K19 }, \
+ { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29 }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39 }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49 }, \
+ { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, KC_NO, K58, KC_NO }, \
+ { KC_NO, K61, K62, K63, K64, K65, K66, K67, K68, K69 }, \
+ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79 }, \
+ { K80, K81, K82, K83, K84, K85, K86, K87, K88, K89 }, \
+ { K90, K91, K92, K93, KC_NO, KC_NO, K96, K97, K98, K99 }, \
+ { KA0, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8, KA9 }, \
+ { KB0, KC_NO, KB2, KC_NO, KB4, KB5, KB6, KB7, KB8, KB9 } \
+}
diff --git a/keyboards/tkc/california/config.h b/keyboards/tkc/california/config.h
new file mode 100644
index 0000000000..7820869142
--- /dev/null
+++ b/keyboards/tkc/california/config.h
@@ -0,0 +1,123 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x544B //TK
+#define PRODUCT_ID 0x0009
+#define DEVICE_VER 0x0001
+#define MANUFACTURER TKC
+#define PRODUCT California
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 10
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2 //Reduced layer count due to memory space considerations
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { C7, C6, B6, D4, D3, D0, E6, B0, B1, B2, D2, B3 }
+#define MATRIX_COL_PINS { B5, B4, D7, D6, F7, F6, F5, D5, D1, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#endif
+#define LED_NUM_LOCK_PIN F1
+#define LED_CAPS_LOCK_PIN F0
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/tkc/california/info.json b/keyboards/tkc/california/info.json
new file mode 100644
index 0000000000..ef55e0e2e0
--- /dev/null
+++ b/keyboards/tkc/california/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "TKC California",
+ "url": "",
+ "maintainer": "TerryMathews",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.5, "y":0}, {"label":"Home", "x":17, "y":0}, {"label":"End", "x":18, "y":0}, {"label":"Scroll Lock", "x":19, "y":0}, {"label":"Pause", "x":20, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Bksp", "x":13, "y":1.5}, {"x":14, "y":1.5}, {"label":"PgUp", "x":15.5, "y":1.5}, {"label":"Num Lock", "x":17, "y":1.5}, {"label":"/", "x":18, "y":1.5}, {"label":"*", "x":19, "y":1.5}, {"label":"-", "x":20, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"PgDn", "x":15.5, "y":2.5}, {"label":"7", "x":17, "y":2.5}, {"label":"8", "x":18, "y":2.5}, {"label":"9", "x":19, "y":2.5}, {"label":"+", "x":20, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":17, "y":3.5}, {"label":"5", "x":18, "y":3.5}, {"label":"6", "x":19, "y":3.5}, {"x":20, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":15.5, "y":4.75}, {"label":"1", "x":17, "y":4.5}, {"label":"2", "x":18, "y":4.5}, {"label":"3", "x":19, "y":4.5}, {"label":"Enter", "x":20, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Menu", "x":11.25, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, {"label":"\u2190", "x":14.5, "y":5.75}, {"label":"\u2193", "x":15.5, "y":5.75}, {"label":"\u2192", "x":16.5, "y":5.75}, {"label":"0", "x":18, "y":5.5}, {"label":".", "x":19, "y":5.5}, {"x":20, "y":5.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/tkc/california/keymaps/default/keymap.c b/keyboards/tkc/california/keymaps/default/keymap.c
new file mode 100644
index 0000000000..747ed11e00
--- /dev/null
+++ b/keyboards/tkc/california/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Base */
+
+ KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_PSCR,KC_HOME,KC_END,KC_SLCK,KC_PAUS,
+ KC_GRV,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_DEL,KC_BSPC,KC_PGUP,KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+ KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS,KC_PGDN,KC_P7,KC_P8,KC_P9,KC_PMNS,
+ KC_CAPS,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L, KC_SCLN, KC_QUOT, KC_ENT,KC_P4, KC_P5, KC_P6,KC_PPLS,
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,KC_NO,KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+};
diff --git a/keyboards/tkc/california/keymaps/via/keymap.c b/keyboards/tkc/california/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b84fdd4a2e
--- /dev/null
+++ b/keyboards/tkc/california/keymaps/via/keymap.c
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all( /* Base */
+
+ KC_ESC,KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_PSCR,KC_HOME,KC_END,KC_SLCK,KC_PAUS,
+ KC_GRV,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_DEL,KC_BSPC,KC_PGUP,KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
+ KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS,KC_PGDN,KC_P7,KC_P8,KC_P9,KC_PMNS,
+ KC_CAPS,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L, KC_SCLN, KC_QUOT, KC_ENT,KC_P4, KC_P5, KC_P6,KC_PPLS,
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,MO(1),KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT,KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT_all( /* Function */
+
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,MO(1),_______,_______,_______,_______,_______,
+ _______,_______,_______, _______, _______,_______, _______,_______,_______,_______,_______,_______,_______),
+};
diff --git a/keyboards/tkc/california/keymaps/via/rules.mk b/keyboards/tkc/california/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/tkc/california/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/tkc/california/readme.md b/keyboards/tkc/california/readme.md
new file mode 100644
index 0000000000..d8717ee6ea
--- /dev/null
+++ b/keyboards/tkc/california/readme.md
@@ -0,0 +1,21 @@
+# TKC California
+
+![TKC California](https://i.imgur.com/IaG5Gvph.jpg)
+
+A compact 1800 keyboard.
+
+* Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews)
+* Hardware Supported: TKC California (ATmega32U4)
+* Hardware Availability: TBA
+
+Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tkc/california:default
+
+Flashing example for this keyboard:
+
+ make tkc/california:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tkc/california/rules.mk b/keyboards/tkc/california/rules.mk
new file mode 100644
index 0000000000..1c4073c9ce
--- /dev/null
+++ b/keyboards/tkc/california/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/candybar/lefty/keymaps/default/keymap.c b/keyboards/tkc/candybar/lefty/keymaps/default/keymap.c
index 153fd99c50..08e2bd4bb1 100644
--- a/keyboards/tkc/candybar/lefty/keymaps/default/keymap.c
+++ b/keyboards/tkc/candybar/lefty/keymaps/default/keymap.c
@@ -23,16 +23,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , \
- KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT , \
+ KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT ,
+ KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT ,
MO(_FL), KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , KC_LEFT, KC_DOWN, KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
- KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS ,
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP ,
KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
};
diff --git a/keyboards/tkc/candybar/lefty/keymaps/via/keymap.c b/keyboards/tkc/candybar/lefty/keymaps/via/keymap.c
index fd927195b2..04088b985f 100644
--- a/keyboards/tkc/candybar/lefty/keymaps/via/keymap.c
+++ b/keyboards/tkc/candybar/lefty/keymaps/via/keymap.c
@@ -25,28 +25,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , \
- KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT , \
+ KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT ,
+ KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT ,
MO(_FL), KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , KC_LEFT, KC_DOWN, KC_RGHT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
- KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS ,
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP ,
KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
[_AL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
- KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS ,
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP ,
KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
[_LL] = LAYOUT(
- KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
- KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
- KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC ,
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS ,
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP ,
KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
};
diff --git a/keyboards/tkc/candybar/lefty/rules.mk b/keyboards/tkc/candybar/lefty/rules.mk
index 3244267430..52cb35c5a2 100644
--- a/keyboards/tkc/candybar/lefty/rules.mk
+++ b/keyboards/tkc/candybar/lefty/rules.mk
@@ -5,9 +5,8 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-# EXTRAFLAGS+=-flto
LTO_ENABLE = yes
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -15,8 +14,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/tkc/candybar/lefty_r3/config.h b/keyboards/tkc/candybar/lefty_r3/config.h
new file mode 100644
index 0000000000..d7a4908430
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/config.h
@@ -0,0 +1,91 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x544B //TK
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0006
+#define MANUFACTURER The Key Company
+#define PRODUCT Candybar
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 17
+#define DIODE_DIRECTION COL2ROW
+#define MATRIX_ROW_PINS { F1, F0, D0, D2 }
+#define MATRIX_COL_PINS { B5, B6, C6, C7, F7, F6, F5, F4, D5, B3, B0, B1, B2, D4, D6, D7, B4 }
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+// #define WS2812_LED_N 2
+// #define RGBLED_NUM WS2812_LED_N
+// #define WS2812_TIM_N 2
+// #define WS2812_TIM_CH 2
+// #define PORT_WS2812 GPIOA
+// #define PIN_WS2812 1
+// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
+//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
+//#define WS2812_EXTERNAL_PULLUP
diff --git a/keyboards/tkc/candybar/lefty_r3/info.json b/keyboards/tkc/candybar/lefty_r3/info.json
new file mode 100644
index 0000000000..1ef3dcd54a
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "TKC Candybar",
+ "url": "",
+ "maintainer": "terrymathews",
+ "width": 17,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"7", "x":0, "y":0}, {"label":"8", "x":1, "y":0}, {"label":"9", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "x":4, "y":0}, {"label":"Q", "x":5, "y":0}, {"label":"W", "x":6, "y":0}, {"label":"E", "x":7, "y":0}, {"label":"R", "x":8, "y":0}, {"label":"T", "x":9, "y":0}, {"label":"Y", "x":10, "y":0}, {"label":"U", "x":11, "y":0}, {"label":"I", "x":12, "y":0}, {"label":"O", "x":13, "y":0}, {"label":"P", "x":14, "y":0}, {"label":"{", "x":15, "y":0}, {"label":"}", "x":16, "y":0},
+ {"label":"4", "x":0, "y":1}, {"label":"5", "x":1, "y":1}, {"label":"6", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"Tab", "x":4, "y":1, "w":1.25}, {"label":"A", "x":5.25, "y":1}, {"label":"S", "x":6.25, "y":1}, {"label":"D", "x":7.25, "y":1}, {"label":"F", "x":8.25, "y":1}, {"label":"G", "x":9.25, "y":1}, {"label":"H", "x":10.25, "y":1}, {"label":"J", "x":11.25, "y":1}, {"label":"K", "x":12.25, "y":1}, {"label":"L", "x":13.25, "y":1}, {"label":":", "x":14.25, "y":1}, {"label":"Enter", "x":15.25, "y":1, "w":1.75},
+ {"label":"1", "x":0, "y":2}, {"label":"2", "x":1, "y":2}, {"label":"3", "x":2, "y":2}, {"x":3, "y":2}, {"label":"Shift", "x":4, "y":2, "w":1.75}, {"label":"Z", "x":5.75, "y":2}, {"label":"X", "x":6.75, "y":2}, {"label":"C", "x":7.75, "y":2}, {"label":"V", "x":8.75, "y":2}, {"label":"B", "x":9.75, "y":2}, {"label":"N", "x":10.75, "y":2}, {"label":"M", "x":11.75, "y":2}, {"label":"<", "x":12.75, "y":2}, {"label":">", "x":13.75, "y":2}, {"label":"\u2191", "x":14.75, "y":2}, {"label":"Shift", "x":15.75, "y":2, "w":1.25},
+ {"label":"Fn", "x":0, "y":3}, {"label":"0", "x":1, "y":3}, {"label":".", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3}, {"label":"Ctrl", "x":4, "y":3, "w":1.25}, {"label":"Win", "x":5.25, "y":3, "w":1.25}, {"label":"Alt", "x":6.5, "y":3, "w":1.25}, {"x":7.75, "y":3, "w":1.75}, {"x":9.5, "y":3}, {"x":10.5, "y":3, "w":2.25}, {"label":"Win", "x":12.75, "y":3, "w":1.25}, {"label":"\u2190", "x":14, "y":3}, {"label":"\u2193", "x":15, "y":3}, {"label":"\u2192", "x":16, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/tkc/candybar/lefty_r3/keymaps/default/keymap.c b/keyboards/tkc/candybar/lefty_r3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2a66ec834f
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , \
+ KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT , \
+ MO(_FL), KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+ [_FL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
+};
diff --git a/keyboards/tkc/candybar/lefty_r3/keymaps/via/keymap.c b/keyboards/tkc/candybar/lefty_r3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..40890bd7ac
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BL,
+ _FL,
+ _AL,
+ _LL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_PAST, KC_ESC , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_DEL , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_PMNS, KC_TAB , KC_A , KC_S , KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, KC_ENT , \
+ KC_P1 , KC_P2, KC_P3 , KC_PPLS, KC_LSFT, KC_Z , KC_X, KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_UP ,KC_RSFT , \
+ MO(_FL), KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+ [_FL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
+
+ [_AL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
+
+ [_LL] = LAYOUT(
+ KC_P7 , KC_P8, KC_P9 , KC_VOLU, RESET , KC_Q , KC_W , KC_E, KC_R , KC_T , KC_Y, KC_U , KC_I , KC_LBRC, KC_RBRC, KC_INS , KC_BSPC , \
+ KC_P4 , KC_P5, KC_P6 , KC_VOLD, KC_TAB , KC_A , KC_SLCK, KC_D, KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_QUOT, KC_BSLS , \
+ KC_P1 , KC_P2, KC_P3 , KC_PEQL, KC_LSFT, KC_Z , KC_X, KC_CAPS, KC_V , KC_B, KC_NLCK, KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_PGUP , \
+ KC_END, KC_P0, KC_PDOT, KC_PENT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC , KC_BSPC, KC_APP , MO(_FL), KC_HOME, KC_PGDN),
+};
diff --git a/keyboards/tkc/candybar/lefty_r3/keymaps/via/rules.mk b/keyboards/tkc/candybar/lefty_r3/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/tkc/candybar/lefty_r3/lefty_r3.c b/keyboards/tkc/candybar/lefty_r3/lefty_r3.c
new file mode 100644
index 0000000000..e5a821b7a9
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/lefty_r3.c
@@ -0,0 +1,18 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "lefty_r3.h"
+
diff --git a/keyboards/tkc/candybar/lefty_r3/lefty_r3.h b/keyboards/tkc/candybar/lefty_r3/lefty_r3.h
new file mode 100644
index 0000000000..d367e8d241
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/lefty_r3.h
@@ -0,0 +1,31 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "quantum.h"
+
+
+#define LAYOUT( \
+ k0d, k0e, k0f, k0g, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
+ k1d, k1e, k1f, k1g, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \
+ k2d, k2e, k2f, k2g, k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
+ k3d, k3e, k3f, k3g, k30, k31, k32, k35, k37, k38, k39, k3a, k3b, k3c \
+) { \
+ { k00, k01 , k02, k03 , k04 , k05, k06 , k07, k08, k09, k0a, k0b , k0c, k0d, k0e, k0f, k0g } , \
+ { k10, k11 , k12, k13 , k14 , k15, k16 , k17, k18, k19, k1a, KC_NO, k1c, k1d, k1e, k1f, k1g } , \
+ { k20, KC_NO, k22, k23 , k24 , k25, k26 , k27, k28, k29, k2a, k2b , k2c, k2d, k2e, k2f, k2g } , \
+ { k30, k31 , k32, KC_NO, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b , k3c, k3d, k3e, k3f, k3g } \
+}
diff --git a/keyboards/tkc/candybar/lefty_r3/readme.md b/keyboards/tkc/candybar/lefty_r3/readme.md
new file mode 100644
index 0000000000..3de24a7fd5
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/readme.md
@@ -0,0 +1,22 @@
+# TheKey.Company Candybar
+
+![Candybar](https://cdn.shopify.com/s/files/1/1679/2319/products/CBR3CollectionHERO_720x.jpg)
+
+The Key Company Candybar is a staggered 40% board with a numpad utilizing the ATmega32u4 microcontroller.
+
+* Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/)
+* Hardware Supported: TKC Candybar
+* Hardware Availability: [TheKey.Company](https://thekey.company/products/candybar-round-3)
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (default Escape key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tkc/candybar/lefty_r3:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tkc/candybar/lefty_r3/rules.mk b/keyboards/tkc/candybar/lefty_r3/rules.mk
new file mode 100644
index 0000000000..5021259667
--- /dev/null
+++ b/keyboards/tkc/candybar/lefty_r3/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/tkc/candybar/righty/keymaps/default/keymap.c b/keyboards/tkc/candybar/righty/keymaps/default/keymap.c
index 8f4cc08c74..c686e6f57d 100644
--- a/keyboards/tkc/candybar/righty/keymaps/default/keymap.c
+++ b/keyboards/tkc/candybar/righty/keymaps/default/keymap.c
@@ -23,16 +23,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST, \
- KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS, \
- KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS, \
+ KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST,
+ KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS,
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_LEFT,KC_DOWN,KC_RGHT,KC_P0,KC_PDOT,KC_PENT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
- KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
- KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU,
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD,
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
};
diff --git a/keyboards/tkc/candybar/righty/keymaps/via/keymap.c b/keyboards/tkc/candybar/righty/keymaps/via/keymap.c
index fb8ac93d46..f9bacbf555 100644
--- a/keyboards/tkc/candybar/righty/keymaps/via/keymap.c
+++ b/keyboards/tkc/candybar/righty/keymaps/via/keymap.c
@@ -25,28 +25,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[_BL] = LAYOUT(
- KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST, \
- KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS, \
- KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS, \
+ KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST,
+ KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS,
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_LEFT,KC_DOWN,KC_RGHT,KC_P0,KC_PDOT,KC_PENT),
/* Keymap _FL: Function Layer
*/
[_FL] = LAYOUT(
- RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
- KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
- KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU,
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD,
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
[_AL] = LAYOUT(
- RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
- KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
- KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU,
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD,
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
[_LL] = LAYOUT(
- RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
- KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
- KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU,
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD,
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL,
KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
};
diff --git a/keyboards/tkc/candybar/righty/rules.mk b/keyboards/tkc/candybar/righty/rules.mk
index 3244267430..52cb35c5a2 100644
--- a/keyboards/tkc/candybar/righty/rules.mk
+++ b/keyboards/tkc/candybar/righty/rules.mk
@@ -5,9 +5,8 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-# EXTRAFLAGS+=-flto
LTO_ENABLE = yes
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -15,8 +14,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/tkc/candybar/righty_r3/config.h b/keyboards/tkc/candybar/righty_r3/config.h
new file mode 100644
index 0000000000..f68e29013c
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/config.h
@@ -0,0 +1,91 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x544B //TK
+#define PRODUCT_ID 0x0002
+#define DEVICE_VER 0x0006
+#define MANUFACTURER The Key Company
+#define PRODUCT Candybar
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 17
+#define DIODE_DIRECTION COL2ROW
+#define MATRIX_ROW_PINS { F6, F7, D0, D2 }
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D5, B1, B3, B2, B0, F0, F1, F4, F5 }
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+//#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+// #define WS2812_LED_N 2
+// #define RGBLED_NUM WS2812_LED_N
+// #define WS2812_TIM_N 2
+// #define WS2812_TIM_CH 2
+// #define PORT_WS2812 GPIOA
+// #define PIN_WS2812 1
+// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
+//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP
+//#define WS2812_EXTERNAL_PULLUP
diff --git a/keyboards/tkc/candybar/righty_r3/info.json b/keyboards/tkc/candybar/righty_r3/info.json
new file mode 100644
index 0000000000..81dc4f8ec5
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "TKC Candybar",
+ "url": "",
+ "maintainer": "terrymathews",
+ "width": 17,
+ "height": 4,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Del", "x":11, "y":0}, {"label":"BkSp", "x":12, "y":0}, {"label":"7", "x":13, "y":0}, {"label":"8", "x":14, "y":0}, {"label":"9", "x":15, "y":0}, {"label":"*", "x":16, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"Enter", "x":11.25, "y":1, "w":1.75}, {"label":"4", "x":13, "y":1}, {"label":"5", "x":14, "y":1}, {"label":"6", "x":15, "y":1}, {"label":"-", "x":16, "y":1},
+ {"label":"Shift", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"Shift", "x":10.75, "y":2, "w":1.25}, {"label":"&uarr;", "x":12, "y":2}, {"label":"1", "x":13, "y":2}, {"label":"2", "x":14, "y":2}, {"label":"3", "x":15, "y":2}, {"label":"+", "x":16, "y":2},
+ {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"GUI", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":1.75}, {"x":5.5, "y":3, "w":1}, {"label":"Backspace", "x":6.5, "y":3, "w":2.25}, {"label":"Menu", "x":8.75, "y":3, "w":1.25}, {"label":"Fn", "x":10, "y":3}, {"label":"&larr;", "x":11, "y":3}, {"label":"&darr;", "x":12, "y":3}, {"label":"&rarr;", "x":13, "y":3}, {"label":"0", "x":14, "y":3}, {"label":".", "x":15, "y":3}, {"label":"Enter", "x":16, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/tkc/candybar/righty_r3/keymaps/default/keymap.c b/keyboards/tkc/candybar/righty_r3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..849f552961
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST, \
+ KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS, \
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_LEFT,KC_DOWN,KC_RGHT,KC_P0,KC_PDOT,KC_PENT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
+};
diff --git a/keyboards/tkc/candybar/righty_r3/keymaps/via/keymap.c b/keyboards/tkc/candybar/righty_r3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..269e3d727f
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BL,
+ _FL,
+ _AL,
+ _LL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = LAYOUT(
+ KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_DEL,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_PAST, \
+ KC_TAB,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_ENT,KC_P4,KC_P5,KC_P6,KC_PMNS, \
+ KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_RSFT,KC_UP,KC_P1,KC_P2,KC_P3,KC_PPLS, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_LEFT,KC_DOWN,KC_RGHT,KC_P0,KC_PDOT,KC_PENT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
+
+ [_AL] = LAYOUT(
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
+
+ [_LL] = LAYOUT(
+ RESET,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_LBRC,KC_RBRC,KC_INS,KC_BSPC,KC_P7,KC_P8,KC_P9,KC_VOLU, \
+ KC_TAB,KC_A,KC_SLCK,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_QUOT,KC_BSLS,KC_P4,KC_P5,KC_P6,KC_VOLD, \
+ KC_LSFT,KC_Z,KC_X,KC_CAPS,KC_V,KC_B,KC_NLCK,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_PGUP,KC_P1,KC_P2,KC_P3,KC_PEQL, \
+ KC_LCTL,KC_LGUI,KC_LALT,KC_SPC,KC_SPC,KC_BSPC,KC_APP,MO(_FL),KC_HOME,KC_PGDN,KC_END,KC_P0,KC_PDOT,KC_PENT),
+};
diff --git a/keyboards/tkc/candybar/righty_r3/keymaps/via/rules.mk b/keyboards/tkc/candybar/righty_r3/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/tkc/candybar/righty_r3/readme.md b/keyboards/tkc/candybar/righty_r3/readme.md
new file mode 100644
index 0000000000..e91a0015e9
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/readme.md
@@ -0,0 +1,22 @@
+# TheKey.Company Candybar
+
+![Candybar](https://cdn.shopify.com/s/files/1/1679/2319/products/CBR3CollectionHERO_720x.jpg)
+
+The Key Company Candybar is a staggered 40% board with a numpad utilizing the ATmega32u4 microcontroller.
+
+* Keyboard Maintainer: [Terry Mathews](https://github.com/TerryMathews/)
+* Hardware Supported: TKC Candybar
+* Hardware Availability: [TheKey.Company](https://thekey.company/products/candybar-round-3)
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (default Escape key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tkc/candybar/righty_r3:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tkc/candybar/righty_r3/righty_r3.c b/keyboards/tkc/candybar/righty_r3/righty_r3.c
new file mode 100644
index 0000000000..193c228f96
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/righty_r3.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "righty_r3.h"
diff --git a/keyboards/tkc/candybar/righty_r3/righty_r3.h b/keyboards/tkc/candybar/righty_r3/righty_r3.h
new file mode 100644
index 0000000000..faaef49394
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/righty_r3.h
@@ -0,0 +1,30 @@
+/* Copyright 2021 Terry Mathews
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, k1d, k1e, k1f, k1g, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, \
+ k30, k31, k32, k35, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g \
+) { \
+ { k00, k01 , k02, k03 , k04 , k05, k06 , k07, k08, k09, k0a, k0b , k0c, k0d, k0e, k0f, k0g } , \
+ { k10, k11 , k12, k13 , k14 , k15, k16 , k17, k18, k19, k1a, KC_NO, k1c, k1d, k1e, k1f, k1g } , \
+ { k20, KC_NO, k22, k23 , k24 , k25, k26 , k27, k28, k29, k2a, k2b , k2c, k2d, k2e, k2f, k2g } , \
+ { k30, k31 , k32, KC_NO, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b , k3c, k3d, k3e, k3f, k3g } \
+}
diff --git a/keyboards/tkc/candybar/righty_r3/rules.mk b/keyboards/tkc/candybar/righty_r3/rules.mk
new file mode 100644
index 0000000000..5021259667
--- /dev/null
+++ b/keyboards/tkc/candybar/righty_r3/rules.mk
@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/tkc/godspeed75/rules.mk b/keyboards/tkc/godspeed75/rules.mk
index bcb4ec9724..8728fe0a37 100644
--- a/keyboards/tkc/godspeed75/rules.mk
+++ b/keyboards/tkc/godspeed75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/m0lly/rules.mk b/keyboards/tkc/m0lly/rules.mk
index 22cdfb608e..8f29a8ea51 100644
--- a/keyboards/tkc/m0lly/rules.mk
+++ b/keyboards/tkc/m0lly/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/osav2/rules.mk b/keyboards/tkc/osav2/rules.mk
index ae6042f986..5409e92b66 100644
--- a/keyboards/tkc/osav2/rules.mk
+++ b/keyboards/tkc/osav2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/portico/info.json b/keyboards/tkc/portico/info.json
index 4fd61be674..b2ff8054c7 100644
--- a/keyboards/tkc/portico/info.json
+++ b/keyboards/tkc/portico/info.json
@@ -3,7 +3,7 @@
"url": "",
"maintainer": "TerryMathews",
"layout_aliases": {
- "LAYOUT_all": "LAYOUT_65_ansi_blocker",
+ "LAYOUT_all": "LAYOUT_65_ansi_blocker"
},
"layouts": {
"LAYOUT_65_ansi_blocker": {
diff --git a/keyboards/tkc/portico/rules.mk b/keyboards/tkc/portico/rules.mk
index 2e2fb5cffe..c98c9595bf 100644
--- a/keyboards/tkc/portico/rules.mk
+++ b/keyboards/tkc/portico/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h
new file mode 100644
index 0000000000..48be10a427
--- /dev/null
+++ b/keyboards/tkc/portico75/config.h
@@ -0,0 +1,179 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x544B // TK
+#define PRODUCT_ID 0x0011
+#define DEVICE_VER 0x0001
+#define MANUFACTURER TKC
+#define PRODUCT Portico75
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS \
+ { B0, E6, F0, F1, D3, D2 }
+#define MATRIX_COL_PINS \
+ { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, B3, B7 }
+
+/*Rotary Encoder Pins*/
+#define ENCODERS_PAD_A \
+ { B1 }
+#define ENCODERS_PAD_B \
+ { B2 }
+
+/*Sets the number of pulses per increment*/
+#define ENCODER_RESOLUTION 2
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_LED_PROCESS_LIMIT 4
+# define RGB_MATRIX_LED_FLUSH_LIMIT 26
+# define DEBOUNCE 3
+# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_KEYPRESSES
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+// # define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+// # define ENABLE_RGB_MATRIX_SPLASH
+// # define ENABLE_RGB_MATRIX_MULTISPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+# define DRIVER_ADDR_1 0b0110000
+# define DRIVER_COUNT 1
+# define DRIVER_1_LED_TOTAL 98
+# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+# define DRIVER_INDICATOR_LED_TOTAL 0
+#else
+// WT_RGB IS31FL3741 driver code
+# define DRIVER_COUNT 1
+# define DRIVER_LED_TOTAL 98
+
+# define RGB_BACKLIGHT_ENABLED 1
+
+// This conditionally compiles the backlight code for Portico75 specifics
+# define RGB_BACKLIGHT_PORTICO75
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+# define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 1
+
+// disable backlight after timeout in minutes, 0 = no timeout
+# define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
+
+// the default brightness
+# define RGB_BACKLIGHT_BRIGHTNESS 255
+
+// the default effect (RGB test)
+# define RGB_BACKLIGHT_EFFECT 255
+
+// the default effect speed (0-3)
+# define RGB_BACKLIGHT_EFFECT_SPEED 0
+
+// the default color1 and color2
+# define RGB_BACKLIGHT_COLOR_1 \
+ { .h = 0, .s = 255 }
+# define RGB_BACKLIGHT_COLOR_2 \
+ { .h = 127, .s = 255 }
+
+# define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
+# define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+# define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+# define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
+# define RGB_BACKLIGHT_USE_ISO_ENTER 0
+# define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
+# define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR \
+ { .color = {.h = 0, .s = 0}, .index = 255 }
+# define RGB_BACKLIGHT_LAYER_1_INDICATOR \
+ { .color = {.h = 0, .s = 0}, .index = 255 }
+# define RGB_BACKLIGHT_LAYER_2_INDICATOR \
+ { .color = {.h = 0, .s = 0}, .index = 255 }
+# define RGB_BACKLIGHT_LAYER_3_INDICATOR \
+ { .color = {.h = 0, .s = 0}, .index = 255 }
+
+// These define which keys in the matrix are alphas/mods
+// Used for backlight effects so colors are different for
+// alphas vs. mods
+// Each value is for a row, bit 0 is column 0
+// Alpha=0 Mod=1
+# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0110000000000001
+# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0110000000000001
+# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0111000000000001
+# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0111100000000001
+# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111111111111111
+
+// Backlight config starts after VIA's EEPROM usage,
+// dynamic keymaps start after this.
+# define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
+
+// VIA lighting is handled by the keyboard-level code
+# define VIA_CUSTOM_LIGHTING_ENABLE
+#endif
diff --git a/keyboards/tkc/portico75/info.json b/keyboards/tkc/portico75/info.json
new file mode 100644
index 0000000000..5aaf21ffcc
--- /dev/null
+++ b/keyboards/tkc/portico75/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "TKC Portico75",
+ "url": "",
+ "maintainer": "TerryMathews",
+ "layouts": {
+ "LAYOUT_75_ansi": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Mute", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Home", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "x":14.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Fn", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":5.5}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":5.5}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/tkc/portico75/keymaps/default/keymap.c b/keyboards/tkc/portico75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9577164891
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_75_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/keyboards/tkc/portico75/keymaps/via/keymap.c b/keyboards/tkc/portico75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cee94c4a1d
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/via/keymap.c
@@ -0,0 +1,109 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include QMK_KEYBOARD_H
+
+#define ENCODERS 1
+
+#define ENCODERS_CW_KEY { { 14, 3 } }
+#define ENCODERS_CCW_KEY { { 14, 4 } }
+
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+
+// WT RGB-specific keys:
+// EF_INC, EF_DEC, // next/previous backlight effect
+// H1_INC, H1_DEC, // Color 1 hue increase/decrease
+// S1_INC, S1_DEC, // Color 1 saturation increase/decrease
+// H2_INC, H2_DEC, // Color 2 hue increase/decrease
+// S2_INC, S2_DEC, // Color 2 saturation increase/decrease
+// BR_INC, BR_DEC, // backlight brightness increase/decrease
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_75_via(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_VOLD,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_VOLU,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#ifdef RGB_BACKLIGHT_PORTICO75
+ [1] = LAYOUT_75_via(
+ _______, EF_INC, EF_DEC, H1_INC, H1_DEC, S1_INC, S1_DEC, H2_INC, H2_DEC, S2_INC, S2_DEC, BR_INC, BR_DEC, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, MO(1), _______, _______, _______
+ ),
+#else
+ [1] = LAYOUT_75_via(
+ _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, MO(1), _______, _______, _______
+ ),
+#endif
+ [2] = LAYOUT_75_via(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_75_via(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+void encoder_action_unregister(void) {
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+ keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_user(void) { encoder_action_unregister(); }
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false;
+};
diff --git a/keyboards/tkc/portico75/keymaps/via/rules.mk b/keyboards/tkc/portico75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..9680dd9373
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/via/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+RGB_MATRIX_ENABLE = no # Use RGB matrix
+
+# project specific files
+SRC += keyboards/wilba_tech/wt_main.c \
+ keyboards/wilba_tech/wt_rgb_backlight.c \
+ quantum/color.c \
+ drivers/led/issi/is31fl3741.c
+
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/tkc/portico75/portico75.c b/keyboards/tkc/portico75/portico75.c
new file mode 100644
index 0000000000..812345b384
--- /dev/null
+++ b/keyboards/tkc/portico75/portico75.c
@@ -0,0 +1,188 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#include "portico75.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS18_SW1, CS17_SW1, CS16_SW1},
+ {0, CS18_SW2, CS17_SW2, CS16_SW2},
+ {0, CS18_SW3, CS17_SW3, CS16_SW3},
+ {0, CS18_SW4, CS17_SW4, CS16_SW4},
+ {0, CS18_SW5, CS17_SW5, CS16_SW5},
+ {0, CS18_SW6, CS17_SW6, CS16_SW6},
+ {0, CS18_SW7, CS17_SW7, CS16_SW7},
+ {0, CS18_SW8, CS17_SW8, CS16_SW8},
+ {0, CS18_SW9, CS17_SW9, CS16_SW9},
+
+ {0, CS21_SW1, CS20_SW1, CS19_SW1},
+ {0, CS21_SW2, CS20_SW2, CS19_SW2},
+ {0, CS21_SW3, CS20_SW3, CS19_SW3},
+ {0, CS21_SW4, CS20_SW4, CS19_SW4},
+ {0, CS21_SW5, CS20_SW5, CS19_SW5},
+ {0, CS21_SW6, CS20_SW6, CS19_SW6}, //Encoder, NO_LED
+
+ {0, CS15_SW1, CS14_SW1, CS13_SW1},
+ {0, CS15_SW2, CS14_SW2, CS13_SW2},
+ {0, CS15_SW3, CS14_SW3, CS13_SW3},
+ {0, CS15_SW4, CS14_SW4, CS13_SW4},
+ {0, CS15_SW5, CS14_SW5, CS13_SW5},
+ {0, CS15_SW6, CS14_SW6, CS13_SW6},
+ {0, CS15_SW7, CS14_SW7, CS13_SW7},
+ {0, CS15_SW8, CS14_SW8, CS13_SW8},
+ {0, CS15_SW9, CS14_SW9, CS13_SW9},
+
+ {0, CS24_SW1, CS23_SW1, CS22_SW1},
+ {0, CS24_SW2, CS23_SW2, CS22_SW2},
+ {0, CS24_SW3, CS23_SW3, CS22_SW3},
+ {0, CS24_SW4, CS23_SW4, CS22_SW4},
+ {0, CS24_SW5, CS23_SW5, CS22_SW5},
+ {0, CS24_SW6, CS23_SW6, CS22_SW6},
+
+ {0, CS12_SW1, CS11_SW1, CS10_SW1},
+ {0, CS12_SW2, CS11_SW2, CS10_SW2},
+ {0, CS12_SW3, CS11_SW3, CS10_SW3},
+ {0, CS12_SW4, CS11_SW4, CS10_SW4},
+ {0, CS12_SW5, CS11_SW5, CS10_SW5},
+ {0, CS12_SW6, CS11_SW6, CS10_SW6},
+ {0, CS12_SW7, CS11_SW7, CS10_SW7},
+ {0, CS12_SW8, CS11_SW8, CS10_SW8},
+ {0, CS12_SW9, CS11_SW9, CS10_SW9},
+
+ {0, CS27_SW1, CS26_SW1, CS25_SW1},
+ {0, CS27_SW2, CS26_SW2, CS25_SW2},
+ {0, CS27_SW3, CS26_SW3, CS25_SW3},
+ {0, CS27_SW4, CS26_SW4, CS25_SW4},
+ {0, CS27_SW5, CS26_SW5, CS25_SW5},
+ {0, CS27_SW6, CS26_SW6, CS25_SW6},
+
+ {0, CS9_SW1, CS8_SW1, CS7_SW1},
+ {0, CS9_SW2, CS8_SW2, CS7_SW2},
+ {0, CS9_SW3, CS8_SW3, CS7_SW3},
+ {0, CS9_SW4, CS8_SW4, CS7_SW4},
+ {0, CS9_SW5, CS8_SW5, CS7_SW5},
+ {0, CS9_SW6, CS8_SW6, CS7_SW6},
+ {0, CS9_SW7, CS8_SW7, CS7_SW7},
+ {0, CS9_SW8, CS8_SW8, CS7_SW8},
+ {0, CS9_SW9, CS8_SW9, CS7_SW9},
+
+ {0, CS30_SW1, CS29_SW1, CS28_SW1},
+ {0, CS30_SW2, CS29_SW2, CS28_SW2},
+ {0, CS30_SW3, CS29_SW3, CS28_SW3},
+ {0, CS30_SW4, CS29_SW4, CS28_SW4},
+
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {0, CS6_SW2, CS5_SW2, CS4_SW2},
+ {0, CS6_SW3, CS5_SW3, CS4_SW3},
+ {0, CS6_SW4, CS5_SW4, CS4_SW4},
+ {0, CS6_SW5, CS5_SW5, CS4_SW5},
+ {0, CS6_SW6, CS5_SW6, CS4_SW6},
+ {0, CS6_SW7, CS5_SW7, CS4_SW7},
+ {0, CS6_SW8, CS5_SW8, CS4_SW8},
+ {0, CS6_SW9, CS5_SW9, CS4_SW9},
+
+ {0, CS33_SW1, CS32_SW1, CS31_SW1},
+ {0, CS33_SW2, CS32_SW2, CS31_SW2},
+ {0, CS33_SW3, CS32_SW3, CS31_SW3},
+ {0, CS33_SW4, CS32_SW4, CS31_SW4},
+
+ {0, CS3_SW1, CS2_SW1, CS1_SW1},
+ {0, CS3_SW2, CS2_SW2, CS1_SW2},
+ {0, CS3_SW3, CS2_SW3, CS1_SW3},
+ {0, CS3_SW6, CS2_SW6, CS1_SW6},
+ {0, CS3_SW8, CS2_SW8, CS1_SW8},
+ {0, CS3_SW9, CS2_SW9, CS1_SW9},
+
+ {0, CS36_SW1, CS35_SW1, CS34_SW1},
+ {0, CS36_SW2, CS35_SW2, CS34_SW2},
+ {0, CS36_SW3, CS35_SW3, CS34_SW3},
+
+/*UNDERGLOW*/
+ {0, CS39_SW1, CS38_SW1, CS37_SW1},
+ {0, CS39_SW2, CS38_SW2, CS37_SW2},
+ {0, CS39_SW3, CS38_SW3, CS37_SW3},
+ {0, CS39_SW4, CS38_SW4, CS37_SW4},
+ {0, CS39_SW5, CS38_SW5, CS37_SW5},
+ {0, CS39_SW6, CS38_SW6, CS37_SW6},
+ {0, CS39_SW7, CS38_SW7, CS37_SW7},
+ {0, CS39_SW8, CS38_SW8, CS37_SW8},
+ {0, CS39_SW9, CS38_SW9, CS37_SW9},
+
+ {0, CS36_SW4, CS35_SW4, CS34_SW4},
+ {0, CS36_SW5, CS35_SW5, CS34_SW5},
+ {0, CS36_SW6, CS35_SW6, CS34_SW6},
+ {0, CS36_SW7, CS35_SW7, CS34_SW7},
+ {0, CS36_SW8, CS35_SW8, CS34_SW8},
+ {0, CS36_SW9, CS35_SW9, CS34_SW9},
+
+ {0, CS33_SW5, CS32_SW5, CS31_SW5},
+ {0, CS33_SW6, CS32_SW6, CS31_SW6},
+ {0, CS33_SW7, CS32_SW7, CS31_SW7},
+
+};
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14},
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44},
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, NO_LED, NO_LED},
+ { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, NO_LED, NO_LED},
+ { 71, 72, 73, NO_LED, NO_LED, 74, NO_LED, NO_LED, NO_LED, 75, 76, 77, 78, 79, NO_LED},
+}, {
+ {0,0},{18,0},{33,0},{48,0},{62,0},{81,0},{96,0},{110,0},{125,0},{143,0},{158,0},{173,0},{187,0},{205,0},{224,0},
+ {0,15},{15,15},{29,15},{44,15},{59,15},{74,15},{88,15},{103,15},{118,15},{132,15},{147,15},{162,15},{176,15},{198,15},{224,15},
+ {4,26},{22,26},{37,26},{51,26},{66,26},{81,26},{96,26},{110,26},{125,26},{140,26},{154,26},{169,26},{183,26},{202,26},{224,26},
+ {5,38},{25,38},{40,38},{54,38},{69,38},{84,38},{98,38},{113,38},{128,38},{143,38},{157,38},{172,38},{197,38},
+ {9,49},{33,49},{48,49},{62,49},{77,49},{92,49},{107,49},{121,49},{136,49},{151,49},{165,49},{186,49},{209,52},
+ {2,61},{20,61},{39,61},{94,61},{151,61},{173,61},{195,64},{209,64},{224,64},
+ {2,0},{46,0},{90,0},{134,0},{178,0},{222,0},{224,2},{224,32},{224,62},{2,64},{46,64},{90,64},{134,64},{178,64},{222,64},{0,2},{0,32},{0,62},
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+} };
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void)
+{
+ if (host_keyboard_led_state().caps_lock)
+ {
+ rgb_matrix_set_color(45, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/tkc/portico75/portico75.h b/keyboards/tkc/portico75/portico75.h
new file mode 100644
index 0000000000..019fb07f75
--- /dev/null
+++ b/keyboards/tkc/portico75/portico75.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2021 Terry Mathews
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#pragma once
+
+#include "quantum.h"
+
+#ifdef RGB_BACKLIGHT_PORTICO75
+#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
+#include "via.h"
+#endif
+
+#define XXX KC_NO
+
+#define LAYOUT_75_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, \
+ K50, K51, K52, K55, K59, K5A, K5B, K5C, K5D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, XXX }, \
+ { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, K5A, K5B, K5C, K5D, XXX } \
+}
+
+#define LAYOUT_75_via( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
+ K50, K51, K52, K55, K59, K5A, K5B, K5C, K5D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, K4E }, \
+ { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, K5A, K5B, K5C, K5D, XXX } \
+}
diff --git a/keyboards/tkc/portico75/readme.md b/keyboards/tkc/portico75/readme.md
new file mode 100644
index 0000000000..3bb5ad319f
--- /dev/null
+++ b/keyboards/tkc/portico75/readme.md
@@ -0,0 +1,21 @@
+# TKC Portico75
+
+![TKC Portico75](https://i.imgur.com/Bkd0kYS.jpg)
+
+A 75% keyboard kit with per-key and underglow RGB lighting and an encoder knob.
+
+* Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews)
+* Hardware Supported: TKC Portico75 (ATmega32U4)
+* Hardware Availability: TBA
+
+Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tkc/portico75:default
+
+Flashing example for this keyboard:
+
+ make tkc/portico75:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tkc/portico75/rules.mk b/keyboards/tkc/portico75/rules.mk
new file mode 100644
index 0000000000..e8a74c9026
--- /dev/null
+++ b/keyboards/tkc/portico75/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = IS31FL3741
+CIE1931_CURVE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/tkc/tkc1800/keymaps/default/keymap.c b/keyboards/tkc/tkc1800/keymaps/default/keymap.c
index 29a19e680d..0fd56f73f8 100644
--- a/keyboards/tkc/tkc1800/keymaps/default/keymap.c
+++ b/keyboards/tkc/tkc1800/keymaps/default/keymap.c
@@ -42,13 +42,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------'
*/
[BASE] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, \
- KC_DEL, KC_END, KC_PGDN, KC_SLCK, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR,
+ KC_DEL, KC_END, KC_PGDN, KC_SLCK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
/* Keymap FUNCTION: (Function Layer)
* ,-------------------------------------------------------. ,-------------------.
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------'
*/
[FUNCTION] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
- _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______,
+ _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/tkc/tkc1800/keymaps/via/keymap.c b/keyboards/tkc/tkc1800/keymaps/via/keymap.c
index 74ab1149f6..a14c6df217 100644
--- a/keyboards/tkc/tkc1800/keymaps/via/keymap.c
+++ b/keyboards/tkc/tkc1800/keymaps/via/keymap.c
@@ -43,13 +43,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------'
*/
[BASE] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, \
- KC_DEL, KC_END, KC_PGDN, KC_SLCK, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR,
+ KC_DEL, KC_END, KC_PGDN, KC_SLCK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(FUNCTION), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
/* Keymap FUNCTION: (Function Layer)
* ,-------------------------------------------------------. ,-------------------.
@@ -69,31 +69,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------'
*/
[FUNCTION] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
- _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______,
+ _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[ALTERNATE] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
- _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______,
+ _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[LAST] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
- _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______,
+ _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c b/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c
index 9349af7bcd..df6030702f 100644
--- a/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c
+++ b/keyboards/tkc/tkc1800/keymaps/wkl/keymap.c
@@ -42,22 +42,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------'
*/
[BASE] = LAYOUT(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, \
- KC_DEL, KC_END, KC_PGDN, KC_SLCK, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \
- KC_LCTL, KC_LALT, XXXXXXX, KC_SPC, XXXXXXX, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR,
+ KC_DEL, KC_END, KC_PGDN, KC_SLCK,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, XXXXXXX, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
+ KC_LCTL, KC_LALT, XXXXXXX, KC_SPC, XXXXXXX, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
),
[FUNCTION] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
- _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX, \
- _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______,
+ _______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, _______, _______, _______, _______, XXXXXXX,
+ _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/tkc/tkc1800/rules.mk b/keyboards/tkc/tkc1800/rules.mk
index 7e04b86fca..cf95bbd4b2 100644
--- a/keyboards/tkc/tkc1800/rules.mk
+++ b/keyboards/tkc/tkc1800/rules.mk
@@ -7,16 +7,12 @@ BOOTLOADER = qmk-dfu
# Build Options
# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkc/tkl_ab87/rules.mk b/keyboards/tkc/tkl_ab87/rules.mk
index d6b0bdad95..63a57dcadb 100644
--- a/keyboards/tkc/tkl_ab87/rules.mk
+++ b/keyboards/tkc/tkl_ab87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkw/grandiceps/rules.mk b/keyboards/tkw/grandiceps/rules.mk
index fefbec5076..f408feb059 100644
--- a/keyboards/tkw/grandiceps/rules.mk
+++ b/keyboards/tkw/grandiceps/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable rotary encoder support
diff --git a/keyboards/tkw/stoutgat/v1/rules.mk b/keyboards/tkw/stoutgat/v1/rules.mk
index c74c1b2e24..a763c0f8bb 100644
--- a/keyboards/tkw/stoutgat/v1/rules.mk
+++ b/keyboards/tkw/stoutgat/v1/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tkw/stoutgat/v2/rules.mk b/keyboards/tkw/stoutgat/v2/rules.mk
index 9de812f283..1b76936d50 100644
--- a/keyboards/tkw/stoutgat/v2/rules.mk
+++ b/keyboards/tkw/stoutgat/v2/rules.mk
@@ -7,10 +7,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable rotary encoder support
diff --git a/keyboards/tmo50/rules.mk b/keyboards/tmo50/rules.mk
index 4d48dda2cf..38f81fd4dc 100644
--- a/keyboards/tmo50/rules.mk
+++ b/keyboards/tmo50/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/toad/keymaps/ansi_wk/keymap.c b/keyboards/toad/keymaps/ansi_wk/keymap.c
index a4fd348f0e..2ed365173e 100644
--- a/keyboards/toad/keymaps/ansi_wk/keymap.c
+++ b/keyboards/toad/keymaps/ansi_wk/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_ansi_wk(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL
)
};
diff --git a/keyboards/toad/keymaps/ansi_wkl/keymap.c b/keyboards/toad/keymaps/ansi_wkl/keymap.c
index 7fb6b3b599..1ae6a54424 100644
--- a/keyboards/toad/keymaps/ansi_wkl/keymap.c
+++ b/keyboards/toad/keymaps/ansi_wkl/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_ansi_wkl(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL
)
};
diff --git a/keyboards/toad/keymaps/default/keymap.c b/keyboards/toad/keymaps/default/keymap.c
index 4c30bdc442..0338f32e03 100644
--- a/keyboards/toad/keymaps/default/keymap.c
+++ b/keyboards/toad/keymaps/default/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
)
};
diff --git a/keyboards/toad/keymaps/iso_wk/keymap.c b/keyboards/toad/keymaps/iso_wk/keymap.c
index 2025504321..36fb5f9ebc 100644
--- a/keyboards/toad/keymaps/iso_wk/keymap.c
+++ b/keyboards/toad/keymaps/iso_wk/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_iso_wk(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL
)
};
diff --git a/keyboards/toad/keymaps/iso_wkl/keymap.c b/keyboards/toad/keymaps/iso_wkl/keymap.c
index 1659d7b384..3ad835c830 100644
--- a/keyboards/toad/keymaps/iso_wkl/keymap.c
+++ b/keyboards/toad/keymaps/iso_wkl/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_iso_wkl(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL
)
};
diff --git a/keyboards/toad/rules.mk b/keyboards/toad/rules.mk
index 51fa4484b8..82694737e6 100644
--- a/keyboards/toad/rules.mk
+++ b/keyboards/toad/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/tokyokeyboard/alix40/rules.mk b/keyboards/tokyokeyboard/alix40/rules.mk
index 031e0ef7e1..f9e5e2485a 100644
--- a/keyboards/tokyokeyboard/alix40/rules.mk
+++ b/keyboards/tokyokeyboard/alix40/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c
index 9139d15bc4..595ddacde4 100644
--- a/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c
@@ -20,10 +20,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[BL] = LAYOUT_60_hhkb(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN), \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN),
KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT ),
/* 1: HHKB Fn layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
@@ -39,10 +39,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[FN]= LAYOUT_60_hhkb(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
};
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c
index ffef9af795..b18c76ba2a 100644
--- a/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c
@@ -8,30 +8,30 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BL] = LAYOUT_60_hhkb(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN), \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FN),
KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT ),
[FN]= LAYOUT_60_hhkb(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
[2]= LAYOUT_60_hhkb(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______ ),
[3]= LAYOUT_60_hhkb(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/tokyokeyboard/tokyo60/rules.mk b/keyboards/tokyokeyboard/tokyo60/rules.mk
index 627e2c7771..07b82d9209 100644
--- a/keyboards/tokyokeyboard/tokyo60/rules.mk
+++ b/keyboards/tokyokeyboard/tokyo60/rules.mk
@@ -10,13 +10,10 @@ BOOTLOADER = atmel-dfu
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
AUDIO_ENABLE = no # Audio output
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable RGB light
diff --git a/keyboards/torn/rules.mk b/keyboards/torn/rules.mk
index 044d404fe4..280eaf8da5 100644
--- a/keyboards/torn/rules.mk
+++ b/keyboards/torn/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable rotary encoder
diff --git a/keyboards/touchpad/rules.mk b/keyboards/touchpad/rules.mk
index f1febba12f..45ffab29f4 100644
--- a/keyboards/touchpad/rules.mk
+++ b/keyboards/touchpad/rules.mk
@@ -5,21 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
CUSTOM_MATRIX = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
SRC += matrix.c i2c_master.c
diff --git a/keyboards/tr60w/rules.mk b/keyboards/tr60w/rules.mk
index aeff331e7e..b27013f863 100644
--- a/keyboards/tr60w/rules.mk
+++ b/keyboards/tr60w/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/trashman/ketch/rules.mk b/keyboards/trashman/ketch/rules.mk
index 98d9980428..08651407c5 100644
--- a/keyboards/trashman/ketch/rules.mk
+++ b/keyboards/trashman/ketch/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/treadstone32/keymaps/default/rules.mk b/keyboards/treadstone32/keymaps/default/rules.mk
index 882ddd6977..387a81d04b 100644
--- a/keyboards/treadstone32/keymaps/default/rules.mk
+++ b/keyboards/treadstone32/keymaps/default/rules.mk
@@ -1,8 +1,3 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-
# If your custom treadstone32 pcb, you can rewrite to yes.
RGBLIGHT_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
# Other selectable option
diff --git a/keyboards/treadstone32/rules.mk b/keyboards/treadstone32/rules.mk
index 11c1d342f2..096c25856e 100644
--- a/keyboards/treadstone32/rules.mk
+++ b/keyboards/treadstone32/rules.mk
@@ -9,7 +9,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
diff --git a/keyboards/treadstone48/keymaps/default/keymap.c b/keyboards/treadstone48/keymaps/default/keymap.c
index f1b37364b5..00884f3918 100644
--- a/keyboards/treadstone48/keymaps/default/keymap.c
+++ b/keyboards/treadstone48/keymaps/default/keymap.c
@@ -40,59 +40,59 @@ enum custom_keycodes {
#define KC_GRSF RSFT_T(KC_GRV)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_base( \
+ [_BASE] = LAYOUT_base(
//,--------------------------------------------------------------------------------------------------------------------.
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,\
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
- KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,\
+ KC_TBSF, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,\
+ KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_ALAP, KC_LEFT, KC_DOWN, KC_RGHT,
//`-------------------------------------------------------------------------------------------------------------------'
- KC_GRSF \
+ KC_GRSF
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
),
- [_LOWER] = LAYOUT_base( \
+ [_LOWER] = LAYOUT_base(
//,--------------------------------------------------------------------------------------------------------------------.
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,\
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
- _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, _______,\
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, _______,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP, \
+ _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KANJI, XXXXXXX, XXXXXXX, KC_COMM, KC_DOT, KC_GRV, KC_PGUP,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,\
+ _______, _______, _______, _______, KC_DEL, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END,
//`-------------------------------------------------------------------------------------------------------------------'
- _______ \
+ _______
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
),
- [_RAISE] = LAYOUT_base( \
+ [_RAISE] = LAYOUT_base(
//,--------------------------------------------------------------------------------------------------------------------.
- _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,\
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,\
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_QUOT, _______,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_RO, XXXXXXX,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,\
+ _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_SLSH,
//`-------------------------------------------------------------------------------------------------------------------'
- _______ \
+ _______
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
),
- [_ADJUST] = LAYOUT_base( \
+ [_ADJUST] = LAYOUT_base(
//,--------------------------------------------------------------------------------------------------------------------.
- XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
+ XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------|
- XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,\
+ XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U, \
+ _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, KC_MS_U,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,\
+ _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R,
//`-------------------------------------------------------------------------------------------------------------------'
- _______ \
+ _______
// ExtraKey: This key is an extra key. REV1 is a split back space. REV2 is to the right of the arrow-up key.
)
};
diff --git a/keyboards/treadstone48/rules.mk b/keyboards/treadstone48/rules.mk
index e60d3dd50f..3bf42c85c6 100644
--- a/keyboards/treadstone48/rules.mk
+++ b/keyboards/treadstone48/rules.mk
@@ -11,10 +11,7 @@ BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
diff --git a/keyboards/treasure/type9/keymaps/default/config.h b/keyboards/treasure/type9/keymaps/default/config.h
deleted file mode 100644
index a3ed4f762a..0000000000
--- a/keyboards/treasure/type9/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 MechMerlin
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/treasure/type9/keymaps/default/keymap.c b/keyboards/treasure/type9/keymaps/default/keymap.c
index 7d22421711..6b15c0486d 100644
--- a/keyboards/treasure/type9/keymaps/default/keymap.c
+++ b/keyboards/treasure/type9/keymaps/default/keymap.c
@@ -23,9 +23,9 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_0, KC_1, KC_2, \
- KC_3, KC_4, KC_5, \
- KC_6, KC_7, KC_8 \
+ KC_0, KC_1, KC_2,
+ KC_3, KC_4, KC_5,
+ KC_6, KC_7, KC_8
),
};
diff --git a/keyboards/treasure/type9/rules.mk b/keyboards/treasure/type9/rules.mk
index f752158eec..539eb1bf11 100644
--- a/keyboards/treasure/type9/rules.mk
+++ b/keyboards/treasure/type9/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/treasure/type9s2/rules.mk b/keyboards/treasure/type9s2/rules.mk
index 4f69f205dd..88f7e1f94c 100644
--- a/keyboards/treasure/type9s2/rules.mk
+++ b/keyboards/treasure/type9s2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
index 57a1ccc1ba..c802f00412 100644
--- a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
+++ b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tronguylabs/m122_3270/teensy/rules.mk b/keyboards/tronguylabs/m122_3270/teensy/rules.mk
index 2e3674f2fc..16c4501c04 100644
--- a/keyboards/tronguylabs/m122_3270/teensy/rules.mk
+++ b/keyboards/tronguylabs/m122_3270/teensy/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tszaboo/ortho4exent/rules.mk b/keyboards/tszaboo/ortho4exent/rules.mk
index 66770322ba..12b5d9ec2c 100644
--- a/keyboards/tszaboo/ortho4exent/rules.mk
+++ b/keyboards/tszaboo/ortho4exent/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tunks/ergo33/rules.mk b/keyboards/tunks/ergo33/rules.mk
index 6c02969ec5..bd1dc8586a 100644
--- a/keyboards/tunks/ergo33/rules.mk
+++ b/keyboards/tunks/ergo33/rules.mk
@@ -12,10 +12,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control
MOUSEKEY_ENABLE = yes # Mouse keys
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no # Console for debug
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/tw40/rules.mk b/keyboards/tw40/rules.mk
index 33e1763375..1f52c37154 100644
--- a/keyboards/tw40/rules.mk
+++ b/keyboards/tw40/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/txuu/rules.mk b/keyboards/txuu/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/txuu/rules.mk
+++ b/keyboards/txuu/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ua62/rules.mk b/keyboards/ua62/rules.mk
index 74a7851e6c..33d28b3a89 100644
--- a/keyboards/ua62/rules.mk
+++ b/keyboards/ua62/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/uk78/rules.mk b/keyboards/uk78/rules.mk
index 59501f227b..0cf8df9c19 100644
--- a/keyboards/uk78/rules.mk
+++ b/keyboards/uk78/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/underscore33/rev1/rules.mk b/keyboards/underscore33/rev1/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/underscore33/rev1/rules.mk
+++ b/keyboards/underscore33/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/underscore33/rev2/rules.mk b/keyboards/underscore33/rev2/rules.mk
index 40587ac8ae..dd550e3ae5 100644
--- a/keyboards/underscore33/rev2/rules.mk
+++ b/keyboards/underscore33/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ungodly/launch_pad/rules.mk b/keyboards/ungodly/launch_pad/rules.mk
index fb7875dfa4..49bc956e73 100644
--- a/keyboards/ungodly/launch_pad/rules.mk
+++ b/keyboards/ungodly/launch_pad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ungodly/nines/rules.mk b/keyboards/ungodly/nines/rules.mk
index ed8f6b6ea4..c83294559f 100644
--- a/keyboards/ungodly/nines/rules.mk
+++ b/keyboards/ungodly/nines/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
index 323a834c53..8acd50a10f 100644
--- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = no # Enable rotary encoder support
diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
index 2e6453ccdf..a8f43567b2 100644
--- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = no # Enable rotary encoder support
diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
index 323a834c53..8acd50a10f 100644
--- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = no # Enable rotary encoder support
diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
index 323a834c53..8acd50a10f 100644
--- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
+++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
ENCODER_ENABLE = no # Enable rotary encoder support
diff --git a/keyboards/unikorn/rules.mk b/keyboards/unikorn/rules.mk
index 4c4a33355e..7bc9adda6b 100644
--- a/keyboards/unikorn/rules.mk
+++ b/keyboards/unikorn/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/unison/v04/rules.mk b/keyboards/unison/v04/rules.mk
index 8119f39206..5d99b1f480 100644
--- a/keyboards/unison/v04/rules.mk
+++ b/keyboards/unison/v04/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/uno/rules.mk b/keyboards/uno/rules.mk
index 6a63c958d3..ebbb7bc613 100644
--- a/keyboards/uno/rules.mk
+++ b/keyboards/uno/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/uranuma/rules.mk b/keyboards/uranuma/rules.mk
index 0b804e053c..34354b8500 100644
--- a/keyboards/uranuma/rules.mk
+++ b/keyboards/uranuma/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ut472/keymaps/default/config.h b/keyboards/ut472/keymaps/default/config.h
deleted file mode 100644
index f88ebf7e80..0000000000
--- a/keyboards/ut472/keymaps/default/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2018 Carlos Filoteo
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "config_common.h"
-
-// place overrides here
diff --git a/keyboards/ut472/keymaps/default/keymap.c b/keyboards/ut472/keymaps/default/keymap.c
index c6509e97a6..e303f2220c 100644
--- a/keyboards/ut472/keymaps/default/keymap.c
+++ b/keyboards/ut472/keymaps/default/keymap.c
@@ -68,7 +68,7 @@ LAYOUT( /* Right */
* |-------------------------------------------------------------------------+
* | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
* |-------------------------------------------------------------------------+
- * | | | |Capsl| | | | Home| PgDn| PgUp| End |
+ * | | | |Capsl| | | | Next| Vol-| Vol+| Play|
* `-------------------------------------------------------------------------'
*/
@@ -76,7 +76,7 @@ LAYOUT( /* Left */
KC_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_DELETE,
_______, _______, _______, _______, _______, _______, _______, KC_UNDERSCORE, KC_PLUS, KC_LEFT_CURLY_BRACE, KC_RIGHT_CURLY_BRACE, KC_PIPE,
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
- _______, _______, _______, KC_CAPS, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ _______, _______, _______, KC_CAPS, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* FN Layer 3
diff --git a/keyboards/ut472/rules.mk b/keyboards/ut472/rules.mk
index 1629e40188..9c7d75a344 100644
--- a/keyboards/ut472/rules.mk
+++ b/keyboards/ut472/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/utd80/rules.mk b/keyboards/utd80/rules.mk
index c8629bd704..a7d70049c2 100644
--- a/keyboards/utd80/rules.mk
+++ b/keyboards/utd80/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/uzu42/keymaps/default/keymap.c b/keyboards/uzu42/keymaps/default/keymap.c
index fbed8b0638..03ac17f629 100644
--- a/keyboards/uzu42/keymaps/default/keymap.c
+++ b/keyboards/uzu42/keymaps/default/keymap.c
@@ -39,51 +39,51 @@ enum custom_keycodes {
#define KC_ALBS ALT_T(KC_BSPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT( \
+ [_QWERTY] = LAYOUT(
//,---------------------------------------. ,---------------------------------------.
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,\
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,\
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,\
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- KC_LSFT, KC_SPC,KC_LALT,KC_LGUI, LOWER,KC_CTES, KC_SFSP, RAISE,KC_ALBS,KC_RCTL,KC_LGUI,XXXXXXX \
+ KC_LSFT, KC_SPC,KC_LALT,KC_LGUI, LOWER,KC_CTES, KC_SFSP, RAISE,KC_ALBS,KC_RCTL,KC_LGUI,XXXXXXX
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
),
- [_LOWER] = LAYOUT( \
+ [_LOWER] = LAYOUT(
//,---------------------------------------. ,---------------------------------------.
- KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,\
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_TAB,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, KC_ENT,\
+ KC_TAB,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_LEFT,KC_DOWN, KC_UP,KC_RGHT, KC_ENT,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_LCTL, KC_SPC,KC_LSFT,KC_LALT, KC_DEL, KC_BSPC,KC_HOME, KC_END,XXXXXXX,XXXXXXX,\
+ KC_LCTL, KC_SPC,KC_LSFT,KC_LALT, KC_DEL, KC_BSPC,KC_HOME, KC_END,XXXXXXX,XXXXXXX,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
),
- [_RAISE] = LAYOUT( \
+ [_RAISE] = LAYOUT(
//,---------------------------------------. ,---------------------------------------.
- KC_EXLM, KC_AT,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,\
+ KC_EXLM, KC_AT,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_TAB,KC_UNDS,KC_PLUS,KC_PIPE,KC_TILD, KC_COLN,KC_DQUO, KC_GT,KC_LCBR,KC_RCBR,\
+ KC_TAB,KC_UNDS,KC_PLUS,KC_PIPE,KC_TILD, KC_COLN,KC_DQUO, KC_GT,KC_LCBR,KC_RCBR,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_LCTL,KC_MINS, KC_EQL,KC_BSLS, KC_GRV, KC_SCLN,KC_QUOT, KC_LT,KC_LBRC,KC_RBRC,\
+ KC_LCTL,KC_MINS, KC_EQL,KC_BSLS, KC_GRV, KC_SCLN,KC_QUOT, KC_LT,KC_LBRC,KC_RBRC,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
),
- [_ADJUST] = LAYOUT( \
+ [_ADJUST] = LAYOUT(
//,---------------------------------------. ,---------------------------------------.
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,\
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- KC_F11, KC_F12, RESET,KC_PSCR, KC_INS, RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,XXXXXXX,\
+ KC_F11, KC_F12, RESET,KC_PSCR, KC_INS, RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,XXXXXXX,
//|-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
- XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,RGBRST,\
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, RGB_MOD,RGB_HUD,RGB_SAD,RGB_VAD,RGBRST,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ \
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
)
};
diff --git a/keyboards/uzu42/rules.mk b/keyboards/uzu42/rules.mk
index d33fedf728..eb2392e08b 100644
--- a/keyboards/uzu42/rules.mk
+++ b/keyboards/uzu42/rules.mk
@@ -5,20 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
OLED_ENABLE = no # OLED display
SPLIT_KEYBOARD = yes
diff --git a/keyboards/v4n4g0rth0n/v1/rules.mk b/keyboards/v4n4g0rth0n/v1/rules.mk
index 62be7cc157..4b26405509 100644
--- a/keyboards/v4n4g0rth0n/v1/rules.mk
+++ b/keyboards/v4n4g0rth0n/v1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/v4n4g0rth0n/v2/rules.mk b/keyboards/v4n4g0rth0n/v2/rules.mk
index b0b6b8602b..ae6fb924f1 100644
--- a/keyboards/v4n4g0rth0n/v2/rules.mk
+++ b/keyboards/v4n4g0rth0n/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/v60_type_r/keymaps/default/keymap.c b/keyboards/v60_type_r/keymaps/default/keymap.c
index a002a46a8c..106c2d1833 100644
--- a/keyboards/v60_type_r/keymaps/default/keymap.c
+++ b/keyboards/v60_type_r/keymaps/default/keymap.c
@@ -35,10 +35,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[0] = LAYOUT_60_ansi(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_APP, KC_RCTL),
/* Keymap 1: FN Layer
@@ -55,10 +55,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[1] = LAYOUT_60_ansi(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_INS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_INS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/v60_type_r/keymaps/iso/config.h b/keyboards/v60_type_r/keymaps/iso/config.h
deleted file mode 100644
index 6a1994d6ff..0000000000
--- a/keyboards/v60_type_r/keymaps/iso/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2019 Lukewh
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-// place overrides here
diff --git a/keyboards/v60_type_r/keymaps/iso/keymap.c b/keyboards/v60_type_r/keymaps/iso/keymap.c
index 17feaec3db..8c7b98bfd2 100644
--- a/keyboards/v60_type_r/keymaps/iso/keymap.c
+++ b/keyboards/v60_type_r/keymaps/iso/keymap.c
@@ -18,12 +18,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Ctrl|Gui |Alt | Space |Fn0 |Gui |App|Ctrl|
* `-----------------------------------------------------------'
*/
- [0] = LAYOUT_60_iso( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_APP, KC_RCTL \
+ [0] = LAYOUT_60_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_APP, KC_RCTL
),
/* Keymap 0: Default Layer (Qwerty)
@@ -39,11 +39,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | |
* `-----------------------------------------------------------'
*/
- [1] = LAYOUT_60_iso( \
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, \
- KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, \
+ [1] = LAYOUT_60_iso(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
diff --git a/keyboards/v60_type_r/rules.mk b/keyboards/v60_type_r/rules.mk
index 0f1ac6a576..28fc016de3 100644
--- a/keyboards/v60_type_r/rules.mk
+++ b/keyboards/v60_type_r/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable the RGB Underglow
RGBLIGHT_CUSTOM_DRIVER = yes
diff --git a/keyboards/vagrant_10/rules.mk b/keyboards/vagrant_10/rules.mk
index 9578124554..7dae3a8423 100755
--- a/keyboards/vagrant_10/rules.mk
+++ b/keyboards/vagrant_10/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/viktus/smolka/config.h b/keyboards/viktus/smolka/config.h
new file mode 100644
index 0000000000..82acfff214
--- /dev/null
+++ b/keyboards/viktus/smolka/config.h
@@ -0,0 +1,116 @@
+/*
+Copyright 2021 jrfhoutx
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5644 // "VD" = Viktus Design LLC
+#define PRODUCT_ID 0x0010
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Viktus Design LLC
+#define PRODUCT Smolka
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7, C7, C6 }
+#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, D4, B1, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define ENCODERS_PAD_A { D2, D5 }
+#define ENCODERS_PAD_B { D1, D3 }
+
+#define ENCODER_RESOLUTIONS { 4, 2 }
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/viktus/smolka/info.json b/keyboards/viktus/smolka/info.json
new file mode 100644
index 0000000000..8e9fe6fc8b
--- /dev/null
+++ b/keyboards/viktus/smolka/info.json
@@ -0,0 +1,66 @@
+{
+ "keyboard_name": "smolka",
+ "url": "",
+ "maintainer": "jrfhoutx",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.25, "y":0},
+ {"x":6.25, "y":0},
+ {"x":7.25, "y":0},
+ {"x":8.25, "y":0},
+ {"x":9.25, "y":0},
+ {"x":10.25, "y":0},
+ {"x":11.25, "y":0},
+ {"x":12.25, "y":0},
+ {"x":13.25, "y":0},
+ {"x":14.25, "y":0},
+ {"x":0, "y":1},
+ {"x":1.25, "y":1, "w":1.25},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1, "w":1.75},
+ {"x":14.25, "y":1},
+ {"x":0, "y":2},
+ {"x":1.25, "y":2, "w":1.75},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":8, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2, "w":1.25},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":0, "y":3},
+ {"x":1.25, "y":3, "w":1.25},
+ {"x":2.5, "y":3},
+ {"x":3.5, "y":3, "w":1.25},
+ {"x":4.75, "y":3, "w":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3, "w":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":12.25, "y":3},
+ {"x":13.25, "y":3},
+ {"x":14.25, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/viktus/smolka/keymaps/default/keymap.c b/keyboards/viktus/smolka/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dba3f65203
--- /dev/null
+++ b/keyboards/viktus/smolka/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2020 jrfhoutx
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap BASE: (Base Layer) Default Layer
+ * .----.,---------------------------------------------------------------------.
+ * | F1 || Esc | Q| W| E| R| T| Y| U| I| O| P| [ | ] | \ | Del |
+ * |----||---------------------------------------------------------------------|
+ * | F2 || Tab | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp|
+ * |----||---------------------------------------------------------------------|
+ * | F3 ||Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | PgDn|
+ * |----||---------------------------------------------------------------------|
+ * | F4 ||LCtrl|LGUI | Alt | Space | Space | Alt | | L | Dn | R |
+ * `----'`---------------------------------------------------------------------'
+ */
+[0] = LAYOUT_all( /* Smolka Base */
+ KC_F1, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, KC_DEL,
+ KC_F2, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_HOME,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_END,
+ KC_F4, KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_TRNS, KC_SPC, KC_TRNS, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+[1] = LAYOUT_all( /* Smolka Base */
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/viktus/smolka/keymaps/default/readme.md b/keyboards/viktus/smolka/keymaps/default/readme.md
new file mode 100644
index 0000000000..e7b2fa9bb1
--- /dev/null
+++ b/keyboards/viktus/smolka/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for smolka
diff --git a/keyboards/viktus/smolka/keymaps/via/keymap.c b/keyboards/viktus/smolka/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3d1f0a323c
--- /dev/null
+++ b/keyboards/viktus/smolka/keymaps/via/keymap.c
@@ -0,0 +1,58 @@
+/* Copyright 2020 jrfhoutx
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap BASE: (Base Layer) Default Layer
+ * .----.,---------------------------------------------------------------------.
+ * | F1 || Esc | Q| W| E| R| T| Y| U| I| O| P| [ | ] | \ | Del |
+ * |----||---------------------------------------------------------------------|
+ * | F2 || Tab | A| S| D| F| G| H| J| K| L| ;| '| Return | PgUp|
+ * |----||---------------------------------------------------------------------|
+ * | F3 ||Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | Up | PgDn|
+ * |----||---------------------------------------------------------------------|
+ * | F4 ||LCtrl|LGUI | Alt | Space | Space | Alt | | L | Dn | R |
+ * `----'`---------------------------------------------------------------------'
+ */
+[0] = LAYOUT_all( /* Smolka Base */
+ KC_F1, KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, KC_DEL,
+ KC_F2, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_HOME,
+ KC_F3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_END,
+ KC_F4, KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_TRNS, KC_SPC, KC_TRNS, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+[1] = LAYOUT_all( /* Smolka Base */
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+[2] = LAYOUT_all( /* Smolka Base */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+[3] = LAYOUT_all( /* Smolka Base */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/viktus/smolka/keymaps/via/readme.md b/keyboards/viktus/smolka/keymaps/via/readme.md
new file mode 100644
index 0000000000..5a9d11c51b
--- /dev/null
+++ b/keyboards/viktus/smolka/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default via keymap for smolka
diff --git a/keyboards/viktus/smolka/keymaps/via/rules.mk b/keyboards/viktus/smolka/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/viktus/smolka/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/viktus/smolka/readme.md b/keyboards/viktus/smolka/readme.md
new file mode 100644
index 0000000000..d01a729ef0
--- /dev/null
+++ b/keyboards/viktus/smolka/readme.md
@@ -0,0 +1,30 @@
+# smolka
+
+![smolka](https://i.imgur.com/5A84GVJh.png)
+
+Smolka is a "40%" keyboard with a single left-hand macro column, and arrow keys, designed by BlindAssassin111 of Viktus Design.
+
+The Smolka has multiple configurations and can support up to two rotary encoders in the left macro column. The PCB supports multiple bottom row configurations and can also be configured to remove the arrow keys and right column to create a near 60% layout (minus number row).
+
+
+* Keyboard Maintainer: [jrfhoutx](https://github.com/yourusername)
+* Hardware Supported: Viktus Smolka PCB
+* Hardware Availability: Available only through a group buy in the 40% Discord server.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make viktus/smolka:default
+
+Flashing example for this keyboard:
+
+ make viktus/smolka:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (1,0) in the matrix (the top key in the macro column) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/viktus/smolka/rules.mk b/keyboards/viktus/smolka/rules.mk
new file mode 100644
index 0000000000..04821bd6e7
--- /dev/null
+++ b/keyboards/viktus/smolka/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
diff --git a/keyboards/viktus/smolka/smolka.c b/keyboards/viktus/smolka/smolka.c
new file mode 100644
index 0000000000..e11b80670b
--- /dev/null
+++ b/keyboards/viktus/smolka/smolka.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 jrfhoutx
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "smolka.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) { /* Second encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/viktus/smolka/smolka.h b/keyboards/viktus/smolka/smolka.h
new file mode 100644
index 0000000000..b6692cea22
--- /dev/null
+++ b/keyboards/viktus/smolka/smolka.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 jrfhoutx
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#define ___ KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+
+#define LAYOUT_all( \
+ K10, K11, K01, K02, K12, K13, K03, K04, K14, K15, K05, K06, K16, K17, K07, \
+ K30, K31, K21, K22, K32, K33, K23, K24, K34, K35, K25, K26, K37, K27, \
+ K50, K51, K41, K42, K52, K53, K43, K44, K54, K55, K45, K56, K57, K47, \
+ K70, K71, K61, K62, K73, K63, K74, K75, K65, K76, K77, K67 \
+) \
+{ \
+ { ___, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { ___, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K30, K31, K32, K33, K34, K35, ___, K37 }, \
+ { ___, K41, K42, K43, K44, K45, ___, K47 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { ___, K61, K62, K63, ___, K65, ___, K67 }, \
+ { K70, K71, ___, K73, K74, K75, K76, K77 } \
+}
diff --git a/keyboards/viktus/sp111/rules.mk b/keyboards/viktus/sp111/rules.mk
index 3c125ed779..b779ef4cb2 100644
--- a/keyboards/viktus/sp111/rules.mk
+++ b/keyboards/viktus/sp111/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/viktus/sp_mini/rules.mk b/keyboards/viktus/sp_mini/rules.mk
index 6fb8723aef..92d4b71efe 100644
--- a/keyboards/viktus/sp_mini/rules.mk
+++ b/keyboards/viktus/sp_mini/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/viktus/styrka/rules.mk b/keyboards/viktus/styrka/rules.mk
index 22f971288e..a0b213f847 100644
--- a/keyboards/viktus/styrka/rules.mk
+++ b/keyboards/viktus/styrka/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/vitamins_included/keymaps/default/keymap.c b/keyboards/vitamins_included/keymaps/default/keymap.c
index d6db6ffe61..2f3b98060c 100644
--- a/keyboards/vitamins_included/keymaps/default/keymap.c
+++ b/keyboards/vitamins_included/keymaps/default/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | Alt |Adjust|Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LCTRL,KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTRL,KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -54,11 +54,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -72,11 +72,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+[_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -90,11 +90,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |TGNKRO| | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______, \
- TG_NKRO, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______,
+ TG_NKRO, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -108,11 +108,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, TG_NKRO, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, TG_NKRO, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -126,11 +126,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | |Audoff Audon | | | | |RGBMOD|
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, AU_OFF, AU_ON, _______, _______, _______, _______, RGB_MOD \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, AU_OFF, AU_ON, _______, _______, _______, _______, RGB_MOD
)
diff --git a/keyboards/vitamins_included/keymaps/numpad/keymap.c b/keyboards/vitamins_included/keymaps/numpad/keymap.c
index 973d4e936b..5bff826145 100644
--- a/keyboards/vitamins_included/keymaps/numpad/keymap.c
+++ b/keyboards/vitamins_included/keymaps/numpad/keymap.c
@@ -27,11 +27,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Enter| tab | - | + |bckspc| --> | Enter| tab | - | + |bckspc| --> |
* `-----------------------------------------------------------------------------------'
*/
-[_NUMPAD] = LAYOUT_ortho_4x12( \
- KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_LEFT, KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_LEFT,\
- ADJUST, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN, ADJUST, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN,\
- KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP, KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP, \
- KC_KP_ENTER, KC_TAB, KC_KP_MINUS, KC_KP_PLUS, KC_BSPACE, KC_RIGHT, KC_KP_ENTER, KC_TAB, KC_KP_MINUS, KC_KP_PLUS, KC_BSPACE, KC_RIGHT\
+[_NUMPAD] = LAYOUT_ortho_4x12(
+ KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_LEFT, KC_KP_0, KC_KP_1, KC_KP_4, KC_KP_7, KC_NUMLOCK, KC_LEFT,
+ ADJUST, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN, ADJUST, KC_KP_2, KC_KP_5, KC_KP_8, KC_KP_SLASH, KC_DOWN,
+ KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP, KC_KP_DOT, KC_KP_3, KC_KP_6, KC_KP_9, KC_KP_ASTERISK, KC_UP,
+ KC_KP_ENTER, KC_TAB, KC_KP_MINUS, KC_KP_PLUS, KC_BSPACE, KC_RIGHT, KC_KP_ENTER, KC_TAB, KC_KP_MINUS, KC_KP_PLUS, KC_BSPACE, KC_RIGHT
),
/* Adjust (Lower + Raise)
@@ -45,11 +45,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | RESET RESET | | | | |RGBMOD|
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, RGB_MOD \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, RGB_MOD
)
diff --git a/keyboards/vitamins_included/keymaps/via/keymap.c b/keyboards/vitamins_included/keymaps/via/keymap.c
index 925c8d92eb..07460400f2 100644
--- a/keyboards/vitamins_included/keymaps/via/keymap.c
+++ b/keyboards/vitamins_included/keymaps/via/keymap.c
@@ -22,11 +22,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Ctrl | GUI | Alt |Adjust|Lower |Space |Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_ortho_4x12( \
- KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_LCTRL,KC_LGUI, KC_LALT,MO(_ADJUST),MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE),KC_LEFT,KC_DOWN, KC_UP, KC_RGHT \
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_LCTRL,KC_LGUI, KC_LALT,MO(_ADJUST),MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE),KC_LEFT,KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -40,11 +40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |NKTOGG| | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______, \
- NK_TOGG, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -58,11 +58,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
-[_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, NK_TOGG, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, NK_TOGG, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust
@@ -76,10 +76,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | |RGBMOD|
* `-----------------------------------------------------------------------------------'
*/
-[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, AU_OFF, AU_ON, _______, _______, _______, _______, _______, RGB_MOD \
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, AU_OFF, AU_ON, _______, _______, _______, _______, _______, RGB_MOD
)
};
diff --git a/keyboards/vitamins_included/rules.mk b/keyboards/vitamins_included/rules.mk
index 3fac08dabe..5de74337fd 100644
--- a/keyboards/vitamins_included/rules.mk
+++ b/keyboards/vitamins_included/rules.mk
@@ -2,8 +2,7 @@
MCU = atmega32u4
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
AUDIO_ENABLE = yes # Audio output
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
@@ -13,10 +12,8 @@ CONSOLE_ENABLE = no # Console for debug
DEBUG_ENABLE = no # Enable more debug info
EXTRAKEY_ENABLE = yes # Audio control and System control
MOUSEKEY_ENABLE = no # Mouse keys
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_4x12
diff --git a/keyboards/vn66/rules.mk b/keyboards/vn66/rules.mk
index 671ad04e1c..f1c1ec985e 100644
--- a/keyboards/vn66/rules.mk
+++ b/keyboards/vn66/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/w1_at/config.h b/keyboards/w1_at/config.h
new file mode 100644
index 0000000000..e923773de7
--- /dev/null
+++ b/keyboards/w1_at/config.h
@@ -0,0 +1,83 @@
+/*
+Copyright 2021 Yiancar-Designs
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published byß
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8968
+#define PRODUCT_ID 0x5754
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Yiancar-Designs
+#define PRODUCT W1-AT
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 20
+
+#define MATRIX_ROW_PINS { A2, B9, B8, B5, B4 }
+#define MATRIX_COL_PINS { B7, A0, A1, B1, B0, A7, A6, A5, A4, A3, B2, B10, B11, B12, B13, B14, B15, A8, A9, A10 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Ensure we jump to bootloader if the RESET keycode was pressed */
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN B6
+#define LED_NUM_LOCK_PIN B3
+#define LED_SCROLL_LOCK_PIN A15
+#define LED_KANA_PIN A13
+#define LED_PIN_ON_STATE 0
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 2
diff --git a/keyboards/w1_at/info.json b/keyboards/w1_at/info.json
new file mode 100644
index 0000000000..07a7f72844
--- /dev/null
+++ b/keyboards/w1_at/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "W1-AT",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.25, "y":0}, {"x":3.25, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.5, "y":0}, {"x":18.5, "y":0}, {"x":19.5, "y":0}, {"x":20.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.25, "y":1, "w":1.5}, {"x":3.75, "y":1}, {"x":4.75, "y":1}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":18.5, "y":1}, {"x":19.5, "y":1}, {"x":20.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.25, "y":2, "w":1.75}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":18.5, "y":2}, {"x":19.5, "y":2}, {"x":20.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3}, {"x":4.5, "y":3}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3, "w":1.75}, {"x":16.25, "y":3}, {"x":17.5, "y":3}, {"x":18.5, "y":3}, {"x":19.5, "y":3}, {"x":20.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.5}, {"x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"x":13.25, "y":4, "w":1.5}, {"x":15.75, "y":4, "w":1.5}, {"x":17.5, "y":4}, {"x":18.5, "y":4}, {"x":19.5, "y":4}, {"x":20.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/w1_at/keymaps/default/keymap.c b/keyboards/w1_at/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dd21f572c0
--- /dev/null
+++ b/keyboards/w1_at/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ KC_P00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PMNS, KC_PSLS, KC_PAST,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PMNS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PMNS,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ case KC_P00:
+ tap_code(KC_P0);
+ tap_code(KC_P0);
+ return false;
+ }
+ }
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/w1_at/keymaps/default/readme.md b/keyboards/w1_at/keymaps/default/readme.md
new file mode 100644
index 0000000000..af0497e720
--- /dev/null
+++ b/keyboards/w1_at/keymaps/default/readme.md
@@ -0,0 +1,9 @@
+# The default keymap for W1-AT.
+
+Layer 0
+
+![Layer 0](https://i.imgur.com/pLdgxlJ.png)
+
+Layer 1
+
+![Layer 1](https://i.imgur.com/v24h9EO.png)
diff --git a/keyboards/w1_at/keymaps/via/keymap.c b/keyboards/w1_at/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9dbea08191
--- /dev/null
+++ b/keyboards/w1_at/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ KC_P00 = USER00
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_all( /* Base */
+ KC_F1, KC_F2, KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PMNS, KC_PSLS, KC_PAST,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PMNS,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PMNS,
+ KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_P0, KC_P00, KC_PDOT, KC_PENT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_all( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[3] = LAYOUT_all( /* Empty for dynamic keymaps */
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch(keycode) {
+ case KC_P00:
+ tap_code(KC_P0);
+ tap_code(KC_P0);
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/w1_at/keymaps/via/readme.md b/keyboards/w1_at/keymaps/via/readme.md
new file mode 100644
index 0000000000..33cdf89e60
--- /dev/null
+++ b/keyboards/w1_at/keymaps/via/readme.md
@@ -0,0 +1,9 @@
+# The default keymap for W1-AT. VIA support enabled.
+
+Layer 0
+
+![Layer 0](https://i.imgur.com/4bUxnAz.png)
+
+Layer 1
+
+![Layer 1](https://i.imgur.com/v24h9EO.png)
diff --git a/keyboards/w1_at/keymaps/via/rules.mk b/keyboards/w1_at/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/w1_at/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/w1_at/readme.md b/keyboards/w1_at/readme.md
new file mode 100644
index 0000000000..7608e72f76
--- /dev/null
+++ b/keyboards/w1_at/readme.md
@@ -0,0 +1,32 @@
+# W1-AT
+
+This is a standard weird layout PCB, best build with a 10U spacebar. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A TKL keyboard with STM32F072CB
+* Hardware Availability: https://geon.works/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make w1_at:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or CLI (`make w1_at:<keymap>:flash`)
diff --git a/keyboards/w1_at/rules.mk b/keyboards/w1_at/rules.mk
new file mode 100644
index 0000000000..169c45b479
--- /dev/null
+++ b/keyboards/w1_at/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/w1_at/w1_at.c b/keyboards/w1_at/w1_at.c
new file mode 100644
index 0000000000..9d0dba7a89
--- /dev/null
+++ b/keyboards/w1_at/w1_at.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ #include "w1_at.h"
+
+void led_init_ports(void) {
+ // Set our LED pins as open drain outputs
+ palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(LED_NUM_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(LED_SCROLL_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(LED_KANA_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A14, PAL_MODE_OUTPUT_OPENDRAIN);
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ writePin(A14, !layer_state_cmp(state, 1));
+ return layer_state_set_user(state);
+} \ No newline at end of file
diff --git a/keyboards/w1_at/w1_at.h b/keyboards/w1_at/w1_at.h
new file mode 100644
index 0000000000..39e5b8abae
--- /dev/null
+++ b/keyboards/w1_at/w1_at.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define XXX KC_NO
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, K0G, K0H, K0I, K0J, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G, K2H, K2I, K2J, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, \
+ K40, K41, K42, K44, K48, K4D, K4F, K4G, K4H, K4I, K4J \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J }, \
+ { K40, K41, K42, XXX, K44, XXX, XXX, XXX, K48, XXX, XXX, XXX, XXX, K4D, XXX, K4F, K4G, K4H, K4I, K4J } \
+}
diff --git a/keyboards/waldo/keymaps/default/keymap.c b/keyboards/waldo/keymaps/default/keymap.c
index f8041a3f85..dffb55bd87 100644
--- a/keyboards/waldo/keymaps/default/keymap.c
+++ b/keyboards/waldo/keymaps/default/keymap.c
@@ -24,20 +24,20 @@ enum waldo_layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_60_ansi( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FUNCTION), KC_RCTL \
+ [_BASE] = LAYOUT_60_ansi(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FUNCTION), KC_RCTL
),
- [_FUNCTION] = LAYOUT_60_ansi( \
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ [_FUNCTION] = LAYOUT_60_ansi(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/waldo/keymaps/default_split_shft_bck/keymap.c b/keyboards/waldo/keymaps/default_split_shft_bck/keymap.c
index 4ef7da0019..6bd947a3ca 100644
--- a/keyboards/waldo/keymaps/default_split_shft_bck/keymap.c
+++ b/keyboards/waldo/keymaps/default_split_shft_bck/keymap.c
@@ -44,12 +44,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------------------------------------------'
*/
-[_QWERTY] = LAYOUT_60_ansi_split_bs_rshift( \
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FUNC), \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL \
+[_QWERTY] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FUNC),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, XXXXXXX, KC_RALT, KC_RGUI, KC_RCTL
),
/* Function
@@ -66,12 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------------------------------------------'
*/
-[_FUNC] = LAYOUT_60_ansi_split_bs_rshift( \
- KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
- _______, _______, KC_UP, _______, _______, KC_VOLU, _______, _______, KC_PSCR, KC_PGUP, KC_PGDN, KC_UP, _______, _______, \
- KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLD, _______, _______, KC_HOME, KC_END, KC_LEFT, KC_RGHT, _______, \
- _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DOWN, _______, KC_TRNS, \
- BACKLIT, _______, _______, _______, XXXXXXX, _______, _______, _______ \
+[_FUNC] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, KC_UP, _______, _______, KC_VOLU, _______, _______, KC_PSCR, KC_PGUP, KC_PGDN, KC_UP, _______, _______,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLD, _______, _______, KC_HOME, KC_END, KC_LEFT, KC_RGHT, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DOWN, _______, KC_TRNS,
+ BACKLIT, _______, _______, _______, XXXXXXX, _______, _______, _______
)
};
diff --git a/keyboards/waldo/rules.mk b/keyboards/waldo/rules.mk
index 6a802bea0f..616fb150fe 100644
--- a/keyboards/waldo/rules.mk
+++ b/keyboards/waldo/rules.mk
@@ -5,18 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/wallaby/rules.mk b/keyboards/wallaby/rules.mk
index 29534f6570..2661317d2a 100644
--- a/keyboards/wallaby/rules.mk
+++ b/keyboards/wallaby/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/walletburner/cajal/keymaps/default/keymap.c b/keyboards/walletburner/cajal/keymaps/default/keymap.c
index b985417537..4586e5695b 100644
--- a/keyboards/walletburner/cajal/keymaps/default/keymap.c
+++ b/keyboards/walletburner/cajal/keymaps/default/keymap.c
@@ -47,6 +47,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
+//Initialize indicator LEDs
+void matrix_init_user(void) {
+ setPinOutput(B5);
+ writePinLow(B5);
+ setPinOutput(B6);
+ writePinLow(B6);
+ setPinOutput(B7);
+ writePinLow(B7);
+}
+
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case 1:
diff --git a/keyboards/walletburner/cajal/keymaps/default_ortho/keymap.c b/keyboards/walletburner/cajal/keymaps/default_ortho/keymap.c
index 394a744e6d..87575e492f 100644
--- a/keyboards/walletburner/cajal/keymaps/default_ortho/keymap.c
+++ b/keyboards/walletburner/cajal/keymaps/default_ortho/keymap.c
@@ -47,6 +47,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
+//Initialize indicator LEDs
+void matrix_init_user(void) {
+ setPinOutput(B5);
+ writePinLow(B5);
+ setPinOutput(B6);
+ writePinLow(B6);
+ setPinOutput(B7);
+ writePinLow(B7);
+}
layer_state_t layer_state_set_user(layer_state_t state) {
writePinLow(B7);
diff --git a/keyboards/walletburner/cajal/keymaps/via/keymap.c b/keyboards/walletburner/cajal/keymaps/via/keymap.c
new file mode 100644
index 0000000000..86348ed456
--- /dev/null
+++ b/keyboards/walletburner/cajal/keymaps/via/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2020 Worldspawn <mcmancuso@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_stagger(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC, RGB_TOG,
+ CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_LSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_stagger(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, KC_BSLS, RGB_MOD,
+ KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [2] = LAYOUT_stagger(
+ KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI, KC_TRNS, RGB_VAI,
+ KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_VAD, RGB_HUI
+ ),
+
+ [3] = LAYOUT_stagger(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+//Initialize indicator LEDs
+void matrix_init_user(void) {
+ setPinOutput(B5);
+ writePinLow(B5);
+ setPinOutput(B6);
+ writePinLow(B6);
+ setPinOutput(B7);
+ writePinLow(B7);
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case 1:
+ writePinHigh(B7);
+ writePinLow(B6);
+ break;
+ case 2:
+ writePinLow(B7);
+ writePinHigh(B6);
+ break;
+ case 3:
+ writePinHigh(B7);
+ writePinHigh(B6);
+ break;
+ default:
+ writePinLow(B7);
+ writePinLow(B6);
+ break;
+ }
+ return state;
+}
+
+bool led_update_user(led_t led_state) {
+ writePin(B5, led_state.caps_lock);
+ return false;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/walletburner/cajal/keymaps/via/rules.mk b/keyboards/walletburner/cajal/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/walletburner/cajal/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/walletburner/cajal/rules.mk b/keyboards/walletburner/cajal/rules.mk
index de783b3bd2..e8057998c5 100644
--- a/keyboards/walletburner/cajal/rules.mk
+++ b/keyboards/walletburner/cajal/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/walletburner/neuron/rules.mk b/keyboards/walletburner/neuron/rules.mk
index 855e36c3dd..8f9b670fd9 100644
--- a/keyboards/walletburner/neuron/rules.mk
+++ b/keyboards/walletburner/neuron/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/wanten/rules.mk b/keyboards/wanten/rules.mk
index 3e05a4ed7f..c4a39c910f 100644
--- a/keyboards/wanten/rules.mk
+++ b/keyboards/wanten/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wavtype/foundation/config.h b/keyboards/wavtype/foundation/config.h
new file mode 100644
index 0000000000..e19ea19f7e
--- /dev/null
+++ b/keyboards/wavtype/foundation/config.h
@@ -0,0 +1,136 @@
+// Copyright 2022 wavtype (@wavtype)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x03a7
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER protozoa.studio
+#define PRODUCT foundation
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B3, B2, B1, F0, F1 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, D2, D1, D0, D3, D5, D4, B7, D6, D7, B4, B5, B6, C6, C7 }
+#define UNUSED_PINS { E6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN B0
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 16
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 1
diff --git a/keyboards/wavtype/foundation/foundation.c b/keyboards/wavtype/foundation/foundation.c
new file mode 100644
index 0000000000..9ac8ba6b72
--- /dev/null
+++ b/keyboards/wavtype/foundation/foundation.c
@@ -0,0 +1,4 @@
+// Copyright 2022 wavtype (@wavtype)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "foundation.h"
diff --git a/keyboards/wavtype/foundation/foundation.h b/keyboards/wavtype/foundation/foundation.h
new file mode 100644
index 0000000000..a01800f143
--- /dev/null
+++ b/keyboards/wavtype/foundation/foundation.h
@@ -0,0 +1,76 @@
+// Copyright 2022 wavtype (@wavtype)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define _x_ KC_NO
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k2e, k0f, k0g, k0h, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3g, \
+ k40, k41, k42, k43, k47, k4b, k4c, k4d, k4e, k4f, k4g, k4h \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, _x_, _x_, _x_}, \
+ { k30, k31, _x_, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, _x_, _x_, k3g, _x_}, \
+ { k40, k41, k42, k43, _x_, _x_, _x_, k47, _x_, _x_, _x_, k4b, k4c, k4d, k4e, k4f, k4g, k4h} \
+}
+
+#define LAYOUT_tkl_ansi_7u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k2e, k0f, k0g, k0h, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3g, \
+ k40, k41, k42, k43, k47, k4c, k4d, k4e, k4f, k4g, k4h \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, _x_, _x_, _x_}, \
+ { k30, k31, _x_, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, _x_, _x_, k3g, _x_}, \
+ { k40, k41, k42, k43, _x_, _x_, _x_, k47, _x_, _x_, _x_, _x_, k4c, k4d, k4e, k4f, k4g, k4h} \
+}
+
+#define LAYOUT_tkl_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k2e, k0f, k0g, k0h, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3g, \
+ k40, k41, k42, k43, k47, k4b, k4c, k4d, k4e, k4f, k4g, k4h \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, _x_, _x_, _x_}, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, _x_, k3g, _x_}, \
+ { k40, k41, k42, k43, _x_, _x_, _x_, k47, _x_, _x_, _x_, k4b, k4c, k4d, k4e, k4f, k4g, k4h} \
+}
+
+#define LAYOUT_tkl_iso_7u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k2e, k0f, k0g, k0h, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3g, \
+ k40, k41, k42, k43, k47, k4c, k4d, k4e, k4f, k4g, k4h \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, k0g, k0h }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k1g, k1h}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, _x_, _x_, _x_}, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, _x_, k3g, _x_}, \
+ { k40, k41, k42, k43, _x_, _x_, _x_, k47, _x_, _x_, _x_, _x_, k4c, k4d, k4e, k4f, k4g, k4h} \
+}
diff --git a/keyboards/wavtype/foundation/info.json b/keyboards/wavtype/foundation/info.json
new file mode 100644
index 0000000000..317c5f5d14
--- /dev/null
+++ b/keyboards/wavtype/foundation/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "foundation",
+ "url": "",
+ "maintainer": "wavtype",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"F1", "x":0, "y":0}, {"label":"esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"-", "x":12.5, "y":0}, {"label":"=", "x":13.5, "y":0}, {"label":"BckSpc", "x":14.5, "y":0, "w":2}, {"label":"split", "x":15.5, "y":0}, {"label":"ins", "x":17, "y":0}, {"label":"home", "x":18, "y":0}, {"label":"pg up", "x":19, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"tab", "x":1.5, "y":1, "w":1.5}, {"label":"q", "x":3, "y":1}, {"label":"w", "x":4, "y":1}, {"label":"e", "x":5, "y":1}, {"label":"r", "x":6, "y":1}, {"label":"t", "x":7, "y":1}, {"label":"y", "x":8, "y":1}, {"label":"u", "x":9, "y":1}, {"label":"i", "x":10, "y":1}, {"label":"o", "x":11, "y":1}, {"label":"p", "x":12, "y":1}, {"label":"[", "x":13, "y":1}, {"label":"]", "x":14, "y":1}, {"label":"\\", "x":15, "y":1, "w":1.5}, {"label":"del", "x":17, "y":1}, {"label":"end", "x":18, "y":1}, {"label":"pg dn", "x":19, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"caps", "x":1.5, "y":2, "w":1.25}, {"label":"a", "x":3.25, "y":2}, {"label":"s", "x":4.25, "y":2}, {"label":"d", "x":5.25, "y":2}, {"label":"f", "x":6.25, "y":2}, {"label":"g", "x":7.25, "y":2}, {"label":"h", "x":8.25, "y":2}, {"label":"j", "x":9.25, "y":2}, {"label":"k", "x":10.25, "y":2}, {"label":"l", "x":11.25, "y":2}, {"label":";", "x":12.25, "y":2}, {"label":"'", "x":13.25, "y":2}, {"label":"enter", "x":14.25, "y":2, "w":2.25}, {"label":"F4", "x":0, "y":3}, {"label":"lshft", "x":1.5, "y":3, "w":2.25}, {"label":"z", "x":3.75, "y":3}, {"label":"x", "x":4.75, "y":3}, {"label":"c", "x":5.75, "y":3}, {"label":"v", "x":6.75, "y":3}, {"label":"b", "x":7.75, "y":3}, {"label":"n", "x":8.75, "y":3}, {"label":"m", "x":9.75, "y":3}, {"label":",", "x":10.75, "y":3}, {"label":".", "x":11.75, "y":3}, {"label":"/", "x":12.75, "y":3}, {"label":"rshft", "x":13.75, "y":3, "w":2.75}, {"label":"up", "x":18, "y":3}, {"label":"F5", "x":0, "y":4}, {"label":"lctrl", "x":1.5, "y":4, "w":1.25}, {"label":"lwin", "x":2.75, "y":4, "w":1.25}, {"label":"lalt", "x":4, "y":4, "w":1.25}, {"label":"spce", "x":5.25, "y":4, "w":6.25}, {"label":"ralt", "x":11.5, "y":4, "w":1.25}, {"label":"fn", "x":12.75, "y":4, "w":1.25}, {"label":"rwin", "x":14, "y":4}, {"label":"rctrl", "x":15, "y":4, "w":1.5}, {"label":"left", "x":17, "y":4}, {"label":"down", "x":18, "y":4}, {"label":"right", "x":19, "y":4}]
+ },
+ "LAYOUT_tkl_ansi_7u": {
+ "layout": [{"label":"F1", "x":0, "y":0}, {"label":"esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"-", "x":12.5, "y":0}, {"label":"=", "x":13.5, "y":0}, {"label":"BckSpc", "x":14.5, "y":0, "w":2}, {"label":"split", "x":15.5, "y":0}, {"label":"ins", "x":17, "y":0}, {"label":"home", "x":18, "y":0}, {"label":"pg up", "x":19, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"tab", "x":1.5, "y":1, "w":1.5}, {"label":"q", "x":3, "y":1}, {"label":"w", "x":4, "y":1}, {"label":"e", "x":5, "y":1}, {"label":"r", "x":6, "y":1}, {"label":"t", "x":7, "y":1}, {"label":"y", "x":8, "y":1}, {"label":"u", "x":9, "y":1}, {"label":"i", "x":10, "y":1}, {"label":"o", "x":11, "y":1}, {"label":"p", "x":12, "y":1}, {"label":"[", "x":13, "y":1}, {"label":"]", "x":14, "y":1}, {"label":"\\", "x":15, "y":1, "w":1.5}, {"label":"del", "x":17, "y":1}, {"label":"end", "x":18, "y":1}, {"label":"pg dn", "x":19, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"caps", "x":1.5, "y":2, "w":1.25}, {"label":"a", "x":3.25, "y":2}, {"label":"s", "x":4.25, "y":2}, {"label":"d", "x":5.25, "y":2}, {"label":"f", "x":6.25, "y":2}, {"label":"g", "x":7.25, "y":2}, {"label":"h", "x":8.25, "y":2}, {"label":"j", "x":9.25, "y":2}, {"label":"k", "x":10.25, "y":2}, {"label":"l", "x":11.25, "y":2}, {"label":";", "x":12.25, "y":2}, {"label":"'", "x":13.25, "y":2}, {"label":"enter", "x":14.25, "y":2, "w":2.25}, {"label":"F4", "x":0, "y":3}, {"label":"lshft", "x":1.5, "y":3, "w":2.25}, {"label":"z", "x":3.75, "y":3}, {"label":"x", "x":4.75, "y":3}, {"label":"c", "x":5.75, "y":3}, {"label":"v", "x":6.75, "y":3}, {"label":"b", "x":7.75, "y":3}, {"label":"n", "x":8.75, "y":3}, {"label":"m", "x":9.75, "y":3}, {"label":",", "x":10.75, "y":3}, {"label":".", "x":11.75, "y":3}, {"label":"/", "x":12.75, "y":3}, {"label":"rshft", "x":13.75, "y":3, "w":2.75}, {"label":"up", "x":18, "y":3}, {"label":"F5", "x":0, "y":4}, {"label":"lctrl", "x":1.5, "y":4, "w":1.5}, {"label":"lwin", "x":3, "y":4}, {"label":"lalt", "x":4, "y":4, "w":1.5}, {"label":"spce", "x":5.5, "y":4, "w":7}, {"label":"ralt", "x":12.5, "y":4, "w":1.5}, {"label":"fn", "x":14, "y":4, "w":1.25}, {"label":"rctrl", "x":15.25, "y":4, "w":1.25}, {"label":"left", "x":17, "y":4}, {"label":"down", "x":18, "y":4}, {"label":"right", "x":19, "y":4}]
+ },
+ "LAYOUT_tkl_iso": {
+ "layout": [{"label":"F1", "x":0, "y":0}, {"label":"esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"-", "x":12.5, "y":0}, {"label":"=", "x":13.5, "y":0}, {"label":"BckSpc", "x":14.5, "y":0, "w":2}, {"label":"split", "x":15.5, "y":0}, {"label":"ins", "x":17, "y":0}, {"label":"home", "x":18, "y":0}, {"label":"pg up", "x":19, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"tab", "x":1.5, "y":1, "w":1.5}, {"label":"q", "x":3, "y":1}, {"label":"w", "x":4, "y":1}, {"label":"e", "x":5, "y":1}, {"label":"r", "x":6, "y":1}, {"label":"t", "x":7, "y":1}, {"label":"y", "x":8, "y":1}, {"label":"u", "x":9, "y":1}, {"label":"i", "x":10, "y":1}, {"label":"o", "x":11, "y":1}, {"label":"p", "x":12, "y":1}, {"label":"[", "x":13, "y":1}, {"label":"]", "x":14, "y":1}, {"label":"iso", "x":15.25, "y":1, "w":1.25, "h":2}, {"label":"del", "x":17, "y":1}, {"label":"end", "x":18, "y":1}, {"label":"pg dn", "x":19, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"caps", "x":1.5, "y":2, "w":1.25}, {"label":"a", "x":3.25, "y":2}, {"label":"s", "x":4.25, "y":2}, {"label":"d", "x":5.25, "y":2}, {"label":"f", "x":6.25, "y":2}, {"label":"g", "x":7.25, "y":2}, {"label":"h", "x":8.25, "y":2}, {"label":"j", "x":9.25, "y":2}, {"label":"k", "x":10.25, "y":2}, {"label":"l", "x":11.25, "y":2}, {"label":";", "x":12.25, "y":2}, {"label":"'", "x":13.25, "y":2}, {"label":"\\", "x":14.25, "y":2}, {"label":"F4", "x":0, "y":3}, {"label":"ls1", "x":1.5, "y":3, "w":1.25}, {"label":"ls2", "x":2.75, "y":3}, {"label":"z", "x":3.75, "y":3}, {"label":"x", "x":4.75, "y":3}, {"label":"c", "x":5.75, "y":3}, {"label":"v", "x":6.75, "y":3}, {"label":"b", "x":7.75, "y":3}, {"label":"n", "x":8.75, "y":3}, {"label":"m", "x":9.75, "y":3}, {"label":",", "x":10.75, "y":3}, {"label":".", "x":11.75, "y":3}, {"label":"/", "x":12.75, "y":3}, {"label":"rs1", "x":13.75, "y":3, "w":1.75}, {"label":"rs2", "x":15.5, "y":3}, {"label":"up", "x":18, "y":3}, {"label":"F5", "x":0, "y":4}, {"label":"lctrl", "x":1.5, "y":4, "w":1.25}, {"label":"lwin", "x":2.75, "y":4, "w":1.25}, {"label":"lalt", "x":4, "y":4, "w":1.25}, {"label":"spce", "x":5.25, "y":4, "w":6.25}, {"label":"ralt", "x":11.5, "y":4, "w":1.25}, {"label":"fn", "x":12.75, "y":4, "w":1.25}, {"label":"rwin", "x":14, "y":4}, {"label":"rctrl", "x":15, "y":4, "w":1.5}, {"label":"left", "x":17, "y":4}, {"label":"down", "x":18, "y":4}, {"label":"right", "x":19, "y":4}]
+ },
+ "LAYOUT_tkl_iso_7u": {
+ "layout": [{"label":"F1", "x":0, "y":0}, {"label":"esc", "x":1.5, "y":0}, {"label":"1", "x":2.5, "y":0}, {"label":"2", "x":3.5, "y":0}, {"label":"3", "x":4.5, "y":0}, {"label":"4", "x":5.5, "y":0}, {"label":"5", "x":6.5, "y":0}, {"label":"6", "x":7.5, "y":0}, {"label":"7", "x":8.5, "y":0}, {"label":"8", "x":9.5, "y":0}, {"label":"9", "x":10.5, "y":0}, {"label":"0", "x":11.5, "y":0}, {"label":"-", "x":12.5, "y":0}, {"label":"=", "x":13.5, "y":0}, {"label":"BckSpc", "x":14.5, "y":0, "w":2}, {"label":"split", "x":15.5, "y":0}, {"label":"ins", "x":17, "y":0}, {"label":"home", "x":18, "y":0}, {"label":"pg up", "x":19, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"tab", "x":1.5, "y":1, "w":1.5}, {"label":"q", "x":3, "y":1}, {"label":"w", "x":4, "y":1}, {"label":"e", "x":5, "y":1}, {"label":"r", "x":6, "y":1}, {"label":"t", "x":7, "y":1}, {"label":"y", "x":8, "y":1}, {"label":"u", "x":9, "y":1}, {"label":"i", "x":10, "y":1}, {"label":"o", "x":11, "y":1}, {"label":"p", "x":12, "y":1}, {"label":"[", "x":13, "y":1}, {"label":"]", "x":14, "y":1}, {"label":"iso", "x":15.25, "y":1, "w":1.25, "h":2}, {"label":"del", "x":17, "y":1}, {"label":"end", "x":18, "y":1}, {"label":"pg dn", "x":19, "y":1}, {"label":"F3", "x":0, "y":2}, {"label":"caps", "x":1.5, "y":2, "w":1.25}, {"label":"a", "x":3.25, "y":2}, {"label":"s", "x":4.25, "y":2}, {"label":"d", "x":5.25, "y":2}, {"label":"f", "x":6.25, "y":2}, {"label":"g", "x":7.25, "y":2}, {"label":"h", "x":8.25, "y":2}, {"label":"j", "x":9.25, "y":2}, {"label":"k", "x":10.25, "y":2}, {"label":"l", "x":11.25, "y":2}, {"label":";", "x":12.25, "y":2}, {"label":"'", "x":13.25, "y":2}, {"label":"13,2", "x":14.25, "y":2}, {"label":"F4", "x":0, "y":3}, {"label":"ls1", "x":1.5, "y":3, "w":1.25}, {"label":"ls2", "x":2.75, "y":3}, {"label":"z", "x":3.75, "y":3}, {"label":"x", "x":4.75, "y":3}, {"label":"c", "x":5.75, "y":3}, {"label":"v", "x":6.75, "y":3}, {"label":"b", "x":7.75, "y":3}, {"label":"n", "x":8.75, "y":3}, {"label":"m", "x":9.75, "y":3}, {"label":",", "x":10.75, "y":3}, {"label":".", "x":11.75, "y":3}, {"label":"/", "x":12.75, "y":3}, {"label":"rs1", "x":13.75, "y":3, "w":1.75}, {"label":"rs2", "x":15.5, "y":3}, {"label":"up", "x":18, "y":3}, {"label":"F5", "x":0, "y":4}, {"label":"lctrl", "x":1.5, "y":4, "w":1.5}, {"label":"lwin", "x":3, "y":4}, {"label":"lalt", "x":4, "y":4, "w":1.5}, {"label":"spce", "x":5.5, "y":4, "w":7}, {"label":"ralt", "x":12.5, "y":4, "w":1.5}, {"label":"fn", "x":14, "y":4, "w":1.25}, {"label":"rctrl", "x":15.25, "y":4, "w":1.25}, {"label":"left", "x":17, "y":4}, {"label":"down", "x":18, "y":4}, {"label":"right", "x":19, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/wavtype/foundation/keymaps/default/keymap.c b/keyboards/wavtype/foundation/keymaps/default/keymap.c
new file mode 100644
index 0000000000..eea83c9889
--- /dev/null
+++ b/keyboards/wavtype/foundation/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+// Copyright 2022 wavtype (@wavtype)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT(
+ KC_F1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_F2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_DEL, KC_PGDN,
+ KC_F3, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F4, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP,
+ KC_F5, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP,
+ RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ )
+};
diff --git a/keyboards/wavtype/foundation/keymaps/via/keymap.c b/keyboards/wavtype/foundation/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2dcb0bebc8
--- /dev/null
+++ b/keyboards/wavtype/foundation/keymaps/via/keymap.c
@@ -0,0 +1,42 @@
+// Copyright 2022 wavtype (@wavtype)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [0] = LAYOUT(
+ KC_F1, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
+ KC_F2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_DEL, KC_PGDN,
+ KC_F3, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_F4, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT, KC_UP,
+ KC_F5, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP,
+ RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_SAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/wavtype/foundation/keymaps/via/rules.mk b/keyboards/wavtype/foundation/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/wavtype/foundation/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wavtype/foundation/readme.md b/keyboards/wavtype/foundation/readme.md
new file mode 100644
index 0000000000..69f9bd3a0d
--- /dev/null
+++ b/keyboards/wavtype/foundation/readme.md
@@ -0,0 +1,22 @@
+# foundation
+
+The foundation pcb was designed for protozoa studio's foundation line of keyboards.
+
+* Keyboard Maintainer: wavtype
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wavtype/foundation:default
+
+Flashing example for this keyboard:
+
+ make wavtype/foundation:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (Escape key) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to RESET if it is available (by default this is set to "Fn + R") \ No newline at end of file
diff --git a/keyboards/wavtype/foundation/rules.mk b/keyboards/wavtype/foundation/rules.mk
new file mode 100644
index 0000000000..3ff392a61f
--- /dev/null
+++ b/keyboards/wavtype/foundation/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wekey/polaris/rules.mk b/keyboards/wekey/polaris/rules.mk
index 7e128fdbd6..4955e03a04 100644
--- a/keyboards/wekey/polaris/rules.mk
+++ b/keyboards/wekey/polaris/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wekey/stelo65/config.h b/keyboards/wekey/stelo65/config.h
new file mode 100644
index 0000000000..6a5ab4bb98
--- /dev/null
+++ b/keyboards/wekey/stelo65/config.h
@@ -0,0 +1,150 @@
+// Copyright 2021 @wekey (@@wekey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5559
+#define PRODUCT_ID 0x0003
+#define DEVICE_VER 0x0001
+#define MANUFACTURER @wekey
+#define PRODUCT Stelo65
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { F0, E6, D0, D1, C6, F7, F6, F5, F4, F1 }
+#define MATRIX_COL_PINS { C7, B6, B5, B4, D7, D6, D4, D5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { D3 }
+#define ENCODERS_PAD_B { D2 }
+#define ENCODER_RESOLUTION 2
+
+#define ENCODERS 1
+#define ENCODERS_CW_KEY { { 4, 7 } }
+#define ENCODERS_CCW_KEY { { 4, 6 } }
+#endif
+
+#define LED_CAPS_LOCK_PIN B3
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/wekey/stelo65/encoder_actions.c b/keyboards/wekey/stelo65/encoder_actions.c
new file mode 100644
index 0000000000..0f32ac2723
--- /dev/null
+++ b/keyboards/wekey/stelo65/encoder_actions.c
@@ -0,0 +1,57 @@
+/* Copyright 2020 Neil Brian Ramirez
+ * Copyright 2021 drashna jael're (@drashna)
+ * Copyright 2021 uybv
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "encoder_actions.h"
+
+#ifdef ENCODER_ENABLE
+
+# ifdef ENCODERS
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+# endif
+
+void encoder_action_unregister(void) {
+# ifdef ENCODERS
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+# endif
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+# ifdef ENCODERS
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+# endif
+}
+
+#endif
diff --git a/keyboards/wekey/stelo65/encoder_actions.h b/keyboards/wekey/stelo65/encoder_actions.h
new file mode 100644
index 0000000000..2484af52ae
--- /dev/null
+++ b/keyboards/wekey/stelo65/encoder_actions.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 Neil Brian Ramirez
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "quantum.h"
+
+void encoder_action_unregister(void);
+
+void encoder_action_register(uint8_t index, bool clockwise);
diff --git a/keyboards/wekey/stelo65/info.json b/keyboards/wekey/stelo65/info.json
new file mode 100644
index 0000000000..dbaa157b5b
--- /dev/null
+++ b/keyboards/wekey/stelo65/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Stelo65",
+ "url": "",
+ "maintainer": "@wekey",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"esc", "x":0, "y":0}, {"label":"1", "x":1, "y":0}, {"label":"2", "x":2, "y":0}, {"label":"3", "x":3, "y":0}, {"label":"4", "x":4, "y":0}, {"label":"5", "x":5, "y":0}, {"label":"6", "x":6, "y":0}, {"label":"7", "x":7, "y":0}, {"label":"8", "x":8, "y":0}, {"label":"9", "x":9, "y":0}, {"label":"0", "x":10, "y":0}, {"label":"-", "x":11, "y":0}, {"label":"=", "x":12, "y":0}, {"label":"bs", "x":13, "y":0}, {"label":"del", "x":14, "y":0}, {"label":"home", "x":15, "y":0}, {"label":"vold", "x":16.25, "y":0}, {"label":"volu", "x":17.25, "y":0}, {"label":"tab", "x":0, "y":1, "w":1.5}, {"label":"q", "x":1.5, "y":1}, {"label":"w", "x":2.5, "y":1}, {"label":"e", "x":3.5, "y":1}, {"label":"r", "x":4.5, "y":1}, {"label":"t", "x":5.5, "y":1}, {"label":"y", "x":6.5, "y":1}, {"label":"u", "x":7.5, "y":1}, {"label":"i", "x":8.5, "y":1}, {"label":"o", "x":9.5, "y":1}, {"label":"p", "x":10.5, "y":1}, {"label":"[", "x":11.5, "y":1}, {"label":"]", "x":12.5, "y":1}, {"label":"\\", "x":13.5, "y":1, "w":1.5}, {"label":"end", "x":15, "y":1}, {"label":"caps", "x":0, "y":2, "w":1.75}, {"label":"a", "x":1.75, "y":2}, {"label":"s", "x":2.75, "y":2}, {"label":"d", "x":3.75, "y":2}, {"label":"f", "x":4.75, "y":2}, {"label":"g", "x":5.75, "y":2}, {"label":"h", "x":6.75, "y":2}, {"label":"j", "x":7.75, "y":2}, {"label":"k", "x":8.75, "y":2}, {"label":"l", "x":9.75, "y":2}, {"label":";", "x":10.75, "y":2}, {"label":"'", "x":11.75, "y":2}, {"label":"enter", "x":12.75, "y":2, "w":2.25}, {"label":"pgup", "x":15, "y":2}, {"label":"shift", "x":0, "y":3, "w":1.25}, {"label":"\\", "x":1.25, "y":3}, {"label":"z", "x":2.25, "y":3}, {"label":"x", "x":3.25, "y":3}, {"label":"c", "x":4.25, "y":3}, {"label":"v", "x":5.25, "y":3}, {"label":"b", "x":6.25, "y":3}, {"label":"n", "x":7.25, "y":3}, {"label":"m", "x":8.25, "y":3}, {"label":",", "x":9.25, "y":3}, {"label":".", "x":10.25, "y":3}, {"label":"/", "x":11.25, "y":3}, {"label":"shift", "x":12.25, "y":3, "w":1.75}, {"label":"up", "x":14, "y":3}, {"label":"pgdn", "x":15, "y":3}, {"label":"ctrl", "x":0, "y":4, "w":1.25}, {"label":"gui", "x":1.25, "y":4, "w":1.25}, {"label":"alt", "x":2.5, "y":4, "w":1.25}, {"label":"spacce", "x":3.75, "y":4, "w":6.25}, {"label":"alt", "x":10, "y":4, "w":1.25}, {"label":"ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"left", "x":13, "y":4}, {"label":"down", "x":14, "y":4}, {"label":"right", "x":15, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/wekey/stelo65/keymaps/default/keymap.c b/keyboards/wekey/stelo65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3e55cfdd22
--- /dev/null
+++ b/keyboards/wekey/stelo65/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2021 @wekey (@@wekey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, KC_VOLD, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+
+};
diff --git a/keyboards/wekey/stelo65/keymaps/default/readme.md b/keyboards/wekey/stelo65/keymaps/default/readme.md
new file mode 100644
index 0000000000..566d02c976
--- /dev/null
+++ b/keyboards/wekey/stelo65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for stelo65
diff --git a/keyboards/wekey/stelo65/keymaps/via/keymap.c b/keyboards/wekey/stelo65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3c3b9076c1
--- /dev/null
+++ b/keyboards/wekey/stelo65/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+// Copyright 2021 @wekey (@@wekey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_HOME, KC_VOLD, KC_VOLU,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_PGUP, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/wekey/stelo65/keymaps/via/rules.mk b/keyboards/wekey/stelo65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..16d33cd89f
--- /dev/null
+++ b/keyboards/wekey/stelo65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+
diff --git a/keyboards/wekey/stelo65/readme.md b/keyboards/wekey/stelo65/readme.md
new file mode 100644
index 0000000000..0a9d106664
--- /dev/null
+++ b/keyboards/wekey/stelo65/readme.md
@@ -0,0 +1,27 @@
+# stelo65
+
+![stelo65](https://i.imgur.com/dvzVYH1h.png)
+
+65% keyboard with encoder.
+
+* Keyboard Maintainer: [@wekey](https://github.com/wekey-dev)
+* Hardware Supported: Stelo65 case, ATMEGA32U4
+* Hardware Availability: Group buy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make stelo65:default
+
+Flashing example for this keyboard:
+
+ make stelo65:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/wekey/stelo65/rules.mk b/keyboards/wekey/stelo65/rules.mk
new file mode 100644
index 0000000000..9754b6df42
--- /dev/null
+++ b/keyboards/wekey/stelo65/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+DEBOUNCE_TYPE = sym_defer_pk
+
+SRC += encoder_actions.c
diff --git a/keyboards/wekey/stelo65/stelo65.c b/keyboards/wekey/stelo65/stelo65.c
new file mode 100644
index 0000000000..922f399a6d
--- /dev/null
+++ b/keyboards/wekey/stelo65/stelo65.c
@@ -0,0 +1,16 @@
+// Copyright 2021 @wekey (@@wekey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "stelo65.h"
+#include "encoder_actions.h"
+
+void matrix_scan_kb(void) {
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ encoder_action_register(index, clockwise);
+ return true;
+};
diff --git a/keyboards/wekey/stelo65/stelo65.h b/keyboards/wekey/stelo65/stelo65.h
new file mode 100644
index 0000000000..1a26c934a2
--- /dev/null
+++ b/keyboards/wekey/stelo65/stelo65.h
@@ -0,0 +1,35 @@
+// Copyright 2021 @wekey (@@wekey)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_all( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, K07, K17, K46, K47, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K56, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, K77, \
+ K80, K90, K81, K83, K94, K95, K86, K96, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K60, K61, K62, K63, K64, K65, K66, ___ }, \
+ { K70, K71, K72, K73, K74, K75, K76, K77 }, \
+ { K80, K81, ___, K83, ___, ___, K86, ___ }, \
+ { K90, ___, ___, ___, K94, K95, K96, K97 } \
+}
diff --git a/keyboards/wekey/we27/rules.mk b/keyboards/wekey/we27/rules.mk
index 4ba0911ec6..a88e7918f2 100644
--- a/keyboards/wekey/we27/rules.mk
+++ b/keyboards/wekey/we27/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/default/config.h b/keyboards/westfoxtrot/aanzee/keymaps/default/config.h
deleted file mode 100644
index 35ebb6871d..0000000000
--- a/keyboards/westfoxtrot/aanzee/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 westfoxtrot
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
index 8809523b62..e4c89b118b 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/default/keymap.c
@@ -21,16 +21,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_DEL, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,
KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1), KC_LEFT,KC_DOWN,KC_RGHT),
[_F1] = LAYOUT_ansi(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______, \
- _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______,
+ _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______,_______,_______, _______, _______,_______,_______,_______, _______)
};
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/config.h b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/config.h
deleted file mode 100644
index 386a2fd57d..0000000000
--- a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 westfoxtrot
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
index c3cf7e0df0..bec31246ca 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
@@ -21,16 +21,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_iso(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_END, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,
KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1), KC_LEFT,KC_DOWN, KC_RGHT),
[_F1] = LAYOUT_iso(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,_______,_______,_______)
};
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/via/config.h b/keyboards/westfoxtrot/aanzee/keymaps/via/config.h
deleted file mode 100644
index 35ebb6871d..0000000000
--- a/keyboards/westfoxtrot/aanzee/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 westfoxtrot
-*
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
index 1d1e2252bb..183b419402 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/via/keymap.c
@@ -21,16 +21,16 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_ansi(
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_DEL, KC_HOME,\
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, KC_PGDN,
KC_LCTRL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,MO(_F1) ,KC_LEFT,KC_DOWN, KC_RGHT),
[_F1] = LAYOUT_ansi(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______, \
- _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
- _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______,_______,_______,
+ _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______,_______,_______, _______, _______,_______ ,_______,_______, _______)
};
diff --git a/keyboards/westfoxtrot/aanzee/rules.mk b/keyboards/westfoxtrot/aanzee/rules.mk
index 8107a9534d..afa3f6d63d 100644
--- a/keyboards/westfoxtrot/aanzee/rules.mk
+++ b/keyboards/westfoxtrot/aanzee/rules.mk
@@ -5,14 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
diff --git a/keyboards/westfoxtrot/cyclops/keymaps/default/config.h b/keyboards/westfoxtrot/cyclops/keymaps/default/config.h
deleted file mode 100644
index 6278fae658..0000000000
--- a/keyboards/westfoxtrot/cyclops/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 'mechmerlin'
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/westfoxtrot/cyclops/rules.mk b/keyboards/westfoxtrot/cyclops/rules.mk
index 1a11791486..adc8923f05 100644
--- a/keyboards/westfoxtrot/cyclops/rules.mk
+++ b/keyboards/westfoxtrot/cyclops/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/westfoxtrot/cypher/rev1/rules.mk b/keyboards/westfoxtrot/cypher/rev1/rules.mk
index 7829857270..a237a6e497 100644
--- a/keyboards/westfoxtrot/cypher/rev1/rules.mk
+++ b/keyboards/westfoxtrot/cypher/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/westfoxtrot/cypher/rev5/rules.mk b/keyboards/westfoxtrot/cypher/rev5/rules.mk
index c8d113f48c..ddb7915978 100644
--- a/keyboards/westfoxtrot/cypher/rev5/rules.mk
+++ b/keyboards/westfoxtrot/cypher/rev5/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/westfoxtrot/prophet/rules.mk b/keyboards/westfoxtrot/prophet/rules.mk
index 668c6bdce6..7c8bb3669d 100644
--- a/keyboards/westfoxtrot/prophet/rules.mk
+++ b/keyboards/westfoxtrot/prophet/rules.mk
@@ -5,16 +5,15 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = yes # Enable N-Key Rollover
+SLEEP_LED_ENABLE = yes
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/westm/westm68/chconf.h b/keyboards/westm/westm68/chconf.h
new file mode 100644
index 0000000000..2faefa379d
--- /dev/null
+++ b/keyboards/westm/westm68/chconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/westm/westm68/config.h b/keyboards/westm/westm68/config.h
new file mode 100644
index 0000000000..ceecbb914c
--- /dev/null
+++ b/keyboards/westm/westm68/config.h
@@ -0,0 +1,61 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x574D // WM
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001 // Revision prototype
+#define MANUFACTURER WestM
+#define PRODUCT WestM68
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { A13, B9, F1, A10, A9 }
+#define MATRIX_COL_PINS { B14, B13, B12, B11, B10, B2, B1, B8, B7, B6, B5, B4, B3, A15, A14 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN A8
+#define RGBLED_NUM 19
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Hold ESC key (first key of first column) to trigger bootloader */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file
diff --git a/keyboards/westm/westm68/halconf.h b/keyboards/westm/westm68/halconf.h
new file mode 100644
index 0000000000..a73f08fb6d
--- /dev/null
+++ b/keyboards/westm/westm68/halconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/westm/westm68/info.json b/keyboards/westm/westm68/info.json
new file mode 100644
index 0000000000..58378c1b43
--- /dev/null
+++ b/keyboards/westm/westm68/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "WestM68",
+ "url": "https://github.com/WestMProducts",
+ "maintainer": "WestM",
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/westm/westm68/keymaps/default/keymap.c b/keyboards/westm/westm68/keymaps/default/keymap.c
new file mode 100755
index 0000000000..d49c8f81ea
--- /dev/null
+++ b/keyboards/westm/westm68/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi( /* Base */
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_65_ansi( /* FN */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+}; \ No newline at end of file
diff --git a/keyboards/westm/westm68/keymaps/via/keymap.c b/keyboards/westm/westm68/keymaps/via/keymap.c
new file mode 100644
index 0000000000..a4818ea81a
--- /dev/null
+++ b/keyboards/westm/westm68/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_65_ansi( /* Base */
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLASH, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_65_ansi( /* FN */
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_65_ansi( /* 2 */
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_65_ansi( /* 3 */
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME,
+ _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/westm/westm68/keymaps/via/rules.mk b/keyboards/westm/westm68/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/westm/westm68/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/westm/westm68/mcuconf.h b/keyboards/westm/westm68/mcuconf.h
new file mode 100644
index 0000000000..403696185d
--- /dev/null
+++ b/keyboards/westm/westm68/mcuconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_DMA
+#define STM32_I2C_USE_DMA FALSE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
diff --git a/keyboards/westm/westm68/readme.md b/keyboards/westm/westm68/readme.md
new file mode 100644
index 0000000000..f5d4daf309
--- /dev/null
+++ b/keyboards/westm/westm68/readme.md
@@ -0,0 +1,18 @@
+# WestM
+
+![westm68](https://i.imgur.com/EygC3BV.png)
+
+A 65% PCB with arrow cluster
+
+## Bootloader
+* **Physical reset button**: Briefly press the button on the back of the PCB.
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard.
+
+* Keyboard Maintainer: [WestM](https://github.com/westm00)
+* Hardware Supported: WestM65
+
+Make example for this keyboard (after setting up your build environment):
+
+ make westm/westm68:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/westm/westm68/rules.mk b/keyboards/westm/westm68/rules.mk
new file mode 100644
index 0000000000..0ad5e320fb
--- /dev/null
+++ b/keyboards/westm/westm68/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/westm/westm68/westm68.c b/keyboards/westm/westm68/westm68.c
new file mode 100644
index 0000000000..f5ec496247
--- /dev/null
+++ b/keyboards/westm/westm68/westm68.c
@@ -0,0 +1,18 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "westm68.h"
diff --git a/keyboards/westm/westm68/westm68.h b/keyboards/westm/westm68/westm68.h
new file mode 100644
index 0000000000..6dda35435e
--- /dev/null
+++ b/keyboards/westm/westm68/westm68.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E}, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E}, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2C, K2E}, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3B, K3C, K3E}, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, K4E} \
+}
diff --git a/keyboards/westm/westmergo/chconf.h b/keyboards/westm/westmergo/chconf.h
new file mode 100644
index 0000000000..6def646622
--- /dev/null
+++ b/keyboards/westm/westmergo/chconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
+
diff --git a/keyboards/westm/westmergo/config.h b/keyboards/westm/westmergo/config.h
new file mode 100644
index 0000000000..1f90dc82b8
--- /dev/null
+++ b/keyboards/westm/westmergo/config.h
@@ -0,0 +1,61 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x574D // WM
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001 // Revision prototype
+#define MANUFACTURER WestM
+#define PRODUCT WestMErgo
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+#define MATRIX_ROW_PINS { A13, B9, F1, A10, A9 }
+#define MATRIX_COL_PINS { B15, B14, B13, B12, B11, B10, B2, B1, B8, B7, B6, B5, B4, B3, A15, A14 }
+#define DIODE_DIRECTION COL2ROW
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN A8
+#define RGBLED_NUM 19
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Hold ESC key (first key of first column) to trigger bootloader */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file
diff --git a/keyboards/westm/westmergo/halconf.h b/keyboards/westm/westmergo/halconf.h
new file mode 100644
index 0000000000..a0a9318360
--- /dev/null
+++ b/keyboards/westm/westmergo/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/westm/westmergo/info.json b/keyboards/westm/westmergo/info.json
new file mode 100644
index 0000000000..c31a65a2ec
--- /dev/null
+++ b/keyboards/westm/westmergo/info.json
@@ -0,0 +1,80 @@
+{
+ "keyboard_name": "WestMErgo",
+ "url": "https://github.com/WestMProducts",
+ "maintainer": "WestM",
+ "layouts": {
+ "LAYOUT_alice": {
+ "layout": [
+ {"label":"K1E", "x":0, "y":0},
+ {"label":"K00", "x":1.5, "y":0},
+ {"label":"K01", "x":2.5, "y":0},
+ {"label":"K02", "x":3.5, "y":0},
+ {"label":"K03", "x":4.5, "y":0},
+ {"label":"K04", "x":5.5, "y":0},
+ {"label":"K05", "x":6.5, "y":0},
+ {"label":"K06", "x":7.5, "y":0},
+ {"label":"K07", "x":10.5, "y":0},
+ {"label":"K08", "x":11.5, "y":0},
+ {"label":"K09", "x":12.5, "y":0},
+ {"label":"K0A", "x":13.5, "y":0},
+ {"label":"K0B", "x":14.5, "y":0},
+ {"label":"K0C", "x":15.5, "y":0},
+ {"label":"K0D", "x":16.5, "y":0, "w":2},
+
+ {"label":"K2E", "x":0, "y":1},
+ {"label":"K10", "x":1.5, "y":1, "w":1.5},
+ {"label":"K11", "x":3, "y":1},
+ {"label":"K12", "x":4, "y":1},
+ {"label":"K13", "x":5, "y":1},
+ {"label":"K14", "x":6, "y":1},
+ {"label":"K15", "x":7, "y":1},
+ {"label":"K16", "x":10, "y":1},
+ {"label":"K17", "x":11, "y":1},
+ {"label":"K18", "x":12, "y":1},
+ {"label":"K19", "x":13, "y":1},
+ {"label":"K1A", "x":14, "y":1},
+ {"label":"K1B", "x":15, "y":1},
+ {"label":"K1C", "x":16, "y":1},
+ {"label":"K1D", "x":17, "y":1, "w":1.5},
+
+ {"label":"K3E", "x":0, "y":2},
+ {"label":"K20", "x":1.5, "y":2, "w":1.75},
+ {"label":"K21", "x":3.25, "y":2},
+ {"label":"K22", "x":4.25, "y":2},
+ {"label":"K23", "x":5.25, "y":2},
+ {"label":"K24", "x":6.25, "y":2},
+ {"label":"K25", "x":7.25, "y":2},
+ {"label":"K26", "x":10.25, "y":2},
+ {"label":"K27", "x":11.25, "y":2},
+ {"label":"K28", "x":12.25, "y":2},
+ {"label":"K29", "x":13.25, "y":2},
+ {"label":"K2A", "x":14.25, "y":2},
+ {"label":"K2B", "x":15.25, "y":2},
+ {"label":"K2D", "x":16.25, "y":2, "w":2.25},
+
+ {"label":"K30", "x":1.5, "y":3, "w":2.25},
+ {"label":"K32", "x":3.75, "y":3},
+ {"label":"K33", "x":4.75, "y":3},
+ {"label":"K34", "x":5.75, "y":3},
+ {"label":"K35", "x":6.75, "y":3},
+ {"label":"K36", "x":7.75, "y":3},
+ {"label":"K37", "x":9.75, "y":3},
+ {"label":"K38", "x":10.75, "y":3},
+ {"label":"K39", "x":11.75, "y":3},
+ {"label":"K3A", "x":12.75, "y":3},
+ {"label":"K3B", "x":13.75, "y":3},
+ {"label":"K3D", "x":14.75, "y":3},
+ {"label":"K3C", "x":15.75, "y":3, "w":1.75},
+ {"label":"K4D", "x":17.5, "y":3},
+
+ {"label":"K40", "x":1.5, "y":4, "w":1.5},
+ {"label":"K42", "x":4.5, "y":4, "w":1.25},
+ {"label":"K44", "x":5.75, "y":4, "w":2.25},
+ {"label":"K46", "x":8, "y":4, "w":1.25},
+ {"label":"K48", "x":9.75, "y":4, "w":2.75},
+ {"label":"K4A", "x":12.5, "y":4, "w":1.25},
+ {"label":"K4E", "x":17, "y":4, "w":1.5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/westm/westmergo/keymaps/default/keymap.c b/keyboards/westm/westmergo/keymaps/default/keymap.c
new file mode 100755
index 0000000000..80e40b33ca
--- /dev/null
+++ b/keyboards/westm/westmergo/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_alice( /* Base */
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_SPC, KC_LALT, KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT_alice( /* FN */
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+}; \ No newline at end of file
diff --git a/keyboards/westm/westmergo/keymaps/via/keymap.c b/keyboards/westm/westmergo/keymaps/via/keymap.c
new file mode 100644
index 0000000000..170f827100
--- /dev/null
+++ b/keyboards/westm/westmergo/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_alice(
+ KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_PGDN, MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_SPC, KC_LALT, KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT_alice( /* FN */
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_alice( /* 2 */
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_alice( /* 3 */
+ RESET, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
+ KC_HOME, _______, _______, KC_UP, _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_MUTE, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC__VOLDOWN, KC__VOLUP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/westm/westmergo/keymaps/via/rules.mk b/keyboards/westm/westmergo/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/westm/westmergo/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/westm/westmergo/mcuconf.h b/keyboards/westm/westmergo/mcuconf.h
new file mode 100644
index 0000000000..403696185d
--- /dev/null
+++ b/keyboards/westm/westmergo/mcuconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_DMA
+#define STM32_I2C_USE_DMA FALSE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
diff --git a/keyboards/westm/westmergo/readme.md b/keyboards/westm/westmergo/readme.md
new file mode 100644
index 0000000000..53cb5e6829
--- /dev/null
+++ b/keyboards/westm/westmergo/readme.md
@@ -0,0 +1,18 @@
+# WestM
+
+![westmergo](https://i.imgur.com/tD395AG.png)
+
+A 65 key PCB with arrow cluster
+
+## Bootloader
+* **Physical reset button**: Briefly press the button on the back of the PCB.
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard.
+
+* Keyboard Maintainer: [WestM](https://github.com/westm00)
+* Hardware Supported: WestM65
+
+Make example for this keyboard (after setting up your build environment):
+
+ make westm/westmergo:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file
diff --git a/keyboards/westm/westmergo/rules.mk b/keyboards/westm/westmergo/rules.mk
new file mode 100644
index 0000000000..0ad5e320fb
--- /dev/null
+++ b/keyboards/westm/westmergo/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F072
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/westm/westmergo/westmergo.c b/keyboards/westm/westmergo/westmergo.c
new file mode 100644
index 0000000000..d78a8f9d4e
--- /dev/null
+++ b/keyboards/westm/westmergo/westmergo.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "westmergo.h"
diff --git a/keyboards/westm/westmergo/westmergo.h b/keyboards/westm/westmergo/westmergo.h
new file mode 100644
index 0000000000..2ed5a1ab2c
--- /dev/null
+++ b/keyboards/westm/westmergo/westmergo.h
@@ -0,0 +1,38 @@
+/* Copyright 2021 WestM
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+// Full backspace
+// Split right shift
+#define LAYOUT_alice( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0f, \
+ k10, k11, k12, k13, k14, k15, k16, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
+ k20, k21, k22, k23, k24, k25, k26, k28, k29, k2a, k2b, k2c, k2d, k2f, \
+ k31, k32, k33, k34, k35, k36, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, \
+ k41, k43, k45, k46, k49, k4b, k4f \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX, k0f }, \
+ { k10, k11, k12, k13, k14, k15, k16, XXX, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
+ { k20, k21, k22, k23, k24, k25, k26, XXX, k28, k29, k2a, k2b, k2c, k2d, XXX, k2f }, \
+ { XXX, k31, k32, k33, k34, k35, k36, XXX, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f }, \
+ { XXX, k41, XXX, k43, XXX, k45, k46, XXX, XXX, k49, XXX, k4b, XXX, XXX, XXX, k4f }, \
+}
diff --git a/keyboards/whale/sk/v3/rules.mk b/keyboards/whale/sk/v3/rules.mk
index f29c2f1835..4fcc8d1e6b 100644
--- a/keyboards/whale/sk/v3/rules.mk
+++ b/keyboards/whale/sk/v3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wheatfield/blocked65/rules.mk b/keyboards/wheatfield/blocked65/rules.mk
index 4bc1dcf312..5dab5b3a15 100644
--- a/keyboards/wheatfield/blocked65/rules.mk
+++ b/keyboards/wheatfield/blocked65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wheatfield/split75/info.json b/keyboards/wheatfield/split75/info.json
index 72c118d4b1..1d0609a378 100644
--- a/keyboards/wheatfield/split75/info.json
+++ b/keyboards/wheatfield/split75/info.json
@@ -5,6 +5,9 @@
"layouts": {
"LAYOUT": {
"layout": [{"label":"ESC", "x":2.25, "y":0}, {"label":"F1", "x":3.25, "y":0}, {"label":"F2", "x":4.25, "y":0}, {"label":"F3", "x":5.25, "y":0}, {"label":"F4", "x":6.25, "y":0}, {"label":"F5", "x":7.25, "y":0}, {"label":"F6", "x":8.25, "y":0}, {"label":"F7", "x":10.25, "y":0}, {"label":"F8", "x":11.25, "y":0}, {"label":"F9", "x":12.25, "y":0}, {"label":"F10", "x":13.25, "y":0}, {"label":"F11", "x":14.25, "y":0}, {"label":"F12", "x":15.25, "y":0}, {"label":"Prt", "x":16.25, "y":0}, {"label":"Ins", "x":17.25, "y":0}, {"label":"Del", "x":18.25, "y":0}, {"label":"8", "x":0, "y":1}, {"label":"9", "x":1, "y":1}, {"label":"~", "x":2.25, "y":1}, {"label":"!", "x":3.25, "y":1}, {"label":"@", "x":4.25, "y":1}, {"label":"#", "x":5.25, "y":1}, {"label":"$", "x":6.25, "y":1}, {"label":"%", "x":7.25, "y":1}, {"label":"^", "x":8.25, "y":1}, {"label":"&", "x":10.25, "y":1}, {"label":"*", "x":11.25, "y":1}, {"label":"(", "x":12.25, "y":1}, {"label":")", "x":13.25, "y":1}, {"label":"_", "x":14.25, "y":1}, {"label":"+", "x":15.25, "y":1}, {"label":"Backspace", "x":16.25, "y":1, "w":2}, {"label":"Home", "x":18.25, "y":1}, {"label":"6", "x":0, "y":2}, {"label":"7", "x":1, "y":2}, {"label":"Tab", "x":2.25, "y":2, "w":1.5}, {"label":"Q", "x":3.75, "y":2}, {"label":"W", "x":4.75, "y":2}, {"label":"E", "x":5.75, "y":2}, {"label":"R", "x":6.75, "y":2}, {"label":"T", "x":7.75, "y":2}, {"label":"Y", "x":9.75, "y":2}, {"label":"U", "x":10.75, "y":2}, {"label":"I", "x":11.75, "y":2}, {"label":"O", "x":12.75, "y":2}, {"label":"P", "x":13.75, "y":2}, {"label":"{", "x":14.75, "y":2}, {"label":"}", "x":15.75, "y":2}, {"label":"|", "x":16.75, "y":2, "w":1.5}, {"label":"PgUp", "x":18.25, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"Caps Lock", "x":2.25, "y":3, "w":1.75}, {"label":"A", "x":4, "y":3}, {"label":"S", "x":5, "y":3}, {"label":"D", "x":6, "y":3}, {"label":"F", "x":7, "y":3}, {"label":"G", "x":8, "y":3}, {"label":"H", "x":10, "y":3}, {"label":"J", "x":11, "y":3}, {"label":"K", "x":12, "y":3}, {"label":"L", "x":13, "y":3}, {"label":":", "x":14, "y":3}, {"label":"\"", "x":15, "y":3}, {"label":"Enter", "x":16, "y":3, "w":2.25}, {"label":"PgDn", "x":18.25, "y":3}, {"label":"2", "x":0, "y":4}, {"label":"3", "x":1, "y":4}, {"label":"Shift", "x":2.25, "y":4, "w":2.25}, {"label":"Z", "x":4.5, "y":4}, {"label":"X", "x":5.5, "y":4}, {"label":"C", "x":6.5, "y":4}, {"label":"V", "x":7.5, "y":4}, {"label":"B", "x":8.5, "y":4}, {"label":"N", "x":10.5, "y":4}, {"label":"M", "x":11.5, "y":4}, {"label":"<", "x":12.5, "y":4}, {"label":">", "x":13.5, "y":4}, {"label":"?", "x":14.5, "y":4}, {"label":"Shift", "x":15.5, "y":4, "w":1.75}, {"label":"\u2191", "x":17.25, "y":4}, {"label":"End", "x":18.25, "y":4}, {"label":"0", "x":0, "y":5}, {"label":"1", "x":1, "y":5}, {"label":"Ctrl", "x":2.25, "y":5, "w":1.25}, {"label":"Win", "x":3.5, "y":5, "w":1.25}, {"label":"Alt", "x":4.75, "y":5, "w":1.25}, {"x":6, "y":5, "w":2}, {"x":8, "y":5}, {"x":10, "y":5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5, "w":1.25}, {"label":"Fn", "x":14, "y":5}, {"label":"Ctrl", "x":15, "y":5, "w":1.25}, {"label":"\u2190", "x":16.25, "y":5}, {"label":"\u2193", "x":17.25, "y":5}, {"label":"\u2192", "x":18.25, "y":5}]
+ },
+ "LAYOUT_iso": {
+ "layout": [{"label":"ESC", "x":2.25, "y":0}, {"label":"F1", "x":3.25, "y":0}, {"label":"F2", "x":4.25, "y":0}, {"label":"F3", "x":5.25, "y":0}, {"label":"F4", "x":6.25, "y":0}, {"label":"F5", "x":7.25, "y":0}, {"label":"F6", "x":8.25, "y":0}, {"label":"F7", "x":10.25, "y":0}, {"label":"F8", "x":11.25, "y":0}, {"label":"F9", "x":12.25, "y":0}, {"label":"F10", "x":13.25, "y":0}, {"label":"F11", "x":14.25, "y":0}, {"label":"F12", "x":15.25, "y":0}, {"label":"Prt", "x":16.25, "y":0}, {"label":"Ins", "x":17.25, "y":0}, {"label":"Del", "x":18.25, "y":0}, {"label":"8", "x":0, "y":1}, {"label":"9", "x":1, "y":1}, {"label":"~", "x":2.25, "y":1}, {"label":"!", "x":3.25, "y":1}, {"label":"@", "x":4.25, "y":1}, {"label":"#", "x":5.25, "y":1}, {"label":"$", "x":6.25, "y":1}, {"label":"%", "x":7.25, "y":1}, {"label":"^", "x":8.25, "y":1}, {"label":"&", "x":10.25, "y":1}, {"label":"*", "x":11.25, "y":1}, {"label":"(", "x":12.25, "y":1}, {"label":")", "x":13.25, "y":1}, {"label":"_", "x":14.25, "y":1}, {"label":"+", "x":15.25, "y":1}, {"label":"Backspace", "x":16.25, "y":1, "w":2}, {"label":"Home", "x":18.25, "y":1}, {"label":"6", "x":0, "y":2}, {"label":"7", "x":1, "y":2}, {"label":"Tab", "x":2.25, "y":2, "w":1.5}, {"label":"Q", "x":3.75, "y":2}, {"label":"W", "x":4.75, "y":2}, {"label":"E", "x":5.75, "y":2}, {"label":"R", "x":6.75, "y":2}, {"label":"T", "x":7.75, "y":2}, {"label":"Y", "x":9.75, "y":2}, {"label":"U", "x":10.75, "y":2}, {"label":"I", "x":11.75, "y":2}, {"label":"O", "x":12.75, "y":2}, {"label":"P", "x":13.75, "y":2}, {"label":"{", "x":14.75, "y":2}, {"label":"}", "x":15.75, "y":2}, {"label":"PgUp", "x":18.25, "y":2}, {"label":"4", "x":0, "y":3}, {"label":"5", "x":1, "y":3}, {"label":"Caps Lock", "x":2.25, "y":3, "w":1.75}, {"label":"A", "x":4, "y":3}, {"label":"S", "x":5, "y":3}, {"label":"D", "x":6, "y":3}, {"label":"F", "x":7, "y":3}, {"label":"G", "x":8, "y":3}, {"label":"H", "x":10, "y":3}, {"label":"J", "x":11, "y":3}, {"label":"K", "x":12, "y":3}, {"label":"L", "x":13, "y":3}, {"label":":", "x":14, "y":3}, {"label":"\"", "x":15, "y":3}, {"label":"'", "x":16, "y":3}, {"label":"Enter", "x":17, "y":2, "w":1.25, "h":2}, {"label":"PgDn", "x":18.25, "y":3}, {"label":"2", "x":0, "y":4}, {"label":"3", "x":1, "y":4}, {"label":"Shift", "x":2.25, "y":4, "w":1.25}, {"label":"|", "x":3.5, "y":4, "w":1}, {"label":"Z", "x":4.5, "y":4}, {"label":"X", "x":5.5, "y":4}, {"label":"C", "x":6.5, "y":4}, {"label":"V", "x":7.5, "y":4}, {"label":"B", "x":8.5, "y":4}, {"label":"N", "x":10.5, "y":4}, {"label":"M", "x":11.5, "y":4}, {"label":"<", "x":12.5, "y":4}, {"label":">", "x":13.5, "y":4}, {"label":"?", "x":14.5, "y":4}, {"label":"Shift", "x":15.5, "y":4, "w":1.75}, {"label":"\u2191", "x":17.25, "y":4}, {"label":"End", "x":18.25, "y":4}, {"label":"0", "x":0, "y":5}, {"label":"1", "x":1, "y":5}, {"label":"Ctrl", "x":2.25, "y":5, "w":1.25}, {"label":"Win", "x":3.5, "y":5, "w":1.25}, {"label":"Alt", "x":4.75, "y":5, "w":1.25}, {"x":6, "y":5, "w":2}, {"x":8, "y":5}, {"x":10, "y":5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5, "w":1.25}, {"label":"Fn", "x":14, "y":5}, {"label":"Ctrl", "x":15, "y":5, "w":1.25}, {"label":"\u2190", "x":16.25, "y":5}, {"label":"\u2193", "x":17.25, "y":5}, {"label":"\u2192", "x":18.25, "y":5}]
}
}
}
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 6faf3e20c3..dfdb5845ab 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -19,10 +19,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_kara/rules.mk b/keyboards/wilba_tech/rama_works_kara/rules.mk
index 920708f8b2..a3731bf69c 100644
--- a/keyboards/wilba_tech/rama_works_kara/rules.mk
+++ b/keyboards/wilba_tech/rama_works_kara/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk
index 74531d864e..35377a290b 100644
--- a/keyboards/wilba_tech/rama_works_koyu/rules.mk
+++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h b/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h
deleted file mode 100644
index 2a3bf1819f..0000000000
--- a/keyboards/wilba_tech/rama_works_m10_b/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Wilba
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/wilba_tech/rama_works_m10_b/rules.mk b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
index 2eb8c5dbde..2e24be64ba 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m10_b/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_m10_c/rules.mk b/keyboards/wilba_tech/rama_works_m10_c/rules.mk
index c98d93e623..438704163e 100644
--- a/keyboards/wilba_tech/rama_works_m10_c/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m10_c/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_m50_a/rules.mk b/keyboards/wilba_tech/rama_works_m50_a/rules.mk
index c98d93e623..438704163e 100644
--- a/keyboards/wilba_tech/rama_works_m50_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m50_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_m50_ax/rules.mk b/keyboards/wilba_tech/rama_works_m50_ax/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/rama_works_m50_ax/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m50_ax/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/rama_works_m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
index d788e14e2b..e3fae376fc 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
LAYOUTS = 60_hhkb
diff --git a/keyboards/wilba_tech/rama_works_m65_b/rules.mk b/keyboards/wilba_tech/rama_works_m65_b/rules.mk
index c98d93e623..438704163e 100644
--- a/keyboards/wilba_tech/rama_works_m65_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m65_b/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
index c98d93e623..438704163e 100644
--- a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h b/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h
deleted file mode 100644
index 999d8876c2..0000000000
--- a/keyboards/wilba_tech/rama_works_m6_a/keymaps/knops/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2017 Pawnerd
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/wilba_tech/rama_works_m6_a/rules.mk b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
index b2c38b0dcb..30c249e663 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_a/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/wilba_tech/rama_works_m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
index 79a0d3f8f6..549390a822 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
@@ -17,14 +17,11 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wilba_tech/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
index 459738b96a..1809b766f3 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
CIE1931_CURVE = yes
diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt60_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt60_b/rules.mk b/keyboards/wilba_tech/wt60_b/rules.mk
index 7aa382d9ba..9b5cffdee3 100644
--- a/keyboards/wilba_tech/wt60_b/rules.mk
+++ b/keyboards/wilba_tech/wt60_b/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wilba_tech/wt60_bx/rules.mk b/keyboards/wilba_tech/wt60_bx/rules.mk
index 7aa382d9ba..9b5cffdee3 100644
--- a/keyboards/wilba_tech/wt60_bx/rules.mk
+++ b/keyboards/wilba_tech/wt60_bx/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wilba_tech/wt60_c/rules.mk b/keyboards/wilba_tech/wt60_c/rules.mk
index 7aa382d9ba..9b5cffdee3 100644
--- a/keyboards/wilba_tech/wt60_c/rules.mk
+++ b/keyboards/wilba_tech/wt60_c/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wilba_tech/wt60_d/rules.mk b/keyboards/wilba_tech/wt60_d/rules.mk
index 2eb8c5dbde..2e24be64ba 100644
--- a/keyboards/wilba_tech/wt60_d/rules.mk
+++ b/keyboards/wilba_tech/wt60_d/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt60_g/rules.mk b/keyboards/wilba_tech/wt60_g/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt60_g/rules.mk
+++ b/keyboards/wilba_tech/wt60_g/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_g2/rules.mk b/keyboards/wilba_tech/wt60_g2/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt60_g2/rules.mk
+++ b/keyboards/wilba_tech/wt60_g2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_h1/rules.mk b/keyboards/wilba_tech/wt60_h1/rules.mk
index 70d226937b..4b301aee10 100644
--- a/keyboards/wilba_tech/wt60_h1/rules.mk
+++ b/keyboards/wilba_tech/wt60_h1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt60_h2/rules.mk b/keyboards/wilba_tech/wt60_h2/rules.mk
index 2eb9369659..e0403a960b 100644
--- a/keyboards/wilba_tech/wt60_h2/rules.mk
+++ b/keyboards/wilba_tech/wt60_h2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json
index ce15146843..2a255f6017 100644
--- a/keyboards/wilba_tech/wt60_h3/info.json
+++ b/keyboards/wilba_tech/wt60_h3/info.json
@@ -2,9 +2,79 @@
"keyboard_name": "wilba.tech WT60-H3",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_60_iso_tsangan_split_rshift"
+ },
"layouts": {
- "LAYOUT_all": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}]
+ "LAYOUT_60_iso_tsangan_split_rshift": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":7},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}
+ ]
}
}
}
diff --git a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c
index 3e8edca10f..a4f24c12e9 100644
--- a/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c
+++ b/keyboards/wilba_tech/wt60_h3/keymaps/default/keymap.c
@@ -21,32 +21,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
// Fn1 Layer
[1] = LAYOUT_all(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// Fn2 Layer
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// Fn3 Layer
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/wilba_tech/wt60_h3/rules.mk b/keyboards/wilba_tech/wt60_h3/rules.mk
index 2eb9369659..e0403a960b 100644
--- a/keyboards/wilba_tech/wt60_h3/rules.mk
+++ b/keyboards/wilba_tech/wt60_h3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt60_h3/wt60_h3.h b/keyboards/wilba_tech/wt60_h3/wt60_h3.h
index a8edb59c66..84ca69ffc2 100644
--- a/keyboards/wilba_tech/wt60_h3/wt60_h3.h
+++ b/keyboards/wilba_tech/wt60_h3/wt60_h3.h
@@ -20,10 +20,10 @@
#define ____ KC_NO
-#define LAYOUT_all( \
+#define LAYOUT_60_iso_tsangan_split_rshift( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K113, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, \
K400, K401, K402, K406, K411, K412, K413 \
) { \
diff --git a/keyboards/wilba_tech/wt60_xt/rules.mk b/keyboards/wilba_tech/wt60_xt/rules.mk
index 19efed0ace..9666f1e255 100644
--- a/keyboards/wilba_tech/wt60_xt/rules.mk
+++ b/keyboards/wilba_tech/wt60_xt/rules.mk
@@ -12,9 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt65_a/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt65_b/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt65_f/rules.mk b/keyboards/wilba_tech/wt65_f/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_f/rules.mk
+++ b/keyboards/wilba_tech/wt65_f/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_fx/rules.mk b/keyboards/wilba_tech/wt65_fx/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_fx/rules.mk
+++ b/keyboards/wilba_tech/wt65_fx/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_g/rules.mk b/keyboards/wilba_tech/wt65_g/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_g/rules.mk
+++ b/keyboards/wilba_tech/wt65_g/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_g2/rules.mk b/keyboards/wilba_tech/wt65_g2/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_g2/rules.mk
+++ b/keyboards/wilba_tech/wt65_g2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_h1/rules.mk b/keyboards/wilba_tech/wt65_h1/rules.mk
index 85e6695828..6733d8b167 100644
--- a/keyboards/wilba_tech/wt65_h1/rules.mk
+++ b/keyboards/wilba_tech/wt65_h1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt65_xt/rules.mk b/keyboards/wilba_tech/wt65_xt/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_xt/rules.mk
+++ b/keyboards/wilba_tech/wt65_xt/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_xtx/rules.mk b/keyboards/wilba_tech/wt65_xtx/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt65_xtx/rules.mk
+++ b/keyboards/wilba_tech/wt65_xtx/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt69_a/rules.mk b/keyboards/wilba_tech/wt69_a/rules.mk
index b0c316a58c..a7aa26a075 100644
--- a/keyboards/wilba_tech/wt69_a/rules.mk
+++ b/keyboards/wilba_tech/wt69_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt70_jb/rules.mk b/keyboards/wilba_tech/wt70_jb/rules.mk
index ddf73ecae9..712581eb1e 100644
--- a/keyboards/wilba_tech/wt70_jb/rules.mk
+++ b/keyboards/wilba_tech/wt70_jb/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt75_a/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt75_b/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt75_c/rules.mk
+++ b/keyboards/wilba_tech/wt75_c/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk
index 9a23a00faa..20309ed79e 100644
--- a/keyboards/wilba_tech/wt80_a/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt80_bc/rules.mk b/keyboards/wilba_tech/wt80_bc/rules.mk
index db5a3c88d6..a3ee67e2ad 100644
--- a/keyboards/wilba_tech/wt80_bc/rules.mk
+++ b/keyboards/wilba_tech/wt80_bc/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt80_g/rules.mk b/keyboards/wilba_tech/wt80_g/rules.mk
index 1f7b6c1a8d..51570559c0 100644
--- a/keyboards/wilba_tech/wt80_g/rules.mk
+++ b/keyboards/wilba_tech/wt80_g/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt8_a/rules.mk b/keyboards/wilba_tech/wt8_a/rules.mk
index b0c316a58c..a7aa26a075 100644
--- a/keyboards/wilba_tech/wt8_a/rules.mk
+++ b/keyboards/wilba_tech/wt8_a/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c
index cc34a90c75..a696fe7ed4 100644
--- a/keyboards/wilba_tech/wt_rgb_backlight.c
+++ b/keyboards/wilba_tech/wt_rgb_backlight.c
@@ -31,6 +31,7 @@
defined(RGB_BACKLIGHT_U80_A) || \
defined(RGB_BACKLIGHT_DAWN60) || \
defined(RGB_BACKLIGHT_PORTICO) || \
+ defined(RGB_BACKLIGHT_PORTICO75) || \
defined(RGB_BACKLIGHT_WT60_B) || \
defined(RGB_BACKLIGHT_WT60_BX) || \
defined(RGB_BACKLIGHT_WT60_C) || \
@@ -89,6 +90,9 @@ LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL];
#elif defined(RGB_BACKLIGHT_NK87)
#include "drivers/led/issi/is31fl3733.h"
#define BACKLIGHT_LED_COUNT 128
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+#include "drivers/led/issi/is31fl3741.h"
+#define BACKLIGHT_LED_COUNT 98
#else
#include "drivers/led/issi/is31fl3731.h"
#if defined(RGB_BACKLIGHT_U80_A)
@@ -701,6 +705,135 @@ const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
{ 1, C9_16, C7_15, C6_15 },
{ 1, C8_16, C7_16, C6_16 }
};
+
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+// This is a 7-bit address, that gets left-shifted and bit 0
+// set to 0 for write, 1 for read (as per I2C protocol)
+#define ISSI_ADDR_1 0x30
+#define ISSI_ADDR_2
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS18_SW1, CS17_SW1, CS16_SW1},
+ {0, CS18_SW2, CS17_SW2, CS16_SW2},
+ {0, CS18_SW3, CS17_SW3, CS16_SW3},
+ {0, CS18_SW4, CS17_SW4, CS16_SW4},
+ {0, CS18_SW5, CS17_SW5, CS16_SW5},
+ {0, CS18_SW6, CS17_SW6, CS16_SW6},
+ {0, CS18_SW7, CS17_SW7, CS16_SW7},
+ {0, CS18_SW8, CS17_SW8, CS16_SW8},
+ {0, CS18_SW9, CS17_SW9, CS16_SW9},
+
+ {0, CS21_SW1, CS20_SW1, CS19_SW1},
+ {0, CS21_SW2, CS20_SW2, CS19_SW2},
+ {0, CS21_SW3, CS20_SW3, CS19_SW3},
+ {0, CS21_SW4, CS20_SW4, CS19_SW4},
+ {0, CS21_SW5, CS20_SW5, CS19_SW5},
+ {0, CS21_SW6, CS20_SW6, CS19_SW6}, //Encoder, NO_LED
+
+ {0, CS15_SW1, CS14_SW1, CS13_SW1},
+ {0, CS15_SW2, CS14_SW2, CS13_SW2},
+ {0, CS15_SW3, CS14_SW3, CS13_SW3},
+ {0, CS15_SW4, CS14_SW4, CS13_SW4},
+ {0, CS15_SW5, CS14_SW5, CS13_SW5},
+ {0, CS15_SW6, CS14_SW6, CS13_SW6},
+ {0, CS15_SW7, CS14_SW7, CS13_SW7},
+ {0, CS15_SW8, CS14_SW8, CS13_SW8},
+ {0, CS15_SW9, CS14_SW9, CS13_SW9},
+
+ {0, CS24_SW1, CS23_SW1, CS22_SW1},
+ {0, CS24_SW2, CS23_SW2, CS22_SW2},
+ {0, CS24_SW3, CS23_SW3, CS22_SW3},
+ {0, CS24_SW4, CS23_SW4, CS22_SW4},
+ {0, CS24_SW5, CS23_SW5, CS22_SW5},
+ {0, CS24_SW6, CS23_SW6, CS22_SW6},
+
+ {0, CS12_SW1, CS11_SW1, CS10_SW1},
+ {0, CS12_SW2, CS11_SW2, CS10_SW2},
+ {0, CS12_SW3, CS11_SW3, CS10_SW3},
+ {0, CS12_SW4, CS11_SW4, CS10_SW4},
+ {0, CS12_SW5, CS11_SW5, CS10_SW5},
+ {0, CS12_SW6, CS11_SW6, CS10_SW6},
+ {0, CS12_SW7, CS11_SW7, CS10_SW7},
+ {0, CS12_SW8, CS11_SW8, CS10_SW8},
+ {0, CS12_SW9, CS11_SW9, CS10_SW9},
+
+ {0, CS27_SW1, CS26_SW1, CS25_SW1},
+ {0, CS27_SW2, CS26_SW2, CS25_SW2},
+ {0, CS27_SW3, CS26_SW3, CS25_SW3},
+ {0, CS27_SW4, CS26_SW4, CS25_SW4},
+ {0, CS27_SW5, CS26_SW5, CS25_SW5},
+ {0, CS27_SW6, CS26_SW6, CS25_SW6},
+
+ {0, CS9_SW1, CS8_SW1, CS7_SW1},
+ {0, CS9_SW2, CS8_SW2, CS7_SW2},
+ {0, CS9_SW3, CS8_SW3, CS7_SW3},
+ {0, CS9_SW4, CS8_SW4, CS7_SW4},
+ {0, CS9_SW5, CS8_SW5, CS7_SW5},
+ {0, CS9_SW6, CS8_SW6, CS7_SW6},
+ {0, CS9_SW7, CS8_SW7, CS7_SW7},
+ {0, CS9_SW8, CS8_SW8, CS7_SW8},
+ {0, CS9_SW9, CS8_SW9, CS7_SW9},
+
+ {0, CS30_SW1, CS29_SW1, CS28_SW1},
+ {0, CS30_SW2, CS29_SW2, CS28_SW2},
+ {0, CS30_SW3, CS29_SW3, CS28_SW3},
+ {0, CS30_SW4, CS29_SW4, CS28_SW4},
+
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {0, CS6_SW2, CS5_SW2, CS4_SW2},
+ {0, CS6_SW3, CS5_SW3, CS4_SW3},
+ {0, CS6_SW4, CS5_SW4, CS4_SW4},
+ {0, CS6_SW5, CS5_SW5, CS4_SW5},
+ {0, CS6_SW6, CS5_SW6, CS4_SW6},
+ {0, CS6_SW7, CS5_SW7, CS4_SW7},
+ {0, CS6_SW8, CS5_SW8, CS4_SW8},
+ {0, CS6_SW9, CS5_SW9, CS4_SW9},
+
+ {0, CS33_SW1, CS32_SW1, CS31_SW1},
+ {0, CS33_SW2, CS32_SW2, CS31_SW2},
+ {0, CS33_SW3, CS32_SW3, CS31_SW3},
+ {0, CS33_SW4, CS32_SW4, CS31_SW4},
+
+ {0, CS3_SW1, CS2_SW1, CS1_SW1},
+ {0, CS3_SW2, CS2_SW2, CS1_SW2},
+ {0, CS3_SW3, CS2_SW3, CS1_SW3},
+ {0, CS3_SW6, CS2_SW6, CS1_SW6},
+ {0, CS3_SW8, CS2_SW8, CS1_SW8},
+ {0, CS3_SW9, CS2_SW9, CS1_SW9},
+
+ {0, CS36_SW1, CS35_SW1, CS34_SW1},
+ {0, CS36_SW2, CS35_SW2, CS34_SW2},
+ {0, CS36_SW3, CS35_SW3, CS34_SW3},
+
+/*UNDERGLOW*/
+ {0, CS39_SW1, CS38_SW1, CS37_SW1},
+ {0, CS39_SW2, CS38_SW2, CS37_SW2},
+ {0, CS39_SW3, CS38_SW3, CS37_SW3},
+ {0, CS39_SW4, CS38_SW4, CS37_SW4},
+ {0, CS39_SW5, CS38_SW5, CS37_SW5},
+ {0, CS39_SW6, CS38_SW6, CS37_SW6},
+ {0, CS39_SW7, CS38_SW7, CS37_SW7},
+ {0, CS39_SW8, CS38_SW8, CS37_SW8},
+ {0, CS39_SW9, CS38_SW9, CS37_SW9},
+
+ {0, CS36_SW4, CS35_SW4, CS34_SW4},
+ {0, CS36_SW5, CS35_SW5, CS34_SW5},
+ {0, CS36_SW6, CS35_SW6, CS34_SW6},
+ {0, CS36_SW7, CS35_SW7, CS34_SW7},
+ {0, CS36_SW8, CS35_SW8, CS34_SW8},
+ {0, CS36_SW9, CS35_SW9, CS34_SW9},
+
+ {0, CS33_SW5, CS32_SW5, CS31_SW5},
+ {0, CS33_SW6, CS32_SW6, CS31_SW6},
+ {0, CS33_SW7, CS32_SW7, CS31_SW7}
+};
+
#elif defined(RGB_BACKLIGHT_M6_B)
// Driver has fixed mapping of index to the red, green and blue LEDs
#elif defined(RGB_BACKLIGHT_M10_C)
@@ -865,7 +998,7 @@ const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
{112,64}, {100,48}, {84,48}, {68,48}, {52,48}, {36,48}, {64,60}, {44,60}, {24,64},
{108,32}, {92,32}, {76,32}, {60,32}, {44,32}, {28,32}, {255,255}, {10,48}, {4,64},
// LD0..LD1762
-
+
{124,32}, {140,32}, {156,32}, {172,32}, {188,32}, {214,32}, {180,48}, {202,48}, {224,48},
{116,48}, {132,48}, {148,48}, {164,48}, {255,255}, {160,60}, {180,64}, {208,64}, {255,255}
};
@@ -1260,6 +1393,25 @@ const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
{ 121, 215 }, { 119, 164 }, { 117, 134 }, { 114, 104 }, { 109, 76 }, { 98, 50 }, { 71, 34 }, { 37, 41 }, { 22, 65 }, { 15, 93 }, { 11, 122 }, { 8, 162 }, { 7, 205 }, { 6, 233 },
{ 116, 236 }, { 113, 199 }, { 110, 164 }, { 82, 74 }, { 27, 106 }, { 20, 138 }, { 15, 183 }, { 13, 212 }, { 11, 240 }
};
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
+ { 0, 0 }, { 18, 0 }, { 33, 0 }, { 48, 0 }, { 62, 0 }, { 81, 0 }, { 96, 0 }, { 110, 0 }, { 125, 0 }, { 143, 0 }, { 158, 0 }, { 173, 0 }, { 187, 0 }, { 205, 0 }, { 224, 0 },
+ { 0, 15 }, { 15, 15 }, { 29, 15 }, { 44, 15 }, { 59, 15 }, { 74, 15 }, { 88, 15 }, { 103, 15 }, { 118, 15 }, { 132, 15 }, { 147, 15 }, { 162, 15 }, { 176, 15 }, { 198, 15 }, { 224, 15 },
+ { 4, 26 }, { 22, 26 }, { 37, 26 }, { 51, 26 }, { 66, 26 }, { 81, 26 }, { 96, 26 }, { 110, 26 }, { 125, 26 }, { 140, 26 }, { 154, 26 }, { 169, 26 }, { 183, 26 }, { 202, 26 }, { 224, 26 },
+ { 5, 38 }, { 25, 38 }, { 40, 38 }, { 54, 38 }, { 69, 38 }, { 84, 38 }, { 98, 38 }, { 113, 38 }, { 128, 38 }, { 143, 38 }, { 157, 38 }, { 172, 38 }, { 197, 38 },
+ { 9, 49 }, { 33, 49 }, { 48, 49 }, { 62, 49 }, { 77, 49 }, { 92, 49 }, { 107, 49 }, { 121, 49 }, { 136, 49 }, { 151, 49 }, { 165, 49 }, { 186, 49 }, { 209, 49 },
+ { 2, 61 }, { 20, 61 }, { 39, 61 }, { 94, 61 }, { 151, 61 }, { 173, 61 }, { 195, 64 }, { 209, 64 }, { 224, 64 },
+ { 2, 0 }, { 46, 0 }, { 90, 0 }, { 134, 0 }, { 178, 0 }, { 222, 0 }, { 224, 2 }, { 224, 32 }, { 224, 62 }, { 2, 64 }, { 46, 64 }, { 90, 64 }, { 134, 64 }, { 178, 64 }, { 222, 64 }, { 0, 2 }, { 0, 32 }, { 0, 62 }
+};
+const Point g_map_led_to_point_polar[BACKLIGHT_LED_COUNT] PROGMEM = {
+ { 138, 240 }, { 140, 205 }, { 143, 176 }, { 146, 147 }, { 150, 122 }, { 159, 92 }, { 172, 74 }, { 188, 66 }, { 206, 71 }, { 222, 92 }, { 229, 115 }, { 234, 142 }, { 238, 168 }, { 241, 203 }, { 243, 240 },
+ { 133, 233 }, { 134, 203 }, { 135, 175 }, { 137, 144 }, { 140, 115 }, { 144, 86 }, { 152, 61 }, { 171, 40 }, { 204, 37 }, { 226, 54 }, { 236, 80 }, { 241, 109 }, { 244, 136 }, { 246, 181 }, { 248, 233 },
+ { 129, 223 }, { 130, 186 }, { 130, 155 }, { 131, 126 }, { 132, 96 }, { 135, 65 }, { 142, 35 }, { 177, 13 }, { 237, 30 }, { 245, 59 }, { 248, 87 }, { 250, 118 }, { 251, 147 }, { 251, 186 }, { 252, 231 },
+ { 125, 221 }, { 124, 180 }, { 124, 149 }, { 123, 120 }, { 121, 89 }, { 118, 59 }, { 111, 31 }, { 57, 13 }, { 15, 35 }, { 8, 65 }, { 5, 94 }, { 4, 124 }, { 3, 176 },
+ { 120, 215 }, { 118, 166 }, { 117, 136 }, { 114, 109 }, { 109, 80 }, { 99, 54 }, { 75, 37 }, { 44, 40 }, { 25, 61 }, { 17, 88 }, { 13, 115 }, { 9, 156 }, { 7, 203 },
+ { 117, 234 }, { 115, 199 }, { 112, 162 }, { 86, 70 }, { 26, 100 }, { 18, 139 }, { 15, 183 }, { 13, 210 }, { 11, 240 },
+ { 138, 236 }, { 145, 151 }, { 166, 80 }, { 215, 80 }, { 236, 151 }, { 243, 236 }, { 243, 239 }, { 0, 231 }, { 11, 239 }, { 116, 236 }, { 109, 151 }, { 88, 80 }, { 39, 80 }, { 18, 151 }, { 11, 236 }, { 138, 239 }, { 127, 231 }, { 116, 239 }
+};
#elif defined(RGB_BACKLIGHT_M50_A)
const Point g_map_led_to_point[BACKLIGHT_LED_COUNT] PROGMEM = {
// LA0..LA17
@@ -1303,7 +1455,7 @@ void map_led_to_point( uint8_t index, Point *point )
point->y = pgm_read_byte(addr+1);
#if defined(RGB_BACKLIGHT_M6_B) || defined(RGB_BACKLIGHT_M10_C) || defined(RGB_BACKLIGHT_HS60) || defined(RGB_BACKLIGHT_NK65) || defined(RGB_BACKLIGHT_PORTICO) || \
- defined(RGB_BACKLIGHT_NK87) || defined(RGB_BACKLIGHT_NEBULA68) || defined(RGB_BACKLIGHT_NEBULA12) || defined(RGB_BACKLIGHT_KW_MEGA)
+ defined(RGB_BACKLIGHT_PORTICO75) || defined(RGB_BACKLIGHT_NK87) || defined(RGB_BACKLIGHT_NEBULA68) || defined(RGB_BACKLIGHT_NEBULA12) || defined(RGB_BACKLIGHT_KW_MEGA)
return;
#endif
@@ -1586,6 +1738,15 @@ const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
{ 44, 255, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 },
{ 58, 59, 60, 255, 255, 255, 61, 255, 255, 255, 62, 63, 64, 65, 66 }
};
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+const uint8_t g_map_row_column_to_led[MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 255, 255 },
+ { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 255, 255 },
+ { 71, 72, 73, 255, 255, 74, 255, 255, 255, 75, 76, 77, 78, 79, 255 }
+};
#elif defined(RGB_BACKLIGHT_M50_A)
// LA15, LA14, LA13, LA12, LA11, LA10, LA9, LB1, LB2, LB3, LB4, LB5, LB6
// LA16, LA6, LA5, LA4, LA3, LA2, LA1, LB9, LB10, LB11, LB12, LB13, LB14
@@ -1612,6 +1773,9 @@ void backlight_update_pwm_buffers(void)
{
#if defined(RGB_BACKLIGHT_M6_B)
IS31FL3218_update_pwm_buffers();
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+ IS31FL3741_update_pwm_buffers( ISSI_ADDR_1, 0 );
+ IS31FL3741_update_led_control_registers( ISSI_ADDR_1, 0 );
#elif defined(RGB_BACKLIGHT_M10_C)
IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, 0 );
IS31FL3731_update_led_control_registers( ISSI_ADDR_1, 0 );
@@ -1660,6 +1824,8 @@ void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
IS31FL3733_set_color( index, red, green, blue );
#elif defined (RGB_BACKLIGHT_PORTICO)
IS31FL3731_set_color( index, red, green, blue );
+#elif defined (RGB_BACKLIGHT_PORTICO75)
+ IS31FL3741_set_color( index, red, green, blue );
#elif defined(RGB_BACKLIGHT_NK87)
// This is done to avoid indicator LEDs being set
if (( index != 63+64-1 ) && ( index != 48+64-1 )) {
@@ -1693,6 +1859,11 @@ void backlight_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) {
IS31FL3731_set_color(i, red, green, blue);
}
+#elif defined (RGB_BACKLIGHT_PORTICO75)
+ // This is done to avoid indicator LEDs being set
+ for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) {
+ IS31FL3741_set_color(i, red, green, blue);
+ }
#elif defined(RGB_BACKLIGHT_NK87)
// This is done to avoid indicator LEDs being set
for (int i = 0; i < BACKLIGHT_LED_COUNT; i++) {
@@ -1933,6 +2104,15 @@ void backlight_effect_alphas_mods(void)
{
is_alpha = ( column < 16 ) && (( g_config.alphas_mods[row-1] & (1<<column) ) == 0);
}
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+ if ( row == 0 )
+ {
+ is_alpha = ( ( 0b11100000111100001 & (1<<column) ) == 0);
+ }
+ else
+ {
+ is_alpha = ( column < 16 ) && (( g_config.alphas_mods[row-1] & (1<<column) ) == 0);
+ }
#else
is_alpha = ( g_config.alphas_mods[row] & (1<<column) ) == 0;
#endif
@@ -2824,6 +3004,15 @@ void backlight_init_drivers(void)
// This actually updates the LED drivers
IS31FL3733_update_led_control_registers( ISSI_ADDR_1, 0 );
IS31FL3733_update_led_control_registers( ISSI_ADDR_2, 1 );
+#elif defined(RGB_BACKLIGHT_PORTICO75)
+ IS31FL3741_init( ISSI_ADDR_1 );
+ bool enabled = true;
+ for ( int index = 0; index < DRIVER_LED_TOTAL; index++ )
+ {
+ IS31FL3741_set_led_control_register( index, enabled, enabled, enabled );
+ }
+ // This actually updates the LED drivers
+ IS31FL3741_update_led_control_registers( ISSI_ADDR_1, 0 );
#elif defined(RGB_BACKLIGHT_KW_MEGA)
IS31FL3733_init( ISSI_ADDR_1, 0 );
IS31FL3733_init( ISSI_ADDR_2, 0 );
diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
index a8e880eac2..ad89233f42 100644
--- a/keyboards/wilba_tech/zeal60/rules.mk
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
LAYOUTS = 60_ansi 60_iso 60_hhkb 60_ansi_split_bs_rshift
diff --git a/keyboards/wilba_tech/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk
index 6569c24fed..9e89910b3e 100644
--- a/keyboards/wilba_tech/zeal65/rules.mk
+++ b/keyboards/wilba_tech/zeal65/rules.mk
@@ -10,22 +10,18 @@ BOOTLOADER = atmel-dfu
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
CIE1931_CURVE = yes
# project specific files
diff --git a/keyboards/wings42/rev1/info.json b/keyboards/wings42/rev1/info.json
new file mode 100644
index 0000000000..863bb3d34e
--- /dev/null
+++ b/keyboards/wings42/rev1/info.json
@@ -0,0 +1,56 @@
+{
+ "keyboard_name": "wings42 rev1",
+ "url": "",
+ "maintainer": "yfuku",
+ "layouts": {
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0.875},
+ {"label":"L01", "x":1, "y":0.625},
+ {"label":"L02", "x":2, "y":0.375},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0},
+ {"label":"L05", "x":5, "y":0.125},
+ {"label":"R00", "x":9, "y":0.125},
+ {"label":"R01", "x":10, "y":0},
+ {"label":"R02", "x":11, "y":0},
+ {"label":"R03", "x":12, "y":0.375},
+ {"label":"R04", "x":13, "y":0.625},
+ {"label":"R05", "x":14, "y":0.875},
+
+ {"label":"L10", "x":0, "y":1.875},
+ {"label":"L11", "x":1, "y":1.625},
+ {"label":"L12", "x":2, "y":1.375},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1},
+ {"label":"L15", "x":5, "y":1.125},
+ {"label":"R10", "x":9, "y":1.125},
+ {"label":"R11", "x":10, "y":1},
+ {"label":"R12", "x":11, "y":1},
+ {"label":"R13", "x":12, "y":1.375},
+ {"label":"R14", "x":13, "y":1.625},
+ {"label":"R15", "x":14, "y":1.875},
+
+ {"label":"L20", "x":0, "y":2.875},
+ {"label":"L21", "x":1, "y":2.625},
+ {"label":"L22", "x":2, "y":2.375},
+ {"label":"L23", "x":3, "y":2},
+ {"label":"L24", "x":4, "y":2},
+ {"label":"L25", "x":5, "y":2.125},
+ {"label":"R20", "x":9, "y":2.125},
+ {"label":"R21", "x":10, "y":2},
+ {"label":"R22", "x":11, "y":2},
+ {"label":"R23", "x":12, "y":2.375},
+ {"label":"R24", "x":13, "y":2.625},
+ {"label":"R25", "x":14, "y":2.875},
+
+ {"label":"L30", "x":4, "y":3},
+ {"label":"L31", "x":5, "y":3.125},
+ {"label":"L32", "x":6, "y":3.375},
+ {"label":"R30", "x":8, "y":3.375},
+ {"label":"R31", "x":9, "y":3.125},
+ {"label":"R32", "x":10, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/wings42/rev1/readme.md b/keyboards/wings42/rev1/readme.md
index 158372feb4..4ddfe3e83c 100644
--- a/keyboards/wings42/rev1/readme.md
+++ b/keyboards/wings42/rev1/readme.md
@@ -10,11 +10,11 @@ A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
Make example for this keyboard (after setting up your build environment):
- make wings42:default
+ make wings42/rev1:default
Flashing example for this keyboard:
- make wings42:default:flash
+ make wings42/rev1:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/wings42/rev1_extkeys/info.json b/keyboards/wings42/rev1_extkeys/info.json
new file mode 100644
index 0000000000..b9a793f112
--- /dev/null
+++ b/keyboards/wings42/rev1_extkeys/info.json
@@ -0,0 +1,60 @@
+{
+ "keyboard_name": "wings42 rev1_extkeys",
+ "url": "",
+ "maintainer": "yfuku",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0.875},
+ {"label":"L01", "x":1, "y":0.625},
+ {"label":"L02", "x":2, "y":0.375},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0},
+ {"label":"L05", "x":5, "y":0.125},
+ {"label":"R00", "x":9, "y":0.125},
+ {"label":"R01", "x":10, "y":0},
+ {"label":"R02", "x":11, "y":0},
+ {"label":"R03", "x":12, "y":0.375},
+ {"label":"R04", "x":13, "y":0.625},
+ {"label":"R05", "x":14, "y":0.875},
+
+ {"label":"L10", "x":0, "y":1.875},
+ {"label":"L11", "x":1, "y":1.625},
+ {"label":"L12", "x":2, "y":1.375},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1},
+ {"label":"L15", "x":5, "y":1.125},
+ {"label":"E01", "x":6, "y":1.625},
+ {"label":"E03", "x":8, "y":1.625},
+ {"label":"R10", "x":9, "y":1.125},
+ {"label":"R11", "x":10, "y":1},
+ {"label":"R12", "x":11, "y":1},
+ {"label":"R13", "x":12, "y":1.375},
+ {"label":"R14", "x":13, "y":1.625},
+ {"label":"R15", "x":14, "y":1.875},
+
+ {"label":"L20", "x":0, "y":2.875},
+ {"label":"L21", "x":1, "y":2.625},
+ {"label":"L22", "x":2, "y":2.375},
+ {"label":"L23", "x":3, "y":2},
+ {"label":"L24", "x":4, "y":2},
+ {"label":"L25", "x":5, "y":2.125},
+ {"label":"E02", "x":6, "y":2.625},
+ {"label":"E04", "x":8, "y":2.625},
+ {"label":"R20", "x":9, "y":2.125},
+ {"label":"R21", "x":10, "y":2},
+ {"label":"R22", "x":11, "y":2},
+ {"label":"R23", "x":12, "y":2.375},
+ {"label":"R24", "x":13, "y":2.625},
+ {"label":"R25", "x":14, "y":2.875},
+
+ {"label":"L30", "x":4, "y":3},
+ {"label":"L31", "x":5, "y":3.125},
+ {"label":"L32", "x":6, "y":3.375},
+ {"label":"R30", "x":8, "y":3.375},
+ {"label":"R31", "x":9, "y":3.125},
+ {"label":"R32", "x":10, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/wings42/rev2/config.h b/keyboards/wings42/rev2/config.h
new file mode 100644
index 0000000000..836833718c
--- /dev/null
+++ b/keyboards/wings42/rev2/config.h
@@ -0,0 +1,152 @@
+/*
+Copyright 2021 yfuku
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5946 // YF
+#define PRODUCT_ID 0x0005
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yfuku
+#define PRODUCT wings42 rev2
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, NO_PIN }
+#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/wings42/rev2/info.json b/keyboards/wings42/rev2/info.json
new file mode 100644
index 0000000000..4e78697627
--- /dev/null
+++ b/keyboards/wings42/rev2/info.json
@@ -0,0 +1,60 @@
+{
+ "keyboard_name": "wings42 rev2",
+ "url": "",
+ "maintainer": "yfuku",
+ "layouts": {
+ "LAYOUT_split_3x6_3_2": {
+ "layout": [
+ {"label":"L00", "x":0, "y":0.875},
+ {"label":"L01", "x":1, "y":0.625},
+ {"label":"L02", "x":2, "y":0.375},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0},
+ {"label":"L05", "x":5, "y":0.125},
+ {"label":"R00", "x":9, "y":0.125},
+ {"label":"R01", "x":10, "y":0},
+ {"label":"R02", "x":11, "y":0},
+ {"label":"R03", "x":12, "y":0.375},
+ {"label":"R04", "x":13, "y":0.625},
+ {"label":"R05", "x":14, "y":0.875},
+
+ {"label":"L10", "x":0, "y":1.875},
+ {"label":"L11", "x":1, "y":1.625},
+ {"label":"L12", "x":2, "y":1.375},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1},
+ {"label":"L15", "x":5, "y":1.125},
+ {"label":"L31", "x":6, "y":1.625},
+ {"label":"R33", "x":8, "y":1.625},
+ {"label":"R10", "x":9, "y":1.125},
+ {"label":"R11", "x":10, "y":1},
+ {"label":"R12", "x":11, "y":1},
+ {"label":"R13", "x":12, "y":1.375},
+ {"label":"R14", "x":13, "y":1.625},
+ {"label":"R15", "x":14, "y":1.875},
+
+ {"label":"L20", "x":0, "y":2.875},
+ {"label":"L21", "x":1, "y":2.625},
+ {"label":"L22", "x":2, "y":2.375},
+ {"label":"L23", "x":3, "y":2},
+ {"label":"L24", "x":4, "y":2},
+ {"label":"L25", "x":5, "y":2.125},
+ {"label":"L32", "x":6, "y":2.625},
+ {"label":"R34", "x":8, "y":2.625},
+ {"label":"R20", "x":9, "y":2.125},
+ {"label":"R21", "x":10, "y":2},
+ {"label":"R22", "x":11, "y":2},
+ {"label":"R23", "x":12, "y":2.375},
+ {"label":"R24", "x":13, "y":2.625},
+ {"label":"R25", "x":14, "y":2.875},
+
+ {"label":"L33", "x":4, "y":3},
+ {"label":"L34", "x":5, "y":3.125},
+ {"label":"L35", "x":6, "y":3.375},
+ {"label":"R30", "x":8, "y":3.375},
+ {"label":"R31", "x":9, "y":3.125},
+ {"label":"R32", "x":10, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/wings42/rev2/keymaps/default/keymap.c b/keyboards/wings42/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..df572a6f5a
--- /dev/null
+++ b/keyboards/wings42/rev2/keymaps/default/keymap.c
@@ -0,0 +1,81 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _RAISE,
+ _LOWER,
+ _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+---------+--------+---------+--------+--------.
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------|
+ KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_BSPC, KC_BSPC, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS,
+ //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------|
+ KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_DEL , KC_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL,
+ //`--------+--------+--------+--------+--------+--------/ \--------+---------+--------+---------+--------+--------'
+ KC_A_DEL,KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL
+ // `+--------+--------+--------' `--------+---------+--------+'
+ ),
+
+ [_RAISE] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ _______, _______, _______, _______, _______, RESET
+ // `+--------+--------+--------' `--------+-------+--------+'
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ RESET , _______, _______, _______, _______, _______
+ // `+--------+--------+--------' `--------+--------+--------+'
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ _______, _______, _______, _______, _______, _______
+ // `+--------+--------+--------' `--------+--------+--------+'
+ ),
+};
diff --git a/keyboards/wings42/rev2/keymaps/default/readme.md b/keyboards/wings42/rev2/keymaps/default/readme.md
new file mode 100644
index 0000000000..d99098ad0c
--- /dev/null
+++ b/keyboards/wings42/rev2/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for wings42
diff --git a/keyboards/wings42/rev2/keymaps/via/config.h b/keyboards/wings42/rev2/keymaps/via/config.h
new file mode 100644
index 0000000000..3e0c8d146a
--- /dev/null
+++ b/keyboards/wings42/rev2/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define ENCODERS_PAD_A { B5, B6 }
+#define ENCODERS_PAD_B { B4, B2 }
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/wings42/rev2/keymaps/via/keymap.c b/keyboards/wings42/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e6b4ef840a
--- /dev/null
+++ b/keyboards/wings42/rev2/keymaps/via/keymap.c
@@ -0,0 +1,218 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _RAISE,
+ _LOWER,
+ _ADJUST,
+};
+
+#define KC_G_TAB LGUI_T(KC_TAB)
+#define KC_G_BS LGUI_T(KC_BSPC)
+#define KC_L_SPC LT(_LOWER, KC_SPC)
+#define KC_R_ENT LT(_RAISE, KC_ENT)
+#define KC_S_JA LSFT_T(KC_LANG1)
+#define KC_S_EN LSFT_T(KC_LANG2)
+#define KC_A_DEL ALT_T(KC_DEL)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+---------+--------+---------+--------+--------.
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------|
+ KC_G_TAB, KC_A , KC_S , KC_D , KC_F , KC_G , KC_BSPC, KC_BSPC, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_G_BS,
+ //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------|
+ KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_DEL , KC_DEL , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RCTL,
+ //`--------+--------+--------+--------+--------+--------/ \--------+---------+--------+---------+--------+--------'
+ KC_A_DEL,KC_S_EN ,KC_L_SPC, KC_R_ENT, KC_S_JA , KC_A_DEL
+ // `+--------+--------+--------' `--------+---------+--------+'
+ ),
+
+ [_RAISE] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LPRN, KC_HASH, KC_DLR , KC_DQT , KC_QUOT, KC_TILD, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_GRV , KC_RPRN,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, _______, _______, _______, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ _______, _______, _______, _______, _______, RESET
+ // `+--------+--------+--------' `--------+-------+--------+'
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , _______, _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ RESET , _______, _______, _______, _______, _______
+ // `+--------+--------+--------' `--------+--------+--------+'
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_3_2(
+ //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
+ _______, _______, _______, _______, _______, _______
+ // `+--------+--------+--------' `--------+--------+--------+'
+ ),
+};
+
+keyevent_t encoder1_ccw = {
+ .key = (keypos_t){.row = 4, .col = 0},
+ .pressed = false
+};
+
+keyevent_t encoder1_cw = {
+ .key = (keypos_t){.row = 4, .col = 1},
+ .pressed = false
+};
+
+keyevent_t encoder2_ccw = {
+ .key = (keypos_t){.row = 4, .col = 2},
+ .pressed = false
+};
+
+keyevent_t encoder2_cw = {
+ .key = (keypos_t){.row = 4, .col = 3},
+ .pressed = false
+};
+
+keyevent_t encoder3_ccw = {
+ .key = (keypos_t){.row = 9, .col = 1},
+ .pressed = false
+};
+
+keyevent_t encoder3_cw = {
+ .key = (keypos_t){.row = 9, .col = 0},
+ .pressed = false
+};
+
+keyevent_t encoder4_ccw = {
+ .key = (keypos_t){.row = 9, .col = 3},
+ .pressed = false
+};
+
+keyevent_t encoder4_cw = {
+ .key = (keypos_t){.row = 9, .col = 2},
+ .pressed = false
+};
+
+
+void matrix_scan_user(void) {
+ if (IS_PRESSED(encoder1_ccw)) {
+ encoder1_ccw.pressed = false;
+ encoder1_ccw.time = (timer_read() | 1);
+ action_exec(encoder1_ccw);
+ }
+
+ if (IS_PRESSED(encoder1_cw)) {
+ encoder1_cw.pressed = false;
+ encoder1_cw.time = (timer_read() | 1);
+ action_exec(encoder1_cw);
+ }
+
+ if (IS_PRESSED(encoder2_ccw)) {
+ encoder2_ccw.pressed = false;
+ encoder2_ccw.time = (timer_read() | 1);
+ action_exec(encoder2_ccw);
+ }
+
+ if (IS_PRESSED(encoder2_cw)) {
+ encoder2_cw.pressed = false;
+ encoder2_cw.time = (timer_read() | 1);
+ action_exec(encoder2_cw);
+ }
+
+ if (IS_PRESSED(encoder3_ccw)) {
+ encoder3_ccw.pressed = false;
+ encoder3_ccw.time = (timer_read() | 1);
+ action_exec(encoder3_ccw);
+ }
+
+ if (IS_PRESSED(encoder3_cw)) {
+ encoder3_cw.pressed = false;
+ encoder3_cw.time = (timer_read() | 1);
+ action_exec(encoder3_cw);
+ }
+
+ if (IS_PRESSED(encoder4_ccw)) {
+ encoder4_ccw.pressed = false;
+ encoder4_ccw.time = (timer_read() | 1);
+ action_exec(encoder4_ccw);
+ }
+
+ if (IS_PRESSED(encoder4_cw)) {
+ encoder4_cw.pressed = false;
+ encoder4_cw.time = (timer_read() | 1);
+ action_exec(encoder4_cw);
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ encoder1_cw.pressed = true;
+ encoder1_cw.time = (timer_read() | 1);
+ action_exec(encoder1_cw);
+ } else {
+ encoder1_ccw.pressed = true;
+ encoder1_ccw.time = (timer_read() | 1);
+ action_exec(encoder1_ccw);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ encoder2_cw.pressed = true;
+ encoder2_cw.time = (timer_read() | 1);
+ action_exec(encoder2_cw);
+ } else {
+ encoder2_ccw.pressed = true;
+ encoder2_ccw.time = (timer_read() | 1);
+ action_exec(encoder2_ccw);
+ }
+ } else if (index == 2) {
+ if (clockwise) {
+ encoder3_cw.pressed = true;
+ encoder3_cw.time = (timer_read() | 1);
+ action_exec(encoder3_cw);
+ } else {
+ encoder3_ccw.pressed = true;
+ encoder3_ccw.time = (timer_read() | 1);
+ action_exec(encoder3_ccw);
+ }
+ } else if (index == 3) {
+ if (clockwise) {
+ encoder4_cw.pressed = true;
+ encoder4_cw.time = (timer_read() | 1);
+ action_exec(encoder4_cw);
+ } else {
+ encoder4_ccw.pressed = true;
+ encoder4_ccw.time = (timer_read() | 1);
+ action_exec(encoder4_ccw);
+ }
+ }
+
+ return true;
+}
diff --git a/keyboards/wings42/rev2/keymaps/via/rules.mk b/keyboards/wings42/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..eea5e1e2a2
--- /dev/null
+++ b/keyboards/wings42/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/wings42/rev2/readme.md b/keyboards/wings42/rev2/readme.md
new file mode 100644
index 0000000000..158372feb4
--- /dev/null
+++ b/keyboards/wings42/rev2/readme.md
@@ -0,0 +1,21 @@
+# wings42
+
+![wings42](https://raw.githubusercontent.com/yfuku/wings42/main/images/wings42.jpg)
+
+A split keyboard with 3x6 vertically staggered keys and 3 thumb keys.
+
+* Keyboard Maintainer: [yfuku](https://github.com/yfuku)
+* Hardware Supported: wings42 PCB, Pro Micro
+* Hardware Availability: https://yfuku.booth.pm/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wings42:default
+
+Flashing example for this keyboard:
+
+ make wings42:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+A build guide for this keyboard can be found here: [wings42 build guide](https://yfuku.com/wings42/buildguide/)
diff --git a/keyboards/wings42/rev2/rev2.c b/keyboards/wings42/rev2/rev2.c
new file mode 100644
index 0000000000..96aa6cd314
--- /dev/null
+++ b/keyboards/wings42/rev2/rev2.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev2.h"
diff --git a/keyboards/wings42/rev2/rev2.h b/keyboards/wings42/rev2/rev2.h
new file mode 100644
index 0000000000..4720592264
--- /dev/null
+++ b/keyboards/wings42/rev2/rev2.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 yfuku
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT_split_3x6_3_2( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, L31, R33, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L32, R34, R20, R21, R22, R23, R24, R25, \
+ L33, L34, L35, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { KC_NO, L31, L32, L33, L34, L35 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { KC_NO, R34, R33, R32, R31, R30 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
diff --git a/keyboards/wings42/rev2/rules.mk b/keyboards/wings42/rev2/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/wings42/rev2/rules.mk
diff --git a/keyboards/wings42/rules.mk b/keyboards/wings42/rules.mk
index d607ffb581..74e894efec 100644
--- a/keyboards/wings42/rules.mk
+++ b/keyboards/wings42/rules.mk
@@ -12,14 +12,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
-DEFAULT_FOLDER = wings42/rev1
+DEFAULT_FOLDER = wings42/rev2
diff --git a/keyboards/wings42/wings42.h b/keyboards/wings42/wings42.h
index 07c8823409..9412b7117a 100644
--- a/keyboards/wings42/wings42.h
+++ b/keyboards/wings42/wings42.h
@@ -24,3 +24,7 @@
#ifdef KEYBOARD_wings42_rev1_extkeys
# include "rev1_extkeys.h"
#endif
+#ifdef KEYBOARD_wings42_rev2
+# include "rev2.h"
+#endif
+
diff --git a/keyboards/winkeyless/b87/rules.mk b/keyboards/winkeyless/b87/rules.mk
index 9566174813..47f85799f5 100644
--- a/keyboards/winkeyless/b87/rules.mk
+++ b/keyboards/winkeyless/b87/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/winkeyless/bface/rules.mk b/keyboards/winkeyless/bface/rules.mk
index 3bff3ee31b..4dcdfe886a 100644
--- a/keyboards/winkeyless/bface/rules.mk
+++ b/keyboards/winkeyless/bface/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/winkeyless/bmini/rules.mk b/keyboards/winkeyless/bmini/rules.mk
index 694ad609a2..9686fd1aa4 100644
--- a/keyboards/winkeyless/bmini/rules.mk
+++ b/keyboards/winkeyless/bmini/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/winkeyless/bminiex/keymaps/ansi/keymap.c b/keyboards/winkeyless/bminiex/keymaps/ansi/keymap.c
index 12c0714b13..658377fa82 100644
--- a/keyboards/winkeyless/bminiex/keymaps/ansi/keymap.c
+++ b/keyboards/winkeyless/bminiex/keymaps/ansi/keymap.c
@@ -19,11 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_P7, KC_P8, KC_P9, \
- KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_P7, KC_P8, KC_P9,
+ KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/winkeyless/bminiex/keymaps/iso/keymap.c b/keyboards/winkeyless/bminiex/keymaps/iso/keymap.c
index aa4ddf063a..c83c0ec137 100644
--- a/keyboards/winkeyless/bminiex/keymaps/iso/keymap.c
+++ b/keyboards/winkeyless/bminiex/keymaps/iso/keymap.c
@@ -19,11 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_P7, KC_P8, KC_P9, \
- KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS, \
- KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_HOME, KC_END, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_INS, KC_P7, KC_P8, KC_P9,
+ KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/winkeyless/bminiex/rules.mk b/keyboards/winkeyless/bminiex/rules.mk
index f8743893fe..dca760709c 100644
--- a/keyboards/winkeyless/bminiex/rules.mk
+++ b/keyboards/winkeyless/bminiex/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
@@ -14,6 +16,3 @@ COMMAND_ENABLE = no
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/wolf/kuku65/rules.mk b/keyboards/wolf/kuku65/rules.mk
index 8fc7be19c1..f4ad147581 100644
--- a/keyboards/wolf/kuku65/rules.mk
+++ b/keyboards/wolf/kuku65/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wolf/sabre/config.h b/keyboards/wolf/sabre/config.h
new file mode 100644
index 0000000000..02b897ba4f
--- /dev/null
+++ b/keyboards/wolf/sabre/config.h
@@ -0,0 +1,61 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5453 // TS - ToastyStoemp
+#define PRODUCT_ID 0x0055 // Sabre
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER ToastyStoemp
+#define PRODUCT Sabre
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { D0, D1, F1, F0, B5, B6, C7, C6, F6, F7, F4, F5 }
+#define MATRIX_COL_PINS { D2, D3, D5, D4, D6, D7, B4, B2, B1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define BACKLIGHT_PIN B7
+
+#define LED_CAPS_LOCK_PIN B3
+#define LED_SCROLL_LOCK_PIN B0
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/wolf/sabre/info.json b/keyboards/wolf/sabre/info.json
new file mode 100644
index 0000000000..3fb912fdb4
--- /dev/null
+++ b/keyboards/wolf/sabre/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Sabre",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":8.25, "y":0}, {"label":"PrtSc", "x":17.25, "y":0}, {"label":"Scroll Lock", "x":18.25, "y":0}, {"label":"Pause", "x":19.25, "y":0}, {"label":"\u00ac", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"\"", "x":2, "y":1.25}, {"label":"\u00a3", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"Insert", "x":17.25, "y":1.25}, {"label":"Home", "x":18.25, "y":1.25}, {"label":"PgUp", "x":19.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Delete", "x":17.25, "y":2.25}, {"label":"End", "x":18.25, "y":2.25}, {"label":"PgDn", "x":19.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"\u2191", "x":18.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Win", "x":2.5, "y":5.25, "w":1.5}, {"label":"Alt", "x":4, "y":5.25}, {"x":5, "y":5.25, "w":2.25}, {"label":"\u2190", "x":17.25, "y":5.25}, {"label":"\u2193", "x":18.25, "y":5.25}, {"label":"\u2192", "x":19.25, "y":5.25}, {"label":"F6", "x":-7.75, "y":6.25}, {"label":"F7", "x":-6.75, "y":6.25}, {"label":"F8", "x":-5.75, "y":6.25}, {"label":"F9", "x":-4.5, "y":6.25}, {"label":"F10", "x":-3.5, "y":6.25}, {"label":"F11", "x":-2.5, "y":6.25}, {"label":"F12", "x":-1.5, "y":6.25}, {"label":"&", "x":-8.5, "y":7.5}, {"label":"*", "x":-7.5, "y":7.5}, {"label":"(", "x":-6.5, "y":7.5}, {"label":")", "x":-5.5, "y":7.5}, {"label":"_", "x":-4.5, "y":7.5}, {"label":"+", "x":-3.5, "y":7.5}, {"label":"BackSpace", "x":-2.5, "y":7.5, "w":2}, {"label":"Y", "x":-9.0, "y":8.5}, {"label":"U", "x":-8, "y":8.5}, {"label":"I", "x":-7.0, "y":8.5}, {"label":"O", "x":-6, "y":8.5}, {"label":"P", "x":-5.0, "y":8.5}, {"label":"{", "x":-4, "y":8.5}, {"label":"}", "x":-3.0, "y":8.5}, {"label":"|", "x":-2, "y":8.5, "w":1.5}, {"label":"H", "x":-8.75, "y":9.5}, {"label":"J", "x":-7.75, "y":9.5}, {"label":"K", "x":-6.75, "y":9.5}, {"label":"L", "x":-5.75, "y":9.5}, {"label":":", "x":-4.75, "y":9.5}, {"label":"@", "x":-3.75, "y":9.5}, {"label":"Enter", "x":-2.75, "y":9.5, "w":2.25}, {"label":"B", "x":-9.25, "y":10.5}, {"label":"N", "x":-8.25, "y":10.5}, {"label":"M", "x":-7.25, "y":10.5}, {"label":"<", "x":-6.25, "y":10.5}, {"label":">", "x":-5.25, "y":10.5}, {"label":"?", "x":-4.25, "y":10.5}, {"label":"Shift", "x":-3.25, "y":10.5, "w":1.75}, {"x":-1.5, "y":10.5}, {"x":-9.25, "y":11.5, "w":2.75}, {"label":"<", "x":-6.5, "y":11.5}, {"label":"Alt", "x":-5.5, "y":11.5, "w":1.5}, {"label":"Ctrl", "x":-3.0, "y":11.5, "w":1.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wolf/sabre/keymaps/default/keymap.c b/keyboards/wolf/sabre/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a873ab89fb
--- /dev/null
+++ b/keyboards/wolf/sabre/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_BRTG
+ )
+};
diff --git a/keyboards/wolf/sabre/keymaps/via/keymap.c b/keyboards/wolf/sabre/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6a6c35bb0e
--- /dev/null
+++ b/keyboards/wolf/sabre/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_INC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_BRTG
+ ),
+
+ [_LAYER2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/wolf/sabre/keymaps/via/rules.mk b/keyboards/wolf/sabre/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wolf/sabre/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wolf/sabre/readme.md b/keyboards/wolf/sabre/readme.md
new file mode 100644
index 0000000000..b06217d0ee
--- /dev/null
+++ b/keyboards/wolf/sabre/readme.md
@@ -0,0 +1,21 @@
+# Sabre
+
+The following is the QMK Firmware for the Sabre PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wolf/sabre:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
diff --git a/keyboards/wolf/sabre/rules.mk b/keyboards/wolf/sabre/rules.mk
new file mode 100644
index 0000000000..39ad4aa5a0
--- /dev/null
+++ b/keyboards/wolf/sabre/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+BACKLIGHT_ENABLE = yes
+BACKLIGHT_DRIVER = pwm \ No newline at end of file
diff --git a/keyboards/wolf/sabre/sabre.c b/keyboards/wolf/sabre/sabre.c
new file mode 100644
index 0000000000..84577ef867
--- /dev/null
+++ b/keyboards/wolf/sabre/sabre.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "sabre.h"
diff --git a/keyboards/wolf/sabre/sabre.h b/keyboards/wolf/sabre/sabre.h
new file mode 100644
index 0000000000..4580f46e93
--- /dev/null
+++ b/keyboards/wolf/sabre/sabre.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2020 <contact@vwolf.be>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* sabre Keymap Definitions */
+#define LAYOUT( \
+ K00, K01, K11, K02, K12, K13, K04, K14, K05, K15, K06, K16, K07, K17, K08, K18, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, K37, K28, K38, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, K57, K48, K58, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K76, \
+ K80, K90, K81, K91, K82, K92, K83, K93, K84, K94, K85, K95, K86, K96, K88, \
+ KA0, KB0, KA1, KA2, KB3, KB4, KA5, KA6, KB7, KA8, KB8 \
+) { \
+ { K00, K01, K02, KC_NO, K04, K05, K06, K07, K08 }, \
+ { KC_NO, K11, K12, K13, K14, K15, K16, K17, K18 }, \
+ { K20, K21, K22, K23, K24, K25, K26, KC_NO, K28 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38 }, \
+ { K40, K41, K42, K43, K44, K45, K46, KC_NO, K48 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58 }, \
+ { K60, K61, K62, K63, K64, K65, KC_NO, KC_NO, KC_NO }, \
+ { K70, K71, K72, K73, K74, K75, K76, KC_NO, KC_NO }, \
+ { K80, K81, K82, K83, K84, K85, K86, KC_NO, K88 }, \
+ { K90, K91, K92, K93, K94, K95, K96, KC_NO, KC_NO }, \
+ { KA0, KA1, KA2, KC_NO, KC_NO, KA5, KA6, KC_NO, KA8 }, \
+ { KB0, KC_NO, KC_NO, KB3, KB4, KC_NO, KC_NO, KB7, KB8 } \
+}
diff --git a/keyboards/wolf/ts60/keymaps/default/keymap.c b/keyboards/wolf/ts60/keymaps/default/keymap.c
index fa2ac46964..9165bea341 100644
--- a/keyboards/wolf/ts60/keymaps/default/keymap.c
+++ b/keyboards/wolf/ts60/keymaps/default/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
),
[_LAYER1] = LAYOUT_60_ansi(
diff --git a/keyboards/wolf/ts60/keymaps/via/keymap.c b/keyboards/wolf/ts60/keymaps/via/keymap.c
index 9d1b9aab62..65d06d649d 100644
--- a/keyboards/wolf/ts60/keymaps/via/keymap.c
+++ b/keyboards/wolf/ts60/keymaps/via/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
),
[_LAYER1] = LAYOUT_60_ansi(
diff --git a/keyboards/wolf/ts60/rules.mk b/keyboards/wolf/ts60/rules.mk
index 8edf0f7658..5c5eb37c20 100644
--- a/keyboards/wolf/ts60/rules.mk
+++ b/keyboards/wolf/ts60/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wolfmarkclub/wm1/rules.mk b/keyboards/wolfmarkclub/wm1/rules.mk
index 18c26c3abc..2782d497ce 100644
--- a/keyboards/wolfmarkclub/wm1/rules.mk
+++ b/keyboards/wolfmarkclub/wm1/rules.mk
@@ -15,13 +15,11 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
LTO_ENABLE = yes
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/work_louder/loop/info.json b/keyboards/work_louder/loop/info.json
index 6e5f76c7f4..2190f53512 100644
--- a/keyboards/work_louder/loop/info.json
+++ b/keyboards/work_louder/loop/info.json
@@ -17,7 +17,7 @@
{"label": "k08", "x": 8, "y": 1, "w": 0},
{"label": "k09", "x": 9, "y": 1, "w": 0},
{"label": "k0a", "x": 10, "y": 1, "w": 0},
- {"label": "k0b", "x": 11, "y": 1, "w": 0},
+ {"label": "k0b", "x": 11, "y": 1, "w": 0}
]
}
}
diff --git a/keyboards/work_louder/loop/rules.mk b/keyboards/work_louder/loop/rules.mk
index 0069fba60c..6414533ce0 100644
--- a/keyboards/work_louder/loop/rules.mk
+++ b/keyboards/work_louder/loop/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/work_louder/nano/info.json b/keyboards/work_louder/nano/info.json
index 4c21048597..a80ef21d63 100644
--- a/keyboards/work_louder/nano/info.json
+++ b/keyboards/work_louder/nano/info.json
@@ -7,7 +7,7 @@
"layout": [
{"label": "k00", "x": 0, "y": 0},
{"label": "k01", "x": 1, "y": 0},
- {"label": "k02", "x": 2, "y": 0},
+ {"label": "k02", "x": 2, "y": 0}
]
}
}
diff --git a/keyboards/work_louder/nano/rules.mk b/keyboards/work_louder/nano/rules.mk
index a731c09dec..ddbd9618d0 100644
--- a/keyboards/work_louder/nano/rules.mk
+++ b/keyboards/work_louder/nano/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/config.h b/keyboards/work_louder/work_board/keymaps/drashna/config.h
index 5ea4dc7e48..b3bcaca25d 100644
--- a/keyboards/work_louder/work_board/keymaps/drashna/config.h
+++ b/keyboards/work_louder/work_board/keymaps/drashna/config.h
@@ -15,3 +15,8 @@
*/
#pragma once
+
+#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 12
+
+#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
index 3bbb81bf04..3b0f4921ac 100644
--- a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
+++ b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
@@ -126,45 +126,12 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif
-void rgb_matrix_indicators_user(void) {}
-
-void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
uint8_t this_mod = get_mods();
uint8_t this_led = host_keyboard_leds();
uint8_t this_osm = get_oneshot_mods();
#define THUMB_LED 6
#define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
- if (!userspace_config.rgb_layer_change) {
- switch (get_highest_layer(layer_state | default_layer_state)) {
- case _GAMEPAD:
- rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DIABLO:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _RAISE:
- rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _LOWER:
- rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _ADJUST:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_1:
- rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_2:
- rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_3:
- rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_4:
- rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- }
- }
extern bool host_driver_disabled;
if (host_driver_disabled) {
@@ -214,4 +181,6 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
RGB_MATRIX_INDICATOR_SET_COLOR(4, 0xFF, 0xFF, 0x00);
RGB_MATRIX_INDICATOR_SET_COLOR(5, 0xFF, 0xFF, 0x00);
}
+
+ return true;
}
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/rules.mk b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk
index 363f2d0edb..6cccd5f8d2 100644
--- a/keyboards/work_louder/work_board/keymaps/drashna/rules.mk
+++ b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk
@@ -1,6 +1,10 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
TAP_DANCE_ENABLE = no
NKRO_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
ENCODER_MAP_ENABLE = yes
+
+AUTOCORRECTION_ENABLE = no
+CUSTOM_UNICODE_ENABLE = no
diff --git a/keyboards/work_louder/work_board/rules.mk b/keyboards/work_louder/work_board/rules.mk
index a731c09dec..ddbd9618d0 100644
--- a/keyboards/work_louder/work_board/rules.mk
+++ b/keyboards/work_louder/work_board/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wren/config.h b/keyboards/wren/config.h
new file mode 100644
index 0000000000..93b8468c17
--- /dev/null
+++ b/keyboards/wren/config.h
@@ -0,0 +1,125 @@
+/*
+Copyright 2021 Walter Hanley
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Walter Hanley
+#define PRODUCT wren
+
+/* key matrix size */
+// Rows are doubled-up (Bottom set of rows are used for the right half)
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D3, D2, C6, D4, B5 }
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, D7, F0 }
+#define UNUSED_PINS
+
+// define encoders
+#define ENCODERS_PAD_A \
+ { E6 }
+#define ENCODERS_PAD_B \
+ { B4 }
+#define ENCODERS_PAD_A_RIGHT \
+ { B4 }
+#define ENCODERS_PAD_B_RIGHT \
+ { E6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define USE_I2C
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/wren/info.json b/keyboards/wren/info.json
new file mode 100644
index 0000000000..ef11ffea27
--- /dev/null
+++ b/keyboards/wren/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "wren",
+ "maintainer": "vinorodrigues",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00","x":0, "y":0.5},
+ {"label":"L01","x":1, "y":0.5},
+ {"label":"L02","x":2, "y":0.5},
+ {"label":"L03","x":3, "y":0.5},
+ {"label":"L04","x":4.5, "y":0.5},
+ {"label":"L05","x":5.5, "y":0.5},
+ {"label":"L06","x":6.5, "y":0.25},
+ {"label":"L07","x":7.5, "y":0},
+ {"label":"L08","x":8.5, "y":0.25},
+ {"label":"L09","x":9.5, "y":0.5},
+ {"label":"R00","x":14, "y":0.5},
+ {"label":"R01","x":15, "y":0.25},
+ {"label":"R02","x":16, "y":0},
+ {"label":"R03","x":17, "y":0.25},
+ {"label":"R04","x":18, "y":0.5},
+ {"label":"R05","x":19, "y":0.5},
+ {"label":"R06","x":20.5, "y":0.5},
+ {"label":"R07","x":21.5, "y":0.5},
+ {"label":"R08","x":22.5, "y":0.5},
+ {"label":"R09","x":23.5, "y":0.5},
+
+ {"label":"L10","x":0, "y":1.5},
+ {"label":"L11","x":1, "y":1.5},
+ {"label":"L12","x":2, "y":1.5},
+ {"label":"L13","x":3, "y":1.5},
+ {"label":"L14","x":4.5, "y":1.5},
+ {"label":"L15","x":5.5, "y":1.5},
+ {"label":"L16","x":6.5, "y":1.25},
+ {"label":"L17","x":7.5, "y":1},
+ {"label":"L18","x":8.5, "y":1.25},
+ {"label":"L19","x":9.5, "y":1.5},
+ {"label":"R10","x":16, "y":1},
+ {"label":"R11","x":15, "y":1.25},
+ {"label":"R12","x":17, "y":1.25},
+ {"label":"R13","x":14, "y":1.5},
+ {"label":"R14","x":18, "y":1.5},
+ {"label":"R15","x":19, "y":1.5},
+ {"label":"R16","x":20.5, "y":1.5},
+ {"label":"R17","x":21.5, "y":1.5},
+ {"label":"R18","x":22.5, "y":1.5},
+ {"label":"R19","x":23.5, "y":1.5},
+
+ {"label":"L20","x":0, "y":2.5},
+ {"label":"L21","x":1, "y":2.5},
+ {"label":"L22","x":2, "y":2.5},
+ {"label":"L23","x":3, "y":2.5},
+ {"label":"L24","x":4.5, "y":2.5},
+ {"label":"L25","x":5.5, "y":2.5},
+ {"label":"L26","x":6.5, "y":2.25},
+ {"label":"L27","x":7.5, "y":2},
+ {"label":"L28","x":8.5, "y":2.25},
+ {"label":"L29","x":9.5, "y":2.5},
+ {"label":"R20","x":14, "y":2.5},
+ {"label":"R21","x":15, "y":2.25},
+ {"label":"R22","x":16, "y":2},
+ {"label":"R23","x":17, "y":2.25},
+ {"label":"R24","x":18, "y":2.5},
+ {"label":"R25","x":19, "y":2.5},
+ {"label":"R26","x":20.5, "y":2.5},
+ {"label":"R27","x":21.5, "y":2.5},
+ {"label":"R28","x":22.5, "y":2.5},
+ {"label":"R29","x":23.5, "y":2.5},
+
+ {"label":"L30","x":0, "y":3.5},
+ {"label":"L31","x":1, "y":3.5},
+ {"label":"L32","x":2, "y":3.5},
+ {"label":"L33","x":3, "y":3.5},
+ {"label":"L34","x":4.5, "y":3.5},
+ {"label":"L35","x":5.5, "y":3.5},
+ {"label":"L36","x":6.5, "y":3.25},
+ {"label":"L37","x":7.5, "y":3},
+ {"label":"L38","x":8.5, "y":3.25},
+ {"label":"L39","x":9.5, "y":3.5},
+ {"label":"R30","x":14, "y":3.5},
+ {"label":"R31","x":15, "y":3.25},
+ {"label":"R32","x":16, "y":3},
+ {"label":"R33","x":17, "y":3.25},
+ {"label":"R34","x":18, "y":3.5},
+ {"label":"R35","x":19, "y":3.5},
+ {"label":"R36","x":20.5, "y":3.5},
+ {"label":"R37","x":21.5, "y":3.5},
+ {"label":"R38","x":22.5, "y":3.5},
+ {"label":"R39","x":23.5, "y":3.5},
+
+
+ {"label":"LT0","x":6, "y":4.5},
+ {"label":"LT1","x":7, "y":4.5},
+ {"label":"LT2","x":8, "y":4.5},
+ {"label":"LT3","x":9, "y":4.75},
+ {"label":"LT4","x":10.75, "y":4, "h":2},
+ {"label":"RT0","x":12.75, "y":4, "h":2},
+ {"label":"RT1","x":14.5, "y":4.75},
+ {"label":"RT2","x":15.5, "y":4.5},
+ {"label":"RT3","x":16.5, "y":4.5},
+ {"label":"RT4","x":17.5, "y":4.5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wren/keymaps/default/keymap.c b/keyboards/wren/keymaps/default/keymap.c
new file mode 100644
index 0000000000..637e0e08b8
--- /dev/null
+++ b/keyboards/wren/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Walter Hanley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE
+};
+
+/* This layout preserves the entire keyboard matrix, but only includes keycodes
+ * for a numpad/nav cluster configuration. Depending on your configuration, you
+ * may need to replace some of the existing KC_NO values with actual keycodes.
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_PSLS, KC_7, KC_8, KC_9, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NO,
+ KC_PAST, KC_4, KC_5, KC_6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_NO,
+ KC_PMNS, KC_1, KC_2, KC_3, KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_PPLS, KC_0, KC_DOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_NLCK, KC_LALT, KC_LGUI, KC_BSPC, KC_ENT, KC_SPC, KC_DEL, KC_RGUI, KC_RALT, KC_MUTE
+ )
+};
diff --git a/keyboards/wren/keymaps/default/readme.md b/keyboards/wren/keymaps/default/readme.md
new file mode 100644
index 0000000000..7227050dd4
--- /dev/null
+++ b/keyboards/wren/keymaps/default/readme.md
@@ -0,0 +1,11 @@
+![Default Layout](https://github.com/walterhanley/wren-keyboard/blob/main/images/author-layout.png?raw=true)
+
+# Default Wren Layout
+
+This is the default Wren layout, which lacks any layers. It should be fairly
+straightforward, with the sole exception of the equals key in the place of the
+grave key and the grave key in the place of the delete key.
+
+This layout preserves the entire keyboard matrix, but only includes keycodes
+for a numpad/nav cluster configuration. Depending on your configuration, you
+may need to replace some of the existing KC_NO values with actual keycodes.
diff --git a/keyboards/wren/keymaps/walterhanley/config.h b/keyboards/wren/keymaps/walterhanley/config.h
new file mode 100644
index 0000000000..3dd5b47c16
--- /dev/null
+++ b/keyboards/wren/keymaps/walterhanley/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2021 Walter Hanley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// Lower board power consumption to boost compatibility
+#define USB_MAX_POWER_CONSUMPTION 250
diff --git a/keyboards/wren/keymaps/walterhanley/keymap.c b/keyboards/wren/keymaps/walterhanley/keymap.c
new file mode 100644
index 0000000000..ee4b6f3734
--- /dev/null
+++ b/keyboards/wren/keymaps/walterhanley/keymap.c
@@ -0,0 +1,170 @@
+/* Copyright 2021 Walter Hanley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+// Cmd-tab tablesetting
+bool is_cmd_tab_active = false;
+uint16_t cmd_tab_timer = 0;
+
+// Alt-tab tablesetting
+bool is_alt_tab_active = false;
+uint16_t alt_tab_timer = 0;
+
+// Defines keycode alias
+#define ECTL LCTL_T(KC_ESC)
+#define EGUI LGUI_T(KC_ESC)
+#define DELSYM LT(_SYMBOL, KC_DEL)
+#define SCLNAV LT(_NAV, KC_SCLN)
+#define TGNLCK TG(_NLCK)
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _MAC,
+ _WIN,
+ _NLCK,
+ _SYMBOL,
+ _NAV
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ NSEAL = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Mac */
+ [_MAC] = LAYOUT(
+ KC_PSLS, KC_7, KC_8, KC_9, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NO,
+ KC_PAST, KC_4, KC_5, KC_6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_NO,
+ KC_PMNS, KC_1, KC_2, KC_3, ECTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLNAV, KC_QUOT, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_PPLS, KC_0, KC_DOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ TGNLCK, KC_LALT, KC_LGUI, KC_BSPC, KC_ENT, KC_SPC, DELSYM, KC_RGUI, KC_RALT, KC_MUTE
+ ),
+
+ /* Windows */
+ [_WIN] = LAYOUT(
+ KC_PSLS, KC_7, KC_8, KC_9, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NO,
+ KC_PAST, KC_4, KC_5, KC_6, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_NO,
+ KC_PMNS, KC_1, KC_2, KC_3, EGUI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLNAV, KC_QUOT, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_PPLS, KC_0, KC_DOT, KC_ENT, KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ TGNLCK, KC_LALT, KC_LCTL, KC_BSPC, KC_ENT, KC_SPC, DELSYM, KC_RCTL, KC_RALT, KC_MUTE
+ ),
+
+ /* In-Keyboard Numlock */
+ [_NLCK] = LAYOUT(
+ KC_PSLS, KC_HOME, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PAST, KC_LEFT, KC_5, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PMNS, KC_END, KC_DOWN, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PPLS, KC_INS, KC_DOT, KC_ENT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ TGNLCK, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Symbols, F-Keys, and Text Macros */
+ [_SYMBOL] = LAYOUT(
+ NSEAL, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_UNDS, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_MINS, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Nav Cluster and Settings*/
+ [_NAV] = LAYOUT(
+ DF(_MAC), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ DF(_WIN), _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ // Encoder functionality for _MAC layer
+ if (IS_LAYER_ON(_MAC))
+ {
+ if (clockwise) {
+ if (!is_cmd_tab_active) {
+ is_cmd_tab_active = true;
+ register_code(KC_LGUI);
+ }
+ cmd_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ } else {
+ if (!is_cmd_tab_active) {
+ is_cmd_tab_active = true;
+ register_code(KC_LGUI);
+ }
+ cmd_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+ // Encoder functionality for _WIN layer
+ else if (IS_LAYER_ON(_WIN)) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(KC_TAB);
+ } else {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_code(KC_LALT);
+ }
+ alt_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ }
+ }
+ } else if (index == 1) { /* Second encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case NSEAL:
+ if (record->event.pressed) {
+ // when keycode NSEAL is pressed
+ SEND_STRING("What the fuck did you just fucking say about me, you little bitch? I'll have you know I graduated top of my class in the Navy Seals, and I've been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I'm the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You're fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little 'clever' comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You're fucking dead, kiddo.");
+ } else {
+ // when keycode NSEAL is released
+ }
+ break;
+ }
+ return true;
+}
+
+void matrix_scan_user(void) {
+ if (is_cmd_tab_active) {
+ if (timer_elapsed(cmd_tab_timer) > 1000) {
+ unregister_code(KC_LGUI);
+ is_cmd_tab_active = false;
+ }
+ }
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 1000) {
+ unregister_code(KC_LALT);
+ is_alt_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/wren/keymaps/walterhanley/readme.md b/keyboards/wren/keymaps/walterhanley/readme.md
new file mode 100644
index 0000000000..27e32360dc
--- /dev/null
+++ b/keyboards/wren/keymaps/walterhanley/readme.md
@@ -0,0 +1,12 @@
+![Author's Layout](https://github.com/walterhanley/wren-keyboard/blob/main/images/author-layout.png?raw=true)
+
+# Author's Wren Layout
+
+This is my personal Wren layout, which includes a few layers and macros that
+I find useful. It started as a clone of the default keymap, but will likely
+diverge more as time goes on.
+
+Please note that this layout preserves the entire keyboard matrix, but only
+includes keycodes for a numpad/nav cluster configuration. Depending on your
+configuration, you may need to replace some of the existing KC_NO values
+with actual keycodes.
diff --git a/keyboards/wren/readme.md b/keyboards/wren/readme.md
new file mode 100644
index 0000000000..8de95734d6
--- /dev/null
+++ b/keyboards/wren/readme.md
@@ -0,0 +1,27 @@
+# Wren
+
+![Wren PCB](https://raw.githubusercontent.com/walterhanley/wren-keyboard/main/images/wren-universal.png)
+![Wren Layout](https://raw.githubusercontent.com/walterhanley/wren-keyboard/main/images/author-layout.png)
+
+A split ergonomic "system keyboard" aimed at providing numpad and nav cluster functionality. For more information, please see the [project repo](https://github.com/walterhanley/wren-keyboard).
+
+* Keyboard Maintainer: [Walter Hanley](https://github.com/walterhanley)
+* Hardware Supported: Wren Universal PCB and Elite C (Pro Micro configurations likely supported but not tested)
+* Hardware Availability: Source files available at [project repository](https://github.com/walterhanley/wren-keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wren:default
+
+Flashing example for this keyboard:
+
+ make wren:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button on the front of the PCB below the microcontroler
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/wren/rules.mk b/keyboards/wren/rules.mk
new file mode 100644
index 0000000000..76e0fdf55d
--- /dev/null
+++ b/keyboards/wren/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enables the use of one or more encoders
+SPLIT_KEYBOARD = yes # Enables split keyboard
diff --git a/keyboards/wren/wren.c b/keyboards/wren/wren.c
new file mode 100644
index 0000000000..487c9d3070
--- /dev/null
+++ b/keyboards/wren/wren.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Walter Hanley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "wren.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) { /* Second encoder */
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/wren/wren.h b/keyboards/wren/wren.h
new file mode 100644
index 0000000000..ee589fe23c
--- /dev/null
+++ b/keyboards/wren/wren.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 Walter Hanley
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, L07, L08, L09, R00, R01, R02, R03, R04, R05, R06, R07, R08, R09, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, \
+ L20, L21, L22, L23, L24, L25, L26, L27, L28, L29, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, \
+ L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, \
+ LT0, LT1, LT2, LT3, LT4, RT0, RT1, RT2, RT3, RT4 \
+) { \
+ { L09, L08, L07, L06, L05, L04, L03, L02, L01, L00 }, \
+ { L19, L18, L17, L16, L15, L14, L13, L12, L11, L10 }, \
+ { L29, L28, L27, L26, L25, L24, L23, L22, L21, L20 }, \
+ { L39, L38, L37, L36, L35, L34, L33, L32, L31, L30 }, \
+ { LT4, LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07, R08, R09 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, R18, R19 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27, R28, R29 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, R38, R39 }, \
+ { RT0, RT1, RT2, RT3, RT4, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/wsk/alpha9/rules.mk b/keyboards/wsk/alpha9/rules.mk
index 7cd5f80392..d946d8641a 100644
--- a/keyboards/wsk/alpha9/rules.mk
+++ b/keyboards/wsk/alpha9/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wsk/g4m3ralpha/rules.mk b/keyboards/wsk/g4m3ralpha/rules.mk
index 7cd5f80392..d946d8641a 100644
--- a/keyboards/wsk/g4m3ralpha/rules.mk
+++ b/keyboards/wsk/g4m3ralpha/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wsk/gothic50/keymaps/default/keymap.c b/keyboards/wsk/gothic50/keymaps/default/keymap.c
index 477c9fad32..512dd85595 100644
--- a/keyboards/wsk/gothic50/keymaps/default/keymap.c
+++ b/keyboards/wsk/gothic50/keymaps/default/keymap.c
@@ -9,24 +9,24 @@ enum {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PSCR, \
- LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_INS, \
- SCAPS_LG, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(2), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_DEL, \
- KC_APP, KC_LGUI, KC_LALT, MO(1), LT(1,KC_SPC), KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PSCR,
+ LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_INS,
+ SCAPS_LG, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(2), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_DEL,
+ KC_APP, KC_LGUI, KC_LALT, MO(1), LT(1,KC_SPC), KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
- KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PAUS, \
- _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_SCLN, KC_BSLS, KC_MUTE, \
- _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_MPLY, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PAUS,
+ _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_SCLN, KC_BSLS, KC_MUTE,
+ _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,\
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/wsk/gothic50/rules.mk b/keyboards/wsk/gothic50/rules.mk
index 1e54e6c405..a5c2b2bc44 100644
--- a/keyboards/wsk/gothic50/rules.mk
+++ b/keyboards/wsk/gothic50/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wsk/gothic70/keymaps/default/keymap.c b/keyboards/wsk/gothic70/keymaps/default/keymap.c
index 5e73ec4197..db4c52b41b 100644
--- a/keyboards/wsk/gothic70/keymaps/default/keymap.c
+++ b/keyboards/wsk/gothic70/keymaps/default/keymap.c
@@ -16,27 +16,27 @@ enum {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PSCR, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, \
- SCAPS_LG, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MEDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PSCR,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL,
+ SCAPS_LG, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MEDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PAUS, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PAUS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[_MEDIA] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/wsk/gothic70/rules.mk b/keyboards/wsk/gothic70/rules.mk
index 1e54e6c405..a5c2b2bc44 100644
--- a/keyboards/wsk/gothic70/rules.mk
+++ b/keyboards/wsk/gothic70/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wsk/houndstooth/rules.mk b/keyboards/wsk/houndstooth/rules.mk
index f114ee6a01..1b7716f469 100644
--- a/keyboards/wsk/houndstooth/rules.mk
+++ b/keyboards/wsk/houndstooth/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/wsk/jerkin/rules.mk b/keyboards/wsk/jerkin/rules.mk
index afb02b723b..2ad4835ae6 100644
--- a/keyboards/wsk/jerkin/rules.mk
+++ b/keyboards/wsk/jerkin/rules.mk
@@ -4,19 +4,15 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
-
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
diff --git a/keyboards/wsk/kodachi50/rules.mk b/keyboards/wsk/kodachi50/rules.mk
index 5ec96c6110..82cf2b723b 100644
--- a/keyboards/wsk/kodachi50/rules.mk
+++ b/keyboards/wsk/kodachi50/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/wsk/pain27/rules.mk b/keyboards/wsk/pain27/rules.mk
index 9c1964d2d2..99bf6e4cc0 100644
--- a/keyboards/wsk/pain27/rules.mk
+++ b/keyboards/wsk/pain27/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/wsk/sl40/rules.mk b/keyboards/wsk/sl40/rules.mk
index 5ec96c6110..82cf2b723b 100644
--- a/keyboards/wsk/sl40/rules.mk
+++ b/keyboards/wsk/sl40/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/wsk/tkl30/rules.mk b/keyboards/wsk/tkl30/rules.mk
index 9578124554..7dae3a8423 100644
--- a/keyboards/wsk/tkl30/rules.mk
+++ b/keyboards/wsk/tkl30/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wuque/ikki68/rules.mk b/keyboards/wuque/ikki68/rules.mk
index 0aa1c57912..975e874e09 100644
--- a/keyboards/wuque/ikki68/rules.mk
+++ b/keyboards/wuque/ikki68/rules.mk
@@ -1,11 +1,9 @@
# MCU name
MCU = atmega32u4
-
# Bootloader selection
BOOTLOADER = atmel-dfu
-
# Build Options
# change yes to no to disable
#
@@ -14,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/README.md b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/README.md
new file mode 100644
index 0000000000..3e84b4ee60
--- /dev/null
+++ b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/README.md
@@ -0,0 +1,40 @@
+## Greetings, Traveler!
+
+This layout is for the [Wuque ikki68 Aurora](https://shop.wuquestudio.com/pages/ikki68-aurora) and is primarily meant for Windows.
+
+The keymap is similar to the default keymap for the Aurora, but it overloads the left alt key to behave like an additional 'Fn' key while keeping the standard functionality of the alt key intact.
+
+### For Example
+```
+LeftAlt + 1...N -> F1...FN
+LeftAlt + L/R Arrows -> Home/End
+LeftAlt + Home -> End
+LeftAlt + Backspace -> Delete
+LeftAlt + Esc -> Backtick (`)
+LeftAlt + Shift + Esc -> Tilde (~)
+LeftAlt + LeftShift + 4 -> Alt+F4
+```
+
+The novel part of this keymap is that it **preserves the default functionality** of the left alt key, so ```'alt + tab', 'ctrl + alt + del', 'alt + f4'```, etc. all work as expected without having to use timers.
+
+Everything also works with other modifier keys, so ```'alt + L/R' and 'alt + shift + L/R'``` work great for text manipulation to select lines.
+
+This **super alt** keymap will feel very familiar for anyone **coming from macOS** since the Windows alt key is in the same position as CMD on macOS keyboards.
+
+And finally, the original alt key functionality can be toggled at any time by pressing ```'Fn + period'``` so for example if a game requires use of the left alt, you can easily turn it off.
+
+### Toggle LED Modes
+You can also cycle though multiple LED modes (underglow, logo, all, none) by pressing ```'Fn + x'``` (the default ikki68 Aurora keymap only supports all or none). The last value set is persisted in EEPROM.
+
+### Compiling/Flashing
+1) After installing QMK MSYS, open the QMK MSYS terminal
+2) Type ```qmk compile -kb wuque/ikki68_aurora -km ewersp``` to test compilation
+3) Type ```qmk flash -kb wuque/ikki68_aurora -km ewersp``` to start flashing
+4) Press ```Fn+Page Up``` to put your keyboard into bootloader mode
+ - Note: After installing the keymap, to enter bootloader mode again press and hold ```Fn+B``` for half a second
+5) Wait for the ```Validating... Success``` message to appear and you're done!
+ - Note: If it gets stuck on ```Bootloader not found. Trying again every 0.5s...``` you may need to run QMK Toolbox to install/update drivers
+
+If you have any questions, feel free to reach out to me at: ewersp [at] gmail [dot] com.
+
+Enjoy! **<3**
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/config.h b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/config.h
new file mode 100644
index 0000000000..1282334dce
--- /dev/null
+++ b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Paul Ewers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define FORCE_NKRO
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c
new file mode 100644
index 0000000000..5983625adc
--- /dev/null
+++ b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c
@@ -0,0 +1,215 @@
+/* Copyright 2021 Paul Ewers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum alt_keycodes {
+ ALT_DEL = SAFE_RANGE, // Map left alt + backspace to delete
+ LED_TOG // Toggle LED modes
+};
+
+// Friendly layer names
+enum alt_layers {
+ DEF = 0,
+ ALT,
+ MAC,
+ FUNC,
+ SUPR
+};
+
+// EEPROM storage mode
+enum alt_led_mode {
+ LED_MODE_ALL = 0,
+ LED_MODE_LOGO,
+ LED_MODE_UNDERGLOW,
+ LED_MODE_OFF,
+ LED_MODE_TOTAL
+};
+
+// EEPROM storage type
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t led_mode: 8;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [DEF] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, MO(SUPR), KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(FUNC),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [ALT] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [MAC] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LALT, KC_LGUI, _______, _______, _______, KC_RGUI, _______, KC_RALT, _______, _______, _______
+ ),
+ [FUNC] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_END, KC_VOLU,
+ _______, RGB_HUD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_M_P, _______, _______, _______, KC_BRIU, KC_PAUS, KC_PSCR, _______, _______, KC_MUTE, KC_VOLD,
+ _______, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_SAD, RGB_M_B, _______, _______, _______, KC_BRID, _______, _______, _______,
+ _______, _______, RGB_TOG, LED_TOG, _______, EEP_RST, RESET, _______, _______, TG(MAC), TG(ALT), _______, _______, _______, KC_PGUP,
+ _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [SUPR] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ALT_DEL, ALT_DEL, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, _______, KC_END
+ )
+};
+
+// If the super alt layer is the active layer
+bool super_alt_layer_active = false;
+
+// If we need to unregister alt when leaving the super alt layer
+bool need_to_unregister_alt = false;
+
+// This runs code every time that the layers get changed
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case DEF:
+ // When returning to the default layer, check if we need to unregister the left alt key
+ if (super_alt_layer_active && need_to_unregister_alt) {
+ unregister_code(KC_LALT);
+ }
+ super_alt_layer_active = false;
+ need_to_unregister_alt = false;
+ break;
+ case SUPR:
+ super_alt_layer_active = true;
+ break;
+ }
+ return state;
+}
+
+// There is a total of 20 LEDs on the board; the 4 logo LEDs have indices 16, 17, 18, 19
+void update_led_mode(void) {
+ rgblight_setrgb(0, 0, 0);
+ switch (user_config.led_mode) {
+ case LED_MODE_ALL:
+ rgblight_set_effect_range(0, RGBLED_NUM);
+ rgblight_enable_noeeprom();
+ break;
+ case LED_MODE_LOGO:
+ rgblight_set_effect_range(16, 4);
+ rgblight_enable_noeeprom();
+ break;
+ case LED_MODE_UNDERGLOW:
+ rgblight_set_effect_range(0, 16);
+ rgblight_enable_noeeprom();
+ break;
+ case LED_MODE_OFF:
+ rgblight_disable_noeeprom();
+ break;
+ }
+}
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+ update_led_mode();
+}
+
+void eeconfig_init_user(void) {
+ user_config.raw = 0;
+ user_config.led_mode = LED_MODE_ALL;
+ eeconfig_update_user(user_config.raw);
+ rgblight_enable();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ static uint32_t key_timer;
+
+ switch (keycode) {
+ // These are the keys we want to 'fall though' and behave as usual when pressed with the alt modifier
+ case KC_A ... KC_Z:
+ case KC_TAB:
+ case KC_DEL:
+ case KC_UP:
+ case KC_DOWN:
+ case KC_ENT:
+ case KC_SPC:
+ case MO(FUNC):
+ if (super_alt_layer_active && record->event.pressed) {
+ // Only activate the alt modifier for the first key press
+ if ((get_mods() & MOD_BIT(KC_LALT)) == false) {
+ register_code(KC_LALT);
+ need_to_unregister_alt = true;
+ }
+ }
+ // We still want to process the keycode normally
+ return true;
+ case KC_F4:
+ // Map alt+shift+4 to alt+f4
+ if (super_alt_layer_active && (get_mods() & MOD_BIT(KC_LSHIFT))) {
+ if (record->event.pressed) {
+ register_code(KC_LALT);
+ } else {
+ unregister_code(KC_LALT);
+ }
+ }
+ return true;
+ case ALT_DEL:
+ if (record->event.pressed) {
+ register_code(KC_DEL);
+ } else {
+ unregister_code(KC_DEL);
+ }
+ return false;
+ case LED_TOG:
+ if (record->event.pressed) {
+ user_config.led_mode = (user_config.led_mode + 1) % LED_MODE_TOTAL;
+ update_led_mode();
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+ case RESET:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+ return false;
+ case EEP_RST:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ eeconfig_init();
+ }
+ }
+ return false;
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/rules.mk b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/rules.mk
new file mode 100644
index 0000000000..4da205a168
--- /dev/null
+++ b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/rules.mk
@@ -0,0 +1 @@
+LTO_ENABLE = yes
diff --git a/keyboards/wuque/ikki68_aurora/rules.mk b/keyboards/wuque/ikki68_aurora/rules.mk
index f4bf6bce63..5d4be0ad06 100644
--- a/keyboards/wuque/ikki68_aurora/rules.mk
+++ b/keyboards/wuque/ikki68_aurora/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wuque/mammoth20x/config.h b/keyboards/wuque/mammoth20x/config.h
index a29ab2cb21..8fcfc03195 100644
--- a/keyboards/wuque/mammoth20x/config.h
+++ b/keyboards/wuque/mammoth20x/config.h
@@ -49,6 +49,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B { D2 }
#define ENCODERS 1
+
+#ifdef ENCODER_RESOLUTION
+ #undef ENCODER_RESOLUTION
+#endif
+#define ENCODER_RESOLUTION 2
+
// Note: array is { col, row )
#define ENCODERS_CW_KEY { { 3, 2 } }
#define ENCODERS_CCW_KEY { { 3, 4 } }
diff --git a/keyboards/wuque/mammoth20x/keymaps/via/keymap.c b/keyboards/wuque/mammoth20x/keymaps/via/keymap.c
index c8f7c1bb85..e5fe34fd7b 100644
--- a/keyboards/wuque/mammoth20x/keymaps/via/keymap.c
+++ b/keyboards/wuque/mammoth20x/keymaps/via/keymap.c
@@ -18,8 +18,8 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- KC_ESC, KC_PAUS, KC_DEL, KC_VOLU, KC_MUTE, KC_VOLD,
- KC_LNUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_ESC, KC_PAUS, KC_DEL, KC_VOLD, KC_MUTE, KC_VOLU,
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3,
diff --git a/keyboards/wuque/mammoth20x/rules.mk b/keyboards/wuque/mammoth20x/rules.mk
index ebe3ad24c0..0788f9ae5d 100644
--- a/keyboards/wuque/mammoth20x/rules.mk
+++ b/keyboards/wuque/mammoth20x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wuque/mammoth75x/config.h b/keyboards/wuque/mammoth75x/config.h
index 019a70f50d..88ef0e5477 100644
--- a/keyboards/wuque/mammoth75x/config.h
+++ b/keyboards/wuque/mammoth75x/config.h
@@ -49,9 +49,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B { B1 }
#define ENCODERS 1
+
+#ifdef ENCODER_RESOLUTION
+ #undef ENCODER_RESOLUTION
+#endif
+#define ENCODER_RESOLUTION 2
+
// Note: array is { col, row )
-#define ENCODERS_CW_KEY { { 5, 5 } }
-#define ENCODERS_CCW_KEY { { 3, 5 } }
+#define ENCODERS_CW_KEY { { 3, 5 } }
+#define ENCODERS_CCW_KEY { { 5, 5 } }
#define LED_CAPS_LOCK_PIN B6
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/wuque/mammoth75x/info.json b/keyboards/wuque/mammoth75x/info.json
index 4e65f83537..877d03dec9 100644
--- a/keyboards/wuque/mammoth75x/info.json
+++ b/keyboards/wuque/mammoth75x/info.json
@@ -5,566 +5,566 @@
"layouts": {
"LAYOUT_all": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderRotateL", "x": 15.25, "y": 1.25, "w": 0.25 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
- { "label": "EncoderRotateR", "x": 16.75, "y": 1.25, "w": 0.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderRotateL", "x":15.65, "y":0.125, "w":0.6, "h":0.5},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
+ {"label":"EncoderRotateR", "x":16.25, "y":0.125, "w":0.6, "h":0.5},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25 },
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25},
+ {"label":"Backspace1", "x":14, "y":1.25},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "Backspace1", "x": 14, "y": 1.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 },
- { "label": "Shift2", "x": 1.25, "y": 4.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
- { "label": "Shift2", "x": 14, "y": 4.25 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift1", "x":0, "y":4.25, "w":1.25},
+ {"label":"Shift2", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift1", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Shift2", "x":14, "y":4.25},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 },
- { "label": "Space","x": 6, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":2.25},
+ {"label":"Space", "x":6, "y":5.25, "w":1.25},
+ {"label":"Space", "x":7.25, "y":5.25, "w":2.75},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
},
"LAYOUT_75_ansi": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
},
"LAYOUT_75_ansi_split_lshift": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 },
- { "label": "Shift2", "x": 1.25, "y": 4.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift1", "x":0, "y":4.25, "w":1.25},
+ {"label":"Shift2", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
},
"LAYOUT_75_ansi_split_rshift": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
- { "label": "Shift2", "x": 14, "y": 4.25 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift1", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Shift2", "x":14, "y":4.25},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
},
"LAYOUT_75_ansi_split_bs": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "Backspace1", "x": 14, "y": 1.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"Backspace1", "x":14, "y":1.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
},
"LAYOUT_75_ansi_split_space": {
"layout": [
- { "label": "Esc", "x": 0, "y": 0 },
- { "label": "F1", "x": 1.5, "y": 0 },
- { "label": "F2", "x": 2.5, "y": 0 },
- { "label": "F3", "x": 3.5, "y": 0 },
- { "label": "F4", "x": 4.5, "y": 0 },
- { "label": "F5", "x": 6, "y": 0 },
- { "label": "F6", "x": 7, "y": 0 },
- { "label": "F7", "x": 8, "y": 0 },
- { "label": "F8", "x": 9, "y": 0 },
- { "label": "F9", "x": 10.5, "y": 0 },
- { "label": "F10", "x": 11.5, "y": 0 },
- { "label": "F11", "x": 12.5, "y": 0 },
- { "label": "F12", "x": 13.5, "y": 0 },
- { "label": "Delete", "x": 15, "y": 0 },
- { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"EncoderClick", "x":15.75, "y":0.625},
- { "label": "~", "x": 0, "y": 1.25 },
- { "label": "1", "x": 1, "y": 1.25 },
- { "label": "2", "x": 2, "y": 1.25 },
- { "label": "3", "x": 3, "y": 1.25 },
- { "label": "4", "x": 4, "y": 1.25 },
- { "label": "5", "x": 5, "y": 1.25 },
- { "label": "6", "x": 6, "y": 1.25 },
- { "label": "7", "x": 7, "y": 1.25 },
- { "label": "8", "x": 8, "y": 1.25 },
- { "label": "9", "x": 9, "y": 1.25 },
- { "label": "0", "x": 10, "y": 1.25 },
- { "label": "-", "x": 11, "y": 1.25 },
- { "label": "=", "x": 12, "y": 1.25 },
- { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"1", "x":1, "y":1.25},
+ {"label":"2", "x":2, "y":1.25},
+ {"label":"3", "x":3, "y":1.25},
+ {"label":"4", "x":4, "y":1.25},
+ {"label":"5", "x":5, "y":1.25},
+ {"label":"6", "x":6, "y":1.25},
+ {"label":"7", "x":7, "y":1.25},
+ {"label":"8", "x":8, "y":1.25},
+ {"label":"9", "x":9, "y":1.25},
+ {"label":"0", "x":10, "y":1.25},
+ {"label":"-", "x":11, "y":1.25},
+ {"label":"=", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
- { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
- { "label": "Q", "x": 1.5, "y": 2.25 },
- { "label": "W", "x": 2.5, "y": 2.25 },
- { "label": "E", "x": 3.5, "y": 2.25 },
- { "label": "R", "x": 4.5, "y": 2.25 },
- { "label": "T", "x": 5.5, "y": 2.25 },
- { "label": "Y", "x": 6.5, "y": 2.25 },
- { "label": "U", "x": 7.5, "y": 2.25 },
- { "label": "I", "x": 8.5, "y": 2.25 },
- { "label": "O", "x": 9.5, "y": 2.25 },
- { "label": "P", "x": 10.5, "y": 2.25 },
- { "label": "[", "x": 11.5, "y": 2.25 },
- { "label": "]", "x": 12.5, "y": 2.25 },
- { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
- { "label": "Home", "x": 15.25, "y": 2.25 },
- { "label": "PageUp", "x": 16.25, "y": 2.25 },
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[", "x":11.5, "y":2.25},
+ {"label":"]", "x":12.5, "y":2.25},
+ {"label":"\\", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Home", "x":15.25, "y":2.25},
+ {"label":"PageUp", "x":16.25, "y":2.25},
- { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
- { "label": "A", "x": 1.75, "y": 3.25 },
- { "label": "S", "x": 2.75, "y": 3.25 },
- { "label": "D", "x": 3.75, "y": 3.25 },
- { "label": "F", "x": 4.75, "y": 3.25 },
- { "label": "G", "x": 5.75, "y": 3.25 },
- { "label": "H", "x": 6.75, "y": 3.25 },
- { "label": "J", "x": 7.75, "y": 3.25 },
- { "label": "K", "x": 8.75, "y": 3.25 },
- { "label": "L", "x": 9.75, "y": 3.25 },
- { "label": ";", "x": 10.75, "y": 3.25 },
- { "label": "'", "x": 11.75, "y": 3.25 },
- { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
- { "label": "End", "x": 15.25, "y": 3.25 },
- { "label": "PageDown", "x": 16.25, "y": 3.25 },
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";", "x":10.75, "y":3.25},
+ {"label":"'", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"End", "x":15.25, "y":3.25},
+ {"label":"PageDown", "x":16.25, "y":3.25},
- { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
- { "label": "Z", "x": 2.25, "y": 4.25 },
- { "label": "X", "x": 3.25, "y": 4.25 },
- { "label": "C", "x": 4.25, "y": 4.25 },
- { "label": "V", "x": 5.25, "y": 4.25 },
- { "label": "B", "x": 6.25, "y": 4.25 },
- { "label": "N", "x": 7.25, "y": 4.25 },
- { "label": "M", "x": 8.25, "y": 4.25 },
- { "label": ",", "x": 9.25, "y": 4.25 },
- { "label": ".", "x": 10.25, "y": 4.25 },
- { "label": "/", "x": 11.25, "y": 4.25 },
- { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
- { "label": "\u2191", "x": 15.25, "y": 4.25 },
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",", "x":9.25, "y":4.25},
+ {"label":".", "x":10.25, "y":4.25},
+ {"label":"/", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":15.25, "y":4.5},
- { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
- { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
- { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 },
- { "label": "Space","x": 6, "y": 5.25, "w": 1.25 },
- { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 },
- { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
- { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
- { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
- { "label": "\u2190", "x": 14.25, "y": 5.25 },
- { "label": "\u2193", "x": 15.25, "y": 5.25 },
- { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":2.25},
+ {"label":"Space", "x":6, "y":5.25, "w":1.25},
+ {"label":"Space", "x":7.25, "y":5.25, "w":2.75},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":14.25, "y":5.5},
+ {"label":"\u2193", "x":15.25, "y":5.5},
+ {"label":"\u2192", "x":16.25, "y":5.5}
]
}
}
diff --git a/keyboards/wuque/mammoth75x/keymaps/default/keymap.c b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c
index 9f998a3dd6..6dd789e179 100644
--- a/keyboards/wuque/mammoth75x/keymaps/default/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c
@@ -18,19 +18,19 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_END, KC_PGDN,
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/wuque/mammoth75x/keymaps/via/keymap.c b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c
index d35ff6bccc..bb62bedefe 100644
--- a/keyboards/wuque/mammoth75x/keymaps/via/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c
@@ -18,35 +18,35 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSPC, KC_END, KC_PGDN,
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/wuque/mammoth75x/mammoth75x.h b/keyboards/wuque/mammoth75x/mammoth75x.h
index a3ab71caa1..4c419474dc 100644
--- a/keyboards/wuque/mammoth75x/mammoth75x.h
+++ b/keyboards/wuque/mammoth75x/mammoth75x.h
@@ -37,12 +37,12 @@
* └───┴───┴───┘
*/
#define LAYOUT_all( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K53, K0E, K55, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
- K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K53, K0E, K55, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
diff --git a/keyboards/wuque/mammoth75x/rules.mk b/keyboards/wuque/mammoth75x/rules.mk
index d34c14e73f..a5bc34fd0c 100644
--- a/keyboards/wuque/mammoth75x/rules.mk
+++ b/keyboards/wuque/mammoth75x/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wuque/serneity65/rules.mk b/keyboards/wuque/serneity65/rules.mk
index 3d3efcd480..fcdc6f1f62 100644
--- a/keyboards/wuque/serneity65/rules.mk
+++ b/keyboards/wuque/serneity65/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/x16/rules.mk b/keyboards/x16/rules.mk
index 5f180ae00d..1c4073c9ce 100644
--- a/keyboards/x16/rules.mk
+++ b/keyboards/x16/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xbows/knight/config.h b/keyboards/xbows/knight/config.h
index dfd477cbc9..b91dd8db66 100644
--- a/keyboards/xbows/knight/config.h
+++ b/keyboards/xbows/knight/config.h
@@ -47,51 +47,25 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
+# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
# define DRIVER_ADDR_1 0b1110100
# define DRIVER_ADDR_2 0b1110110
diff --git a/keyboards/xbows/knight/keymaps/default/config.h b/keyboards/xbows/knight/keymaps/default/config.h
deleted file mode 100644
index fcd14ee048..0000000000
--- a/keyboards/xbows/knight/keymaps/default/config.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/knight/keymaps/via/config.h b/keyboards/xbows/knight/keymaps/via/config.h
deleted file mode 100644
index cf06e7d07d..0000000000
--- a/keyboards/xbows/knight/keymaps/via/config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
-# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
-//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/knight/knight.c b/keyboards/xbows/knight/knight.c
index 8c2fd9dfa2..9d9d7cfd10 100644
--- a/keyboards/xbows/knight/knight.c
+++ b/keyboards/xbows/knight/knight.c
@@ -135,7 +135,6 @@
} };
-
__attribute__ ((weak)) void rgb_matrix_indicators_user(void) {
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(44, 0xFF, 0xFF, 0xFF);
diff --git a/keyboards/xbows/knight/rules.mk b/keyboards/xbows/knight/rules.mk
index 5415374353..9dec74c970 100644
--- a/keyboards/xbows/knight/rules.mk
+++ b/keyboards/xbows/knight/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xbows/knight_plus/config.h b/keyboards/xbows/knight_plus/config.h
index ee71bb6baf..add7d53679 100644
--- a/keyboards/xbows/knight_plus/config.h
+++ b/keyboards/xbows/knight_plus/config.h
@@ -39,59 +39,33 @@
# define RGB_MATRIX_LED_FLUSH_LIMIT 16
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_MATRIX_KEYPRESSES
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_CENTER \
- { 92, 43 }
+ { 92, 33 }
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
+# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
# define DRIVER_ADDR_1 0b1110100
# define DRIVER_ADDR_2 0b1110110
diff --git a/keyboards/xbows/knight_plus/keymaps/default/config.h b/keyboards/xbows/knight_plus/keymaps/default/config.h
deleted file mode 100644
index fcd14ee048..0000000000
--- a/keyboards/xbows/knight_plus/keymaps/default/config.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/knight_plus/keymaps/via/config.h b/keyboards/xbows/knight_plus/keymaps/via/config.h
deleted file mode 100644
index cf06e7d07d..0000000000
--- a/keyboards/xbows/knight_plus/keymaps/via/config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
-# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
-//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/knight_plus/knight_plus.c b/keyboards/xbows/knight_plus/knight_plus.c
index ede23dc63d..bf008fd091 100644
--- a/keyboards/xbows/knight_plus/knight_plus.c
+++ b/keyboards/xbows/knight_plus/knight_plus.c
@@ -135,7 +135,6 @@
} };
-
__attribute__ ((weak)) void rgb_matrix_indicators_user(void) {
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(44, 0xFF, 0xFF, 0xFF);
diff --git a/keyboards/xbows/knight_plus/rules.mk b/keyboards/xbows/knight_plus/rules.mk
index 5415374353..9dec74c970 100644
--- a/keyboards/xbows/knight_plus/rules.mk
+++ b/keyboards/xbows/knight_plus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xbows/nature/config.h b/keyboards/xbows/nature/config.h
index 922e479a50..2395ae778c 100644
--- a/keyboards/xbows/nature/config.h
+++ b/keyboards/xbows/nature/config.h
@@ -49,51 +49,25 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-// # define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # define ENABLE_RGB_MATRIX_HUE_BREATHING
-// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// # define ENABLE_RGB_MATRIX_HUE_WAVE
-// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
+# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-// # define ENABLE_RGB_MATRIX_SPLASH
-// # define ENABLE_RGB_MATRIX_MULTISPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
# define DRIVER_ADDR_1 0b1110100
# define DRIVER_ADDR_2 0b1110110
diff --git a/keyboards/xbows/nature/nature.c b/keyboards/xbows/nature/nature.c
index 80d695fecf..d4957003bd 100644
--- a/keyboards/xbows/nature/nature.c
+++ b/keyboards/xbows/nature/nature.c
@@ -148,7 +148,7 @@ void suspend_wakeup_init_kb(void) {
__attribute__ ((weak)) void rgb_matrix_indicators_user(void) {
if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color(45, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(45, 0xFF, 0xFF, 0xFF);
}
}
diff --git a/keyboards/xbows/nature/rules.mk b/keyboards/xbows/nature/rules.mk
index b0cb8fcb61..5ff72e1df8 100644
--- a/keyboards/xbows/nature/rules.mk
+++ b/keyboards/xbows/nature/rules.mk
@@ -12,12 +12,10 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+SLEEP_LED_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/xbows/numpad/config.h b/keyboards/xbows/numpad/config.h
index 59616eba3b..96dff5241a 100644
--- a/keyboards/xbows/numpad/config.h
+++ b/keyboards/xbows/numpad/config.h
@@ -47,51 +47,25 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
+# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
# define DRIVER_ADDR_1 0b1110111
# define DRIVER_COUNT 1
diff --git a/keyboards/xbows/numpad/keymaps/default/config.h b/keyboards/xbows/numpad/keymaps/default/config.h
deleted file mode 100644
index 3e3358e344..0000000000
--- a/keyboards/xbows/numpad/keymaps/default/config.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
- #ifdef RGB_MATRIX_ENABLE
- # define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-
-# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/numpad/keymaps/via/config.h b/keyboards/xbows/numpad/keymaps/via/config.h
deleted file mode 100644
index cf06e7d07d..0000000000
--- a/keyboards/xbows/numpad/keymaps/via/config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
-# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
-//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/numpad/rules.mk b/keyboards/xbows/numpad/rules.mk
index 5415374353..9dec74c970 100644
--- a/keyboards/xbows/numpad/rules.mk
+++ b/keyboards/xbows/numpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xbows/ranger/config.h b/keyboards/xbows/ranger/config.h
index 1447a26d03..e5b9764074 100644
--- a/keyboards/xbows/ranger/config.h
+++ b/keyboards/xbows/ranger/config.h
@@ -38,7 +38,7 @@
# define RGB_MATRIX_LED_PROCESS_LIMIT 18
# define RGB_MATRIX_LED_FLUSH_LIMIT 16
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define RGB_MATRIX_CENTER { 103, 32 }
@@ -46,51 +46,25 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_BAND_SAT
-# define ENABLE_RGB_MATRIX_BAND_VAL
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-# define ENABLE_RGB_MATRIX_CYCLE_ALL
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_DUAL_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-# define ENABLE_RGB_MATRIX_RAINDROPS
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-# define ENABLE_RGB_MATRIX_HUE_BREATHING
-# define ENABLE_RGB_MATRIX_HUE_PENDULUM
-# define ENABLE_RGB_MATRIX_HUE_WAVE
-# define ENABLE_RGB_MATRIX_PIXEL_RAIN
-# define ENABLE_RGB_MATRIX_PIXEL_FLOW
-# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
+# define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+# define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+# define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-# define ENABLE_RGB_MATRIX_SPLASH
-# define ENABLE_RGB_MATRIX_MULTISPLASH
-# define ENABLE_RGB_MATRIX_SOLID_SPLASH
-# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
# define DRIVER_ADDR_1 0b1110100
# define DRIVER_ADDR_2 0b1110101
diff --git a/keyboards/xbows/ranger/keymaps/default/config.h b/keyboards/xbows/ranger/keymaps/default/config.h
deleted file mode 100644
index 2e662068f6..0000000000
--- a/keyboards/xbows/ranger/keymaps/default/config.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-
-# undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-// # undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/ranger/keymaps/via/config.h b/keyboards/xbows/ranger/keymaps/via/config.h
deleted file mode 100644
index cf06e7d07d..0000000000
--- a/keyboards/xbows/ranger/keymaps/via/config.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2021 Shulin Huang <mumu@x-bows.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
-# undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
-# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
-# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right, speed controls how much gradient changes
-//# undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
-# undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
-# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
-//# undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
-//# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-//# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
-# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
-# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
-# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
-# undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-//# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
-# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
-# undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
-# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
-//# undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
-# undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
-//# undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
-
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
-
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
-//# undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
-# undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
-# undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
-//# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
-
-#endif
diff --git a/keyboards/xbows/ranger/rules.mk b/keyboards/xbows/ranger/rules.mk
index 27dc095116..9dec74c970 100644
--- a/keyboards/xbows/ranger/rules.mk
+++ b/keyboards/xbows/ranger/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xbows/woody/keymaps/default/keymap.c b/keyboards/xbows/woody/keymaps/default/keymap.c
index 383963fbf5..62e86be2fe 100644
--- a/keyboards/xbows/woody/keymaps/default/keymap.c
+++ b/keyboards/xbows/woody/keymaps/default/keymap.c
@@ -2,15 +2,15 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
- KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_INS, \
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT( /* FN */
- KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, \
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_HOME, \
- KC_CAPS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_END, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, \
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_HOME,
+ KC_CAPS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT)
};
diff --git a/keyboards/xbows/woody/rules.mk b/keyboards/xbows/woody/rules.mk
index 4161daf2b7..6dcdb62058 100644
--- a/keyboards/xbows/woody/rules.mk
+++ b/keyboards/xbows/woody/rules.mk
@@ -3,14 +3,17 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
BACKLIGHT_ENABLE = no
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
RGB_MATRIX_ENABLE = yes # Use RGB matrix
RGB_MATRIX_DRIVER = IS31FL3731
diff --git a/keyboards/xelus/akis/rules.mk b/keyboards/xelus/akis/rules.mk
index 4802a533f1..6514393307 100644
--- a/keyboards/xelus/akis/rules.mk
+++ b/keyboards/xelus/akis/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/dawn60/rev1/rules.mk b/keyboards/xelus/dawn60/rev1/rules.mk
index caf6e44162..3fe31770d0 100644
--- a/keyboards/xelus/dawn60/rev1/rules.mk
+++ b/keyboards/xelus/dawn60/rev1/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rules.mk b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
index 94ebeb89cc..0932c3fc88 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/rules.mk
+++ b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
@@ -17,10 +17,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
diff --git a/keyboards/xelus/dharma/rules.mk b/keyboards/xelus/dharma/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/xelus/dharma/rules.mk
+++ b/keyboards/xelus/dharma/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/kangaroo/keymaps/default/config.h b/keyboards/xelus/kangaroo/keymaps/default/config.h
new file mode 100644
index 0000000000..ea9bfa60eb
--- /dev/null
+++ b/keyboards/xelus/kangaroo/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/keymaps/via/config.h b/keyboards/xelus/kangaroo/keymaps/via/config.h
new file mode 100644
index 0000000000..ea9bfa60eb
--- /dev/null
+++ b/keyboards/xelus/kangaroo/keymaps/via/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/rules.mk b/keyboards/xelus/kangaroo/rules.mk
index 35ee83cc36..80826fae5f 100644
--- a/keyboards/xelus/kangaroo/rules.mk
+++ b/keyboards/xelus/kangaroo/rules.mk
@@ -5,16 +5,14 @@ MCU = STM32F072
BOOTLOADER = stm32-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
EEPROM_DRIVER = i2c
diff --git a/keyboards/xelus/la_plus/config.h b/keyboards/xelus/la_plus/config.h
new file mode 100755
index 0000000000..14cad0fa87
--- /dev/null
+++ b/keyboards/xelus/la_plus/config.h
@@ -0,0 +1,106 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5845 // XE
+#define PRODUCT_ID 0x4C50 // LP
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Xelus
+#define PRODUCT MechaMaker La+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, F0, F4, F5 }
+#define MATRIX_COL_PINS { E6, D5, B2, B3, D3, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+// RGB Matrix
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN F1
+// The number of LEDs connected
+#define DRIVER_LED_TOTAL 32
+
+#define RGB_MATRIX_STARTUP_VAL 80
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+// Custom Startup Animation
+// comment out for solid animation
+// #define STARTUP_ANIMATION_DOTS
diff --git a/keyboards/xelus/la_plus/info.json b/keyboards/xelus/la_plus/info.json
new file mode 100644
index 0000000000..bfa3a4dc20
--- /dev/null
+++ b/keyboards/xelus/la_plus/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "La+",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"label":"\"", "x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.5},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/la_plus/keymaps/default/config.h b/keyboards/xelus/la_plus/keymaps/default/config.h
new file mode 100644
index 0000000000..393166c4f4
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/default/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
+
diff --git a/keyboards/xelus/la_plus/keymaps/default/keymap.c b/keyboards/xelus/la_plus/keymaps/default/keymap.c
new file mode 100755
index 0000000000..cf04368e52
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define KB_SUAC STARTUP_ANIMATION_CONFIG
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KB_SUAC,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/xelus/la_plus/keymaps/default/readme.md b/keyboards/xelus/la_plus/keymaps/default/readme.md
new file mode 100755
index 0000000000..779f6a019e
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/default/readme.md
@@ -0,0 +1,2 @@
+# The Default La+ Layout
+
diff --git a/keyboards/xelus/la_plus/keymaps/via/config.h b/keyboards/xelus/la_plus/keymaps/via/config.h
new file mode 100644
index 0000000000..ef2ec42057
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/via/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// Enable RGB Matrix
+#define VIA_QMK_RGBLIGHT_ENABLE
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
+
diff --git a/keyboards/xelus/la_plus/keymaps/via/keymap.c b/keyboards/xelus/la_plus/keymaps/via/keymap.c
new file mode 100755
index 0000000000..cf04368e52
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+#define KB_SUAC STARTUP_ANIMATION_CONFIG
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ // Fn1 Layer
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KB_SUAC,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn2 Layer
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ // Fn3 Layer
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
diff --git a/keyboards/xelus/la_plus/keymaps/via/readme.md b/keyboards/xelus/la_plus/keymaps/via/readme.md
new file mode 100755
index 0000000000..705b9df41a
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/via/readme.md
@@ -0,0 +1,2 @@
+# The VIA La+ Layout
+
diff --git a/keyboards/xelus/la_plus/keymaps/via/rules.mk b/keyboards/xelus/la_plus/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/xelus/la_plus/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/xelus/la_plus/la_plus.c b/keyboards/xelus/la_plus/la_plus.c
new file mode 100755
index 0000000000..41358c3599
--- /dev/null
+++ b/keyboards/xelus/la_plus/la_plus.c
@@ -0,0 +1,111 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "la_plus.h"
+#include "print.h"
+
+#define _____ NO_LED
+
+keyboard_config_t keyboard_config;
+
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ }, \
+ { _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ }, \
+ { _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ }, \
+ { _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ }, \
+ { _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, _____ } \
+}, {
+ // LED Index to Physical Position
+ { 2, 38 },
+ { 0, 31 },
+ { 2, 24 },
+ { 0, 17 },
+ { 2, 10 },
+ { 0, 4 },
+ { 4, 1 },
+ { 14, 1 },
+ { 30, 1 },
+ { 47, 1 },
+ { 63, 1 },
+ { 79, 1 },
+ { 95, 1 },
+ {111, 1 },
+ {144, 1 },
+ {159, 1 },
+ {176, 1 },
+ {192, 1 },
+ {208, 1 },
+ {224, 1 },
+ {241, 1 },
+ {250, 0 },
+ {255, 4 },
+ {253, 10 },
+ {255, 17 },
+ {253, 24 },
+ {255, 31 },
+ {253, 38 },
+ {241, 64 },
+ {165, 64 },
+ { 90, 64 },
+ { 14, 64 }
+}, {
+ // LED Index to Flag
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8
+} };
+
+void keyboard_post_init_kb(void) {
+ // Call the post init code.
+ // debug_enable=true;
+
+ keyboard_config.raw = eeconfig_read_kb();
+ if (keyboard_config.startup_animation_dots) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_startup_animation_dots);
+ } else {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_startup_animation_solid);
+ }
+
+ keyboard_post_init_user();
+}
+
+void eeconfig_init_kb(void) {
+#ifdef STARTUP_ANIMATION_DOTS
+ keyboard_config.startup_animation_dots = false;
+#else
+ keyboard_config.startup_animation_dots = true;
+#endif
+ eeconfig_update_kb(keyboard_config.raw);
+ eeconfig_init_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+ if (keycode == STARTUP_ANIMATION_CONFIG && record->event.pressed) {
+ keyboard_config.startup_animation_dots = !(keyboard_config.startup_animation_dots);
+#ifdef CONSOLE_ENABLE
+ uprintf("keyboard_config startup_animation_dots: %b\n", keyboard_config.startup_animation_dots);
+#endif
+ eeconfig_update_kb(keyboard_config.raw);
+ }
+
+ return true;
+}
diff --git a/keyboards/xelus/la_plus/la_plus.h b/keyboards/xelus/la_plus/la_plus.h
new file mode 100755
index 0000000000..f19b79237f
--- /dev/null
+++ b/keyboards/xelus/la_plus/la_plus.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K213, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \
+ K400, K401, K402, K408, K409, K410, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, ____, K312, K313, K314 }, \
+ { K400, K401, K402, ____, ____, ____, ____, ____, K408, K409, K410, ____, K412, K413, K414 } \
+}
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool startup_animation_dots;
+ };
+} keyboard_config_t;
+
+enum la_plus_keycodes {
+#ifdef VIA_ENABLE
+ STARTUP_ANIMATION_CONFIG = USER00,
+#else
+ STARTUP_ANIMATION_CONFIG = SAFE_RANGE,
+#endif
+};
diff --git a/keyboards/xelus/la_plus/readme.md b/keyboards/xelus/la_plus/readme.md
new file mode 100755
index 0000000000..3ea9bb9f98
--- /dev/null
+++ b/keyboards/xelus/la_plus/readme.md
@@ -0,0 +1,18 @@
+# La+ PCB
+
+A gasket 65% keyboard by Mechamaker
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: La+
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/la_plus:default
+
+Reset your keyboard in 3 ways:
+* Software reset on Fn + Backspace
+* Bootmagic reset: hold down the top left key (usually escape) and plugin the keyboard
+* Physical reset: on the back of the PCB, there is a ISP header which you should short the RST and GND together
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/xelus/la_plus/rgb_matrix_kb.inc b/keyboards/xelus/la_plus/rgb_matrix_kb.inc
new file mode 100644
index 0000000000..aee484cdb8
--- /dev/null
+++ b/keyboards/xelus/la_plus/rgb_matrix_kb.inc
@@ -0,0 +1,59 @@
+// Step 1.
+// Declare custom effects using the RGB_MATRIX_EFFECT macro
+// (note the lack of semicolon after the macro!)
+RGB_MATRIX_EFFECT(startup_animation_dots)
+RGB_MATRIX_EFFECT(startup_animation_solid)
+
+// Step 2.
+// Define effects inside the `RGB_MATRIX_CUSTOM_EFFECT_IMPLS` ifdef block
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+#include "eeprom.h"
+#include "eeconfig.h"
+
+static void startup_animation_setleds(effect_params_t* params, bool dots) {
+ uint8_t factor = 5;
+ HSV hsv = rgb_matrix_config.hsv;
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ if (dots) {
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ int32_t num = (g_rgb_timer & (0b11111 << factor)) >> factor;
+
+ if (num == 17 || num == 18 || num == 19 ||
+ num == 20 || num == 21) {
+ if (dots == true) {
+ for (int i = 0; i < 28; i++) {
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ return;
+ } else if (num == 0 || num == 1 || num == 2) {
+ return;
+ } else if (num >= 22) {
+ eeprom_read_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config));
+ rgb_matrix_mode_noeeprom(rgb_matrix_config.mode);
+ return;
+ }
+
+ int32_t num2 = (27/2) + num - 2;
+ int32_t num1 = 27 - num2;
+#ifdef CONSOLE_ENABLE
+ uprintf("num: %u\n", num);
+ uprintf("num1: %u\n", num1);
+ uprintf("num2: %u\n", num2);
+#endif
+ rgb_matrix_set_color(num1, rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color(num2, rgb.r, rgb.g, rgb.b);
+}
+
+static bool startup_animation_dots(effect_params_t* params) {
+ startup_animation_setleds(params, true);
+ return false;
+}
+static bool startup_animation_solid(effect_params_t* params) {
+ startup_animation_setleds(params, false);
+ return false;
+}
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
diff --git a/keyboards/xelus/la_plus/rules.mk b/keyboards/xelus/la_plus/rules.mk
new file mode 100755
index 0000000000..440396715b
--- /dev/null
+++ b/keyboards/xelus/la_plus/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+RGB_MATRIX_CUSTOM_KB = yes
+
+LTO_ENABLE = yes
diff --git a/keyboards/xelus/ninjin/rules.mk b/keyboards/xelus/ninjin/rules.mk
index 1afe6ec557..1407a61c3f 100644
--- a/keyboards/xelus/ninjin/rules.mk
+++ b/keyboards/xelus/ninjin/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/pachi/mini_32u4/info.json b/keyboards/xelus/pachi/mini_32u4/info.json
new file mode 100644
index 0000000000..3b0128ee82
--- /dev/null
+++ b/keyboards/xelus/pachi/mini_32u4/info.json
@@ -0,0 +1,107 @@
+{
+ "keyboard_name": "Xelus Pachi Mini",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F13", "x":1.25, "y":0},
+ {"label":"F1", "x":2.25, "y":0},
+ {"label":"F2", "x":3.25, "y":0},
+ {"label":"F3", "x":4.25, "y":0},
+ {"label":"F4", "x":5.5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.75, "y":0},
+ {"label":"F9", "x":10.75, "y":0},
+ {"label":"F10", "x":11.75, "y":0},
+ {"label":"F11", "x":12.75, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1},
+ {"label":"1!", "x":1, "y":1},
+ {"label":"2@", "x":2, "y":1},
+ {"label":"3#", "x":3, "y":1},
+ {"label":"4$", "x":4, "y":1},
+ {"label":"5%", "x":5, "y":1},
+ {"label":"6^", "x":6, "y":1},
+ {"label":"7&", "x":7, "y":1},
+ {"label":"8*", "x":8, "y":1},
+ {"label":"9(", "x":9, "y":1},
+ {"label":"0)", "x":10, "y":1},
+ {"label":"-_", "x":11, "y":1},
+ {"label":"=+", "x":12, "y":1},
+ {"label":"Backspace", "x":13, "y":1},
+ {"label":"Backspace", "x":14, "y":1},
+ {"label":"Insert", "x":15.25, "y":1},
+ {"label":"Home", "x":16.25, "y":1},
+ {"label":"Page Up", "x":17.25, "y":1},
+
+ {"label":"Tab", "x":0, "y":2, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2},
+ {"label":"W", "x":2.5, "y":2},
+ {"label":"E", "x":3.5, "y":2},
+ {"label":"R", "x":4.5, "y":2},
+ {"label":"T", "x":5.5, "y":2},
+ {"label":"Y", "x":6.5, "y":2},
+ {"label":"U", "x":7.5, "y":2},
+ {"label":"I", "x":8.5, "y":2},
+ {"label":"O", "x":9.5, "y":2},
+ {"label":"P", "x":10.5, "y":2},
+ {"label":"[{", "x":11.5, "y":2},
+ {"label":"]}", "x":12.5, "y":2},
+ {"label":"\\|", "x":13.5, "y":2, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2},
+ {"label":"End", "x":16.25, "y":2},
+ {"label":"Page Down", "x":17.25, "y":2},
+
+ {"label":"Caps Lock", "x":0, "y":3, "w":1.75},
+ {"label":"A", "x":1.75, "y":3},
+ {"label":"S", "x":2.75, "y":3},
+ {"label":"D", "x":3.75, "y":3},
+ {"label":"F", "x":4.75, "y":3},
+ {"label":"G", "x":5.75, "y":3},
+ {"label":"H", "x":6.75, "y":3},
+ {"label":"J", "x":7.75, "y":3},
+ {"label":"K", "x":8.75, "y":3},
+ {"label":"L", "x":9.75, "y":3},
+ {"label":";:", "x":10.75, "y":3},
+ {"label":"'\"", "x":11.75, "y":3},
+ {"label":"Enter", "x":12.75, "y":3, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4},
+ {"label":"Z", "x":2.25, "y":4},
+ {"label":"X", "x":3.25, "y":4},
+ {"label":"C", "x":4.25, "y":4},
+ {"label":"V", "x":5.25, "y":4},
+ {"label":"B", "x":6.25, "y":4},
+ {"label":"N", "x":7.25, "y":4},
+ {"label":"M", "x":8.25, "y":4},
+ {"label":",<", "x":9.25, "y":4},
+ {"label":".>", "x":10.25, "y":4},
+ {"label":"/?", "x":11.25, "y":4},
+ {"label":"Shift", "x":12.25, "y":4, "w":1.75},
+ {"label":"Fn", "x":14, "y":4},
+ {"label":"\u2191", "x":16.25, "y":4},
+
+ {"label":"Ctrl", "x":0, "y":5, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5, "w":6.25},
+ {"label":"Alt", "x":10, "y":5, "w":1.25},
+ {"label":"App", "x":11.25, "y":5, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5},
+ {"label":"\u2193", "x":16.25, "y":5},
+ {"label":"\u2192", "x":17.25, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/pachi/mini_32u4/rules.mk b/keyboards/xelus/pachi/mini_32u4/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/xelus/pachi/mini_32u4/rules.mk
+++ b/keyboards/xelus/pachi/mini_32u4/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/pachi/rev1/info.json b/keyboards/xelus/pachi/rev1/info.json
new file mode 100644
index 0000000000..2fb0c55479
--- /dev/null
+++ b/keyboards/xelus/pachi/rev1/info.json
@@ -0,0 +1,107 @@
+{
+ "keyboard_name": "Xelus Pachi Rev 1",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F13", "x":1.25, "y":0},
+ {"label":"F1", "x":2.25, "y":0},
+ {"label":"F2", "x":3.25, "y":0},
+ {"label":"F3", "x":4.25, "y":0},
+ {"label":"F4", "x":5.5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.75, "y":0},
+ {"label":"F9", "x":10.75, "y":0},
+ {"label":"F10", "x":11.75, "y":0},
+ {"label":"F11", "x":12.75, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25},
+ {"label":"Backspace", "x":14, "y":1.25},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Fn", "x":14, "y":4.25},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"App", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/pachi/rev1/rules.mk b/keyboards/xelus/pachi/rev1/rules.mk
index 770d329cac..ccb8e4eb54 100644
--- a/keyboards/xelus/pachi/rev1/rules.mk
+++ b/keyboards/xelus/pachi/rev1/rules.mk
@@ -15,10 +15,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/pachi/rgb/keymaps/default/keymap.c b/keyboards/xelus/pachi/rgb/keymaps/default/keymap.c
index c863d4413f..63ce070200 100644
--- a/keyboards/xelus/pachi/rgb/keymaps/default/keymap.c
+++ b/keyboards/xelus/pachi/rgb/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ansi_tsangan(
+ [0] = LAYOUT_tkl_ansi_tsangan(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_ansi_tsangan(
+ [1] = LAYOUT_tkl_ansi_tsangan(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , RGB_TOG, RGB_HUI, RGB_SAI,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_HUD, RGB_SAD,
diff --git a/keyboards/xelus/pachi/rgb/keymaps/via/keymap.c b/keyboards/xelus/pachi/rgb/keymaps/via/keymap.c
index d6a17a5fe0..dafc1c18ce 100644
--- a/keyboards/xelus/pachi/rgb/keymaps/via/keymap.c
+++ b/keyboards/xelus/pachi/rgb/keymaps/via/keymap.c
@@ -17,7 +17,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ansi_tsangan(
+ [0] = LAYOUT_tkl_ansi_tsangan(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_ansi_tsangan(
+ [1] = LAYOUT_tkl_ansi_tsangan(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [2] = LAYOUT_ansi_tsangan(
+ [2] = LAYOUT_tkl_ansi_tsangan(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h
index 276a128e0c..e6cf1756bd 100644
--- a/keyboards/xelus/pachi/rgb/rev1/config.h
+++ b/keyboards/xelus/pachi/rgb/rev1/config.h
@@ -21,7 +21,7 @@
#define PRODUCT_ID 0x5052 // "PR"
#define DEVICE_VER 0x0001
#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi RGB
+#define PRODUCT Xelus Pachi RGB Rev 1
/* key matrix size */
#define MATRIX_ROWS 6
@@ -50,10 +50,10 @@
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
-#define I2C1_TIMINGR_SCLDEL 11U
+#define I2C1_TIMINGR_SCLDEL 7U
#define I2C1_TIMINGR_SDADEL 0U
-#define I2C1_TIMINGR_SCLH 14U
-#define I2C1_TIMINGR_SCLL 42U
+#define I2C1_TIMINGR_SCLH 45U
+#define I2C1_TIMINGR_SCLL 149U
// I2C EEPROM
#define EEPROM_I2C_24LC64
@@ -98,7 +98,7 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/keyboards/xelus/pachi/rgb/rev1/info.json b/keyboards/xelus/pachi/rgb/rev1/info.json
new file mode 100644
index 0000000000..7448e755f0
--- /dev/null
+++ b/keyboards/xelus/pachi/rgb/rev1/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Xelus Pachi RGB Rev 1",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layout_aliases": {
+ "LAYOUT_ansi_tsangan": "LAYOUT_tkl_ansi_tsangan"
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15, "y":5.25},
+ {"label":"\u2193", "x":16, "y":5.25},
+ {"label":"\u2192", "x":17, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/pachi/rgb/rev1/rev1.h b/keyboards/xelus/pachi/rgb/rev1/rev1.h
index 894519ebe2..d2db5ebfc0 100644
--- a/keyboards/xelus/pachi/rgb/rev1/rev1.h
+++ b/keyboards/xelus/pachi/rgb/rev1/rev1.h
@@ -19,7 +19,7 @@
#define ____ KC_NO
-#define LAYOUT_ansi_tsangan( \
+#define LAYOUT_tkl_ansi_tsangan( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
diff --git a/keyboards/xelus/pachi/rgb/rev1/rules.mk b/keyboards/xelus/pachi/rgb/rev1/rules.mk
index 501060fbd1..3cfa837091 100644
--- a/keyboards/xelus/pachi/rgb/rev1/rules.mk
+++ b/keyboards/xelus/pachi/rgb/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
diff --git a/keyboards/xelus/pachi/rgb/rev2/config.h b/keyboards/xelus/pachi/rgb/rev2/config.h
index f66afcfb79..a9240da6bb 100644
--- a/keyboards/xelus/pachi/rgb/rev2/config.h
+++ b/keyboards/xelus/pachi/rgb/rev2/config.h
@@ -18,10 +18,10 @@
/* USB Device descriptor parameter */
#define VENDOR_ID 0x5845 // "XE"
-#define PRODUCT_ID 0x5052 // "PR"
+#define PRODUCT_ID 0x5053 // "PR" + 1
#define DEVICE_VER 0x0002
#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi RGB
+#define PRODUCT Xelus Pachi RGB Rev 2
/* key matrix size */
#define MATRIX_ROWS 12
@@ -50,10 +50,10 @@
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
-#define I2C1_TIMINGR_SCLDEL 11U
+#define I2C1_TIMINGR_SCLDEL 7U
#define I2C1_TIMINGR_SDADEL 0U
-#define I2C1_TIMINGR_SCLH 14U
-#define I2C1_TIMINGR_SCLL 42U
+#define I2C1_TIMINGR_SCLH 45U
+#define I2C1_TIMINGR_SCLL 149U
// I2C EEPROM
#define EEPROM_I2C_24LC64
@@ -98,8 +98,8 @@
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_FRACTAL
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
diff --git a/keyboards/xelus/pachi/rgb/rev2/info.json b/keyboards/xelus/pachi/rgb/rev2/info.json
new file mode 100644
index 0000000000..7448e755f0
--- /dev/null
+++ b/keyboards/xelus/pachi/rgb/rev2/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Xelus Pachi RGB Rev 1",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layout_aliases": {
+ "LAYOUT_ansi_tsangan": "LAYOUT_tkl_ansi_tsangan"
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"Print Screen", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"Page Up", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"Page Down", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"GUI", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15, "y":5.25},
+ {"label":"\u2193", "x":16, "y":5.25},
+ {"label":"\u2192", "x":17, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/pachi/rgb/rev2/rev2.c b/keyboards/xelus/pachi/rgb/rev2/rev2.c
index b8a7bc2730..f8ca9ec53e 100644
--- a/keyboards/xelus/pachi/rgb/rev2/rev2.c
+++ b/keyboards/xelus/pachi/rgb/rev2/rev2.c
@@ -162,7 +162,7 @@ led_config_t g_led_config = { {
{ NO_LED , -1+39+3 , -1+65+3 , -1+91+3 , -1+00+1 , -1+26+1 , -1+52+1 , -1+78+1 , NO_LED },
{ -1+00+4 , -1+26+4 , -1+52+4 , -1+78+4 , -1+104+4, -1+13+2 , -1+39+2 , -1+65+2 , -1+91+2 },
{ -1+13+4 , -1+39+4 , -1+65+4 , -1+91+4 , -1+00+2 , -1+26+2 , -1+52+2 , -1+78+2 , NO_LED },
- { -1+00+6 , -1+26+6 , -1+52+6 , -1+78+6 , -1+104+6, -1+13+5 , -1+39+5 , -1+65+5 , -1+91+6 },
+ { -1+00+6 , -1+26+6 , -1+52+6 , -1+78+6 , -1+104+6, -1+13+5 , -1+39+5 , -1+65+5 , -1+91+5 },
{ -1+13+6 , -1+39+6 , -1+65+6 , -1+91+6 , -1+00+5 , -1+26+5 , -1+52+5 , -1+78+5 , NO_LED },
{ -1+00+8 , -1+26+8 , -1+52+8 , -1+78+8 , -1+104+8, -1+13+7 , NO_LED , NO_LED , NO_LED },
{ -1+13+8 , -1+39+8 , -1+65+8 , -1+91+8 , -1+00+7 , -1+26+7 , -1+52+7 , NO_LED , NO_LED },
diff --git a/keyboards/xelus/pachi/rgb/rev2/rev2.h b/keyboards/xelus/pachi/rgb/rev2/rev2.h
index edc164d729..d7c3725d5d 100644
--- a/keyboards/xelus/pachi/rgb/rev2/rev2.h
+++ b/keyboards/xelus/pachi/rgb/rev2/rev2.h
@@ -19,7 +19,7 @@
#define _____ KC_NO
-#define LAYOUT_ansi_tsangan( \
+#define LAYOUT_tkl_ansi_tsangan( \
K0000, K0001, K0101, K0002, K0102, K0003, K0103, K0004, K0104, K0005, K0105, K0006, K0106, K0007, K0107, K0008, \
K0200, K0300, K0201, K0301, K0202, K0302, K0203, K0303, K0204, K0304, K0205, K0305, K0206, K0306, K0207, K0307, K0208, \
K0400, K0500, K0401, K0501, K0402, K0502, K0403, K0503, K0404, K0504, K0405, K0505, K0406, K0506, K0407, K0507, K0408, \
diff --git a/keyboards/xelus/pachi/rgb/rev2/rules.mk b/keyboards/xelus/pachi/rgb/rev2/rules.mk
index 0834a9ab6f..8092cc995a 100644
--- a/keyboards/xelus/pachi/rgb/rev2/rules.mk
+++ b/keyboards/xelus/pachi/rgb/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/rs60/rules.mk b/keyboards/xelus/rs60/rules.mk
index 7b919611d1..bcb2b171f5 100644
--- a/keyboards/xelus/rs60/rules.mk
+++ b/keyboards/xelus/rs60/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/snap96/rules.mk b/keyboards/xelus/snap96/rules.mk
index d1f65972c2..726bc460fe 100644
--- a/keyboards/xelus/snap96/rules.mk
+++ b/keyboards/xelus/snap96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow
diff --git a/keyboards/xelus/trinityxttkl/rules.mk b/keyboards/xelus/trinityxttkl/rules.mk
index a9f1397289..99fcb3cd13 100644
--- a/keyboards/xelus/trinityxttkl/rules.mk
+++ b/keyboards/xelus/trinityxttkl/rules.mk
@@ -8,16 +8,14 @@ BOOTLOADER = stm32-dfu
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/xelus/valor/rev1/rules.mk b/keyboards/xelus/valor/rev1/rules.mk
index 383102c0c6..4c6c0aaf13 100644
--- a/keyboards/xelus/valor/rev1/rules.mk
+++ b/keyboards/xelus/valor/rev1/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h
index 5956914c8a..8201373d23 100644
--- a/keyboards/xelus/valor/rev2/config.h
+++ b/keyboards/xelus/valor/rev2/config.h
@@ -52,10 +52,10 @@
#define I2C1_SCL_PAL_MODE 4
#define I2C1_SDA_PAL_MODE 4
#define I2C1_TIMINGR_PRESC 0U
-#define I2C1_TIMINGR_SCLDEL 11U
+#define I2C1_TIMINGR_SCLDEL 7U
#define I2C1_TIMINGR_SDADEL 0U
-#define I2C1_TIMINGR_SCLH 14U
-#define I2C1_TIMINGR_SCLL 42U
+#define I2C1_TIMINGR_SCLH 45U
+#define I2C1_TIMINGR_SCLL 149U
// I2C EEPROM
#define EEPROM_I2C_24LC64
diff --git a/keyboards/xelus/valor/rev2/rules.mk b/keyboards/xelus/valor/rev2/rules.mk
index ef41080c42..ca2fac6094 100644
--- a/keyboards/xelus/valor/rev2/rules.mk
+++ b/keyboards/xelus/valor/rev2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/valor_frl_tkl/rules.mk b/keyboards/xelus/valor_frl_tkl/rules.mk
index 649d814696..1c71897c3e 100644
--- a/keyboards/xelus/valor_frl_tkl/rules.mk
+++ b/keyboards/xelus/valor_frl_tkl/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xelus/xs60/config.h b/keyboards/xelus/xs60/config.h
new file mode 100644
index 0000000000..3a72af86ad
--- /dev/null
+++ b/keyboards/xelus/xs60/config.h
@@ -0,0 +1,60 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5845 // "XE"
+#define PRODUCT_ID 0x5860 // "XS60"
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Xelus
+#define PRODUCT Xelus XS60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B4, B3, A15, A14, A7 }
+#define MATRIX_COL_PINS { B0, B1, A8, A9, B5, A6, C14, C15, A0, A5, A4, A3, A2, A1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+// I2C setup
+#define I2C1_SCL_PAL_MODE 4
+#define I2C1_SDA_PAL_MODE 4
+#define I2C1_TIMINGR_PRESC 0U
+#define I2C1_TIMINGR_SCLDEL 7U
+#define I2C1_TIMINGR_SDADEL 0U
+#define I2C1_TIMINGR_SCLH 45U
+#define I2C1_TIMINGR_SCLL 149U
+
+// I2C EEPROM
+#define EEPROM_I2C_24LC64
+
+// More EEPROM for layers
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191
diff --git a/keyboards/xelus/xs60/halconf.h b/keyboards/xelus/xs60/halconf.h
new file mode 100644
index 0000000000..73481c72a6
--- /dev/null
+++ b/keyboards/xelus/xs60/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/xelus/xs60/info.json b/keyboards/xelus/xs60/info.json
new file mode 100644
index 0000000000..55665b0399
--- /dev/null
+++ b/keyboards/xelus/xs60/info.json
@@ -0,0 +1,74 @@
+{
+ "keyboard_name": "XS60",
+ "url": "",
+ "maintainer": "Xelus22",
+ "layouts": {
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"\\", "x":13, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"Backspace", "x":13.5, "y":1, "w":1.5},
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"GUI", "x":11.25, "y":4, "w":1.25},
+ {"label":"Fn", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/xs60/keymaps/default/config.h b/keyboards/xelus/xs60/keymaps/default/config.h
new file mode 100644
index 0000000000..ea9bfa60eb
--- /dev/null
+++ b/keyboards/xelus/xs60/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/xs60/keymaps/default/keymap.c b/keyboards/xelus/xs60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6970b02543
--- /dev/null
+++ b/keyboards/xelus/xs60/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Default layout for XS60
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// Default layer: Pressing caps-lock momentarily switches to Layer 1.
+// This is the default layer. Pressing an empty keycode on another layer will take you here.
+ [0] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_MENU, KC_RALT, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR,
+ KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ )
+};
diff --git a/keyboards/xelus/xs60/keymaps/via/config.h b/keyboards/xelus/xs60/keymaps/via/config.h
new file mode 100644
index 0000000000..54aaf775da
--- /dev/null
+++ b/keyboards/xelus/xs60/keymaps/via/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+// More layers
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
+
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/xs60/keymaps/via/keymap.c b/keyboards/xelus/xs60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..76901c41c7
--- /dev/null
+++ b/keyboards/xelus/xs60/keymaps/via/keymap.c
@@ -0,0 +1,85 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// Default layer: Pressing caps-lock momentarily switches to Layer 1.
+// This is the default layer. Pressing an empty keycode on another layer will take you here.
+ [0] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL , KC_BSLS, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_MENU, KC_RALT, KC_RCTL
+ ),
+
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_PSCR,
+ KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [2] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [3] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [4] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [5] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [6] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [7] = LAYOUT_60_ansi_split_bs_rshift(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/xelus/xs60/keymaps/via/rules.mk b/keyboards/xelus/xs60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/xelus/xs60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/xelus/xs60/mcuconf.h b/keyboards/xelus/xs60/mcuconf.h
new file mode 100644
index 0000000000..a1d2f9480e
--- /dev/null
+++ b/keyboards/xelus/xs60/mcuconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
diff --git a/keyboards/xelus/xs60/readme.md b/keyboards/xelus/xs60/readme.md
new file mode 100644
index 0000000000..f169f7f169
--- /dev/null
+++ b/keyboards/xelus/xs60/readme.md
@@ -0,0 +1,17 @@
+# XS60
+
+XS60 ANSI, normal + tsangan bottom row.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/xs60:default
+
+Reset your keyboard in 3 ways:
+* Software reset on Fn + Backspace
+* Bootmagic reset: hold down the top left key (usually ESC) and plugin the keyboard
+* Physical reset button: on the back of the PCB, there should be a small golden button you can press
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/xelus/xs60/rules.mk b/keyboards/xelus/xs60/rules.mk
new file mode 100644
index 0000000000..65c7d981ef
--- /dev/null
+++ b/keyboards/xelus/xs60/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32L422
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no # Audio output
+
+EEPROM_DRIVER = i2c
+
+LTO_ENABLE = yes
+OPT = 2
+
+LAYOUTS = 60_ansi_split_bs_rshift
diff --git a/keyboards/xelus/xs60/xs60.c b/keyboards/xelus/xs60/xs60.c
new file mode 100644
index 0000000000..95247c934a
--- /dev/null
+++ b/keyboards/xelus/xs60/xs60.c
@@ -0,0 +1,20 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "xs60.h"
+
+// tested and working
+void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); }
diff --git a/keyboards/xelus/xs60/xs60.h b/keyboards/xelus/xs60/xs60.h
new file mode 100644
index 0000000000..41ecb4efaf
--- /dev/null
+++ b/keyboards/xelus/xs60/xs60.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, XXX, K4D } \
+}
diff --git a/keyboards/xenon/config.h b/keyboards/xenon/config.h
new file mode 100644
index 0000000000..b14861140c
--- /dev/null
+++ b/keyboards/xenon/config.h
@@ -0,0 +1,65 @@
+/*
+Copyright 2020 Kyrre Havik Eriksen
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x3404
+#define DEVICE_VER 0x0001
+#define PRODUCT Xenon
+
+/* key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+// wiring
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 }
+
+#define ENCODERS_PAD_A { B6 }
+#define ENCODERS_PAD_B { B5 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#ifdef OLED_ENABLE
+ #define OLED_DISPLAY_128X32
+#endif
+
+// If you are using an Elite C rev3 on the slave side, uncomment the lines below:
+// #define SPLIT_USB_DETECT
+// #define NO_USB_STARTUP_CHECK
diff --git a/keyboards/xenon/info.json b/keyboards/xenon/info.json
new file mode 100644
index 0000000000..fd1146a1d4
--- /dev/null
+++ b/keyboards/xenon/info.json
@@ -0,0 +1,70 @@
+{
+ "keyboard_name": "Xenon",
+ "url": "https://github.com/narinari/xenon-keyboard",
+ "maintainer": "Kyrremann",
+ "manufacturer": "narinari",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.75},
+ {"x":1, "y":0.75},
+ {"x":2, "y":0.25},
+ {"x":3, "y":0},
+ {"x":4, "y":0.25},
+ {"x":5, "y":0.5},
+ {"x":9, "y":0.5},
+ {"x":10, "y":0.25},
+ {"x":11, "y":0},
+ {"x":12, "y":0.25},
+ {"x":13, "y":0.75},
+ {"x":14, "y":0.75},
+
+ {"x":0, "y":1.75},
+ {"x":1, "y":1.75},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.5},
+ {"x":9, "y":1.5},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.75},
+ {"x":14, "y":1.75},
+
+ {"x":0, "y":2.75},
+ {"x":1, "y":2.75},
+ {"x":2, "y":2.25},
+ {"x":3, "y":2},
+ {"x":4, "y":2.25},
+ {"x":5, "y":2.5},
+ {"x":9, "y":2.5},
+ {"x":10, "y":2.25},
+ {"x":11, "y":2},
+ {"x":12, "y":2.25},
+ {"x":13, "y":2.75},
+ {"x":14, "y":2.75},
+
+ {"x":2, "y":3.25},
+ {"x":3, "y":3},
+ {"x":4, "y":3.25},
+ {"x":5, "y":3.5},
+ {"x":6, "y":3.5},
+ {"x":8, "y":3.5},
+ {"x":9, "y":3.5},
+ {"x":10, "y":3.25},
+ {"x":11, "y":3},
+ {"x":12, "y":3.25},
+
+ {"x":3, "y":4},
+ {"x":4, "y":4.25},
+ {"x":5, "y":4.5},
+ {"x":6, "y":4.5},
+ {"x":8, "y":4.5},
+ {"x":9, "y":4.5},
+ {"x":10, "y":4.25},
+ {"x":11, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/xenon/keymaps/default/keymap.c b/keyboards/xenon/keymaps/default/keymap.c
new file mode 100644
index 0000000000..97d1016647
--- /dev/null
+++ b/keyboards/xenon/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+/* Copyright 2020 Kyrre Havik Eriksen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+#define M_LWR MO(_LOWER)
+#define M_RSE MO(_RAISE)
+#define L(kc) (LSFT(kc))
+#define R(kc) (RALT(kc))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
+ KC_MUTE, KC_RALT, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, M_LWR, KC_BSPC, M_RSE, KC_MPLY,
+ KC_DEL , KC_PGDN, KC_PGUP, KC_ESC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+ [_LOWER] = LAYOUT(
+ KC_BSLS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TRNS, L(KC_1),L(KC_2), L(KC_3), L(KC_4),L(KC_5), L(KC_6), L(KC_7), L(KC_8), L(KC_9), L(KC_0), L(KC_MINS),
+ KC_TRNS, KC_GRV, KC_TRNS, L(KC_EQL),L(KC_RBRC),L(KC_BSLS), KC_BSLS, KC_RBRC, KC_EQL, KC_VOLD, KC_VOLU, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_ENT, KC_SPC, KC_TRNS, KC_TRNS, KC_RALT,
+ KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_ENT, KC_SPC, KC_TAB, KC_BSPC
+ ),
+ [_RAISE] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
+ KC_LGUI, KC_DEL, KC_ENT, KC_SPC, KC_ESC, KC_ENT, KC_SPC, KC_TAB, KC_BSPC, KC_RALT,
+ KC_DEL, KC_ENT, KC_SPC, KC_ESC, KC_ENT, KC_SPC, KC_TAB, KC_BSPC
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#ifdef CONSOLE_ENABLE
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+#endif
+ return true;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/xenon/readme.md b/keyboards/xenon/readme.md
new file mode 100644
index 0000000000..d3b4464710
--- /dev/null
+++ b/keyboards/xenon/readme.md
@@ -0,0 +1,30 @@
+# Xenon
+
+![Xenon](https://i.imgur.com/QYMDzGFh.jpg)
+
+Xenon is 60% columnar staggered keyboard.
+
+* Cherry MX and Kailh low profile key switch support
+* OLED display
+* Full color LED
+* Prototype board area (behind the promicro)
+
+* Keyboard Maintainer: [Narinari](https://github.com/narinari)
+* Keymap Maintainer: [Kyrremann](https://github.com/Kyrremann)
+* Keyboard files can be found here: https://github.com/narinari/xenon-keyboard
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xenon:default
+
+Example of flashing this keyboard:
+
+ make xenon:default:flash
+
+How to enter bootloader (DFU):
+
+Press the reset button next to the TRRS port on the side you are trying to flash (USB must be connected to the Pro Micro that you are flashing).
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the
+[make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with
+the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/xenon/rules.mk b/keyboards/xenon/rules.mk
new file mode 100644
index 0000000000..aeaa1fd104
--- /dev/null
+++ b/keyboards/xenon/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+OLED_ENABLE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/xenon/xenon.c b/keyboards/xenon/xenon.c
new file mode 100644
index 0000000000..9ca5720776
--- /dev/null
+++ b/keyboards/xenon/xenon.c
@@ -0,0 +1,97 @@
+/* Copyright 2020 Kyrre Havik Eriksen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "xenon.h"
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+
+ return OLED_ROTATION_270;
+}
+
+static void render_named_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 12, 60,252,252,252,236,236,140, 12, 28,248,192, 0,192,248,252,252,252,108, 12, 12,140,236, 60, 12, 0, 0, 0,248,252,252,252,236,204,204,204,204,204,204,204,204,204,204,204,204,140, 12,252,248, 0, 0, 0,252,252,252,252,236,236,236,204, 12, 60,240,192, 0, 0, 0,252,252,252,236,236, 12, 12, 12,252,248, 0, 0,192,224, 96, 48, 24, 24,140,140,132,196,196,196,196,132,140,140, 12, 24, 48, 48, 96,192,128, 0, 0,252,252,252,236,236,236,236,140, 28,120,224,128, 0, 0,252,252,252,252,236,236, 12, 12, 12,252,
+ 0, 0, 0, 3, 15,255,255,255,254,248,192,195,223,255,255, 63, 15, 1,224,248, 30, 7, 1, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 1, 63, 63, 51, 51, 51, 51, 51, 51, 51,243, 3, 1, 0, 0, 0,255,255,255,255,255, 1, 15,127,255,252,240,195, 15, 60,240,255,255,255,255,255, 0, 0, 0,255,255,254,255,255,255,127, 14, 2,195,247, 63, 31, 15, 15, 15, 15, 31, 63,255,255,254,252,248,224, 1, 3, 30,252,255,255,255,255,255, 3, 31,255,254,248,225,135, 30,120,255,255,255,255,255,255, 0, 0, 0,255,
+ 0, 0,128,240,252,255,255,255, 63, 7, 1,227,127,255,255,255,248,224, 1, 7, 62,240,192, 0, 0, 0, 0, 0,255,255,255,255,255,255, 1, 3, 7,255,255,207,207,207,207,207,206,204,207,192,128, 0, 0, 0,255,255,255,255,255, 0, 0, 0,255,255, 15,127,255,252,240,227,143,127,255,255, 0, 0, 0,255,255, 63,255,255,255,254,240,192,131,135, 12, 24, 48, 48, 48, 48, 24, 28, 15,159,255, 63, 31, 7,128,192,120, 31,255,255,255,255,255, 0, 0, 0,255,255, 31,127,255,252,241,199, 31,127,255,255, 0, 0, 0,255,
+ 48, 62, 63, 63, 63, 63, 63, 56, 48, 60, 31, 3, 0, 3, 31, 63, 63, 63, 63, 60, 60, 56, 59, 63, 56, 0, 0, 0, 31, 63, 63, 63, 63, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 56, 63, 31, 0, 0, 0, 63, 63, 63, 63, 63, 60, 56, 48, 63, 63, 0, 0, 0, 3, 31, 63, 63, 62, 61, 63, 60, 56, 48, 63, 31, 0, 0, 1, 7, 7, 15, 31, 31, 63, 63, 63, 62, 62, 62, 62, 63, 63, 63, 31, 31, 15, 14, 6, 3, 1, 0, 0, 63, 63, 63, 63, 63, 60, 56, 56, 63, 31, 0, 0, 1, 7, 31, 63, 63, 60, 63, 63, 60, 56, 48, 63
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+static void render_status(void) {
+ oled_write_P(PSTR("\n\n\n-----\nXENON\n-----\n\n"), false);
+
+ // Host Keyboard Layer Status
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("Base \n"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Lower\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Raise\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undef\n"), false);
+ }
+ oled_write_P(PSTR("Layer\n"), false);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ if (is_keyboard_master()) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_named_logo();
+ }
+
+ return true;
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+
+ if (index == 0) {
+ // Volume control
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ }
+ else if (index == 1) {
+ // Page up/Page down
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+
+ return true;
+}
+#endif
diff --git a/keyboards/xenon/xenon.h b/keyboards/xenon/xenon.h
new file mode 100644
index 0000000000..030d9bcb8c
--- /dev/null
+++ b/keyboards/xenon/xenon.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 Kyrre Havik Eriksen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R06, R07, R08, R09, R10, R11, \
+ L12, L13, L14, L15, L16, L17, R18, R19, R20, R21, R22, R23, \
+ L24, L25, L26, L27, L28, L29, R30, R31, R32, R33, R34, R35, \
+ L36, L37, L38, L39, L40, R41, R42, R43, R44, R45, \
+ L46, L47, L48, L49, R50, R51, R52, R53 \
+) \
+{ \
+ { XXX, L05, L04, L03, L02, L01, L00 }, \
+ { XXX, L17, L16, L15, L14, L13, L12 }, \
+ { XXX, L29, L28, L27, L26, L25, L24 }, \
+ { L40, L39, L38, L37, L36, XXX, XXX }, \
+ { L49, L48, L47, L46, XXX, XXX, XXX }, \
+ { XXX, R06, R07, R08, R09, R10, R11 }, \
+ { XXX, R18, R19, R20, R21, R22, R23 }, \
+ { XXX, R30, R31, R32, R33, R34, R35 }, \
+ { R41, R42, R43, R44, R45, XXX, XXX }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/xiaomi/mk02/keymaps/default/keymap.c b/keyboards/xiaomi/mk02/keymaps/default/keymap.c
index cea3aae57c..e51076e7f4 100644
--- a/keyboards/xiaomi/mk02/keymaps/default/keymap.c
+++ b/keyboards/xiaomi/mk02/keymaps/default/keymap.c
@@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi( /* Base */
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
};
diff --git a/keyboards/xiaomi/mk02/rules.mk b/keyboards/xiaomi/mk02/rules.mk
index a501009d1b..9d6d62c394 100644
--- a/keyboards/xiaomi/mk02/rules.mk
+++ b/keyboards/xiaomi/mk02/rules.mk
@@ -11,8 +11,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = no # USB Nkey Rollover
-CUSTOM_MATRIX = no # Custom matrix file
+NKRO_ENABLE = no # Enable N-Key Rollover
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = no
diff --git a/keyboards/xiudi/xd002/rules.mk b/keyboards/xiudi/xd002/rules.mk
index f6294c209f..77dd994783 100644
--- a/keyboards/xiudi/xd002/rules.mk
+++ b/keyboards/xiudi/xd002/rules.mk
@@ -14,10 +14,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd004/v1/rules.mk b/keyboards/xiudi/xd004/v1/rules.mk
index b81a68c3b1..2a885e1441 100644
--- a/keyboards/xiudi/xd004/v1/rules.mk
+++ b/keyboards/xiudi/xd004/v1/rules.mk
@@ -5,16 +5,17 @@ MCU = atmega16u2
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
SPACE_CADET_ENABLE = no
# Saves about 5% of space:
LTO_ENABLE = yes
diff --git a/keyboards/xiudi/xd60/keymaps/default/keymap.c b/keyboards/xiudi/xd60/keymaps/default/keymap.c
index ce2a592e36..1b8fa07a8e 100644
--- a/keyboards/xiudi/xd60/keymaps/default/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/default/keymap.c
@@ -4,18 +4,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 0: Base Layer
LAYOUT_all(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL, \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
// 1: Function Layer
LAYOUT_all(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \
- KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL, \
- KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT, \
- KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS, \
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14,
+ KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
};
diff --git a/keyboards/xiudi/xd60/keymaps/finnish/keymap.c b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c
new file mode 100644
index 0000000000..84a4a63afe
--- /dev/null
+++ b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c
@@ -0,0 +1,25 @@
+// Copyright 2021 Minna Pallari (@pallarim)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_finnish.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // 0: Base Layer
+ LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, FI_PLUS, FI_ACUT, MO(1), KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, FI_ARNG, FI_DIAE, KC_NO,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, FI_ODIA, FI_ADIA, FI_QUOT, KC_ENT,
+ KC_LSFT, FI_LABK, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, FI_MINS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ // 1: Function Layer
+ LAYOUT_all(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14,
+ KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END),
+
+};
diff --git a/keyboards/xiudi/xd60/keymaps/finnish/readme.md b/keyboards/xiudi/xd60/keymaps/finnish/readme.md
new file mode 100644
index 0000000000..2e5c96f770
--- /dev/null
+++ b/keyboards/xiudi/xd60/keymaps/finnish/readme.md
@@ -0,0 +1,20 @@
+# Finnish/Swedish iso Keymap for XIUDI's XD60 PCB
+
+FI/SV iso Keymap for XD60.
+
+## Keymap
+
+### Base Layer
+
+![Base layer](https://i.imgur.com/TrChS0N.png)
+
+### Function Layer
+
+![Default Keymap layer 2](https://img.alicdn.com/imgextra/i1/1713761720/TB2K0gTalPxQeBjy1XcXXXHzVXa_!!1713761720.png)
+
+## Build
+
+To build the default keymap, simply run:
+
+ make xiudi/xd60/rev2:finnish # XD60 rev2
+ make xiudi/xd60/rev3:finnish # XD60 rev3
diff --git a/keyboards/xiudi/xd60/rev2/rules.mk b/keyboards/xiudi/xd60/rev2/rules.mk
index e56178d7bf..0479b79af5 100644
--- a/keyboards/xiudi/xd60/rev2/rules.mk
+++ b/keyboards/xiudi/xd60/rev2/rules.mk
@@ -5,15 +5,16 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift
diff --git a/keyboards/xiudi/xd60/rev3/rules.mk b/keyboards/xiudi/xd60/rev3/rules.mk
index e56178d7bf..0479b79af5 100644
--- a/keyboards/xiudi/xd60/rev3/rules.mk
+++ b/keyboards/xiudi/xd60/rev3/rules.mk
@@ -5,15 +5,16 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_iso 60_iso_split_bs_rshift
diff --git a/keyboards/xiudi/xd68/rules.mk b/keyboards/xiudi/xd68/rules.mk
index 4e236fdc50..927741e979 100644
--- a/keyboards/xiudi/xd68/rules.mk
+++ b/keyboards/xiudi/xd68/rules.mk
@@ -4,7 +4,7 @@ MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
-# QMK Build Options
+# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c b/keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c
index 9661972bfa..a500e4b682 100644
--- a/keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c
@@ -20,136 +20,33 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // 4x10
+ [_DVORAK] = BASE_5x15(___NUMS___, ___DVORAK___),
+ [_QWERTY] = BASE_5x15(___NUMS___, ___QWERTY___),
+ [_COLEMAK] = BASE_5x15(___NUMS___, ___COLEMAK_DH___),
+ [_BEAKL] = BASE_5x15(___BKLNUMS___, ___BEAKL15___),
- [DVORAK] = LAYOUT_ortho_5x15_wrapper(
- KC_GRV, ___ORTHO_15_N___, KC_EQL,
- KC_LOCK, ___13_DVORAK_1___, KC_SLASH,
- TAB_BKTAB, ___13_DVORAK_2___, KC_MINUS,
- KC_LSFT, ___13_DVORAK_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM___
- ),
-
- [QWERTY] = LAYOUT_ortho_5x15_wrapper(
- KC_GRV, ___ORTHO_15_N___, KC_EQL,
- KC_LOCK, ___13_QWERTY_1___, KC_SLASH,
- TAB_BKTAB, ___13_QWERTY_2___, KC_MINUS,
- KC_LSFT, ___13_QWERTY_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM___
- ),
-
- [COLEMAK] = LAYOUT_ortho_5x15_wrapper(
- KC_GRV, ___ORTHO_15_N___, KC_EQL,
- KC_LOCK, ___13_COLEMAK_1___, KC_SLASH,
- TAB_BKTAB, ___13_COLEMAK_2___, KC_MINUS,
- KC_LSFT, ___13_COLEMAK_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM___
- ),
-
- [WORKMAN] = LAYOUT_ortho_5x15_wrapper(
- KC_GRV, ___ORTHO_15_N___, KC_EQL,
- KC_LOCK, ___13_WORKMAN_1___, KC_SLASH,
- TAB_BKTAB, ___13_WORKMAN_2___, KC_MINUS,
- KC_LSFT, ___13_WORKMAN_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM___
- ),
-
- [NORMAN] = LAYOUT_ortho_5x15_wrapper(
- KC_GRV, ___ORTHO_15_N___, KC_EQL,
- KC_LOCK, ___13_NORMAN_1___, KC_SLASH,
- TAB_BKTAB, ___13_NORMAN_2___, KC_MINUS,
- KC_LSFT, ___13_NORMAN_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM___
- ),
-
- [DVORAK_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
- DB_GRV, ___ORTHO_15_B_N___, DB_EQL,
- KC_LOCK, ___13_DVORAK_B_1___, DB_SLASH,
- TAB_BKTAB, ___13_DVORAK_B_2___, DB_MINUS,
- KC_LSFT, ___13_DVORAK_B_3___, KC_RSFT,
- ___ORTHO_15_BOTTOM_FR___
- ),
-
- [XMONAD] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___, ___13_DVORAK_1___, ___,
- ___, ___13_DVORAK_2___, ___,
- ___, ___13_DVORAK_3___, ___,
- ___15___
- ),
-
- [XMONAD_FR] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___, ___13_DVORAK_B_1___, ___,
- ___, ___13_DVORAK_B_2___, ___,
- ___, ___13_DVORAK_B_3___, ___,
- ___15___
- ),
-
- [BEPO] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_B_SYMB___,
- KC_LOCK, ___13_BEPO_1___, BP_W,
- TAB_BKTAB, ___13_BEPO_2___, BP_CCED,
- BP_SFT_T_ECRC, ___13_BEPO_3___, BP_SFT_T_W,
- ___ORTHO_15_BOTTOM_BP___
- ),
-
- // SYMBOLS
- [SYMB] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_SYMB_1___,
- ___15_SYMB_2___,
- ___15_SYMB_3___,
- ___15_SYMB_4___
- ),
-
- [KEYPAD] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_KP_1___,
- ___15_KP_2___,
- ___15_KP_3___,
- ___15_KP_4___
- ),
-
- [KEYPAD_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_KP_B_1___,
- ___15_KP_B_2___,
- ___15_KP_B_3___,
- ___15_KP_B_4___
- ),
-
- [SYMB_ON_BEPO] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_SYMB_B_1___,
- ___15_SYMB_B_2___,
- ___15_SYMB_B_3___,
- ___15_SYMB_B_4___
- ),
-
- // MEDIA AND MOUSE
- [MDIA] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_MDIA_1___,
- ___15_MDIA_2___,
- ___15_MDIA_3___,
- ___15_MDIA_4___
- ),
-
- [LAYERS] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_LAYERS_1___,
- ___15_LAYERS_2___,
- ___15_LAYERS_3___,
- ___15___
- ),
-
- [_RGB] = LAYOUT_ortho_5x15_wrapper(
- ___ORTHO_15_FUNC_1_12___,
- ___15_RGB_1___,
- ___15_RGB_2___,
- ___15_RGB_3___,
- ___15___
- ),
+ //[_DVORAK_BP] = BASE_5x15_bepo(___DVORAK_FR___),
+ //[_BEAKL_BP] = BASE_5x15_bepo(___BEAKL15_FR___),
+
+ // 4x12
+ //[_BEPO] = BASE_5x15_bepo6(___BEPO6_FR___),
+
+ // transient macro takes a 4x12 for args
+ [_SYMB] = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_3x12___),
+ //[_SYMB_BP] = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_BP_3x12___),
+
+ [_TOPROWS] = TRANSIENT_5x15(___12___, ___TOPROWS_3x12___),
+ //[_TOPROWS_BP] = TRANSIENT_5x15(___12___, ___TOPROWS_BP_3x12___),
+
+ [_KEYPAD] = TRANSIENT_5x15(___12___, ___KP_C_3x12___),
+ //[_KEYPAD_BP] = TRANSIENT_5x15(___12___, ___KP_C_BP_3x12___),
+
+ // Navigation and control
+ [_NAV] = TRANSIENT_5x15(___12___, ___NAV_3x12___),
+ [_LAYERS] = TRANSIENT_5x15(___12___, ___LAYERS_3x12___),
+ //[_RGB] = TRANSIENT_5x15(___12___, ___RGB_3x12___),
+ [_ADJUST] = TRANSIENT_5x15(___12___, ___ADJUST_3x12___),
};
@@ -199,18 +96,18 @@ void keyboard_post_init_user(void) {
layer_state_t layer_state_set_user(layer_state_t state) {
// rgblight_set_layer_state(0, !on_qwerty());
- rgblight_set_layer_state(0, layer_state_cmp(state, DVORAK));
+ rgblight_set_layer_state(0, layer_state_cmp(state, _DVORAK));
- rgblight_set_layer_state(1, layer_state_cmp(state, BEPO));
- rgblight_set_layer_state(2, layer_state_cmp(state, DVORAK));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _BEPO));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _DVORAK));
//|| layer_state_cmp(state, DVORAK_ON_BEPO)));
- rgblight_set_layer_state(3, layer_state_cmp(state, MDIA));
- rgblight_set_layer_state(4, layer_state_cmp(state, SYMB) );
+ rgblight_set_layer_state(3, layer_state_cmp(state, _NAV));
+ rgblight_set_layer_state(4, layer_state_cmp(state, _SYMB) );
//(layer_state_cmp(state, SYMB) || (layer_state_cmp(state, SYMB_ON_BEPO))));
- rgblight_set_layer_state(5, layer_state_cmp(state, KEYPAD) );
+ rgblight_set_layer_state(5, layer_state_cmp(state, _KEYPAD) );
///(layer_state_cmp(state, KEYPAD) || (layer_state_cmp(state, KEYPAD_ON_BEPO))));
- rgblight_set_layer_state(6, layer_state_cmp(state, LAYERS));
+ rgblight_set_layer_state(6, layer_state_cmp(state, _LAYERS));
rgblight_set_layer_state(7, layer_state_cmp(state, _RGB));
return state;
}
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklb/config.h b/keyboards/xiudi/xd75/keymaps/scheiklb/config.h
new file mode 100644
index 0000000000..ea9ca7a950
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/scheiklb/config.h
@@ -0,0 +1,8 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#define DE_PASTE LCTL(KC_V) // CTRL+V
+#define DE_COPY LCTL(KC_C) // CTRL+C
+#define DE_CUT LCTL(KC_X) // CTRL+X
+#define DE_UNDO LCTL(DE_Z) // CTRL+Z
+
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c b/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c
new file mode 100644
index 0000000000..3dc011a2cb
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "keymap_german.h"
+
+// Layer shorthand
+#define _QWZ 0
+#define _FNC 1
+#define _AGR 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+ [_QWZ] = {
+ { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, DE_CIRC, DE_UNDO, KC_6, KC_7, KC_8, KC_9, KC_0, DE_SS, DE_ACUT},
+ { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_COPY, DE_PASTE, DE_Z, KC_U, KC_I, KC_O, KC_P, DE_UDIA, DE_PLUS},
+ { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_BSPC, KC_H, KC_J, KC_K, KC_L, DE_ODIA, DE_ADIA, DE_HASH},
+ { KC_LSFT, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_UP, KC_N, KC_M, KC_COMM, KC_DOT, DE_MINS, KC_TRNS, KC_RSFT},
+ { KC_LCTL, DE_LABK, KC_HOME, KC_LALT, KC_ENTER, KC_ENTER, KC_LEFT, KC_RIGHT, KC_SPC, KC_SPC, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, MO(1) },
+ },
+
+ [_FNC] = {
+ { RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12},
+ { KC_TAB, DE_AT, KC_TRNS, DE_EURO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_TILD },
+ { KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ { KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT },
+ { KC_LCTL, DE_PIPE, KC_HOME, KC_LALT, KC_ENTER, KC_ENTER, KC_LEFT, KC_RIGHT, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ },
+
+ [_AGR] = {
+
+ { KC_ESC, KC_TRNS, DE_SUP2, DE_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_LCBR, DE_LBRC, DE_RBRC, DE_RCBR, DE_BSLS, KC_TRNS},
+ { KC_TAB, DE_AT, KC_TRNS, DE_EURO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_TILD },
+ { KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ { KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT },
+ { KC_LCTL, DE_PIPE, KC_HOME, KC_LALT, KC_ENTER, KC_ENTER, KC_LEFT, KC_RIGHT, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+ },
+
+};
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklb/rules.mk b/keyboards/xiudi/xd75/keymaps/scheiklb/rules.mk
new file mode 100644
index 0000000000..52ea43a828
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/scheiklb/rules.mk
@@ -0,0 +1,17 @@
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no # Enable Tap Dancing
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/config.h b/keyboards/xiudi/xd75/keymaps/scheiklp/config.h
index 68f5a3ee11..b20cb2f4f3 100644
--- a/keyboards/xiudi/xd75/keymaps/scheiklp/config.h
+++ b/keyboards/xiudi/xd75/keymaps/scheiklp/config.h
@@ -1,20 +1,8 @@
-/* Copyright 2017 Benjamin Kesselring
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
+
// place overrides here
#define AUTO_SHIFT_TIMEOUT 175
#define NO_AUTO_SHIFT_SPECIAL
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c b/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
index a757c2e49c..594d34ce33 100644
--- a/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
@@ -1,20 +1,9 @@
-/* Copyright 2017 Wunder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
#include "koy_keys_on_quertz_de_latin1.h"
+
// Layer shorthand
#define _1 0
#define _3 1
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk b/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk
index 2cbbe08d7a..0b00a6654d 100644
--- a/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk
+++ b/keyboards/xiudi/xd75/keymaps/scheiklp/rules.mk
@@ -1,4 +1,7 @@
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+BOOTMAGIC_ENABLE = no
COMMAND_ENABLE = no
RGBLIGHT_ENABLE = no
DYNAMIC_MACRO_ENABLE = yes
diff --git a/keyboards/xiudi/xd75/rules.mk b/keyboards/xiudi/xd75/rules.mk
index 171f71b827..729be3c045 100644
--- a/keyboards/xiudi/xd75/rules.mk
+++ b/keyboards/xiudi/xd75/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd84/rules.mk b/keyboards/xiudi/xd84/rules.mk
index a7aeeed6b7..eb0d120c33 100644
--- a/keyboards/xiudi/xd84/rules.mk
+++ b/keyboards/xiudi/xd84/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd84pro/rules.mk b/keyboards/xiudi/xd84pro/rules.mk
index e70a8a7a73..da21836459 100644
--- a/keyboards/xiudi/xd84pro/rules.mk
+++ b/keyboards/xiudi/xd84pro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd87/keymaps/default/config.h b/keyboards/xiudi/xd87/keymaps/default/config.h
deleted file mode 100644
index ed56340c39..0000000000
--- a/keyboards/xiudi/xd87/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd87/keymaps/default/keymap.c b/keyboards/xiudi/xd87/keymaps/default/keymap.c
index d36f7d9649..dc8548a921 100644
--- a/keyboards/xiudi/xd87/keymaps/default/keymap.c
+++ b/keyboards/xiudi/xd87/keymaps/default/keymap.c
@@ -23,12 +23,12 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl_iso(\
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ [0] = LAYOUT_tkl_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT )
};
diff --git a/keyboards/xiudi/xd87/keymaps/default_underglow/config.h b/keyboards/xiudi/xd87/keymaps/default_underglow/config.h
deleted file mode 100755
index 6432d4b1f6..0000000000
--- a/keyboards/xiudi/xd87/keymaps/default_underglow/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2019 Louwii
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd87/rules.mk b/keyboards/xiudi/xd87/rules.mk
index 900071f1c6..4c5b638ed1 100644
--- a/keyboards/xiudi/xd87/rules.mk
+++ b/keyboards/xiudi/xd87/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xiudi/xd96/rules.mk b/keyboards/xiudi/xd96/rules.mk
index 36287cd37b..864e780606 100644
--- a/keyboards/xiudi/xd96/rules.mk
+++ b/keyboards/xiudi/xd96/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/xmmx/keymaps/ansi_wk/keymap.c b/keyboards/xmmx/keymaps/ansi_wk/keymap.c
index 213f65a4a2..19ea361a15 100644
--- a/keyboards/xmmx/keymaps/ansi_wk/keymap.c
+++ b/keyboards/xmmx/keymaps/ansi_wk/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_tkl_ansi(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
)
};
diff --git a/keyboards/xmmx/keymaps/ansi_wkl/keymap.c b/keyboards/xmmx/keymaps/ansi_wkl/keymap.c
index d566f1a210..34182ca66d 100644
--- a/keyboards/xmmx/keymaps/ansi_wkl/keymap.c
+++ b/keyboards/xmmx/keymaps/ansi_wkl/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_tkl_ansi_wkl(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
)
};
diff --git a/keyboards/xmmx/keymaps/default/keymap.c b/keyboards/xmmx/keymaps/default/keymap.c
index a4c38cd54e..80838ea8fb 100644
--- a/keyboards/xmmx/keymaps/default/keymap.c
+++ b/keyboards/xmmx/keymaps/default/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_all(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS,KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, KC_NO, KC_NO, KC_NO, \
- KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_NO, KC_UP, KC_NO, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS,KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, KC_NO, KC_NO, KC_NO,
+ KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_NO, KC_UP, KC_NO,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
)
};
diff --git a/keyboards/xmmx/keymaps/iso_wk/keymap.c b/keyboards/xmmx/keymaps/iso_wk/keymap.c
index a71795ccf0..f48098c219 100644
--- a/keyboards/xmmx/keymaps/iso_wk/keymap.c
+++ b/keyboards/xmmx/keymaps/iso_wk/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_tkl_iso(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
)
};
diff --git a/keyboards/xmmx/keymaps/iso_wkl/keymap.c b/keyboards/xmmx/keymaps/iso_wkl/keymap.c
index d40257177d..8a60aea92d 100644
--- a/keyboards/xmmx/keymaps/iso_wkl/keymap.c
+++ b/keyboards/xmmx/keymaps/iso_wkl/keymap.c
@@ -3,11 +3,11 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_tkl_iso_wkl(
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT, \
- KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP, \
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL, KC_BSPC, KC_INS,KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT
)
};
diff --git a/keyboards/xmmx/rules.mk b/keyboards/xmmx/rules.mk
index 51fa4484b8..82694737e6 100644
--- a/keyboards/xmmx/rules.mk
+++ b/keyboards/xmmx/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/xw60/rules.mk b/keyboards/xw60/rules.mk
index 996e630455..c327b02158 100644
--- a/keyboards/xw60/rules.mk
+++ b/keyboards/xw60/rules.mk
@@ -5,19 +5,16 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
HAPTIC_ENABLE = yes
HAPTIC_DRIVER = SOLENOID
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/yampad/rules.mk b/keyboards/yampad/rules.mk
index 667620e93b..7ad3dbb51b 100644
--- a/keyboards/yampad/rules.mk
+++ b/keyboards/yampad/rules.mk
@@ -16,8 +16,7 @@ DEBOUNCE_TYPE = sym_eager_pk
EXTRAKEY_ENABLE = no # Audio control and System control
LTO_ENABLE = yes # Link time optimise, reduce firmware size
MOUSEKEY_ENABLE = no # Mouse keys
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
OLED_DRIVER = SSD1306
OLED_ENABLE = yes
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/yanghu/unicorne/keymaps/bcat/config.h b/keyboards/yanghu/unicorne/keymaps/bcat/config.h
new file mode 100644
index 0000000000..6a27f2aa96
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/bcat/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#define BCAT_ORTHO_LAYERS
diff --git a/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c b/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c
new file mode 100644
index 0000000000..3da9f880ae
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c
@@ -0,0 +1,83 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+#include "bcat.h"
+
+#if defined(OLED_ENABLE)
+# include "bcat_oled.h"
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+ /* Default layer: http://www.keyboard-layout-editor.com/#/gists/b6d0b16a913e7d1faeafc9fc751c413f */
+ [LAYER_DEFAULT] = LAYOUT(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_MPLY, KC_LCTL, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RALT, KC_MUTE
+ ),
+ /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/99dd65d3b857a272be7a1804b20bc266 */
+ [LAYER_LOWER] = LAYOUT(
+ MC_ALTT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ KY_CSPC, KY_ZMRST, KY_ZMOUT, KY_ZMIN, KC_WBAK, KC_WFWD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TILD,
+ _______, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, KC_LGUI, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/cf9e899867763dc45b65917ce4cf93ff */
+ [LAYER_RAISE] = LAYOUT(
+ KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11, KC_DEL,
+ _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/7eb0f1c437169f30cc18eac271ad2302 */
+ [LAYER_ADJUST] = LAYOUT(
+ _______, MU_TOG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, MU_MOD, KC_MPRV, KC_VOLD, KC_MNXT, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______,
+ _______, _______, _______, KC_MUTE, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______,
+ _______, _______, _______, _______, RGB_TOG, _______, _______, _______
+ ),
+ // clang-format on
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ switch (index) {
+ case 0:
+ /* Left encoder (scrolling) */
+ tap_code(clockwise ? KC_PGDN : KC_PGUP);
+ return false;
+ case 1:
+ /* Right encoder (volume) */
+ tap_code(clockwise ? KC_VOLU : KC_VOLD);
+ return false;
+ default:
+ return true;
+ }
+}
+
+#if defined(OLED_ENABLE)
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {
+ render_oled_layers();
+ oled_advance_page(/*clearPageRemainder=*/false);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_wpm(keyboard_state->wpm);
+ render_oled_pet(/*col=*/0, /*line=*/6, keyboard_state);
+}
+#endif
diff --git a/keyboards/yanghu/unicorne/keymaps/bcat/readme.md b/keyboards/yanghu/unicorne/keymaps/bcat/readme.md
new file mode 100644
index 0000000000..5c30911d5e
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/bcat/readme.md
@@ -0,0 +1,33 @@
+# bcat's Unicorne layout
+
+This ergo layout follows my preferred [split 3x6 + 3 thumb
+keys](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/split_3x6_3/bcat)
+layout, adding bindings for the two rotary encoders on the bottom row. (The
+left encoder scrolls vertically and the right encoder adjusts volume.) Also,
+since the Unicorne keyboard has a speaker, I added bindings on the adjust layer
+to activate and configure music mode. Finally, an adorable unicorn prances on
+the OLED, running faster the quicker you type.
+
+## Default layer
+
+![Default layer layout](https://i.imgur.com/Max5R0T.png)
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/b6d0b16a913e7d1faeafc9fc751c413f))
+
+## Lower layer
+
+![Lower layer layout](https://i.imgur.com/E8Cfowc.png)
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/99dd65d3b857a272be7a1804b20bc266))
+
+## Raise layer
+
+![Raise layer layout](https://i.imgur.com/KomdMyB.png)
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/cf9e899867763dc45b65917ce4cf93ff))
+
+## Adjust layer
+
+![Adjust layer layout](https://i.imgur.com/EtshZbn.png)
+
+([KLE](http://www.keyboard-layout-editor.com/#/gists/7eb0f1c437169f30cc18eac271ad2302))
diff --git a/keyboards/yanghu/unicorne/keymaps/bcat/rules.mk b/keyboards/yanghu/unicorne/keymaps/bcat/rules.mk
new file mode 100644
index 0000000000..e9a4fda1f7
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/bcat/rules.mk
@@ -0,0 +1 @@
+BCAT_OLED_PET = isda
diff --git a/keyboards/yanghu/unicorne/rules.mk b/keyboards/yanghu/unicorne/rules.mk
index 17296a9bc2..8968fb940a 100644
--- a/keyboards/yanghu/unicorne/rules.mk
+++ b/keyboards/yanghu/unicorne/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = yes # Audio output
diff --git a/keyboards/yasui/rules.mk b/keyboards/yasui/rules.mk
index e912b1df7f..bc14e746aa 100644
--- a/keyboards/yasui/rules.mk
+++ b/keyboards/yasui/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/yatara/drink_me/rules.mk b/keyboards/yatara/drink_me/rules.mk
index 61b03c131d..6dc87e01cb 100644
--- a/keyboards/yatara/drink_me/rules.mk
+++ b/keyboards/yatara/drink_me/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yd60mq/rules.mk b/keyboards/yd60mq/rules.mk
index 8fec082094..824b053a88 100644
--- a/keyboards/yd60mq/rules.mk
+++ b/keyboards/yd60mq/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yd68/keymaps/default/config.h b/keyboards/yd68/keymaps/default/config.h
deleted file mode 100644
index 405f935500..0000000000
--- a/keyboards/yd68/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2018 Ryan "Izzy" Bales
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-// place overrides here
diff --git a/keyboards/yd68/keymaps/default/keymap.c b/keyboards/yd68/keymaps/default/keymap.c
index fc6141f3be..c8b49c76a3 100644
--- a/keyboards/yd68/keymaps/default/keymap.c
+++ b/keyboards/yd68/keymaps/default/keymap.c
@@ -23,11 +23,11 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ansi( /* Base */
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,KC_HOME, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS,KC_END, \
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,KC_UP, KC_PGDN, \
- KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_RCTRL,KC_LEFT,KC_DOWN,KC_RGHT \
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS,KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_RCTRL,KC_LEFT,KC_DOWN,KC_RGHT
),
};
diff --git a/keyboards/yd68/rules.mk b/keyboards/yd68/rules.mk
index b43693882f..561e8f4ca1 100644
--- a/keyboards/yd68/rules.mk
+++ b/keyboards/yd68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yeehaw/rules.mk b/keyboards/yeehaw/rules.mk
index 34c4387797..43904f80cf 100644
--- a/keyboards/yeehaw/rules.mk
+++ b/keyboards/yeehaw/rules.mk
@@ -11,9 +11,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes
diff --git a/keyboards/ymd75/rev1/rules.mk b/keyboards/ymd75/rev1/rules.mk
index e2b35d63fa..816b0060c9 100644
--- a/keyboards/ymd75/rev1/rules.mk
+++ b/keyboards/ymd75/rev1/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
@@ -13,9 +15,6 @@ COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
-NKRO_ENABLE = no
-# Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
KEY_LOCK_ENABLE = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ymd75/rev2/rules.mk b/keyboards/ymd75/rev2/rules.mk
index e2b35d63fa..816b0060c9 100644
--- a/keyboards/ymd75/rev2/rules.mk
+++ b/keyboards/ymd75/rev2/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
@@ -13,9 +15,6 @@ COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
-NKRO_ENABLE = no
-# Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
KEY_LOCK_ENABLE = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ymd75/rev3/rules.mk b/keyboards/ymd75/rev3/rules.mk
index fbab065d48..258c4d3ff6 100644
--- a/keyboards/ymd75/rev3/rules.mk
+++ b/keyboards/ymd75/rev3/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymd96/rules.mk b/keyboards/ymd96/rules.mk
index 73e7ccc3d8..8dab58389a 100644
--- a/keyboards/ymd96/rules.mk
+++ b/keyboards/ymd96/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
@@ -17,6 +19,3 @@ RGBLIGHT_ENABLE = yes
WS2812_DRIVER = i2c
KEY_LOCK_ENABLE = yes
-
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/keyboards/ymdk/bface/rules.mk b/keyboards/ymdk/bface/rules.mk
index 3bff3ee31b..4dcdfe886a 100644
--- a/keyboards/ymdk/bface/rules.mk
+++ b/keyboards/ymdk/bface/rules.mk
@@ -4,7 +4,9 @@ MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadhid
-# build options
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
diff --git a/keyboards/ymdk/np24/u4rgb6/info.json b/keyboards/ymdk/np24/u4rgb6/info.json
index 1a107c0b98..fe5a940c08 100644
--- a/keyboards/ymdk/np24/u4rgb6/info.json
+++ b/keyboards/ymdk/np24/u4rgb6/info.json
@@ -81,7 +81,7 @@
{"x": 2.5, "y": 1},
{"x": 3.5, "y": 1},
{"x": 4.5, "y": 1},
- {"x": 5.5, "y": 1,},
+ {"x": 5.5, "y": 1},
{"x": 0, "y": 2, "w": 1.5},
{"x": 1.5, "y": 2},
diff --git a/keyboards/ymdk/np24/u4rgb6/rules.mk b/keyboards/ymdk/np24/u4rgb6/rules.mk
index fdbf3c60e7..95064b139d 100644
--- a/keyboards/ymdk/np24/u4rgb6/rules.mk
+++ b/keyboards/ymdk/np24/u4rgb6/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/sp64/keymaps/via/keymap.c b/keyboards/ymdk/sp64/keymaps/via/keymap.c
new file mode 100644
index 0000000000..14a0e5f1f8
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/via/keymap.c
@@ -0,0 +1,78 @@
+/* Copyright 2021 Adrian Fleiszer (@adrian-fleiszer)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┐ ┌-----┬-----┬-----┬-----┬-----┬-----┬----------┐
+ * │ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ = │ BkSp │
+ * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤
+ * │ Tab │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤
+ * │ Caps │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤
+ * │ LShift │ Z │ X │ C │ V │ B │ │ N │ M │ < │ > │ ? │ Sft │ Up │ Del │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ Ctrl │ Win │ Alt │ │ Fn │ │ │ Alt │ Win │ Lft │ Dwn │ Rgt │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[0] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BSPACE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRACKET, KC_RBRACKET, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_QUOTE, KC_ENTER,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_SPACE, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+/* Function
+ *
+ * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┐ ┌-----┬-----┬-----┬-----┬-----┬-----┬----------┐
+ * │ ` │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
+ * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┐ └┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[1] = LAYOUT(
+ KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+[3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/ymdk/sp64/keymaps/via/rules.mk b/keyboards/ymdk/sp64/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ymdk/sp64/rules.mk b/keyboards/ymdk/sp64/rules.mk
index d2c74bbe09..7d52d7ca78 100644
--- a/keyboards/ymdk/sp64/rules.mk
+++ b/keyboards/ymdk/sp64/rules.mk
@@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no # There is no speaker on this PCB
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/ymdk/wings/rules.mk b/keyboards/ymdk/wings/rules.mk
index bf9ede20bd..c104e9c542 100644
--- a/keyboards/ymdk/wings/rules.mk
+++ b/keyboards/ymdk/wings/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/wingshs/rules.mk b/keyboards/ymdk/wingshs/rules.mk
index bf9ede20bd..c104e9c542 100644
--- a/keyboards/ymdk/wingshs/rules.mk
+++ b/keyboards/ymdk/wingshs/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/ym68/rules.mk b/keyboards/ymdk/ym68/rules.mk
index 1a2408fb70..3b061c1108 100644
--- a/keyboards/ymdk/ym68/rules.mk
+++ b/keyboards/ymdk/ym68/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/ymd09/rules.mk b/keyboards/ymdk/ymd09/rules.mk
index ff96ae2fa9..c32dee5d0f 100644
--- a/keyboards/ymdk/ymd09/rules.mk
+++ b/keyboards/ymdk/ymd09/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/ymd40/v2/rules.mk b/keyboards/ymdk/ymd40/v2/rules.mk
index 449f2d14cc..7c64cc042f 100644
--- a/keyboards/ymdk/ymd40/v2/rules.mk
+++ b/keyboards/ymdk/ymd40/v2/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ymdk/ymd67/rules.mk b/keyboards/ymdk/ymd67/rules.mk
index 92d0c70aa1..d684f610e9 100644
--- a/keyboards/ymdk/ymd67/rules.mk
+++ b/keyboards/ymdk/ymd67/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ymdk_np21/rules.mk b/keyboards/ymdk_np21/rules.mk
index 611a7935c1..7316ceff6d 100644
--- a/keyboards/ymdk_np21/rules.mk
+++ b/keyboards/ymdk_np21/rules.mk
@@ -12,8 +12,6 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
diff --git a/keyboards/yncognito/batpad/rules.mk b/keyboards/yncognito/batpad/rules.mk
index 0f6abaa263..4e91c72930 100644
--- a/keyboards/yncognito/batpad/rules.mk
+++ b/keyboards/yncognito/batpad/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/yoichiro/lunakey_macro/rules.mk b/keyboards/yoichiro/lunakey_macro/rules.mk
index 419033f64c..a1392cf92f 100644
--- a/keyboards/yoichiro/lunakey_macro/rules.mk
+++ b/keyboards/yoichiro/lunakey_macro/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yoichiro/lunakey_mini/rules.mk b/keyboards/yoichiro/lunakey_mini/rules.mk
index 62691dc4f2..e76689a307 100644
--- a/keyboards/yoichiro/lunakey_mini/rules.mk
+++ b/keyboards/yoichiro/lunakey_mini/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yosino58/keymaps/default/keymap.c b/keyboards/yosino58/keymaps/default/keymap.c
index 2f55dc8e1b..915fb75922 100644
--- a/keyboards/yosino58/keymaps/default/keymap.c
+++ b/keyboards/yosino58/keymaps/default/keymap.c
@@ -47,12 +47,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |/ LOWER / / \ \ RAISE \ | | |
* `-----------------------------' '------------------------------'
*/
- [_QWERTY] = LAYOUT( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, \
- KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, \
- KC_LALT, ADJUST, LOWER, RAISE, KC_LBRC, KC_RBRC\
+ [_QWERTY] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
+ KC_LALT, ADJUST, LOWER, RAISE, KC_LBRC, KC_RBRC
),
/* LOWER
@@ -69,12 +69,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |/ LOWER / / \ \ \ | | |
* `-----------------------------' '------------------------------'
*/
- [_LOWER] = LAYOUT( \
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, \
- _______, KC_PSLS, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F12, \
- _______, KC_PAST, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, \
- _______, KC_PDOT, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, KC_LGUI, _______, XXXXXXX, KC_CLCK, KC_NLCK\
+ [_LOWER] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, KC_PSLS, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F12,
+ _______, KC_PAST, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
+ _______, KC_PDOT, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_LGUI, _______, XXXXXXX, KC_CLCK, KC_NLCK
),
@@ -92,12 +92,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |/ / / \ \ RAISE \ | | |
* `-----------------------------' '------------------------------'
*/
- [_RAISE] = LAYOUT( \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, \
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX \
+ [_RAISE] = LAYOUT(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX
),
/* ADJUST
@@ -114,12 +114,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |/ / / \ \ \ | | |
* `-----------------------------' '------------------------------'
*/
- [_ADJUST] = LAYOUT( \
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, \
- XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+ [_ADJUST] = LAYOUT(
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
+ XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
};
diff --git a/keyboards/yosino58/rules.mk b/keyboards/yosino58/rules.mk
index 8ba43d1db0..3d0f6b19e5 100644
--- a/keyboards/yosino58/rules.mk
+++ b/keyboards/yosino58/rules.mk
@@ -5,22 +5,19 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SUBPROJECT_rev1 = no
USE_I2C = yes
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
CUSTOM_MATRIX = yes
diff --git a/keyboards/yugo_m/model_m_101/rules.mk b/keyboards/yugo_m/model_m_101/rules.mk
index 41e7e023ff..143b8dfddc 100644
--- a/keyboards/yugo_m/model_m_101/rules.mk
+++ b/keyboards/yugo_m/model_m_101/rules.mk
@@ -13,10 +13,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yurei/rules.mk b/keyboards/yurei/rules.mk
index a079a5d484..9d8bcfa6fb 100644
--- a/keyboards/yurei/rules.mk
+++ b/keyboards/yurei/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yushakobo/navpad/10/10.c b/keyboards/yushakobo/navpad/10/10.c
new file mode 100644
index 0000000000..c1f6fc485d
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/10.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "10.h"
diff --git a/keyboards/yushakobo/navpad/10/10.h b/keyboards/yushakobo/navpad/10/10.h
new file mode 100644
index 0000000000..5fd02cd073
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/10.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "navpad_prefs.h"
+
+#if defined(KEYBOARD_yushakobo_navpad_10_rev0)
+# include "rev0.h"
+#elif defined(KEYBOARD_yushakobo_navpad_10_rev1)
+# include "rev1.h"
+#endif
diff --git a/keyboards/yushakobo/navpad/10/config.h b/keyboards/yushakobo/navpad/10/config.h
new file mode 100644
index 0000000000..c242ee60e2
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/config.h
@@ -0,0 +1,84 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define ENCODERS_PAD_A { B5 }
+#define ENCODERS_PAD_B { B6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D0, D1, D3, E6
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 9
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 132
+#define TAPPING_LAYER_TERM 90 \ No newline at end of file
diff --git a/keyboards/yushakobo/navpad/10/info.json b/keyboards/yushakobo/navpad/10/info.json
new file mode 100644
index 0000000000..370b7623f2
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "navpad 1.0",
+ "url": "https://shop.yushakobo.jp/products/navpad-10",
+ "maintainer": "yushakobo",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0},{"x": 1, "y": 0},{"x": 2, "y": 0},{"x": 3, "y": 0},
+ {"x": 0, "y": 1},{"x": 1, "y": 1},{"x": 2, "y": 1},{"x": 3, "y": 1},{"x": 4, "y": 1},{"x": 5, "y": 1},{"x": 6, "y": 1},
+ {"x": 0, "y": 2},{"x": 1, "y": 2},{"x": 2, "y": 2},{"x": 3, "y": 2},{"x": 4, "y": 2},{"x": 5, "y": 2},{"x": 6, "y": 2},
+ {"x": 3, "y": 3},{"x": 4, "y": 3},{"x": 5, "y": 3},{"x": 6, "y": 3},
+ {"x": 0, "y": 4},{"x": 1, "y": 4},{"x": 2, "y": 4},{"x": 3, "y": 4},{"x": 4, "y": 4},{"x": 5, "y": 4},{"x": 6, "y": 4},
+ {"x": 0, "y": 5},{"x": 1, "y": 5},{"x": 2, "y": 5},{"x": 3, "y": 5},{"x": 4, "y": 5},{"x": 5, "y": 5},{"x": 6, "y": 5}
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/yushakobo/navpad/10/keymaps/default/config.h b/keyboards/yushakobo/navpad/10/keymaps/default/config.h
new file mode 100644
index 0000000000..b4d2122ab4
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#ifdef RGB_DI_PIN
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_MAX_LAYERS 6
+
+#endif
diff --git a/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c b/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c
new file mode 100644
index 0000000000..772d4e6f2c
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/default/keymap.c
@@ -0,0 +1,92 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] =LAYOUT (
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_MUTE,
+ KC_INS, KC_HOME, KC_PGUP, KC_ESC, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ S(KC_TAB), KC_UP, KC_TAB, KC_P1, KC_P2, KC_P3, LT(1,KC_PENT),
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, TAP_00, KC_PDOT, LT(1,KC_PENT)
+ ),
+
+ [_FN1] =LAYOUT (
+ RESET, EEP_RST, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NLCK, KC_QUOT, KC_PEQL, KC_NO,
+ KC_CAPS, KC_NLCK, KC_SLCK, S(KC_9), KC_UP, S(KC_0), S(KC_SPC),
+ KC_LEFT, KC_BTN3, KC_RGHT, S(KC_SPC),
+ KC_TRNS, S(KC_ENT), KC_TRNS, KC_BSPC, KC_DOWN, KC_DEL, KC_TRNS,
+ KC_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS
+ ),
+
+ [_FN2] =LAYOUT (
+ RGB_TOG, RGB_MOD, RGB_RMOD, KC_NO,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+
+ [_FN3] =LAYOUT (
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+#ifdef RGBLIGHT_LAYERS
+# define LOCK_COLOR_1 HSV_TEAL
+
+const rgblight_segment_t PROGMEM navpad_capslock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_numlock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, LOCK_COLOR_1},
+ {5, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_scrolllock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, LOCK_COLOR_1},
+ {6, 1, LOCK_COLOR_1}
+);
+
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, host_keyboard_led_state().caps_lock);
+ rgblight_set_layer_state(1, (host_keyboard_led_state().num_lock && IS_LAYER_ON(_BASE)));
+ rgblight_set_layer_state(2, host_keyboard_led_state().scroll_lock);
+ return true;
+}
+
+const rgblight_segment_t* const PROGMEM navpad_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ navpad_capslock,
+ navpad_numlock,
+ navpad_scrolllock
+);
+
+void keyboard_post_init_user(void) {
+ rgblight_sethsv_noeeprom(HSV_WHITE);
+ // Enable the LED layers
+ rgblight_layers = navpad_rgb_layers;
+}
+#endif
diff --git a/keyboards/yushakobo/navpad/10/keymaps/default/readme.md b/keyboards/yushakobo/navpad/10/keymaps/default/readme.md
new file mode 100644
index 0000000000..3b45e937bc
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/default/readme.md
@@ -0,0 +1,80 @@
+# The default keymap for navpad 1.0
+
+### Base layer
+```
+ ,-------------------------------. ,-------.
+ | KC_PSCR | KC_SLCK | KC_PAUS | |KC_MUTE|
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_INS | KC_HOME | KC_PGUP | KC_ESC | KC_PSLS | KC_PAST | KC_PMNS |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_DEL | KC_END | KC_PGDN | KC_P7 | KC_P8 | KC_P9 | KC_PPLS |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_P4 | KC_P5 | KC_P6 | KC_PPLS |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | S(KC_TAB)| KC_UP | KC_TAB | KC_P1 | KC_P2 | KC_P3 | LT(1,KC_PENT) |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_LEFT | KC_DOWN | KC_RGHT | KC_P0 | TAP_00 | KC_PDOT | LT(1,KC_PENT) |
+ '----------------------------------------------------------------------------------`
+```
+### FN1 layer
+```
+ ,-------------------------------. ,-------.
+ | RESET | EEP_RST | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NLCK | KC_QUOT | KC_PEQL | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_CAPS | KC_NLCK | KC_SLCK | S(KC_9) | KC_UP | S(KC_0) | S(KC_SPC) |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_LEFT | KC_BTN3 | KC_RGHT | S(KC_SPC) |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_TRNS | S(KC_ENT)| KC_TRNS | KC_BSPC | KC_DOWN | KC_DEL | KC_TRNS |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS |
+ '----------------------------------------------------------------------------------`
+```
+### FN2 layer
+```
+ ,-------------------------------. ,-------.
+ | RGB_TOG | RGB_MOD | RGB_RMOD| | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | RGB_HUI | RGB_SAI | RGB_VAI | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | RGB_HUD | RGB_SAD | RGB_VAD | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------`
+```
+### FN3 layer
+```
+ ,-------------------------------. ,-------.
+ | KC_NO | KC_NO | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------`
+```
+
+## custom keycodes behaviour
+
+|keycodes|actual input|behaviour|
+|---|---|---|
+|TAP_00|"00"|tap_code(KC_P0) twice|
+
+## rotary encoder behaviour
+
+|Encoder No.1|CW|CCW|
+|---|---|---|
+|BASE|KC_VOLU|KC_VOLD|
+|FN1|rgblight_increse_hue()|rgblight_decrese_hue()|
+|FN2|rgblight_increse_sat()|rgblight_decrese_sat()|
diff --git a/keyboards/yushakobo/navpad/10/keymaps/via/config.h b/keyboards/yushakobo/navpad/10/keymaps/via/config.h
new file mode 100644
index 0000000000..b4d2122ab4
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/via/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#ifdef RGB_DI_PIN
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_MAX_LAYERS 6
+
+#endif
diff --git a/keyboards/yushakobo/navpad/10/keymaps/via/keymap.c b/keyboards/yushakobo/navpad/10/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bd75cc77dd
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/via/keymap.c
@@ -0,0 +1,105 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] =LAYOUT (
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_MUTE,
+ KC_INS, KC_HOME, KC_PGUP, KC_ESC, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ S(KC_TAB), KC_UP, KC_TAB, KC_P1, KC_P2, KC_P3, LT(1,KC_PENT),
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, LT(1,KC_PENT)
+ ),
+
+ [_FN1] =LAYOUT (
+ RESET, EEP_RST, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NLCK, KC_QUOT, KC_PEQL, KC_NO,
+ KC_CAPS, KC_NLCK, KC_SLCK, S(KC_9), KC_UP, S(KC_0), S(KC_SPC),
+ KC_LEFT, KC_BTN3, KC_RGHT, S(KC_SPC),
+ KC_TRNS, S(KC_ENT), KC_TRNS, KC_BSPC, KC_DOWN, KC_DEL, KC_TRNS,
+ KC_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS
+ ),
+
+ [_FN2] =LAYOUT (
+ RGB_TOG, RGB_MOD, RGB_RMOD, KC_NO,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+
+ [_FN3] =LAYOUT (
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code16(KC_WH_U);
+ } else {
+ tap_code16(KC_WH_D);
+ }
+ }
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_LAYERS
+# define LOCK_COLOR_1 HSV_TEAL
+
+const rgblight_segment_t PROGMEM navpad_capslock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_numlock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, LOCK_COLOR_1},
+ {5, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_scrolllock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, LOCK_COLOR_1},
+ {6, 1, LOCK_COLOR_1}
+);
+
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, host_keyboard_led_state().caps_lock);
+ rgblight_set_layer_state(1, (host_keyboard_led_state().num_lock && IS_LAYER_ON(_BASE)));
+ rgblight_set_layer_state(2, host_keyboard_led_state().scroll_lock);
+ return true;
+}
+
+const rgblight_segment_t* const PROGMEM navpad_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ navpad_capslock,
+ navpad_numlock,
+ navpad_scrolllock
+);
+
+void keyboard_post_init_user(void) {
+ rgblight_sethsv_noeeprom(HSV_WHITE);
+ // Enable the LED layers
+ rgblight_layers = navpad_rgb_layers;
+}
+#endif
diff --git a/keyboards/yushakobo/navpad/10/keymaps/via/readme.md b/keyboards/yushakobo/navpad/10/keymaps/via/readme.md
new file mode 100644
index 0000000000..f6ccaeee9e
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/via/readme.md
@@ -0,0 +1,72 @@
+# The via keymap for navpad 1.0
+
+### Base layer
+```
+ ,-------------------------------. ,-------.
+ | KC_PSCR | KC_SLCK | KC_PAUS | |KC_MUTE|
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_INS | KC_HOME | KC_PGUP | KC_ESC | KC_PSLS | KC_PAST | KC_PMNS |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_DEL | KC_END | KC_PGDN | KC_P7 | KC_P8 | KC_P9 | KC_PPLS |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_P4 | KC_P5 | KC_P6 | KC_PPLS |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | S(KC_TAB)| KC_UP | KC_TAB | KC_P1 | KC_P2 | KC_P3 | LT(1,KC_PENT) |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_LEFT | KC_DOWN | KC_RGHT | KC_P0 | KC_P0 | KC_PDOT | LT(1,KC_PENT) |
+ '----------------------------------------------------------------------------------`
+```
+### FN1 layer
+```
+ ,-------------------------------. ,-------.
+ | RESET | EEP_RST | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NLCK | KC_QUOT | KC_PEQL | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_CAPS | KC_NLCK | KC_SLCK | S(KC_9) | KC_UP | S(KC_0) | S(KC_SPC) |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_LEFT | KC_BTN3 | KC_RGHT | S(KC_SPC) |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_TRNS | S(KC_ENT)| KC_TRNS | KC_BSPC | KC_DOWN | KC_DEL | KC_TRNS |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS |
+ '----------------------------------------------------------------------------------`
+```
+### FN2 layer
+```
+ ,-------------------------------. ,-------.
+ | RGB_TOG | RGB_MOD | RGB_RMOD| | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | RGB_HUI | RGB_SAI | RGB_VAI | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | RGB_HUD | RGB_SAD | RGB_VAD | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------`
+```
+### FN3 layer
+```
+ ,-------------------------------. ,-------.
+ | KC_NO | KC_NO | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------`
+```
+
+## rotary encoder behaviour
+
+|Encoder No.1|CW|CCW|
+|---|---|---|
+|BASE|tap_code16(KC_WH_U)|tap_code16(KC_WH_D)|
diff --git a/keyboards/yushakobo/navpad/10/keymaps/via/rules.mk b/keyboards/yushakobo/navpad/10/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/yushakobo/navpad/10/readme.md b/keyboards/yushakobo/navpad/10/readme.md
new file mode 100644
index 0000000000..a330003a55
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/readme.md
@@ -0,0 +1,27 @@
+# navpad 1.0
+
+![navpad_10](https://imgur.com/zxElDdWh.jpg)
+
+Useful and easy to build numpad with nav-cluster
+
+* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
+* Hardware Supported: NavPad 1.0 PCB, Pro Micro
+* Hardware Availability: https://shop.yushakobo.jp/products/navpad-10
+
+Make example for this keyboard (after setting up your build environment):
+
+ make yushakobo/navpad/10:default
+
+Flashing example for this keyboard:
+
+ make yushakobo/navpad/10:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/yushakobo/navpad/10/rev0/config.h b/keyboards/yushakobo/navpad/10/rev0/config.h
new file mode 100644
index 0000000000..5ebdda599a
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev0/config.h
@@ -0,0 +1,45 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3265
+#define PRODUCT_ID 0x0008
+#define DEVICE_VER 0x0000
+#define MANUFACTURER yushakobo
+#define PRODUCT navpad 1.0
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, D0 }
+#define MATRIX_COL_PINS { F4, F5, F6, B2, B3, B1, F7 }
+#define UNUSED_PIN { D1 }
diff --git a/keyboards/yushakobo/navpad/10/rev0/rev0.c b/keyboards/yushakobo/navpad/10/rev0/rev0.c
new file mode 100644
index 0000000000..c1feab87a3
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev0/rev0.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev0.h"
diff --git a/keyboards/yushakobo/navpad/10/rev0/rev0.h b/keyboards/yushakobo/navpad/10/rev0/rev0.h
new file mode 100644
index 0000000000..97a651bc1c
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev0/rev0.h
@@ -0,0 +1,44 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, k14, k15, k16, \
+ k20, k21, k22, k23, k24, k25, k26, \
+ k33, k34, k35, k36, \
+ k40, k41, k42, k43, k44, k45, k46, \
+ k50, k51, k52, k53, k54, k55, k56 \
+ ) \
+ {\
+ { k00, k01, k02, k13, k14, k15, k16 }, \
+ { k10, k11, k12, k23, k24, k25, k26 }, \
+ { k20, k21, k22, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, k44, k45, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { KC_NO, KC_NO, k03, KC_NO, KC_NO, KC_NO, KC_NO } \
+ }
diff --git a/keyboards/yushakobo/navpad/10/rev0/rules.mk b/keyboards/yushakobo/navpad/10/rev0/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev0/rules.mk
diff --git a/keyboards/yushakobo/navpad/10/rev1/config.h b/keyboards/yushakobo/navpad/10/rev1/config.h
new file mode 100644
index 0000000000..40bb31b156
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev1/config.h
@@ -0,0 +1,49 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3265
+#define PRODUCT_ID 0x0008
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yushakobo
+#define PRODUCT "navpad 1.0"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 6
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, F4 }
+#define MATRIX_COL_PINS { F5, F6, B2, B3, B1, F7 }
+#define UNUSED_PIN { D1, D0 }
+
+#ifdef RGB_DI_PIN
+# define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 8, 7 }
+#endif
diff --git a/keyboards/yushakobo/navpad/10/rev1/rev1.c b/keyboards/yushakobo/navpad/10/rev1/rev1.c
new file mode 100644
index 0000000000..bf47612035
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rev1.h"
diff --git a/keyboards/yushakobo/navpad/10/rev1/rev1.h b/keyboards/yushakobo/navpad/10/rev1/rev1.h
new file mode 100644
index 0000000000..50fd54a026
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev1/rev1.h
@@ -0,0 +1,44 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, k14, k15, k16, \
+ k20, k21, k22, k23, k24, k25, k26, \
+ k33, k34, k35, k36, \
+ k40, k41, k42, k43, k44, k45, k46, \
+ k50, k51, k52, k53, k54, k55, k56 \
+ ) \
+ {\
+ { k01, k02, k13, k14, k15, k16 }, \
+ { k11, k12, k23, k24, k25, k26 }, \
+ { k21, k22, k33, k34, k35, k36 }, \
+ { k41, k42, k43, k44, k45, k46 }, \
+ { k51, k52, k53, k54, k55, k56 }, \
+ { k00, k03, k10, k20, k40, k50 } \
+ }
diff --git a/keyboards/yushakobo/navpad/10/rev1/rules.mk b/keyboards/yushakobo/navpad/10/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev1/rules.mk
diff --git a/keyboards/yushakobo/navpad/10/rules.mk b/keyboards/yushakobo/navpad/10/rules.mk
new file mode 100644
index 0000000000..53fb0ec174
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
+
+SRC += navpad_prefs.c
+DEFAULT_FOLDER = yushakobo/navpad/10/rev1
diff --git a/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.c b/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.c
new file mode 100644
index 0000000000..8be5220d56
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "10_helix_r.h"
diff --git a/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.h b/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.h
new file mode 100644
index 0000000000..53e32fd6e9
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/10_helix_r.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "navpad_prefs.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, \
+ k10, k11, k12, k13, k14, k15, k16, R10, R11, R12, R13, R14, R15,\
+ k20, k21, k22, k23, k24, k25, k26, R20, R21, R22, R23, R24, R25,\
+ k33, k34, k35, k36, R30, R31, R32, R33, R34, R35,\
+ k40, k41, k42, k43, k44, k45, k46, R46, R40, R41, R42, R43, R44, R45,\
+ k50, k51, k52, k53, k54, k55, k56, R56, R50, R51, R52, R53, R54, R55\
+ ) \
+ {\
+ { k01, k02, k13, k14, k15, k16 }, \
+ { k11, k12, k23, k24, k25, k26 }, \
+ { k21, k22, k33, k34, k35, k36 }, \
+ { k41, k42, k43, k44, k45, k46 }, \
+ { k51, k52, k53, k54, k55, k56 }, \
+ { k00, k03, k10, k20, k40, k50 }, \
+ { R15, R14, R13, R12, R11, R10, KC_NO }, \
+ { R25, R24, R23, R22, R21, R20, KC_NO }, \
+ { R35, R34, R33, R32, R31, R30, KC_NO }, \
+ { R45, R44, R43, R42, R41, R40, R46 }, \
+ { R55, R54, R53, R52, R51, R50, R56 } \
+ }
diff --git a/keyboards/yushakobo/navpad/10_helix_r/config.h b/keyboards/yushakobo/navpad/10_helix_r/config.h
new file mode 100644
index 0000000000..2d62885328
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/config.h
@@ -0,0 +1,126 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x3265
+#define PRODUCT_ID 0x0008
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yushakobo
+#define PRODUCT "navpad 1.0 with helix keyboard"
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, F4 }
+#define MATRIX_ROW_PINS_RIGHT { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F5, F6, B2, B3, B1, F7, NO_PIN }
+#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2 }
+#define UNUSED_PIN { D0, D1 }
+
+#define EE_HANDS
+
+#ifdef RGB_DI_PIN
+# define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, 6, 8, 7, \//navpad side
+ 9, 10, 11, 12, 13, 14, \//helix side
+ 20, 19, 18, 17, 16, 15, \
+ 21, 22, 23, 24, 25, 26, \
+ 33, 32, 31, 30, 29, 28, 27, \
+ 34, 35, 36, 37, 38, 39, 40 }
+#endif
+
+#define ENCODERS_PAD_A { B5 }
+#define ENCODERS_PAD_B { B6 }
+
+#define ENCODERS_PAD_A_RIGHT { B6 }
+#define ENCODERS_PAD_B_RIGHT { B5 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D0, D1, D3, E6
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 9+32
+# define RGBLED_SPLIT { 9, 32 }
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 132
+#define TAPPING_LAYER_TERM 90 \ No newline at end of file
diff --git a/keyboards/yushakobo/navpad/10_helix_r/info.json b/keyboards/yushakobo/navpad/10_helix_r/info.json
new file mode 100644
index 0000000000..98e2314c91
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "navpad 1.0 w/ helix right hand side",
+ "url": "",
+ "maintainer": "yushakobo",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0},{"x": 1, "y": 0},{"x": 2, "y": 0},{"x": 3, "y": 0},
+ {"x": 0, "y": 1},{"x": 1, "y": 1},{"x": 2, "y": 1},{"x": 3, "y": 1},{"x": 4, "y": 1},{"x": 5, "y": 1},{"x": 6, "y": 1}, {"x": 8, "y": 1},{"x": 9, "y": 1},{"x": 10, "y": 1},{"x": 11, "y": 1},{"x": 12, "y": 1},{"x": 13, "y": 1},
+ {"x": 0, "y": 2},{"x": 1, "y": 2},{"x": 2, "y": 2},{"x": 3, "y": 2},{"x": 4, "y": 2},{"x": 5, "y": 2},{"x": 6, "y": 2}, {"x": 8, "y": 2},{"x": 9, "y": 2},{"x": 10, "y": 2},{"x": 11, "y": 2},{"x": 12, "y": 2},{"x": 13, "y": 2},
+ {"x": 3, "y": 3},{"x": 4, "y": 3},{"x": 5, "y": 3},{"x": 6, "y": 3}, {"x": 8, "y": 3},{"x": 9, "y": 3},{"x": 10, "y": 3},{"x": 11, "y": 3},{"x": 12, "y": 3},{"x": 13, "y": 3},
+ {"x": 0, "y": 4},{"x": 1, "y": 4},{"x": 2, "y": 4},{"x": 3, "y": 4},{"x": 4, "y": 4},{"x": 5, "y": 4},{"x": 6, "y": 4},{"x": 7, "y": 4},{"x": 8, "y": 4},{"x": 9, "y": 4},{"x": 10, "y": 4},{"x": 11, "y": 4},{"x": 12, "y": 4},{"x": 13, "y": 4},
+ {"x": 0, "y": 5},{"x": 1, "y": 5},{"x": 2, "y": 5},{"x": 3, "y": 5},{"x": 4, "y": 5},{"x": 5, "y": 5},{"x": 6, "y": 5},{"x": 7, "y": 5},{"x": 8, "y": 5},{"x": 9, "y": 5},{"x": 10, "y": 5},{"x": 11, "y": 5},{"x": 12, "y": 5},{"x": 13, "y": 5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/config.h b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/config.h
new file mode 100644
index 0000000000..b4d2122ab4
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 yushakobo
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#ifdef RGB_DI_PIN
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_MAX_LAYERS 6
+
+#endif
diff --git a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4753aa6ee5
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/keymap.c
@@ -0,0 +1,94 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] =LAYOUT (
+ KC_PSCR, KC_SLCK, KC_PAUS, KC_MUTE,
+ KC_INS, KC_HOME, KC_PGUP, KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ S(KC_TAB), KC_UP, KC_TAB, KC_P1, KC_P2, KC_P3, LT(1,KC_PENT), KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, LT(1,KC_PENT), LT(1,KC_SPC),LT(2,KC_ENT),KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [_FN1] =LAYOUT (
+ RESET, EEP_RST, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NLCK, KC_QUOT, KC_PEQL, KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_DEL,
+ KC_CAPS, KC_NLCK, KC_SLCK, S(KC_9), KC_UP, S(KC_0), S(KC_SPC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC,
+ KC_LEFT, KC_BTN3, KC_RGHT, S(KC_SPC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_QUOT,
+ KC_TRNS, S(KC_ENT), KC_TRNS, KC_BSPC, KC_DOWN, KC_DEL, KC_TRNS, KC_RBRC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT,
+ KC_BTN1, KC_ENT, S(KC_SPC),LT(2,KC_SPC),KC_SPC, KC_COMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [_FN2] =LAYOUT (
+ RGB_TOG, RGB_MOD, RGB_RMOD, KC_NO,
+ RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+
+ [_FN3] =LAYOUT (
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RBRC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+#ifdef RGBLIGHT_LAYERS
+# define LOCK_COLOR_1 HSV_TEAL
+
+const rgblight_segment_t PROGMEM navpad_capslock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 1, LOCK_COLOR_1},
+ {15, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_numlock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, LOCK_COLOR_1},
+ {5, 1, LOCK_COLOR_1},
+ {14, 1, LOCK_COLOR_1}
+);
+
+const rgblight_segment_t PROGMEM navpad_scrolllock[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 1, LOCK_COLOR_1},
+ {6, 1, LOCK_COLOR_1},
+ {26, 1, LOCK_COLOR_1}
+);
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, host_keyboard_led_state().caps_lock);
+ rgblight_set_layer_state(1, (host_keyboard_led_state().num_lock && IS_LAYER_ON(_BASE)));
+ rgblight_set_layer_state(2, host_keyboard_led_state().scroll_lock);
+ return true;
+}
+
+const rgblight_segment_t* const PROGMEM navpad_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ navpad_capslock,
+ navpad_numlock,
+ navpad_scrolllock
+);
+
+void keyboard_post_init_user(void) {
+ rgblight_sethsv_noeeprom(HSV_WHITE);
+ // Enable the LED layers
+ rgblight_layers = navpad_rgb_layers;
+}
+#endif
diff --git a/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md
new file mode 100644
index 0000000000..640f8056c0
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/keymaps/default/readme.md
@@ -0,0 +1,86 @@
+# The default keymap for navpad 1.0 with helix (right hand side)
+
+### Base layer
+```
+ ,-------------------------------. ,-------.
+ | KC_PSCR | KC_SLCK | KC_PAUS | |KC_MUTE|
+ |----------+----------+----------+-------------------------------------------------. ,-----------------------------------------------------------------------.
+ | KC_INS | KC_HOME | KC_PGUP | KC_ESC | KC_PSLS | KC_PAST | KC_PMNS | | KC_6 | KC_7 | KC_8 | KC_9 | KC_0 | KC_DEL |
+ |----------+----------+----------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_DEL | KC_END | KC_PGDN | KC_P7 | KC_P8 | KC_P9 | KC_PPLS | | KC_Y | KC_U | KC_I | KC_O | KC_P | KC_BSPC |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_P4 | KC_P5 | KC_P6 | KC_PPLS | | KC_H | KC_J | KC_K | KC_L | KC_SCLN | KC_QUOT |
+ ,--------------------------------+----------+-----------+----------+---------------| ,-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | S(KC_TAB)| KC_UP | KC_TAB | KC_P1 | KC_P2 | KC_P3 | LT(1,KC_PENT) | | KC_RBRC | KC_N | KC_M | KC_COMM | KC_DOT | KC_SLSH | KC_ENT |
+ |----------+----------+----------+----------+-----------+----------+---------------| |-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_LEFT | KC_DOWN | KC_RGHT | KC_P0 | TAP_00 | KC_PDOT | LT(1,KC_PENT) | | LT(1,KC_SPC)|LT(2,KC_ENT)| KC_NO | KC_LEFT | KC_DOWN | KC_UP | KC_RGHT |
+ '----------------------------------------------------------------------------------` '-------------------------------------------------------------------------------------`
+```
+### FN1 layer
+```
+ ,-------------------------------. ,-------.
+ | RESET | EEP_RST | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------. ,-----------------------------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NLCK | KC_QUOT | KC_PEQL | KC_NO | | KC_1 | KC_2 | KC_3 | KC_4 | KC_5 | KC_DEL |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_CAPS | KC_NLCK | KC_SLCK | S(KC_9) | KC_UP | S(KC_0) | S(KC_SPC) | | KC_Q | KC_W | KC_E | KC_R | KC_T | KC_BSPC |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_LEFT | KC_BTN3 | KC_RGHT | S(KC_SPC) | | KC_A | KC_S | KC_D | KC_F | KC_G | KC_QUOT |
+ ,--------------------------------+----------+-----------+----------+---------------| ,-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_TRNS | S(KC_ENT)| KC_TRNS | KC_BSPC | KC_DOWN | KC_DEL | KC_TRNS | | KC_RBRC | KC_Z | KC_X | KC_C | KC_V | KC_B | KC_ENT |
+ |----------+----------+----------+----------+-----------+----------+---------------| |-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_BTN1 | KC_ENT |S(KC_SPC)|LT(2,KC_SPC)|KC_SPC | KC_COMM | KC_TRNS | | KC_TRNS | KC_TRNS | KC_NO | KC_LEFT | KC_DOWN | KC_UP | KC_RGHT |
+ '----------------------------------------------------------------------------------` '-------------------------------------------------------------------------------------`
+```
+### FN2 layer
+```
+ ,-------------------------------. ,-------.
+ | RGB_TOG | RGB_MOD | RGB_RMOD| | KC_NO |
+ |----------+----------+----------+-------------------------------------------------. ,-----------------------------------------------------------------------.
+ | RGB_HUI | RGB_SAI | RGB_VAI | KC_NO | KC_NO | KC_NO | KC_NO | | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | RGB_HUD | RGB_SAD | RGB_VAD | KC_NO | KC_NO | KC_NO | KC_NO | | KC_BSPC | KC_DEL | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | | KC_LEFT | KC_DOWN | KC_UP | KC_RGHT | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------| ,-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_RBRC | KC_HOME | KC_PGDN | KC_PGUP | KC_END | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------| |-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_TRNS | KC_TRNS | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------` '-------------------------------------------------------------------------------------`
+```
+### FN3 layer
+```
+ ,-------------------------------. ,-------.
+ | KC_NO | KC_NO | KC_NO | | KC_NO |
+ |----------+----------+----------+-------------------------------------------------. ,-----------------------------------------------------------------------.
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ `--------------------------------+----------+-----------+----------+---------------| |------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ ,--------------------------------+----------+-----------+----------+---------------| ,-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_RBRC | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ |----------+----------+----------+----------+-----------+----------+---------------| |-------------+------------+----------+-----------+-----------+-----------+-----------|
+ | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO | | KC_TRNS | KC_TRNS | KC_NO | KC_NO | KC_NO | KC_NO | KC_NO |
+ '----------------------------------------------------------------------------------` '-------------------------------------------------------------------------------------`
+```
+
+## custom keycodes behaviour
+
+|keycodes|actual input|behaviour|
+|---|---|---|
+|TAP_00|"00"|tap_code(KC_P0) twice|
+
+## rotary encoder behaviour
+
+|Encoder No.1|CW|CCW|
+|---|---|---|
+|BASE|KC_VOLU|KC_VOLD|
+|FN1|rgblight_increse_hue()|rgblight_decrese_hue()|
+|FN2|rgblight_increse_sat()|rgblight_decrese_sat()|
+
+|Encoder No.2|CW|CCW|
+|---|---|---|
+|BASE|]|[|
+|FN1|)|(|
+|FN2|}|{|
diff --git a/keyboards/yushakobo/navpad/10_helix_r/readme.md b/keyboards/yushakobo/navpad/10_helix_r/readme.md
new file mode 100644
index 0000000000..99fa83c62d
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/readme.md
@@ -0,0 +1,33 @@
+# navpad 1.0 with Helix (Right hand side)
+
+![10_helix_r](https://imgur.com/ehTI37h.jpg)
+
+Navpad connected with helix keyboard (Right Side)
+
+* Keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
+* Hardware Supported: Navpad 1.0 PCB and Helix PCB, Pro Micro
+* Hardware Availability: https://shop.yushakobo.jp/products/navpad-10
+
+Make example for this keyboard (after setting up your build environment):
+
+ make yushakobo/navpad/10_helix_r:default
+
+Flashing examples for this keyboard...
+
+Helix side:
+
+ make yushakobo/navpad/10_helix_r:default:avrdude-split-right
+
+Navpad side:
+
+ make yushakobo/navpad/10_helix_r:default:avrdude-split-left
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/yushakobo/navpad/10_helix_r/rules.mk b/keyboards/yushakobo/navpad/10_helix_r/rules.mk
new file mode 100644
index 0000000000..54598940df
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10_helix_r/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+SPLIT_KEYBOARD = yes
+ENCODER_ENABLE = yes
+
+SRC += navpad_prefs.c
diff --git a/keyboards/yushakobo/navpad/navpad_prefs.c b/keyboards/yushakobo/navpad/navpad_prefs.c
new file mode 100644
index 0000000000..fd2a7b0789
--- /dev/null
+++ b/keyboards/yushakobo/navpad/navpad_prefs.c
@@ -0,0 +1,104 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) { return false; }
+ switch (keycode) {
+ case TAP_00:
+ if (record->event.pressed){
+ tap_code(KC_P0);
+ tap_code(KC_P0);
+ }
+ break;
+
+ default:
+ break;
+ }
+ return true;
+}
+
+bool led_update_kb(led_t led_state) {
+ return led_update_user(led_state);
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) { /* Navpad side encoder */
+ switch (get_highest_layer(layer_state|default_layer_state)) {
+ case _BASE:
+ if (clockwise) {
+ tap_code16(KC_VOLU);
+ } else {
+ tap_code16(KC_VOLD);
+ }
+ break;
+
+ case _FN1:
+ if (clockwise) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ break;
+
+ case _FN2:
+ if (clockwise) {
+ rgblight_increase_sat();
+ } else {
+ rgblight_decrease_sat();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ if (index == 1) { /* Helix side encoder */
+ switch (get_highest_layer(layer_state|default_layer_state)) {
+ case _BASE:
+ if (clockwise) {
+ tap_code(KC_RBRC);
+ } else {
+ tap_code(KC_LBRC);
+ }
+ break;
+
+ case _FN1:
+ if (clockwise) {
+ tap_code16(KC_RPRN);
+ } else {
+ tap_code16(KC_LPRN);
+ }
+ break;
+
+ case _FN2:
+ if (clockwise) {
+ tap_code16(KC_RCBR);
+ } else {
+ tap_code16(KC_LCBR);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ return false;
+ }
+#endif
diff --git a/keyboards/yushakobo/navpad/navpad_prefs.h b/keyboards/yushakobo/navpad/navpad_prefs.h
new file mode 100644
index 0000000000..866b137c81
--- /dev/null
+++ b/keyboards/yushakobo/navpad/navpad_prefs.h
@@ -0,0 +1,30 @@
+/* Copyright 2021 yushakobo
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+enum custom_keycodes {
+ TAP_00 = SAFE_RANGE
+};
+
+enum layer_name {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
diff --git a/keyboards/yushakobo/navpad/readme.md b/keyboards/yushakobo/navpad/readme.md
new file mode 100644
index 0000000000..4825ced4e5
--- /dev/null
+++ b/keyboards/yushakobo/navpad/readme.md
@@ -0,0 +1,14 @@
+# Navpad
+
+![navpad_10](https://imgur.com/zxElDdWh.jpg)
+
+Useful numpad with navigation cluster
+
+* keyboard Maintainer: [yushakobo](https://github.com/yushakobo)
+* Hardware Supported: Navpad PCBs, Pro Micro
+
+For each build, please check these links down below.
+
+* [navpad 1.0](10/): Entry, easy to build
+* [navpad 1.0 w/ Helix Righthand](10_helix_r/): Sample for extensions
+
diff --git a/keyboards/yushakobo/quick17/rules.mk b/keyboards/yushakobo/quick17/rules.mk
index fc036091a0..297d482f35 100644
--- a/keyboards/yushakobo/quick17/rules.mk
+++ b/keyboards/yushakobo/quick17/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yushakobo/quick7/rules.mk b/keyboards/yushakobo/quick7/rules.mk
index 0d700a132e..c1bb970bac 100644
--- a/keyboards/yushakobo/quick7/rules.mk
+++ b/keyboards/yushakobo/quick7/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/yynmt/acperience12/rules.mk b/keyboards/yynmt/acperience12/rules.mk
index 274a17b4f8..3a22654621 100644
--- a/keyboards/yynmt/acperience12/rules.mk
+++ b/keyboards/yynmt/acperience12/rules.mk
@@ -6,10 +6,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/z12/config.h b/keyboards/z12/config.h
index 7f897b795d..68aff7acf7 100644
--- a/keyboards/z12/config.h
+++ b/keyboards/z12/config.h
@@ -25,9 +25,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MANUFACTURER zigotica
#define PRODUCT z12
-#define ENCODERS_PAD_A { B4, B2 }
-#define ENCODERS_PAD_B { B5, B6 }
-#define ENCODER_DIRECTION_FLIP
+#define ENCODERS_PAD_A { B5, B6 }
+#define ENCODERS_PAD_B { B4, B2 }
/* key matrix size */
#define MATRIX_ROWS 4
diff --git a/keyboards/z12/info.json b/keyboards/z12/info.json
index 3ae8937571..2395401e47 100644
--- a/keyboards/z12/info.json
+++ b/keyboards/z12/info.json
@@ -19,7 +19,7 @@
{"x": 0.5, "y": 3},
{"x": 1.5, "y": 3},
- {"x": 2.5, "y": 3},
+ {"x": 2.5, "y": 3}
]
}
}
diff --git a/keyboards/z12/keymaps/zigotica/encoder.c b/keyboards/z12/keymaps/zigotica/encoder.c
index 49a3d859b6..f55b9b5ae9 100644
--- a/keyboards/z12/keymaps/zigotica/encoder.c
+++ b/keyboards/z12/keymaps/zigotica/encoder.c
@@ -48,12 +48,8 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
// Cycle through Tabs
if (clockwise) {
tap_code16(C(KC_TAB));
- /* register_code16(G(KC_RCBR)); */
- /* unregister_code16(G(KC_RCBR)); */
} else {
tap_code16(S(C(KC_TAB)));
- /* register_code16(G(KC_LCBR)); */
- /* unregister_code16(G(KC_LCBR)); */
}
} else { // RIGHT
// Scroll up/down
@@ -68,11 +64,11 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
break;
case _FIGMA:
if (index == 0) { // LEFT
- // Volume control.
+ // Cycle through Tabs
if (clockwise) {
- tap_code(KC_VOLU);
+ tap_code16(C(KC_TAB));
} else {
- tap_code(KC_VOLD);
+ tap_code16(S(C(KC_TAB)));
}
} else { // RIGHT
// Zoom in/out
@@ -89,7 +85,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
}
break;
- case _TERMINAL:
+ case _BASE:
default:
if (index == 0) { // LEFT
// Volume control.
diff --git a/keyboards/z12/keymaps/zigotica/keymap.c b/keyboards/z12/keymaps/zigotica/keymap.c
index 7e969de96e..ef01561f1a 100644
--- a/keyboards/z12/keymaps/zigotica/keymap.c
+++ b/keyboards/z12/keymaps/zigotica/keymap.c
@@ -16,25 +16,73 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "zigotica.h"
+#include "raw_hid.h"
+
+#ifdef RAW_ENABLE
+void raw_hid_receive(uint8_t* data, uint8_t length) {
+ layer_clear();
+ if (data[0] == 99) {
+ layer_on(_BASE);
+ }
+ else {
+ layer_on(data[0]);
+ }
+}
+#endif
// Custom Keycodes
-#define MODE_1 TO(_TERMINAL)
+#define MODE_1 TO(_BASE)
#define MODE_2 TO(_FIGMA)
#define MODE_3 TO(_BROWSER)
#define MODE_4 TO(_VIM)
enum custom_keycodes {
- VIM_SIP = SAFE_RANGE
+ VIM_SIF = SAFE_RANGE,
+ VIM_SIP,
+ VIM_RIF,
+ VIM_RIP,
+ VIM_NEW
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case VIM_SIP:
+ case VIM_SIF:// Search in File
+ if (record->event.pressed) {
+ register_code(KC_ESC);
+ tap_code(KC_SLASH);
+ } else { // released
+ unregister_code(KC_ESC);
+ }
+ break;
+ case VIM_SIP:// Search in Project
if (record->event.pressed) {
register_code(KC_ESC);
SEND_STRING(":Ag ");
- } else {
- // released
+ } else { // released
+ unregister_code(KC_ESC);
+ }
+ break;
+ case VIM_RIF:// Replace in File
+ if (record->event.pressed) {
+ register_code(KC_ESC);
+ SEND_STRING(":%s/a/b/g");
+ } else { // released
+ unregister_code(KC_ESC);
+ }
+ break;
+ case VIM_RIP:// Replace in Project
+ if (record->event.pressed) {
+ register_code(KC_ESC);
+ SEND_STRING(":cdo %s/a/b/g");
+ } else { // released
+ unregister_code(KC_ESC);
+ }
+ break;
+ case VIM_NEW:// New buffer
+ if (record->event.pressed) {
+ SEND_STRING("\e:vnew\n");
+ } else { // released
+ unregister_code(KC_ENT);
unregister_code(KC_ESC);
}
break;
@@ -44,83 +92,83 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
- * TERMINAL Layer
+ * BASE Layer
*
* ,-----------------------------.
- * | | TERM | FIGM | |
+ * | | BASE | FIGM | |
* |-------+------+------+-------|
- * | VOL | BROW | VIM | SCROLL|
+ * |VOL/PLY| BROW | VIM | SCROLL|
* |-------+------+------+-------|
* |-------+-------+-------|
- * | MEDIA | o | o |
+ * | o | o | o |
* |-------+-------+-------|
* | o | o | o |
* |-------+-------+-------|
*/
- [_TERMINAL] = LAYOUT(
+ [_BASE] = LAYOUT(
MODE_1, MODE_2,
ZK_MEDIA, MODE_3, MODE_4, _______,
_______, _______, _______,
_______, _______, _______
),
/*
- * VIM Layer
+ * FIGMA Layer
*
* ,-----------------------------.
- * | | TERM | FIGM | |
+ * | | BASE | FIGM | |
* |-------+------+------+-------|
- * |BUFFER | BROW | VIM | SCROLL|
+ * | TABS | BROW | VIM | ZOOM |
* |-------+------+------+-------|
* |-------+-------+-------|
- * |SEARCH | o | o |
+ * |ZOOMFIT| GRIDS | FULL |
* |-------+-------+-------|
- * | o | o | o |
+ * |ZOOM100| NEXT | COLOR |
* |-------+-------+-------|
*/
- [_VIM] = LAYOUT(
+ [_FIGMA] = LAYOUT(
_______, _______,
_______, _______, _______, _______,
- VIM_SIP, _______, _______,
- _______, _______, _______
+ LSFT(KC_1), LCTL(KC_G), LGUI(KC_BSLS),
+ LSFT(KC_0), KC_N, LCTL(KC_C)
),
/*
- * FIGMA Layer
+ * BROWSER Layer
*
* ,-----------------------------.
- * | | TERM | FIGM | |
+ * | | BASE | FIGM | |
* |-------+------+------+-------|
- * | VOL | BROW | VIM | ZOOM |
+ * | TABS | BROW | VIM | SCROLL|
* |-------+------+------+-------|
* |-------+-------+-------|
- * | ZOOM | GRIDS | FULL |
+ * |SEARCH | BOOKM | DEVTL |
* |-------+-------+-------|
- * | o | o | o |
+ * |ZOOM100| MUTE | READ |
* |-------+-------+-------|
*/
- [_FIGMA] = LAYOUT(
+ [_BROWSER] = LAYOUT(
_______, _______,
_______, _______, _______, _______,
- LSFT(KC_1), LCTL(KC_G), LGUI(KC_BSLS),
- _______, _______, _______
+ G(KC_F), G(KC_D), G(A(KC_I)),
+ G(KC_0), C(KC_M), G(A(KC_R))
),
/*
- * BROWSER Layer
+ * VIM Layer
*
* ,-----------------------------.
- * | | TERM | FIGM | |
+ * | | BASE | FIGM | |
* |-------+------+------+-------|
- * | TABS | BROW | VIM | SCROLL|
+ * |BUFFER | BROW | VIM | SCROLL|
* |-------+------+------+-------|
* |-------+-------+-------|
- * |SEARCH | BOOKM | DEVTL |
+ * |SRCH FL|REPL FL|NEW BUF|
* |-------+-------+-------|
- * | o | o | o |
+ * |SRCH PR|REPL PR| o |
* |-------+-------+-------|
*/
- [_BROWSER] = LAYOUT(
+ [_VIM] = LAYOUT(
_______, _______,
_______, _______, _______, _______,
- G(KC_F), G(KC_D), G(A(KC_I)),
- _______, _______, _______
+ VIM_SIF, VIM_RIF, VIM_NEW,
+ VIM_SIP, VIM_RIP, _______
),
};
diff --git a/keyboards/z12/keymaps/zigotica/oled.c b/keyboards/z12/keymaps/zigotica/oled.c
index fa11a3d6c6..c96fc0f708 100644
--- a/keyboards/z12/keymaps/zigotica/oled.c
+++ b/keyboards/z12/keymaps/zigotica/oled.c
@@ -21,16 +21,16 @@ static void render_status(void) {
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _VIM:
- oled_write_P(PSTR("VIM\n\nBUFFER SCROLL"), false);
+ oled_write_P(PSTR("VIM \n\nBUFFER SCROLL"), false);
break;
case _FIGMA:
- oled_write_P(PSTR("FIGMA\n\nVOLUME ZOOM"), false);
+ oled_write_P(PSTR("FIGMA \n\nTABS ZOOM"), false);
break;
case _BROWSER:
- oled_write_P(PSTR("BROWSER\n\nTABS SCROLL"), false);
+ oled_write_P(PSTR("BROWSER \n\nTABS SCROLL"), false);
break;
- case _TERMINAL:
- oled_write_P(PSTR("TERMINAL\n\nVOLUME SCROLL"), false);
+ case _BASE:
+ oled_write_P(PSTR("BASE \n\nVOLUME SCROLL"), false);
break;
default:
oled_write_P(PSTR("Undef\n"), false);
diff --git a/keyboards/z12/keymaps/zigotica/readme.md b/keyboards/z12/keymaps/zigotica/readme.md
new file mode 100644
index 0000000000..a3746a88d2
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/readme.md
@@ -0,0 +1,3 @@
+# zigotica's z12 Layout
+
+This layout uses `RAW_ENABLE = yes`, and benefits from [active-app-qmk-layer-updater](https://github.com/zigotica/active-app-qmk-layer-updater) node script (run by the host system) to change layers programmatically depending on the current active app.
diff --git a/keyboards/z12/rules.mk b/keyboards/z12/rules.mk
index b59ce00b47..fe67be276f 100644
--- a/keyboards/z12/rules.mk
+++ b/keyboards/z12/rules.mk
@@ -5,16 +5,15 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
ENCODER_ENABLE = yes # Enables the use of encoders
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/z150_bh/rules.mk b/keyboards/z150_bh/rules.mk
index 5d9c83a5a2..65e353ad15 100644
--- a/keyboards/z150_bh/rules.mk
+++ b/keyboards/z150_bh/rules.mk
@@ -5,15 +5,14 @@ MCU = at90usb1286
BOOTLOADER = halfkay
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
diff --git a/keyboards/z34/rules.mk b/keyboards/z34/rules.mk
index cec101f931..90c0d7b620 100644
--- a/keyboards/z34/rules.mk
+++ b/keyboards/z34/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/zfrontier/big_switch/rules.mk b/keyboards/zfrontier/big_switch/rules.mk
index 34c22e920f..b9a2c9e263 100644
--- a/keyboards/zfrontier/big_switch/rules.mk
+++ b/keyboards/zfrontier/big_switch/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ziggurat/rules.mk b/keyboards/ziggurat/rules.mk
index 98db987b2b..343398b650 100644
--- a/keyboards/ziggurat/rules.mk
+++ b/keyboards/ziggurat/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = no # USB Nkey Rollover
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/zinc/keymaps/default/keymap.c b/keyboards/zinc/keymaps/default/keymap.c
index cd1bf0328b..449c635a5d 100644
--- a/keyboards/zinc/keymaps/default/keymap.c
+++ b/keyboards/zinc/keymaps/default/keymap.c
@@ -42,7 +42,7 @@ enum macro_keycodes {
//Macros
#define M_SAMPLE M(KC_SAMPLEMACRO)
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------. ,-----------------------------------------.
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
@@ -55,10 +55,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* `-----------------------------------------' `-----------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_4x12(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_ESC, ADJUST, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_ESC, ADJUST, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Colemak
@@ -72,11 +72,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* | Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
* `-----------------------------------------' `-----------------------------------------'
*/
- [_COLEMAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
- KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
- KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_COLEMAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
+ KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Dvorak
@@ -90,11 +90,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* | Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
* `-----------------------------------------' `-----------------------------------------'
*/
- [_DVORAK] = LAYOUT_ortho_4x12( \
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, \
- KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
- KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ [_DVORAK] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
+ KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
@@ -108,11 +108,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------' `-----------------------------------------'
*/
- [_LOWER] = LAYOUT_ortho_4x12( \
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \
- _______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -126,11 +126,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------' `-----------------------------------------'
*/
- [_RAISE] = LAYOUT_ortho_4x12( \
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+ [_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
@@ -144,11 +144,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* | | | | EISU | EISU | EISU | | KANA | KANA | Home |PageDn|PageUp| End |
* `-----------------------------------------' `-----------------------------------------'
*/
- [_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS, \
- _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,\
- RGB_RMOD,RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, KC_PGUP, _______,\
- _______, _______, _______, EISU, EISU, EISU, KANA, KANA, KANA, KC_HOME, KC_PGDN, KC_END\
+ [_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
+ _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,
+ RGB_RMOD,RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, EISU, EISU, EISU, KANA, KANA, KANA, KC_HOME, KC_PGDN, KC_END
)
};
diff --git a/keyboards/zinc/keymaps/default/rules.mk b/keyboards/zinc/keymaps/default/rules.mk
index 6fea7875a4..09b121d26f 100644
--- a/keyboards/zinc/keymaps/default/rules.mk
+++ b/keyboards/zinc/keymaps/default/rules.mk
@@ -1,13 +1,9 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
@@ -119,10 +115,6 @@ ifeq ($(strip $(RGB_MATRIX_SPLIT_RIGHT)), yes)
OPT_DEFS += -DRGB_MATRIX_SPLIT_RIGHT
endif
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
-
# Uncomment these for debugging
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
# $(info -- OPT_DEFS=$(OPT_DEFS))
diff --git a/keyboards/zinc/rules.mk b/keyboards/zinc/rules.mk
index 4edbdd9e32..c83741f40c 100644
--- a/keyboards/zinc/rules.mk
+++ b/keyboards/zinc/rules.mk
@@ -5,19 +5,17 @@ MCU = atmega32u4
BOOTLOADER = caterina
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/zj68/rules.mk b/keyboards/zj68/rules.mk
index e6224a1049..1d5db073ca 100644
--- a/keyboards/zj68/rules.mk
+++ b/keyboards/zj68/rules.mk
@@ -5,7 +5,7 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
@@ -13,10 +13,9 @@ MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
RGBLIGHT_ENABLE = no
LAYOUTS = 65_ansi
diff --git a/keyboards/zlant/keymaps/default/keymap.c b/keyboards/zlant/keymaps/default/keymap.c
index 37f031f015..1348b87fcd 100755
--- a/keyboards/zlant/keymaps/default/keymap.c
+++ b/keyboards/zlant/keymaps/default/keymap.c
@@ -6,10 +6,10 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT(
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
- KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
- KC_ESC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
- RGB_HUI, RGB_HUD, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_ESC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ RGB_HUI, RGB_HUD, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* BASE LAYER
* ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
@@ -23,10 +23,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └──────┴──────┴──────┴──────┴──────┴─────────────┴──────┴──────┴──────┴──────┴──────┘
*/
[FN] = LAYOUT(
- _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PGUP, KC_HOME, _______, _______, \
- RGB_VAI, RGB_VAD, RESET, KC_PSCR, _______, _______, _______, _______, KC_PGDN, KC_END, _______, KC_DEL \
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_PGUP, KC_HOME, _______, _______,
+ RGB_VAI, RGB_VAD, RESET, KC_PSCR, _______, _______, _______, _______, KC_PGDN, KC_END, _______, KC_DEL
)
};
/* FN LAYER
diff --git a/keyboards/zlant/rules.mk b/keyboards/zlant/rules.mk
index 4ed89a93f0..5fb361e12e 100755
--- a/keyboards/zlant/rules.mk
+++ b/keyboards/zlant/rules.mk
@@ -5,15 +5,14 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/zoo/wampus/rules.mk b/keyboards/zoo/wampus/rules.mk
index 08c35a116c..b00c869401 100644
--- a/keyboards/zoo/wampus/rules.mk
+++ b/keyboards/zoo/wampus/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = spi # RGB underglow driver configuration
diff --git a/keyboards/ztboards/after/rules.mk b/keyboards/ztboards/after/rules.mk
index 0f03cb3530..69529c9ada 100644
--- a/keyboards/ztboards/after/rules.mk
+++ b/keyboards/ztboards/after/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ztboards/noon/rules.mk b/keyboards/ztboards/noon/rules.mk
index 9c78569f93..476cf49f27 100644
--- a/keyboards/ztboards/noon/rules.mk
+++ b/keyboards/ztboards/noon/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/zvecr/split_blackpill/rules.mk b/keyboards/zvecr/split_blackpill/rules.mk
index 86469ce190..46a07109fa 100644
--- a/keyboards/zvecr/split_blackpill/rules.mk
+++ b/keyboards/zvecr/split_blackpill/rules.mk
@@ -12,10 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/zvecr/zv48/rules.mk b/keyboards/zvecr/zv48/rules.mk
index 97238e5e07..a524934e9f 100644
--- a/keyboards/zvecr/zv48/rules.mk
+++ b/keyboards/zvecr/zv48/rules.mk
@@ -7,10 +7,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
ENCODER_ENABLE = yes # Enable rotary encoder support
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
index 6bfafc3325..b40148e995 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
@@ -16,14 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION_1,
- LAYER_FUNCTION_2,
-};
-
-#define LY_FN1 MO(LAYER_FUNCTION_1)
-#define LY_FN2 MO(LAYER_FUNCTION_2)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -48,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function 2 layer: http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c */
[LAYER_FUNCTION_2] = LAYOUT_60_ansi_split_bs_rshift(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, BL_INC, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
_______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
index 2d578aa3d3..f6bcda9197 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
@@ -19,6 +19,6 @@ layout](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsa
## Function 2 layer
-![Function 2 layer layout](https://i.imgur.com/vJaCzVo.png)
+![Function 2 layer layout](https://i.imgur.com/DW03vvJ.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c))
diff --git a/layouts/community/60_tsangan_hhkb/bcat/keymap.c b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
index 05e6462d90..9ec75f3c4d 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
@@ -16,14 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION_1,
- LAYER_FUNCTION_2,
-};
-
-#define LY_FN1 MO(LAYER_FUNCTION_1)
-#define LY_FN2 MO(LAYER_FUNCTION_2)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -46,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function 2 layer: http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4 */
[LAYER_FUNCTION_2] = LAYOUT_60_tsangan_hhkb(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, BL_INC, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
_______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/60_tsangan_hhkb/bcat/readme.md b/layouts/community/60_tsangan_hhkb/bcat/readme.md
index b7a3cde5d2..c8d0d72dd0 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/readme.md
+++ b/layouts/community/60_tsangan_hhkb/bcat/readme.md
@@ -39,6 +39,6 @@ and/or blockers, so there aren't switches installed in those positions.
## Function 2 layer
-![Function 2 layer layout](https://i.imgur.com/vdNpFae.png)
+![Function 2 layer layout](https://i.imgur.com/4Jdw9eL.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4))
diff --git a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
index c91a1b0ead..c099d36e25 100644
--- a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
+++ b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
@@ -16,12 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
-
-#define LY_FN MO(LAYER_FUNCTION)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -31,13 +26,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FN, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FN1, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
- [LAYER_FUNCTION] = LAYOUT_65_ansi_blocker_split_bs(
+ [LAYER_FUNCTION_1] = LAYOUT_65_ansi_blocker_split_bs(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, _______,
- KC_CAPS, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
+ KC_CAPS, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_APP, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md b/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
index 0726cbecee..5777c7c38f 100644
--- a/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
+++ b/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
@@ -12,6 +12,6 @@ keys, an HHKB-style (split) backspace, and media controls in the function layer
## Function layer
-![Function layer layout](https://i.imgur.com/CsxfVfd.png)
+![Function layer layout](https://i.imgur.com/s4hS9ZK.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44))
diff --git a/layouts/community/ergodox/coderkun_neo2/keymap.c b/layouts/community/ergodox/coderkun_neo2/keymap.c
deleted file mode 100644
index b731ab4950..0000000000
--- a/layouts/community/ergodox/coderkun_neo2/keymap.c
+++ /dev/null
@@ -1,265 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "action_layer.h"
-#include "led.h"
-#include "keymap_extras/keymap_neo2.h"
-
-// Layer names
-#define BASE 0 // default layer
-#define PMQ 1 // poor man’s QWERTZ
-#define PMN 2 // poor man’s Neo
-#define FMU 3 // FMU layer
-#define NHL 4 // Neo’s software layer 4 rebuilt in Hardware
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layer 0: default
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- * │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ ALT │ CTL │
- * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- * │ ← │ ↑ │ │ ↓ │ → │
- * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- * │ │ │ ─ │ │ ─ │ │ │
- * │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- * │ │ │ HYP │ │ MEH │ │ │
- * └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[BASE] = LAYOUT_ergodox(
- // left hand
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, NE_GRV,
- NE_Y, NE_X, NE_V, NE_L, NE_C, NE_W, KC_HOME,
- NE_L3L, NE_U, NE_I, NE_A, NE_E, NE_O,
- KC_LSFT, NE_UDIA, NE_ODIA, NE_ADIA, NE_P, NE_Z, TG(PMQ),
- KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,NE_L4L,
- KC_LEFT, KC_UP,
- KC_MINS,
- KC_SPC, KC_ENT, ALL_T(KC_NO),
- // right hand
- NE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
- KC_END, NE_K, NE_H, NE_G, NE_F, NE_Q, NE_SS,
- NE_S, NE_N, NE_R, NE_T, NE_D, NE_L3R,
- TG(PMN), NE_B, NE_M, KC_COMM,KC_DOT, NE_J, KC_RSFT,
- NE_L4R,KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
- KC_DOWN, KC_RGHT,
- KC_MINS,
- MEH_T(KC_NO),KC_ENT,KC_SPC
- ),
-
-/* Layer 1: poor man’s QWERTZ
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │ C │ P │ T │ F │ K │ L │ HOM │ │ END │ B │ A │ S │ G │ V │ Y │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3 │ D │ H │ Ö │ O │ I ├─────┤ ├─────┤ U │ - │ Z │ E │ X │ Mod3 │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
- * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- * │ ← │ ↑ │ │ ↓ │ → │
- * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- * │ │ │ ─ │ │ ─ │ │ │
- * │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- * │ │ │ HYP │ │ MEH │ │ │
- * └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[PMQ] = LAYOUT_ergodox(
- // left hand
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
- DE_C, DE_P, DE_T, DE_F, DE_K, DE_L, KC_HOME,
- NE_L3L, DE_D, DE_H, DE_ODIA,DE_O, DE_I,
- KC_LSFT, DE_ADIA,DE_Q, DE_R, DE_W, DE_N, KC_TRNS,
- KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
- KC_LEFT, KC_UP,
- KC_MINS,
- KC_SPC, KC_ENT, ALL_T(KC_NO),
- // right hand
- DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
- KC_END, DE_B, DE_A, DE_S, DE_G, DE_V, DE_Y,
- DE_U, DE_MINS,DE_Z, DE_E, DE_X, NE_L3R,
- KC_TRNS, DE_J, DE_M, DE_COMM,DE_DOT, DE_SS, KC_RSFT,
- MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
- KC_DOWN, KC_RGHT,
- KC_MINS,
- MEH_T(KC_NO),KC_ENT,KC_SPC
- ),
-
-/* Layer 2: poor man’s Neo
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- * │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ ALT │ CTL │
- * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- * │ ← │ ↑ │ │ ↓ │ → │
- * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- * │ │ │ ─ │ │ ─ │ │ │
- * │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- * │ │ │ HYP │ │ MEH │ │ │
- * └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[PMN] = LAYOUT_ergodox(
- KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
- DE_Y, DE_X, DE_V, DE_L, DE_C, DE_W, KC_HOME,
- KC_NO, DE_U, DE_I, DE_A, DE_E, DE_O,
- KC_LSFT, DE_UDIA,DE_ODIA,DE_ADIA,DE_P, DE_Z, KC_TRNS,
- KC_LCTL, KC_LALT,MO(FMU),KC_LGUI,MO(NHL),
- KC_LEFT, KC_UP,
- KC_MINS,
- KC_SPC, KC_ENT, ALL_T(KC_NO),
- // right hand
- DE_ACUT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
- KC_END, DE_K, DE_H, DE_G, DE_F, DE_Q, DE_SS,
- DE_S, DE_N, DE_R, DE_T, DE_D, KC_NO,
- KC_TRNS, DE_B, DE_M, KC_COMM,KC_DOT, DE_J, KC_RSFT,
- MO(NHL),KC_RGUI,MO(FMU),KC_LALT,KC_RCTL,
- KC_DOWN, KC_RGHT,
- KC_MINS,
- MEH_T(KC_NO),KC_ENT,KC_SPC
- ),
-
-/* Layer 3: F-keys, Mouse and Unicode
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
- * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- * │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
- * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- * │ │ │ MLC │ │ MRC │ │ │
- * │ │ ├─────┤ ├─────┤ │ │
- * │ │ │ │ │ │ │ │
- * └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[FMU] = LAYOUT_ergodox(
- // left hand
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- KC_TRNS, UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),KC_TRNS,
- KC_TRNS, UC(0x251C),UC(0x253C),UC(0x2524),UC(0x3008),UC(0x3009),
- KC_TRNS, UC(0x2514),UC(0x2534),UC(0x2518),KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_MS_L, KC_MS_U,
- KC_BTN1,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
- KC_TRNS, UC(0x2194),UC(0x2190),UC(0x2192),UC(0x2191),UC(0x2193),KC_TRNS,
- KC_TRNS, UC(0x2713),UC(0x2715),UC(0x2022),UC(0x2236),KC_TRNS,
- KC_TRNS, UC(0x21D4),UC(0x21D0),UC(0x21D2),UC(0x21D1),UC(0x21D3),KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_MS_D, KC_MS_R,
- KC_BTN2,
- KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
-/* Layer 4: Neo’s software layer 4 rebuilt in Hardware
- * based on kaimi’s layout
- * ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- * │ │ PgUp│ BSpc│ ↑ │ Del │ PgDn│ │ │ │ │ 7 │ 8 │ 9 │ + │ − │
- * ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- * │ │ Home│ ← │ ↓ │ → │ End ├─────┤ ├─────┤ │ 4 │ 5 │ 6 │ , │ . │
- * ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- * │ │ Esc │ Tab │ Ins │ Ret │ Undo│ │ │ │ │ 1 │ 2 │ 3 │ │ │
- * └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- * │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
- * └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- * │ │ │ │ │ │
- * ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- * │ │ │ │ │ │ │ │
- * │ │ ├─────┤ ├─────┤ │ │
- * │ │ │ │ │ │ │ │
- * └─────┴─────┴─────┘ └─────┴─────┴─────┘
- */
-[NHL] = LAYOUT_ergodox(
- // left hand
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_PGUP,KC_BSPC,KC_UP, KC_DEL, KC_PGDN,KC_NO,
- KC_NO, KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_END,
- KC_NO, KC_ESC, KC_TAB, KC_INS, KC_ENT, KC_UNDO,KC_TRNS,
- KC_NO, KC_NO, KC_TRNS,KC_NO, KC_TRNS,
- KC_NO, KC_NO,
- KC_NO,
- KC_NO, KC_NO, KC_NO,
- // right hand
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_7, KC_8, KC_9, DE_PLUS,DE_MINS,
- KC_NO, KC_4, KC_5, KC_6, KC_COMM,KC_DOT,
- KC_TRNS, KC_NO, KC_1, KC_2, KC_3, KC_NO, KC_NO,
- KC_TRNS,KC_NO, KC_TRNS,KC_NO, KC_NO,
- KC_NO, KC_NO,
- KC_NO,
- KC_NO, KC_NO, KC_NO
- ),
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
- set_unicode_input_mode(UC_LNX);
-};
-
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void)
-{
- uint8_t layer = biton32(layer_state);
-
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
- switch (layer) {
- case FMU:
- ergodox_right_led_1_on();
- break;
- case PMQ:
- ergodox_right_led_2_on();
- break;
- case PMN:
- ergodox_right_led_3_on();
- break;
- default:
- if(host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) {
- ergodox_led_all_set(LED_BRIGHTNESS_HI);
- ergodox_right_led_1_on();
- }
- else {
- ergodox_board_led_off();
- }
- break;
- }
-
-};
-
-
-// Override Unicode start method to use NE_U instead of KC_U
-void unicode_input_start (void) {
- register_code(KC_LCTL);
- register_code(KC_LSFT);
- register_code(NE_U);
- unregister_code(NE_U);
- unregister_code(KC_LSFT);
- unregister_code(KC_LCTL);
-};
diff --git a/layouts/community/ergodox/coderkun_neo2/readme.md b/layouts/community/ergodox/coderkun_neo2/readme.md
deleted file mode 100644
index 0c9290bf08..0000000000
--- a/layouts/community/ergodox/coderkun_neo2/readme.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# coderkun’s Neo2 layout for the ErgoDox EZ
-
-The idea of this layout is to use it for [Neo2](http://www.neo-layout.org) but also provide layers to use QWERTZ with activated Neo driver and to use (basic) Neo when no driver is available (standard QWERTZ driver is active) (e. g. on other computers, in virtual machines) and to make heavily use of thumb keys.
-
-The main goal of the default layer is to provide a complete symmetric layout with each modifier equally placed for both hands (mirror, of course).
-
-It also features a layer for additional keys like F-keys (F1 – F12), some mouse keys and some useful Unicode symbols.
-
-
-## Build
-
- ```
- make clean
- make coderkun_neo2
- ```
-
-
-## Keymap
-
-0. Default layer for Neo2
-1. Poor man’s QWERTZ
-2. Poor man’s Neo
-3. F-keys, mouse keys und Unicode symbols
-4. Neo’s software layers 4 rebuilt in hardware
-
-
-### Layer 0: Default layer for Neo2
-
- ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
- ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
- ├───────┼─────┼─────┼─────╄─────╃─────┤ TL2 │ │ TL3 ├─────╄─────╃─────┼─────┼─────┼───────┤
- │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
- └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- │ CTL │ ALT │ MO1 │ Win │ Mod4│ │ Mod4│ Win │ MO1 │ Alt │ CTL │
- └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- │ ← │ ↑ │ │ ↓ │ → │
- ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- │ │ │ ─ │ │ ─ │ │ │
- │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- │ │ │ HYP │ │ MEH │ │ │
- └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 1: Poor man’s QWERTZ
-
- ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- │ C │ P │ T │ F │ K │ L │ HOM │ │ END │ B │ A │ S │ G │ V │ Y │
- ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- │ Mod3 │ D │ H │ Ö │ O │ I ├─────┤ ├─────┤ U │ - │ Z │ E │ X │ Mod3 │
- ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- │ LSHFT │ Ä │ Q │ R │ W │ N │ │ │ │ J │ M │ , │ . │ ẞ │ Shift │
- └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
- └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- │ ← │ ↑ │ │ ↓ │ → │
- ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- │ │ │ ─ │ │ ─ │ │ │
- │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- │ │ │ HYP │ │ MEH │ │ │
- └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 2: Poor man’s Neo
-
- ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- │ TAB │ 1 │ 2 │ 3 │ 4 │ 5 │ ` │ │ ´ │ 6 │ 7 │ 8 │ 9 │ 0 │ BKSPC │
- ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- │ Y │ X │ V │ L │ C │ W │ HOM │ │ END │ K │ H │ G │ F │ Q │ ß │
- ├───────┼─────┼─────┼─────╆─────╅─────┤ E │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- │ Mod3 │ U │ I │ A │ E │ O ├─────┤ ├─────┤ S │ N │ R │ T │ D │ Mod3 │
- ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- │ LSHFT │ Ü │ Ö │ Ä │ P │ Z │ │ │ │ B │ M │ , │ . │ J │ Shift │
- └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- │ CTL │ ALT │ MO1 │ Win │ MO4 │ │ M04 │ Win │ MO1 │ Alt │ CTL │
- └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- │ ← │ ↑ │ │ ↓ │ → │
- ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- │ │ │ ─ │ │ ─ │ │ │
- │ SPC │ RTN ├─────┤ ├─────┤ RTN │ SPC │
- │ │ │ HYP │ │ MEH │ │ │
- └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 3: F-keys, mouse keys und Unicode symbols
-
- ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- │ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
- ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- │ │ ┌ │ ┬ │ ┐ │ ─ │ │ │ │ │ │ ↔ │ ← │ → │ ↑ │ ↓ │ │
- ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- │ │ ├ │ ┼ │ ┤ │ 〈 │ 〉 ├─────┤ ├─────┤ │ ✓ │ ✕ │ • │ ∶ │ │
- ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- │ │ └ │ ┴ │ ┘ │ │ │ │ │ │ ⇔ │ ⇐ │ ⇒ │ ⇑ │ ⇓ │ │
- └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
- └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- │ Ms← │ Ms↑ │ │ Ms↓ │ Ms→ │
- ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- │ │ │ MLC │ │ MRC │ │ │
- │ │ ├─────┤ ├─────┤ │ │
- │ │ │ │ │ │ │ │
- └─────┴─────┴─────┘ └─────┴─────┴─────┘
-
-
-### Layer 4: Neo’s software layers 4 rebuilt in hardware
-
- ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬───────┐
- │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- ├───────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼───────┤
- │ │ PgUp│ BSpc│ ↑ │ Del │ PgDn│ │ │ │ │ 7 │ 8 │ 9 │ + │ − │
- ├───────┼─────┼─────┼─────╆─────╅─────┤ │ │ ├─────╆─────╅─────┼─────┼─────┼───────┤
- │ │ Home│ ← │ ↓ │ → │ End ├─────┤ ├─────┤ │ 4 │ 5 │ 6 │ , │ . │
- ├───────┼─────┼─────┼─────╄─────╃─────┤(TL2)│ │(TL3)├─────╄─────╃─────┼─────┼─────┼───────┤
- │ │ Esc │ Tab │ Ins │ Ret │ Undo│ │ │ │ │ 1 │ 2 │ 3 │ │ │
- └─┬─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┬─┘
- │ │ │(MO1)│ │(MO4)│ │(MO4)│ │(MO1)│ │ │
- └─────┴─────┴─────┴─────┴─────┘ ┌─────┬─────┐ ┌─────┬─────┐ └─────┴─────┴─────┴─────┴─────┘
- │ │ │ │ │ │
- ┌─────┼─────┼─────┤ ├─────┼─────┼─────┐
- │ │ │ │ │ │ │ │
- │ │ ├─────┤ ├─────┤ │ │
- │ │ │ │ │ │ │ │
- └─────┴─────┴─────┘ └─────┴─────┴─────┘
diff --git a/layouts/community/ergodox/coderkun_neo2/rules.mk b/layouts/community/ergodox/coderkun_neo2/rules.mk
deleted file mode 100644
index b0fe90ab1d..0000000000
--- a/layouts/community/ergodox/coderkun_neo2/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-SLEEP_LED_ENABLE = no
-UNICODE_ENABLE = yes
-COMMAND_ENABLE = no
diff --git a/layouts/community/ergodox/drashna/config.h b/layouts/community/ergodox/drashna/config.h
index f9daf277fb..d669f27298 100644
--- a/layouts/community/ergodox/drashna/config.h
+++ b/layouts/community/ergodox/drashna/config.h
@@ -45,6 +45,7 @@
# endif
#endif
-#define PIMORONI_TRACKBALL_INVERT_X
-#define PIMORONI_TRACKBALL_INVERT_Y
-#define PIMORONI_TRACKBALL_CLICK
+#ifdef TAPPING_TERM
+# undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 185
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 3c9bcfeaa2..0b81232af9 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -16,10 +16,6 @@
#include "drashna.h"
-#ifdef UNICODEMAP_ENABLE
-# include "drashna_unicode.h"
-#endif // UNICODEMAP_ENABLE
-#include "drivers/sensors/pimoroni_trackball.h"
enum more_custom_keycodes {
KC_SWAP_NUM = NEW_SAFE_RANGE,
PM_SCROLL,
@@ -317,7 +313,7 @@ void suspend_power_down_keymap(void) { rgb_matrix_set_suspend_state(true); }
void suspend_wakeup_init_keymap(void) { rgb_matrix_set_suspend_state(false); }
-void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
if (layer_state_is(_GAMEPAD)) {
RGB_MATRIX_INDICATOR_SET_COLOR(32, 0x00, 0xFF, 0x00); // Q
RGB_MATRIX_INDICATOR_SET_COLOR(31, 0x00, 0xFF, 0xFF); // W
@@ -332,43 +328,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
RGB_MATRIX_INDICATOR_SET_COLOR((userspace_config.swapped_numbers ? 27 : 26), 0x00, 0xFF, 0x00); // 2
RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x7A, 0x00, 0xFF); // 3
}
-
-# if defined(RGBLIGHT_ENABLE)
- if (!userspace_config.rgb_layer_change)
-# else
- if (userspace_config.rgb_layer_change)
-# endif
- {
- switch (get_highest_layer(layer_state | default_layer_state)) {
- case _GAMEPAD:
- rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DIABLO:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _RAISE:
- rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _LOWER:
- rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _ADJUST:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_1:
- rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_2:
- rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_3:
- rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_4:
- rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- }
- }
+ return true;
}
#endif // RGB_MATRIX_INIT
diff --git a/layouts/community/ergodox/drashna/rules.mk b/layouts/community/ergodox/drashna/rules.mk
index 853f1efd24..f5e9b500e0 100644
--- a/layouts/community/ergodox/drashna/rules.mk
+++ b/layouts/community/ergodox/drashna/rules.mk
@@ -1,20 +1,17 @@
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
TAP_DANCE_ENABLE = no
COMMAND_ENABLE = no # Commands for debug and configuration
CONSOLE_ENABLE = no
-SPACE_CADET_ENABLE = no
ifeq ($(strip $(KEYBOARD)), ergodox_ez)
RGBLIGHT_ENABLE = yes
RGB_MATRIX_ENABLE = yes
INDICATOR_LIGHTS = no
RGBLIGHT_STARTUP_ANIMATION = yes
- PIMORONI_TRACKBALL_ENABLE = yes
+ PIMORONI_TRACKBALL_ENABLE = no
MOUSEKEY_ENABLE = no
endif
-UNICODE_ENABLE = no
-UNICDOEMAP_ENABLE = no
-
-
-DEBOUNCE_TYPE = sym_eager_pr
+UNICODE_ENABLE = no
+UNICDOEMAP_ENABLE = no
+CUSTOM_UNICODE_ENABLE = no
diff --git a/layouts/community/ortho_4x12/ajp10304/keymap.c b/layouts/community/ortho_4x12/ajp10304/keymap.c
index 4d9ddb1245..7f817e21c1 100644
--- a/layouts/community/ortho_4x12/ajp10304/keymap.c
+++ b/layouts/community/ortho_4x12/ajp10304/keymap.c
@@ -37,6 +37,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
),
+/* Colemak-DHm
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_ortho_4x12(
+ LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
+ MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) ,
+ KC_LSHIFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
+ MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSHIFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
+),
+
/* Function
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
@@ -92,20 +110,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
+ * ,------------------------------------------------------------------------------------.
+ * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+-------|
+ * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | |Qwerty |
+ * |------+------+------+------+------+------|------+------+------+------+------+-------|
+ * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | |Colemak|
+ * |------+------+------+------+------+------+------+------+------+------+------+-------|
+ * | | | | | | | | | | | |
+ * `------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
- TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, _______ ,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY ,
+ TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DYN_REC_STOP, DYN_REC_STOP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/layouts/community/ortho_4x12/ajp10304/readme.md b/layouts/community/ortho_4x12/ajp10304/readme.md
index 6db0b851d9..402e9426dd 100644
--- a/layouts/community/ortho_4x12/ajp10304/readme.md
+++ b/layouts/community/ortho_4x12/ajp10304/readme.md
@@ -22,6 +22,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -73,12 +82,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/layouts/community/ortho_4x12/bifbofii/keymap.c b/layouts/community/ortho_4x12/bifbofii/keymap.c
new file mode 100644
index 0000000000..6ce39a4a38
--- /dev/null
+++ b/layouts/community/ortho_4x12/bifbofii/keymap.c
@@ -0,0 +1,173 @@
+/* Copyright 2021 Christoph Jabs (BifbofII)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+/* ====== Unicode ====== */
+/* Character names */
+enum unicode_names {
+ SAE,
+ BAE,
+ SUE,
+ BUE,
+ SOE,
+ BOE,
+ SS,
+ EUR,
+ CPR
+};
+
+/* Unicode map */
+const uint32_t PROGMEM unicode_map[] = {
+ [SAE] = 0x00E4, // ä
+ [BAE] = 0x00C4, // Ä
+ [SUE] = 0x00FC, // ü
+ [BUE] = 0x00DC, // Ü
+ [SOE] = 0x00F6, // ü
+ [BOE] = 0x00D6, // Ü
+ [SS] = 0x00DF, // ß
+ [EUR] = 0x20AC, // €
+ [CPR] = 0x00A9 // ©
+};
+
+// ====== Layers ======
+// Layer numbers
+enum layer_names {
+ QWERTY = 0,
+ RAISE,
+ LOWER,
+ FUNCTIONS,
+ UNICODE,
+ SPECIALS,
+};
+
+#define L_LOW MO(LOWER)
+#define L_RAIS MO(RAISE)
+#define L_SPEC MO(SPECIALS)
+#define L_FNC LT(FUNCTIONS, KC_SPC)
+#define L_UNI LT(UNICODE, KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | ' |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * |Shift| Z | X | C | V | B | N | M | , | . | / | Ret |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * |Ctrl |Super| | Alt |Lower| Spc |Raise| Alt |Super|Ctrl |Spec |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ L_UNI, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
+ KC_LCTL, KC_LGUI, XXXXXXX, KC_LALT, L_LOW, L_FNC, L_FNC, L_RAIS, KC_RALT, KC_RGUI, KC_RCTL, L_SPEC
+),
+
+/* Raise
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bsp |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bsp |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | _ | + | { | } | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Functions Layer 1
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | |Mute |Prev |Vol- |Vol+ |Next |Play | Del |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * |Caps | | < | | | > |Left |Down | Up |Right| | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | |Home |PgDn |PgUp | End | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[FUNCTIONS] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, KC__MUTE, KC_MPRV, KC__VOLDOWN, KC_VOLU, KC_MNXT, KC_MEDIA_PLAY_PAUSE, KC_DEL,
+ KC_CAPS, _______, KC_WBAK, _______, _______, KC_WFWD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Unicode Layer
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | € | | | | Ü | | Ö | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | Ä | ß | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | © | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | | | | | | | | | | | |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[UNICODE] = LAYOUT_ortho_4x12(
+ _______, _______, _______, X(EUR), _______, _______, _______, XP(SUE, BUE), _______, XP(SOE, BOE), _______, _______,
+ _______, XP(SAE, BAE), X(SS), _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, X(CPR), _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Specials Layer
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | XXX | XXX | Win | XXX | XXX | XXX | XXX | XXX | XXX | OSX | XXX | XXX |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | Lnx | XXX | XXX |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | XXX | XXX | XXX | XXX | XXX |RESET| XXX | XXX | XXX | XXX | XXX | XXX |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ * | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX |
+ * +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+ */
+[SPECIALS] = LAYOUT_ortho_4x12(
+ XXXXXXX, XXXXXXX, UC_M_WC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_OS, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_LN, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+)
+
+};
diff --git a/layouts/community/ortho_4x12/bifbofii/readme.md b/layouts/community/ortho_4x12/bifbofii/readme.md
new file mode 100644
index 0000000000..e077ffba28
--- /dev/null
+++ b/layouts/community/ortho_4x12/bifbofii/readme.md
@@ -0,0 +1,89 @@
+# Personal Ortho 4x12 Layout of BifbofII
+
+![BifbofII Ortho 4x12 Layout](https://i.imgur.com/hHSexjE.jpeg)
+
+## QWERTY Layer
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| Tab | Q | W | E | R | T | Y | U | I | O | P | Bsp |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| Esc | A | S | D | F | G | H | J | K | L | ; | ' |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+|Shift| Z | X | C | V | B | N | M | , | . | / | Ret |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+|Ctrl |Super| | Alt |Lower| Spc | Spc |Raise| Alt |Super|Ctrl |Spec |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
+
+Holding the Space Bar switches to the Function layer.
+
+## Raise
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bsp |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | F7 | F8 | F9 | F10 | F11 | F12 | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
+
+## Lower
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bsp |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | _ | + | { | } | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
+
+## Function Layer
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | |Mute |Prev |Vol- |Vol+ |Next |Play | Del |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+|Caps | | < | | | > |Left |Down | Up |Right| | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | |Home |Page-|Page+| End | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
+
+## Unicode Layer
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | € | | | | Ü | | Ö | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | Ä | ß | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | © | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| | | | | | | | | | | | |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
+
+## Specials Layer
+
+```
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| XXX | XXX | Win | XXX | XXX | XXX | XXX | XXX | XXX | OSX | XXX | XXX |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | Lnx | XXX | XXX |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| XXX | XXX | XXX | XXX | XXX |RESET| XXX | XXX | XXX | XXX | XXX | XXX |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+| XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX |
++-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
+```
diff --git a/layouts/community/ortho_4x12/bifbofii/rules.mk b/layouts/community/ortho_4x12/bifbofii/rules.mk
new file mode 100644
index 0000000000..502b2def76
--- /dev/null
+++ b/layouts/community/ortho_4x12/bifbofii/rules.mk
@@ -0,0 +1 @@
+UNICODEMAP_ENABLE = yes
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index 3ba9cf64f9..522fc772b4 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
- KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
+ KEYLOCK, _______, _______, REBOOT, _______, KC_NUKE, _______, _______, AUTO_CTN,_______, _______, TG_MODS
)
};
@@ -201,17 +201,8 @@ led_config_t g_led_config = {
// clange-format on
# endif
-// clang-format off
-void suspend_power_down_keymap(void) {
- rgb_matrix_set_suspend_state(true);
-}
-void suspend_wakeup_init_keymap(void) {
- rgb_matrix_set_suspend_state(false);
-}
-// clang-format on
-
-void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
uint8_t this_mod = get_mods();
uint8_t this_led = host_keyboard_leds();
uint8_t this_osm = get_oneshot_mods();
@@ -221,48 +212,6 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
# define THUMB_LED 42
# endif
# define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
-# if defined(RGBLIGHT_ENABLE)
- if (!userspace_config.rgb_layer_change)
-# else
- if (userspace_config.rgb_layer_change)
-# endif
- {
- switch (get_highest_layer(layer_state)) {
- case _GAMEPAD:
- rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DIABLO:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _RAISE:
- rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _LOWER:
- rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _ADJUST:
- rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- default:
- {
- switch (get_highest_layer(default_layer_state)) {
- case _DEFAULT_LAYER_1:
- rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_2:
- rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_3:
- rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- case _DEFAULT_LAYER_4:
- rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
- break;
- }
- break;
- }
- }
- }
switch (get_highest_layer(default_layer_state)) {
case _DEFAULT_LAYER_1:
@@ -296,6 +245,8 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if ((this_mod | this_osm) & MOD_MASK_ALT) {
RGB_MATRIX_INDICATOR_SET_COLOR(38, 0x00, 0x00, 0xFF);
}
+
+ return true;
}
void matrix_init_keymap(void) {
diff --git a/layouts/community/ortho_4x12/drashna/rules.mk b/layouts/community/ortho_4x12/drashna/rules.mk
index d766245260..2905fb0fd4 100644
--- a/layouts/community/ortho_4x12/drashna/rules.mk
+++ b/layouts/community/ortho_4x12/drashna/rules.mk
@@ -1,33 +1,35 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
TAP_DANCE_ENABLE = no
SPACE_CADET_ENABLE = no
NKRO_ENABLE = yes
+CAPS_WORD_ENABLE = no
ifneq ($(strip $(KEYBOARD)), planck/rev6)
- CONSOLE_ENABLE = no
- COMMAND_ENABLE = no
+ CONSOLE_ENABLE = no
+ COMMAND_ENABLE = no
ifeq ($(strip $(LAYOUT_HAS_RGB)), yes)
RGBLIGHT_ENABLE = yes
- INDICATOR_LIGHTS = yes
+ INDICATOR_LIGHTS = yes
RGBLIGHT_STARTUP_ANIMATION = yes
endif
else
- CONSOLE_ENABLE = yes
- COMMAND_ENABLE = yes
+ CONSOLE_ENABLE = yes
RGBLIGHT_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
RGB_MATRIX_ENABLE = no
- AUDIO_ENABLE = yes
- EEPROM_DRIVER = i2c
+ AUDIO_ENABLE = yes
+ EEPROM_DRIVER = i2c
ENCODER_MAP_ENABLE = yes
+ AUTOCORRECTION_ENABLE = yes
+ CAPS_WORD_ENABLE = yes
endif
ifeq ($(strip $(KEYBOARD)), planck/light)
RGB_MATRIX_ENABLE = yes
RGBLIGHT_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
- AUDIO_ENABLE = yes
+ AUDIO_ENABLE = yes
endif
ifeq ($(strip $(KEYBOARD)), planck/ez)
RGBLIGHT_ENABLE = no
@@ -39,4 +41,6 @@ ifeq ($(strip $(KEYBOARD)), planck/ez)
CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
AUDIO_ENABLE = yes
+ AUTOCORRECTION_ENABLE = yes
+ CAPS_WORD_ENABLE = yes
endif
diff --git a/layouts/community/ortho_5x12/drashna/rules.mk b/layouts/community/ortho_5x12/drashna/rules.mk
index 69a025cc03..98ac829092 100644
--- a/layouts/community/ortho_5x12/drashna/rules.mk
+++ b/layouts/community/ortho_5x12/drashna/rules.mk
@@ -14,4 +14,5 @@ ifeq ($(strip $(KEYBOARD)), fractal)
RGBLIGHT_ENABLE = yes
RGBLIGHT_STARTUP_ANIMATION = yes
BOOTLOADER = qmk-dfu
+ CUSTOM_UNICODE_ENABLE = no
endif
diff --git a/layouts/community/ortho_5x12/riblee/keymap.c b/layouts/community/ortho_5x12/riblee/keymap.c
index b722483759..fd748b03d4 100644
--- a/layouts/community/ortho_5x12/riblee/keymap.c
+++ b/layouts/community/ortho_5x12/riblee/keymap.c
@@ -44,15 +44,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower |Space |Space |Raise | / | Left | Down |Right |
+ * | Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_RSPC, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Hungarian
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
-* | Brite| Ctrl | Alt | GUI |Lower |Space |Space |Raise | / | Left | Down |Right |
+* | Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_HUNGARIAN] = LAYOUT_ortho_5x12(
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | K | M | , | . | Up |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
+ * | Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_ortho_5x12(
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_RSPC, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Dvorak
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * | Ctrl | GUI | Alt |Shift |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_DVORAK] = LAYOUT_ortho_5x12(
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_RSPC, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Workman
@@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | M | C | V | K | L | , | . | Up |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
+ * | Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_WORKMAN] = LAYOUT_ortho_5x12(
@@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_DEL,
KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_UP, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_RSPC, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Lower
@@ -189,7 +189,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | |Mu mod|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| HUN |Wrkmn |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | NKRO | Mac |Linux | | | |
+ * | | | | | UCM | R_UCM| NKRO |CGNorm|CGSwap| | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
@@ -198,7 +198,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, KC_INS, KC_PSCR, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, WORKMAN,
- _______, _______, _______, _______, _______, _______, NK_TOGG, CG_NORM, CG_SWAP, _______, _______, _______,
+ _______, _______, _______, _______, UC_MOD, UC_RMOD, NK_TOGG, CG_NORM, CG_SWAP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/layouts/community/ortho_5x12/riblee/readme.md b/layouts/community/ortho_5x12/riblee/readme.md
index c792e70806..43ed0f34d1 100644
--- a/layouts/community/ortho_5x12/riblee/readme.md
+++ b/layouts/community/ortho_5x12/riblee/readme.md
@@ -14,7 +14,7 @@ Qwerty
|------+------+------+------+------+------|------+------+------+------+------+------|
| Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
|------+------+------+------+------+------+------+------+------+------+------+------|
-| Brite| Ctrl | Alt | GUI |Lower |Space |Space |Raise | / | Left | Down |Right |
+| Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
`-----------------------------------------------------------------------------------'
Hungarian
@@ -27,7 +27,7 @@ Qwerty
|------+------+------+------+------+------|------+------+------+------+------+------|
| Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
|------+------+------+------+------+------+------+------+------+------+------+------|
-| Brite| Ctrl | Alt | GUI |Lower |Space |Space |Raise | / | Left | Down |Right |
+| Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
`-----------------------------------------------------------------------------------'
Colemak
@@ -40,7 +40,7 @@ Colemak
|------+------+------+------+------+------|------+------+------+------+------+------|
| Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
|------+------+------+------+------+------+------+------+------+------+------+------|
-| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+| Ctrl | GUI | Alt |Shift |Lower | Space |Raise | Left | Down | Up |Right |
`-----------------------------------------------------------------------------------'
Dvorak
@@ -53,7 +53,20 @@ Dvorak
|------+------+------+------+------+------|------+------+------+------+------+------|
| Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
|------+------+------+------+------+------+------+------+------+------+------+------|
-| Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+| Ctrl | GUI | Alt |Shift |Lower | Space |Raise | Left | Down | Up |Right |
+`-----------------------------------------------------------------------------------'
+
+Workman
+,-----------------------------------------------------------------------------------.
+| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Esc | A | S | H | T | G | Y | N | E | O | I | ' |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Shift| Z | X | M | C | V | K | L | , | . | Up |Enter |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Ctrl | GUI | Alt |Shift |Lower | Space |Raise | / | Left | Down |Right |
`-----------------------------------------------------------------------------------'
Lower
diff --git a/layouts/community/split_3x6_3/bcat/config.h b/layouts/community/split_3x6_3/bcat/config.h
index b8743429cf..556fb90d5f 100644
--- a/layouts/community/split_3x6_3/bcat/config.h
+++ b/layouts/community/split_3x6_3/bcat/config.h
@@ -16,12 +16,13 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
#if defined(KEYBOARD_crkbd_rev1)
# define EE_HANDS
-# if defined(RGB_MATRIX_ENABLE)
-/* Limit max RGB LED current to avoid tripping controller fuse. */
-# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+# if defined(OLED_ENABLE)
+# undef OLED_FONT_H
+# define OLED_FONT_H "lib/glcdfont.c"
# endif
#endif
diff --git a/layouts/community/split_3x6_3/bcat/keymap.c b/layouts/community/split_3x6_3/bcat/keymap.c
index 4f68c8f843..cfac93d1e3 100644
--- a/layouts/community/split_3x6_3/bcat/keymap.c
+++ b/layouts/community/split_3x6_3/bcat/keymap.c
@@ -18,20 +18,9 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
+#if defined(OLED_ENABLE)
+# include "bcat_oled.h"
+#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -58,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee */
[LAYER_ADJUST] = LAYOUT_split_3x6_3(
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______,
_______, _______, _______, KC_MUTE, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______,
_______, _______, _______, RGB_TOG, _______, _______
@@ -66,4 +55,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
};
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
+#if defined(OLED_ENABLE)
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_master() ? OLED_ROTATION_270 : OLED_ROTATION_180; }
+
+void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {
+ render_oled_layers();
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_indicators(keyboard_state->leds);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_wpm(keyboard_state->wpm);
+ render_oled_pet(/*col=*/0, /*line=*/12, keyboard_state);
+}
+#endif
diff --git a/layouts/community/split_3x6_3/bcat/readme.md b/layouts/community/split_3x6_3/bcat/readme.md
index c4bf891c40..b7b5d3de7d 100644
--- a/layouts/community/split_3x6_3/bcat/readme.md
+++ b/layouts/community/split_3x6_3/bcat/readme.md
@@ -117,7 +117,7 @@ better location.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/fZouko5.png)
+![Adjust layer layout](https://i.imgur.com/Q4rN6cQ.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee))
diff --git a/layouts/community/split_3x6_3/bcat/rules.mk b/layouts/community/split_3x6_3/bcat/rules.mk
index 5ee614b192..29e52b92db 100644
--- a/layouts/community/split_3x6_3/bcat/rules.mk
+++ b/layouts/community/split_3x6_3/bcat/rules.mk
@@ -1,5 +1,9 @@
+BCAT_OLED_PET = luna
+
ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
BOOTLOADER = atmel-dfu # Elite-C
+ OLED_ENABLE = yes # dual 128x32 OLED screens
+ OLED_DRIVER = SSD1306
RGB_MATRIX_ENABLE = yes # per-key RGB and underglow
endif
diff --git a/layouts/community/split_3x6_3/drashna/config.h b/layouts/community/split_3x6_3/drashna/config.h
index b86448c671..cfcb873a80 100644
--- a/layouts/community/split_3x6_3/drashna/config.h
+++ b/layouts/community/split_3x6_3/drashna/config.h
@@ -93,3 +93,7 @@
#endif
#define TAPPING_TERM_PER_KEY
+#ifdef TAPPING_TERM
+# undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 200
diff --git a/layouts/community/split_3x6_3/drashna/keymap.c b/layouts/community/split_3x6_3/drashna/keymap.c
index 7c31972e3f..4bd4618d0c 100644
--- a/layouts/community/split_3x6_3/drashna/keymap.c
+++ b/layouts/community/split_3x6_3/drashna/keymap.c
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
- HPT_TOG, KC_NUKE, _______, _______, TG_MODS, HPT_FBK
+ REBOOT, KC_NUKE, _______, _______, TG_MODS, AUTO_CTN
)
};
// clang-format on
@@ -265,7 +265,7 @@ void check_default_layer(uint8_t mode, uint8_t type, uint8_t led_min, uint8_t le
}
}
-void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
if (userspace_config.rgb_layer_change) {
switch (get_highest_layer(layer_state)) {
case _GAMEPAD:
@@ -291,5 +291,6 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
check_default_layer(0, LED_FLAG_MODIFIER, led_min, led_max);
}
+ return false;
}
#endif
diff --git a/layouts/community/split_3x6_3/drashna/rules.mk b/layouts/community/split_3x6_3/drashna/rules.mk
index 2238b57015..9164dcdeba 100644
--- a/layouts/community/split_3x6_3/drashna/rules.mk
+++ b/layouts/community/split_3x6_3/drashna/rules.mk
@@ -1,9 +1,8 @@
-
# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# change to "no" to disable the options
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
@@ -12,24 +11,25 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see her
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-
ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
- OLED_ENABLE = yes
- RGB_MATRIX_ENABLE = yes
- HAPTIC_ENABLE = no
- BOOTLOADER = qmk-dfu
+ OLED_ENABLE = yes
+ RGB_MATRIX_ENABLE = yes
+ HAPTIC_ENABLE = no
endif
ifeq ($(strip $(CTPC)), yes)
- HAPTIC_ENABLE = no
- WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file
- SERIAL_DRIVER = usart
- SWAP_HANDS_ENABLE = yes
- WPM_ENABLE = yes
+ HAPTIC_ENABLE = no
+ WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file
+ SERIAL_DRIVER = usart
+ SWAP_HANDS_ENABLE = yes
+ WPM_ENABLE = yes
+ AUTOCORRECTION_ENABLE = yes
+ CAPS_WORD_ENABLE = yes
+else
+ CUSTOM_UNICODE_ENABLE = no
+ BOOTLOADER = qmk-hid
+ BOOTLOADER_SIZE = 512
endif
diff --git a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json
index b39ea1fb27..bf30205f3d 100644
--- a/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json
+++ b/layouts/default/60_ansi_arrow_split_bs_7u_spc/info.json
@@ -3,7 +3,7 @@
"url": "https://mr.sendyyk.com",
"maintainer": "Sendy YK <mr@sendyyk.com>",
"layouts": {
- "LAYOUT_60_ansi_arrow": {
+ "LAYOUT_60_ansi_arrow_split_bs_7u_spc": {
"layout": [
{"x": 0, "y": 0},
{"x": 1, "y": 0},
diff --git a/layouts/default/65_ansi_split_bs/info.json b/layouts/default/65_ansi_split_bs/info.json
index b93eb98c40..f5e141eab7 100644
--- a/layouts/default/65_ansi_split_bs/info.json
+++ b/layouts/default/65_ansi_split_bs/info.json
@@ -3,7 +3,7 @@
"url": "",
"maintainer": "qmk",
"layouts": {
- "LAYOUT_65_ansi": {
+ "LAYOUT_65_ansi_split_bs": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
diff --git a/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c b/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c
new file mode 100644
index 0000000000..6fa642b43d
--- /dev/null
+++ b/layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c
@@ -0,0 +1,24 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = |Bsp|Bsp|Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │PgD│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_65_iso(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/65_iso_split_bs/info.json b/layouts/default/65_iso_split_bs/info.json
new file mode 100644
index 0000000000..5cd5861b35
--- /dev/null
+++ b/layouts/default/65_iso_split_bs/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "65% ISO layout with split Backspace",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_65_iso_split_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/65_iso_split_bs/layout.json b/layouts/default/65_iso_split_bs/layout.json
new file mode 100644
index 0000000000..cf13c3a100
--- /dev/null
+++ b/layouts/default/65_iso_split_bs/layout.json
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","","","",""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",""],
+[{w:1.75},"","","","","","","","","","","","","",{x:1.25},""],
+[{w:1.25},"","","","","","","","","","","","",{w:1.75},"","",""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"","","","","","",""]
diff --git a/layouts/default/65_iso_split_bs/readme.md b/layouts/default/65_iso_split_bs/readme.md
new file mode 100644
index 0000000000..b80f03e68a
--- /dev/null
+++ b/layouts/default/65_iso_split_bs/readme.md
@@ -0,0 +1,3 @@
+# 65_iso_split_bs
+
+ LAYOUT_65_iso_split_bs
diff --git a/layouts/default/ortho_4x16/default_ortho_4x16/keymap.c b/layouts/default/ortho_4x16/default_ortho_4x16/keymap.c
new file mode 100644
index 0000000000..0703038bdf
--- /dev/null
+++ b/layouts/default/ortho_4x16/default_ortho_4x16/keymap.c
@@ -0,0 +1,61 @@
+// Copyright 2022 QMK (James Young @noroadsleft)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │Tab│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │BS │ 7 │ 8 │ 9 │ / │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┬───┬───┬───┬───┼───┼───┼───┼───┤
+ * │Esc│ A │ S │ D │ F │ G │ H │ J │ K │ L │;: │'" │ 4 │ 5 │ 6 │ * │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ N │ M │,< │.> │/? │Ent│ 1 │ 2 │ 3 │ - │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ ` │Ctl│GUI│Alt│Fn │ │ │Fn2│Lft│Dwn│Up │Rgt│ 0 │ . │Ent│ + │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ortho_4x16(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9, KC_PSLS,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_P4, KC_P5, KC_P6, KC_PAST,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_P1, KC_P2, KC_P3, KC_PMNS,
+ KC_GRV, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_PPLS
+ ),
+
+ /* Lower
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │BS │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Del│F1 │F2 │F3 │F4 │F5 │F6 │ _ │ + │ { │ } │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │F7 │F8 │F9 │F10│F11│F12│#~ │\| │Hom│End│ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │Nxt│Vl─│Vl+│Ply│ │ │ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [1] = LAYOUT_ortho_4x16(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, _______, _______, _______, _______,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______
+ ),
+
+ /* Raise
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │BS │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Del│F1 │F2 │F3 │F4 │F5 │F6 │ - │ = │ [ │ ] │ \ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │F7 │F8 │F9 │F10│F11│F12│ # │ \ │PUp│PDn│ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │Nxt│Vl-│Vl+│Ply│ │ │ │ │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [2] = LAYOUT_ortho_4x16(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, _______, _______, _______, _______,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______
+ ),
+
+};
diff --git a/layouts/default/ortho_4x16/info.json b/layouts/default/ortho_4x16/info.json
new file mode 100644
index 0000000000..94ad23c78d
--- /dev/null
+++ b/layouts/default/ortho_4x16/info.json
@@ -0,0 +1,78 @@
+{
+ "keyboard_name": "4x16 ortholinear layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_ortho_4x16": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2, "y":1},
+ {"x":3, "y":1},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":2},
+ {"x":4, "y":2},
+ {"x":5, "y":2},
+ {"x":6, "y":2},
+ {"x":7, "y":2},
+ {"x":8, "y":2},
+ {"x":9, "y":2},
+ {"x":10, "y":2},
+ {"x":11, "y":2},
+ {"x":12, "y":2},
+ {"x":13, "y":2},
+ {"x":14, "y":2},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":6, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+ {"x":15, "y":3}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/ortho_4x16/layout.json b/layouts/default/ortho_4x16/layout.json
new file mode 100644
index 0000000000..6f5785f39a
--- /dev/null
+++ b/layouts/default/ortho_4x16/layout.json
@@ -0,0 +1,4 @@
+["","","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","","",""],
+["","","","","","","","","","","","","","","",""]
diff --git a/layouts/default/ortho_4x16/readme.md b/layouts/default/ortho_4x16/readme.md
new file mode 100644
index 0000000000..6dce03f51a
--- /dev/null
+++ b/layouts/default/ortho_4x16/readme.md
@@ -0,0 +1,3 @@
+# ortho_4x16
+
+ LAYOUT_ortho_4x16
diff --git a/layouts/default/readme.md b/layouts/default/readme.md
index 1acc16d94f..648afcd70b 100644
--- a/layouts/default/readme.md
+++ b/layouts/default/readme.md
@@ -35,6 +35,21 @@ LAYOUT_60_ansi
```
```
+LAYOUT_60_ansi_arrow_split_bs_7u_spc
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴──┬───┼───┼───┤
+│ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_60_ansi_arrow
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -307,6 +322,21 @@ LAYOUT_65_iso_blocker_split_bs
```
```
+LAYOUT_65_iso_split_bs
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_66_ansi
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┐
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -440,6 +470,108 @@ LAYOUT_tkl_iso
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
```
+```
+LAYOUT_tkl_f13_ansi
+┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_f13_ansi_tsangan
+┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_f13_iso
+┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_f13_iso_tsangan
+┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐
+│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │
+└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_nofrow_ansi
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_nofrow_iso
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
### 96% Form Factor
```
@@ -658,9 +790,33 @@ LAYOUT_numpad_6x4
└───────┴───┴───┘
```
+```
+LAYOUT_numpad_6x5
+┌───┬───┬───┬───┬───┐
+│ │ │ │ │ │
+├───┼───┼───┼───┼───┤
+│ │ │ │ │ │
+├───┼───┼───┼───┼───┤
+│ │ │ │ │ │
+├───┼───┼───┼───┤ │
+│ │ │ │ │ │
+├───┼───┼───┼───┼───┤
+│ │ │ │ │ │
+├───┼───┴───┼───┤ │
+│ │ │ │ │
+└───┴───────┴───┴───┘
+```
+
### Ortholinear Layouts
```
+LAYOUT_ortho_1x1
+┌───┐
+│ │
+└───┘
+```
+
+```
LAYOUT_ortho_2x3
┌───┬───┬───┐
│ │ │ │
@@ -716,6 +872,19 @@ LAYOUT_ortho_4x12
```
```
+LAYOUT_ortho_4x16
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_ortho_4x4
┌───┬───┬───┬───┐
│ │ │ │ │
@@ -729,6 +898,19 @@ LAYOUT_ortho_4x4
```
```
+LAYOUT_ortho_4x6
+┌───┬───┬───┬───┬───┬───┐
+│ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │
+├───┼───┼───┼───┼───┼───┤
+│ │ │ │ │ │ │
+└───┴───┴───┴───┴───┴───┘
+```
+
+```
LAYOUT_ortho_5x5
┌───┬───┬───┬───┬───┐
│ │ │ │ │ │
diff --git a/layouts/default/split_3x5_2/default_split_3x5_2/keymap.c b/layouts/default/split_3x5_2/default_split_3x5_2/keymap.c
new file mode 100644
index 0000000000..68ffd797a7
--- /dev/null
+++ b/layouts/default/split_3x5_2/default_split_3x5_2/keymap.c
@@ -0,0 +1,23 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
+ * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │
+ * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
+ * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │
+ * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
+ * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │
+ * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │Bsp├───┐ ┌───┤Ent│
+ * └───┤Tab│ │Spc├───┘
+ * └───┘ └───┘
+ */
+ [0] = LAYOUT_split_3x5_2(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_BSPC, KC_TAB, KC_SPC, KC_ENT
+ )
+};
diff --git a/layouts/default/split_3x5_2/info.json b/layouts/default/split_3x5_2/info.json
new file mode 100644
index 0000000000..e253093544
--- /dev/null
+++ b/layouts/default/split_3x5_2/info.json
@@ -0,0 +1,52 @@
+{
+ "keyboard_name": "3x5+2 split layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "layout": [
+ {"x":0, "y":0.25},
+ {"x":1, "y":0.125},
+ {"x":2, "y":0},
+ {"x":3, "y":0.125},
+ {"x":4, "y":0.25},
+
+ {"x":7, "y":0.25},
+ {"x":8, "y":0.125},
+ {"x":9, "y":0},
+ {"x":10, "y":0.125},
+ {"x":11, "y":0.25},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.125},
+ {"x":2, "y":1},
+ {"x":3, "y":1.125},
+ {"x":4, "y":1.25},
+
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.125},
+ {"x":9, "y":1},
+ {"x":10, "y":1.125},
+ {"x":11, "y":1.25},
+
+ {"x":0, "y":2.25},
+ {"x":1, "y":2.125},
+ {"x":2, "y":2},
+ {"x":3, "y":2.125},
+ {"x":4, "y":2.25},
+
+ {"x":7, "y":2.25},
+ {"x":8, "y":2.125},
+ {"x":9, "y":2},
+ {"x":10, "y":2.125},
+ {"x":11, "y":2.25},
+
+ {"x":3.5, "y":3.25},
+ {"x":4.5, "y":3.5},
+
+ {"x":6.5, "y":3.5},
+ {"x":7.5, "y":3.25}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/split_3x5_2/layout.json b/layouts/default/split_3x5_2/layout.json
new file mode 100644
index 0000000000..1b1c3d0001
--- /dev/null
+++ b/layouts/default/split_3x5_2/layout.json
@@ -0,0 +1,11 @@
+[{x:2,a:7},"",{x:6},""],
+[{y:-0.875,x:1},"",{x:1},"",{x:4},"",{x:1},""],
+[{y:-0.875},"",{x:3},"",{x:2},"",{x:3},""],
+[{y:-0.25,x:2},"",{x:6},""],
+[{y:-0.875,x:1},"",{x:1},"",{x:4},"",{x:1},""],
+[{y:-0.875},"",{x:3},"",{x:2},"",{x:3},""],
+[{y:-0.25,x:2},"",{x:6},""],
+[{y:-0.875,x:1},"",{x:1},"",{x:4},"",{x:1},""],
+[{y:-0.875},"",{x:3},"",{x:2},"",{x:3},""],
+[{y:-0.75,x:3.5},"",{x:3},""],
+[{y:-0.75,x:4.5},"",{x:1},""]
diff --git a/layouts/default/split_3x5_2/readme.md b/layouts/default/split_3x5_2/readme.md
new file mode 100644
index 0000000000..5ec829e478
--- /dev/null
+++ b/layouts/default/split_3x5_2/readme.md
@@ -0,0 +1,5 @@
+# split_3x5_2
+
+ LAYOUT_split_3x5_2
+
+Layout for split keyboards with 3x5 keys and two thumb keys per hand. Examples include the Architeuthis Dux, Ferris, and Cradio.
diff --git a/layouts/default/tkl_f13_ansi/default_tkl_f13_ansi/keymap.c b/layouts/default/tkl_f13_ansi/default_tkl_f13_ansi/keymap.c
new file mode 100644
index 0000000000..a4063f3211
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi/default_tkl_f13_ansi/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_f13_ansi/info.json b/layouts/default/tkl_f13_ansi/info.json
new file mode 100644
index 0000000000..3e0aa4b960
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi/info.json
@@ -0,0 +1,104 @@
+{
+ "keyboard_name": "Tenkeyless ANSI layout with F13 key",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_f13_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":13.5, "y":2.25, "w":1.5},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25, "w":2.25},
+
+ {"x":0, "y":4.25, "w":2.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":1.25},
+ {"x":1.25, "y":5.25, "w":1.25},
+ {"x":2.5, "y":5.25, "w":1.25},
+ {"x":3.75, "y":5.25, "w":6.25},
+ {"x":10, "y":5.25, "w":1.25},
+ {"x":11.25, "y":5.25, "w":1.25},
+ {"x":12.5, "y":5.25, "w":1.25},
+ {"x":13.75, "y":5.25, "w":1.25},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_f13_ansi/layout.json b/layouts/default/tkl_f13_ansi/layout.json
new file mode 100644
index 0000000000..e93ee739ae
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""]
diff --git a/layouts/default/tkl_f13_ansi/readme.md b/layouts/default/tkl_f13_ansi/readme.md
new file mode 100644
index 0000000000..902a8e5395
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi/readme.md
@@ -0,0 +1,3 @@
+# tkl_f13_ansi
+
+ LAYOUT_tkl_f13_ansi
diff --git a/layouts/default/tkl_f13_ansi_tsangan/default_tkl_f13_ansi_tsangan/keymap.c b/layouts/default/tkl_f13_ansi_tsangan/default_tkl_f13_ansi_tsangan/keymap.c
new file mode 100644
index 0000000000..7ca7427405
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi_tsangan/default_tkl_f13_ansi_tsangan/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤┌───┼───┼───┐
+ * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl││ ← │ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_f13_ansi_tsangan(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_f13_ansi_tsangan/info.json b/layouts/default/tkl_f13_ansi_tsangan/info.json
new file mode 100644
index 0000000000..578e395df6
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi_tsangan/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "Tenkeyless ANSI layout with F13 key and Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":13.5, "y":2.25, "w":1.5},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25, "w":2.25},
+
+ {"x":0, "y":4.25, "w":2.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":1.5},
+ {"x":1.5, "y":5.25},
+ {"x":2.5, "y":5.25, "w":1.5},
+ {"x":4, "y":5.25, "w":7},
+ {"x":11, "y":5.25, "w":1.5},
+ {"x":12.5, "y":5.25},
+ {"x":13.5, "y":5.25, "w":1.5},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_f13_ansi_tsangan/layout.json b/layouts/default/tkl_f13_ansi_tsangan/layout.json
new file mode 100644
index 0000000000..a85014d9a0
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi_tsangan/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""]
diff --git a/layouts/default/tkl_f13_ansi_tsangan/readme.md b/layouts/default/tkl_f13_ansi_tsangan/readme.md
new file mode 100644
index 0000000000..2151c877c3
--- /dev/null
+++ b/layouts/default/tkl_f13_ansi_tsangan/readme.md
@@ -0,0 +1,3 @@
+# tkl_f13_ansi_tsangan
+
+ LAYOUT_tkl_f13_ansi_tsangan
diff --git a/layouts/default/tkl_f13_iso/default_tkl_f13_iso/keymap.c b/layouts/default/tkl_f13_iso/default_tkl_f13_iso/keymap.c
new file mode 100644
index 0000000000..61d00b2df4
--- /dev/null
+++ b/layouts/default/tkl_f13_iso/default_tkl_f13_iso/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ ││Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│└───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_f13_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_f13_iso/info.json b/layouts/default/tkl_f13_iso/info.json
new file mode 100644
index 0000000000..c47ea7fb78
--- /dev/null
+++ b/layouts/default/tkl_f13_iso/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Tenkeyless ISO layout with F13 key",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_f13_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25},
+ {"x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"x":0, "y":4.25, "w":1.25},
+ {"x":1.25, "y":4.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":1.25},
+ {"x":1.25, "y":5.25, "w":1.25},
+ {"x":2.5, "y":5.25, "w":1.25},
+ {"x":3.75, "y":5.25, "w":6.25},
+ {"x":10, "y":5.25, "w":1.25},
+ {"x":11.25, "y":5.25, "w":1.25},
+ {"x":12.5, "y":5.25, "w":1.25},
+ {"x":13.75, "y":5.25, "w":1.25},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_f13_iso/layout.json b/layouts/default/tkl_f13_iso/layout.json
new file mode 100644
index 0000000000..3c2c744dcb
--- /dev/null
+++ b/layouts/default/tkl_f13_iso/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",""],
+[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""]
diff --git a/layouts/default/tkl_f13_iso/readme.md b/layouts/default/tkl_f13_iso/readme.md
new file mode 100644
index 0000000000..e7bba09f3f
--- /dev/null
+++ b/layouts/default/tkl_f13_iso/readme.md
@@ -0,0 +1,3 @@
+# tkl_f13_iso
+
+ LAYOUT_tkl_f13_iso
diff --git a/layouts/default/tkl_f13_iso_tsangan/default_tkl_f13_iso_tsangan/keymap.c b/layouts/default/tkl_f13_iso_tsangan/default_tkl_f13_iso_tsangan/keymap.c
new file mode 100644
index 0000000000..6ca10433d1
--- /dev/null
+++ b/layouts/default/tkl_f13_iso_tsangan/default_tkl_f13_iso_tsangan/keymap.c
@@ -0,0 +1,29 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ ││Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│└───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤┌───┼───┼───┐
+ * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl││ ← │ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_f13_iso_tsangan(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_f13_iso_tsangan/info.json b/layouts/default/tkl_f13_iso_tsangan/info.json
new file mode 100644
index 0000000000..6b1f0ddded
--- /dev/null
+++ b/layouts/default/tkl_f13_iso_tsangan/info.json
@@ -0,0 +1,104 @@
+{
+ "keyboard_name": "Tenkeyless ISO layout with F13 key and Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_f13_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1.25, "y":0},
+ {"x":2.25, "y":0},
+ {"x":3.25, "y":0},
+ {"x":4.25, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.75, "y":0},
+ {"x":10.75, "y":0},
+ {"x":11.75, "y":0},
+ {"x":12.75, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25},
+ {"x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"x":0, "y":4.25, "w":1.25},
+ {"x":1.25, "y":4.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+
+ {"x":0, "y":5.25, "w":1.5},
+ {"x":1.5, "y":5.25},
+ {"x":2.5, "y":5.25, "w":1.5},
+ {"x":4, "y":5.25, "w":7},
+ {"x":11, "y":5.25, "w":1.5},
+ {"x":12.5, "y":5.25},
+ {"x":13.5, "y":5.25, "w":1.5},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_f13_iso_tsangan/layout.json b/layouts/default/tkl_f13_iso_tsangan/layout.json
new file mode 100644
index 0000000000..a53054639e
--- /dev/null
+++ b/layouts/default/tkl_f13_iso_tsangan/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"","","","",{x:0.25},"",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",""],
+[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"","",{w:1.5},"",{x:0.25},"","",""]
diff --git a/layouts/default/tkl_f13_iso_tsangan/readme.md b/layouts/default/tkl_f13_iso_tsangan/readme.md
new file mode 100644
index 0000000000..377b9a014e
--- /dev/null
+++ b/layouts/default/tkl_f13_iso_tsangan/readme.md
@@ -0,0 +1,3 @@
+# tkl_f13_iso_tsangan
+
+ LAYOUT_tkl_f13_iso_tsangan
diff --git a/layouts/default/tkl_nofrow_ansi/info.json b/layouts/default/tkl_nofrow_ansi/info.json
index dfb0fc92b4..987cc47212 100644
--- a/layouts/default/tkl_nofrow_ansi/info.json
+++ b/layouts/default/tkl_nofrow_ansi/info.json
@@ -3,7 +3,7 @@
"url": "",
"maintainer": "qmk",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_tkl_nofrow_ansi": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -87,4 +87,4 @@
]
}
}
-} \ No newline at end of file
+}
diff --git a/layouts/default/tkl_nofrow_iso/default_tkl_nofrow_iso/keymap.c b/layouts/default/tkl_nofrow_iso/default_tkl_nofrow_iso/keymap.c
new file mode 100644
index 0000000000..5f6d7bf162
--- /dev/null
+++ b/layouts/default/tkl_nofrow_iso/default_tkl_nofrow_iso/keymap.c
@@ -0,0 +1,24 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_nofrow_iso(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_nofrow_iso/info.json b/layouts/default/tkl_nofrow_iso/info.json
new file mode 100644
index 0000000000..1fc4142ead
--- /dev/null
+++ b/layouts/default/tkl_nofrow_iso/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "Tenkeyless No F-Row ISO Layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_nofrow_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":15.25, "y":1},
+ {"x":16.25, "y":1},
+ {"x":17.25, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":1.25},
+ {"x":1.25, "y":3},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":16.25, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25},
+
+ {"x":15.25, "y":4},
+ {"x":16.25, "y":4},
+ {"x":17.25, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_nofrow_iso/layout.json b/layouts/default/tkl_nofrow_iso/layout.json
new file mode 100644
index 0000000000..5bec936e66
--- /dev/null
+++ b/layouts/default/tkl_nofrow_iso/layout.json
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",""],
+[{w:1.25},"","","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""]
diff --git a/layouts/default/tkl_nofrow_iso/readme.md b/layouts/default/tkl_nofrow_iso/readme.md
new file mode 100644
index 0000000000..aeaa5cfd06
--- /dev/null
+++ b/layouts/default/tkl_nofrow_iso/readme.md
@@ -0,0 +1,3 @@
+# tkl_nofrow_iso
+
+ LAYOUT_tkl_nofrow_iso
diff --git a/lib/python/qmk/cli/doctor/main.py b/lib/python/qmk/cli/doctor/main.py
index ed20f46d3f..2e5e221e8f 100755
--- a/lib/python/qmk/cli/doctor/main.py
+++ b/lib/python/qmk/cli/doctor/main.py
@@ -11,7 +11,7 @@ from milc.questions import yesno
from qmk import submodules
from qmk.constants import QMK_FIRMWARE, QMK_FIRMWARE_UPSTREAM
from .check import CheckStatus, check_binaries, check_binary_versions, check_submodules
-from qmk.commands import git_check_repo, git_get_branch, git_is_dirty, git_get_remotes, git_check_deviation, in_virtualenv
+from qmk.commands import git_check_repo, git_get_branch, git_get_tag, git_is_dirty, git_get_remotes, git_check_deviation, in_virtualenv
def os_tests():
@@ -47,6 +47,11 @@ def git_tests():
git_branch = git_get_branch()
if git_branch:
cli.log.info('Git branch: %s', git_branch)
+
+ repo_version = git_get_tag()
+ if repo_version:
+ cli.log.info('Repo version: %s', repo_version)
+
git_dirty = git_is_dirty()
if git_dirty:
cli.log.warning('{fg_yellow}Git has unstashed/uncommitted changes.')
diff --git a/lib/python/qmk/cli/format/c.py b/lib/python/qmk/cli/format/c.py
index 0160e6036f..8eb7fa1ed0 100644
--- a/lib/python/qmk/cli/format/c.py
+++ b/lib/python/qmk/cli/format/c.py
@@ -1,6 +1,5 @@
"""Format C code according to QMK's style.
"""
-from os import path
from shutil import which
from subprocess import CalledProcessError, DEVNULL, Popen, PIPE
@@ -15,6 +14,12 @@ core_dirs = ('drivers', 'quantum', 'tests', 'tmk_core', 'platforms')
ignored = ('tmk_core/protocol/usb_hid', 'platforms/chibios/boards')
+def is_relative_to(file, other):
+ """Provide similar behavior to PurePath.is_relative_to in Python > 3.9
+ """
+ return str(normpath(file).resolve()).startswith(str(normpath(other).resolve()))
+
+
def find_clang_format():
"""Returns the path to clang-format.
"""
@@ -68,18 +73,18 @@ def cformat_run(files):
def filter_files(files, core_only=False):
"""Yield only files to be formatted and skip the rest
"""
- if core_only:
- # Filter non-core files
- for index, file in enumerate(files):
+ files = list(map(normpath, filter(None, files)))
+
+ for file in files:
+ if core_only:
# The following statement checks each file to see if the file path is
# - in the core directories
# - not in the ignored directories
- if not any(i in str(file) for i in core_dirs) or any(i in str(file) for i in ignored):
- files[index] = None
+ if not any(is_relative_to(file, i) for i in core_dirs) or any(is_relative_to(file, i) for i in ignored):
cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file)
+ continue
- for file in files:
- if file and file.name.split('.')[-1] in c_file_suffixes:
+ if file.suffix[1:] in c_file_suffixes:
yield file
else:
cli.log.debug('Skipping file %s', file)
@@ -118,12 +123,8 @@ def format_c(cli):
print(git_diff.stderr)
return git_diff.returncode
- files = []
-
- for file in git_diff.stdout.strip().split('\n'):
- if not any([file.startswith(ignore) for ignore in ignored]):
- if path.exists(file) and file.split('.')[-1] in c_file_suffixes:
- files.append(file)
+ changed_files = git_diff.stdout.strip().split('\n')
+ files = list(filter_files(changed_files, True))
# Sanity check
if not files:
diff --git a/lib/python/qmk/cli/format/python.py b/lib/python/qmk/cli/format/python.py
index 47b5c45fd5..008622cac1 100755
--- a/lib/python/qmk/cli/format/python.py
+++ b/lib/python/qmk/cli/format/python.py
@@ -25,8 +25,9 @@ def yapf_run(files):
def filter_files(files):
"""Yield only files to be formatted and skip the rest
"""
+ files = list(map(normpath, filter(None, files)))
for file in files:
- if file and normpath(file).name.split('.')[-1] in py_file_suffixes:
+ if file.suffix[1:] in py_file_suffixes:
yield file
else:
cli.log.debug('Skipping file %s', file)
diff --git a/lib/python/qmk/cli/generate/compilation_database.py b/lib/python/qmk/cli/generate/compilation_database.py
index 602635270c..7ac0f740fe 100755
--- a/lib/python/qmk/cli/generate/compilation_database.py
+++ b/lib/python/qmk/cli/generate/compilation_database.py
@@ -26,7 +26,8 @@ def system_libs(binary: str) -> List[Path]:
# Actually query xxxxxx-gcc to find its include paths.
if binary.endswith("gcc") or binary.endswith("g++"):
- result = cli.run([binary, '-E', '-Wp,-v', '-'], capture_output=True, check=True, input='\n')
+ # (TODO): Remove 'stdin' once 'input' no longer causes issues under MSYS
+ result = cli.run([binary, '-E', '-Wp,-v', '-'], capture_output=True, check=True, stdin=None, input='\n')
paths = []
for line in result.stderr.splitlines():
if line.startswith(" "):
diff --git a/lib/python/qmk/cli/generate/docs.py b/lib/python/qmk/cli/generate/docs.py
index 749336fea5..74112d834d 100644
--- a/lib/python/qmk/cli/generate/docs.py
+++ b/lib/python/qmk/cli/generate/docs.py
@@ -7,7 +7,9 @@ from subprocess import DEVNULL
from milc import cli
DOCS_PATH = Path('docs/')
-BUILD_PATH = Path('.build/docs/')
+BUILD_PATH = Path('.build/')
+BUILD_DOCS_PATH = BUILD_PATH / 'docs'
+DOXYGEN_PATH = BUILD_PATH / 'doxygen'
@cli.subcommand('Build QMK documentation.', hidden=False if cli.config.user.developer else True)
@@ -18,10 +20,12 @@ def generate_docs(cli):
* [ ] Add a real build step... something static docs
"""
- if BUILD_PATH.exists():
- shutil.rmtree(BUILD_PATH)
+ if BUILD_DOCS_PATH.exists():
+ shutil.rmtree(BUILD_DOCS_PATH)
+ if DOXYGEN_PATH.exists():
+ shutil.rmtree(DOXYGEN_PATH)
- shutil.copytree(DOCS_PATH, BUILD_PATH)
+ shutil.copytree(DOCS_PATH, BUILD_DOCS_PATH)
# When not verbose we want to hide all output
args = {
@@ -34,6 +38,6 @@ def generate_docs(cli):
# Generate internal docs
cli.run(['doxygen', 'Doxyfile'], **args)
- cli.run(['moxygen', '-q', '-a', '-g', '-o', BUILD_PATH / 'internals_%s.md', 'doxygen/xml'], **args)
+ cli.run(['moxygen', '-q', '-g', '-o', BUILD_DOCS_PATH / 'internals_%s.md', DOXYGEN_PATH / 'xml'], **args)
- cli.log.info('Successfully generated internal docs to %s.', BUILD_PATH)
+ cli.log.info('Successfully generated internal docs to %s.', BUILD_DOCS_PATH)
diff --git a/lib/python/qmk/cli/pytest.py b/lib/python/qmk/cli/pytest.py
index a7f01a872a..b7b17f0e9d 100644
--- a/lib/python/qmk/cli/pytest.py
+++ b/lib/python/qmk/cli/pytest.py
@@ -7,11 +7,13 @@ from subprocess import DEVNULL
from milc import cli
+@cli.argument('-t', '--test', arg_only=True, action='append', default=[], help="Mapped to nose2 'testNames' positional argument - https://docs.nose2.io/en/latest/usage.html#specifying-tests-to-run")
@cli.subcommand('QMK Python Unit Tests', hidden=False if cli.config.user.developer else True)
def pytest(cli):
"""Run several linting/testing commands.
"""
- nose2 = cli.run(['nose2', '-v'], capture_output=False, stdin=DEVNULL)
+ nose2 = cli.run(['nose2', '-v', '-t'
+ 'lib/python', *cli.args.test], capture_output=False, stdin=DEVNULL)
flake8 = cli.run(['flake8', 'lib/python'], capture_output=False, stdin=DEVNULL)
return flake8.returncode | nose2.returncode
diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py
index 5a01943773..90a68ca3cd 100644
--- a/lib/python/qmk/commands.py
+++ b/lib/python/qmk/commands.py
@@ -295,6 +295,14 @@ def git_get_branch():
return git_branch.stdout.strip()
+def git_get_tag():
+ """Returns the current tag for a repo, or None.
+ """
+ git_tag = cli.run(['git', 'describe', '--abbrev=0', '--tags'])
+ if git_tag.returncode == 0:
+ return git_tag.stdout.strip()
+
+
def git_is_dirty():
"""Returns 1 if repo is dirty, or 0 if clean
"""
diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py
index 754091a97e..433b110523 100644
--- a/lib/python/qmk/constants.py
+++ b/lib/python/qmk/constants.py
@@ -13,7 +13,7 @@ QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware'
MAX_KEYBOARD_SUBFOLDERS = 5
# Supported processor types
-CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66FX1M0', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L433', 'STM32L443', 'GD32VF103', 'WB32F3G71'
+CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK66FX1M0', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L433', 'STM32L443', 'GD32VF103', 'WB32F3G71'
LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h
new file mode 100644
index 0000000000..e4afddb6a5
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h -r platforms/chibios/boards/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#include_next <chconf.h> \ No newline at end of file
diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
index 3d3e1165e4..9fdc825669 100644
--- a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
+++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
@@ -16,5 +16,5 @@
#pragma once
#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
-# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE
+# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#endif
diff --git a/platforms/chibios/bootloader.c b/platforms/chibios/bootloader.c
index 5cadadeeeb..58212948b0 100644
--- a/platforms/chibios/bootloader.c
+++ b/platforms/chibios/bootloader.c
@@ -123,7 +123,7 @@ void enter_bootloader_mode_if_requested(void) { /* Jumping to bootloader is not
# if defined(BOOTLOADER_KIIBOHD)
/* Kiibohd Bootloader (MCHCK and Infinity KB) */
# define SCB_AIRCR_VECTKEY_WRITEMAGIC 0x05FA0000
-const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";
+const uint8_t sys_reset_to_loader_magic[] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
__attribute__((weak)) void bootloader_jump(void) {
void *volatile vbat = (void *)VBAT;
__builtin_memcpy(vbat, (const void *)sys_reset_to_loader_magic, sizeof(sys_reset_to_loader_magic));
diff --git a/platforms/chibios/eeprom_teensy.c b/platforms/chibios/eeprom_teensy.c
index 97da6f9e14..4aaf665269 100644
--- a/platforms/chibios/eeprom_teensy.c
+++ b/platforms/chibios/eeprom_teensy.c
@@ -39,126 +39,7 @@
* SOFTWARE.
*/
-#define SMC_PMSTAT_RUN ((uint8_t)0x01)
-#define SMC_PMSTAT_HSRUN ((uint8_t)0x80)
-
-#define F_CPU KINETIS_SYSCLK_FREQUENCY
-
-static inline int kinetis_hsrun_disable(void) {
-#if defined(MK66F18)
- if (SMC->PMSTAT == SMC_PMSTAT_HSRUN) {
-// First, reduce the CPU clock speed, but do not change
-// the peripheral speed (F_BUS). Serial1 & Serial2 baud
-// rates will be impacted, but most other peripherals
-// will continue functioning at the same speed.
-# if F_CPU == 256000000 && F_BUS == 64000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // TODO: TEST
-# elif F_CPU == 256000000 && F_BUS == 128000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // TODO: TEST
-# elif F_CPU == 240000000 && F_BUS == 60000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok
-# elif F_CPU == 240000000 && F_BUS == 80000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok
-# elif F_CPU == 240000000 && F_BUS == 120000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok
-# elif F_CPU == 216000000 && F_BUS == 54000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok
-# elif F_CPU == 216000000 && F_BUS == 72000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok
-# elif F_CPU == 216000000 && F_BUS == 108000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok
-# elif F_CPU == 192000000 && F_BUS == 48000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 3, 1, 7); // ok
-# elif F_CPU == 192000000 && F_BUS == 64000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok
-# elif F_CPU == 192000000 && F_BUS == 96000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok
-# elif F_CPU == 180000000 && F_BUS == 60000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 8); // ok
-# elif F_CPU == 180000000 && F_BUS == 90000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 7); // ok
-# elif F_CPU == 168000000 && F_BUS == 56000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 5); // ok
-# elif F_CPU == 144000000 && F_BUS == 48000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(2, 2, 2, 5); // ok
-# elif F_CPU == 144000000 && F_BUS == 72000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(1, 1, 1, 5); // ok
-# elif F_CPU == 120000000 && F_BUS == 60000000
- SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(KINETIS_CLKDIV1_OUTDIV1 - 1) | SIM_CLKDIV1_OUTDIV2(KINETIS_CLKDIV1_OUTDIV2 - 1) |
-# if defined(MK66F18)
- SIM_CLKDIV1_OUTDIV3(KINETIS_CLKDIV1_OUTDIV3 - 1) |
-# endif
- SIM_CLKDIV1_OUTDIV4(KINETIS_CLKDIV1_OUTDIV4 - 1);
-# else
- return 0;
-# endif
- // Then turn off HSRUN mode
- SMC->PMCTRL = SMC_PMCTRL_RUNM_SET(0);
- while (SMC->PMSTAT == SMC_PMSTAT_HSRUN)
- ; // wait
- return 1;
- }
-#endif
- return 0;
-}
-
-static inline int kinetis_hsrun_enable(void) {
-#if defined(MK66F18)
- if (SMC->PMSTAT == SMC_PMSTAT_RUN) {
- // Turn HSRUN mode on
- SMC->PMCTRL = SMC_PMCTRL_RUNM_SET(3);
- while (SMC->PMSTAT != SMC_PMSTAT_HSRUN) {
- ;
- } // wait
-// Then configure clock for full speed
-# if F_CPU == 256000000 && F_BUS == 64000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7);
-# elif F_CPU == 256000000 && F_BUS == 128000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7);
-# elif F_CPU == 240000000 && F_BUS == 60000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7);
-# elif F_CPU == 240000000 && F_BUS == 80000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 7);
-# elif F_CPU == 240000000 && F_BUS == 120000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7);
-# elif F_CPU == 216000000 && F_BUS == 54000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 7);
-# elif F_CPU == 216000000 && F_BUS == 72000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 7);
-# elif F_CPU == 216000000 && F_BUS == 108000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 7);
-# elif F_CPU == 192000000 && F_BUS == 48000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 3, 0, 6);
-# elif F_CPU == 192000000 && F_BUS == 64000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 6);
-# elif F_CPU == 192000000 && F_BUS == 96000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 6);
-# elif F_CPU == 180000000 && F_BUS == 60000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 6);
-# elif F_CPU == 180000000 && F_BUS == 90000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 6);
-# elif F_CPU == 168000000 && F_BUS == 56000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 5);
-# elif F_CPU == 144000000 && F_BUS == 48000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 2, 0, 4);
-# elif F_CPU == 144000000 && F_BUS == 72000000
- SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIVS(0, 1, 0, 4);
-# elif F_CPU == 120000000 && F_BUS == 60000000
- SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(KINETIS_CLKDIV1_OUTDIV1 - 1) | SIM_CLKDIV1_OUTDIV2(KINETIS_CLKDIV1_OUTDIV2 - 1) |
-# if defined(MK66F18)
- SIM_CLKDIV1_OUTDIV3(KINETIS_CLKDIV1_OUTDIV3 - 1) |
-# endif
- SIM_CLKDIV1_OUTDIV4(KINETIS_CLKDIV1_OUTDIV4 - 1);
-# else
- return 0;
-# endif
- return 1;
- }
-#endif
- return 0;
-}
-
-#if defined(K20x) || defined(MK66F18) /* chip selection */
+#if defined(K20x) /* chip selection */
/* Teensy 3.0, 3.1, 3.2; mchck; infinity keyboard */
// The EEPROM is really RAM with a hardware-based backup system to
@@ -188,34 +69,22 @@ static inline int kinetis_hsrun_enable(void) {
//
# define HANDLE_UNALIGNED_WRITES
-# if defined(K20x)
-# define EEPROM_MAX 2048
-# define EEPARTITION 0x03 // all 32K dataflash for EEPROM, none for Data
-# define EEESPLIT 0x30 // must be 0x30 on these chips
-# elif defined(MK66F18)
-# define EEPROM_MAX 4096
-# define EEPARTITION 0x05 // 128K dataflash for EEPROM, 128K for Data
-# define EEESPLIT 0x10 // best endurance: 0x00 = first 12%, 0x10 = first 25%, 0x30 = all equal
-# endif
-
// Minimum EEPROM Endurance
// ------------------------
-# if (EEPROM_SIZE == 4096)
-# define EEESIZE 0x02
-# elif (EEPROM_SIZE == 2048) // 35000 writes/byte or 70000 writes/word
-# define EEESIZE 0x03
+# if (EEPROM_SIZE == 2048) // 35000 writes/byte or 70000 writes/word
+# define EEESIZE 0x33
# elif (EEPROM_SIZE == 1024) // 75000 writes/byte or 150000 writes/word
-# define EEESIZE 0x04
+# define EEESIZE 0x34
# elif (EEPROM_SIZE == 512) // 155000 writes/byte or 310000 writes/word
-# define EEESIZE 0x05
+# define EEESIZE 0x35
# elif (EEPROM_SIZE == 256) // 315000 writes/byte or 630000 writes/word
-# define EEESIZE 0x06
+# define EEESIZE 0x36
# elif (EEPROM_SIZE == 128) // 635000 writes/byte or 1270000 writes/word
-# define EEESIZE 0x07
+# define EEESIZE 0x37
# elif (EEPROM_SIZE == 64) // 1275000 writes/byte or 2550000 writes/word
-# define EEESIZE 0x08
+# define EEESIZE 0x38
# elif (EEPROM_SIZE == 32) // 2555000 writes/byte or 5110000 writes/word
-# define EEESIZE 0x09
+# define EEESIZE 0x39
# endif
/** \brief eeprom initialization
@@ -228,21 +97,15 @@ void eeprom_initialize(void) {
uint8_t status;
if (FTFL->FCNFG & FTFL_FCNFG_RAMRDY) {
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
-
// FlexRAM is configured as traditional RAM
// We need to reconfigure for EEPROM usage
- kinetis_hsrun_disable();
- FTFL->FCCOB0 = 0x80; // PGMPART = Program Partition Command
- FTFL->FCCOB3 = 0;
- FTFL->FCCOB4 = EEESPLIT | EEESIZE;
- FTFL->FCCOB5 = EEPARTITION;
+ FTFL->FCCOB0 = 0x80; // PGMPART = Program Partition Command
+ FTFL->FCCOB4 = EEESIZE; // EEPROM Size
+ FTFL->FCCOB5 = 0x03; // 0K for Dataflash, 32K for EEPROM backup
__disable_irq();
// do_flash_cmd() must execute from RAM. Luckily the C syntax is simple...
(*((void (*)(volatile uint8_t *))((uint32_t)do_flash_cmd | 1)))(&(FTFL->FSTAT));
__enable_irq();
- kinetis_hsrun_enable();
status = FTFL->FSTAT;
if (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL)) {
FTFL->FSTAT = (status & (FTFL_FSTAT_RDCOLERR | FTFL_FSTAT_ACCERR | FTFL_FSTAT_FPVIOL));
@@ -251,11 +114,11 @@ void eeprom_initialize(void) {
}
// wait for eeprom to become ready (is this really necessary?)
while (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) {
- if (++count > 200000) break;
+ if (++count > 20000) break;
}
}
-# define FlexRAM ((volatile uint8_t *)0x14000000)
+# define FlexRAM ((uint8_t *)0x14000000)
/** \brief eeprom read byte
*
@@ -332,12 +195,8 @@ void eeprom_write_byte(uint8_t *addr, uint8_t value) {
if (offset >= EEPROM_SIZE) return;
if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize();
if (FlexRAM[offset] != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset] = value;
flexram_wait();
- kinetis_hsrun_enable();
}
}
@@ -354,30 +213,18 @@ void eeprom_write_word(uint16_t *addr, uint16_t value) {
if ((offset & 1) == 0) {
# endif
if (*(uint16_t *)(&FlexRAM[offset]) != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint16_t *)(&FlexRAM[offset]) = value;
flexram_wait();
- kinetis_hsrun_enable();
}
# ifdef HANDLE_UNALIGNED_WRITES
} else {
if (FlexRAM[offset] != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset] = value;
flexram_wait();
- kinetis_hsrun_enable();
}
if (FlexRAM[offset + 1] != (value >> 8)) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset + 1] = value >> 8;
flexram_wait();
- kinetis_hsrun_enable();
}
}
# endif
@@ -397,57 +244,33 @@ void eeprom_write_dword(uint32_t *addr, uint32_t value) {
case 0:
# endif
if (*(uint32_t *)(&FlexRAM[offset]) != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint32_t *)(&FlexRAM[offset]) = value;
flexram_wait();
- kinetis_hsrun_enable();
}
return;
# ifdef HANDLE_UNALIGNED_WRITES
case 2:
if (*(uint16_t *)(&FlexRAM[offset]) != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint16_t *)(&FlexRAM[offset]) = value;
flexram_wait();
- kinetis_hsrun_enable();
}
if (*(uint16_t *)(&FlexRAM[offset + 2]) != (value >> 16)) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint16_t *)(&FlexRAM[offset + 2]) = value >> 16;
flexram_wait();
- kinetis_hsrun_enable();
}
return;
default:
if (FlexRAM[offset] != value) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset] = value;
flexram_wait();
- kinetis_hsrun_enable();
}
if (*(uint16_t *)(&FlexRAM[offset + 1]) != (value >> 8)) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint16_t *)(&FlexRAM[offset + 1]) = value >> 8;
flexram_wait();
- kinetis_hsrun_enable();
}
if (FlexRAM[offset + 3] != (value >> 24)) {
- kinetis_hsrun_disable();
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset + 3] = value >> 24;
flexram_wait();
- kinetis_hsrun_enable();
}
}
# endif
@@ -465,7 +288,6 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
if (!(FTFL->FCNFG & FTFL_FCNFG_EEERDY)) eeprom_initialize();
if (len >= EEPROM_SIZE) len = EEPROM_SIZE;
if (offset + len >= EEPROM_SIZE) len = EEPROM_SIZE - offset;
- kinetis_hsrun_disable();
while (len > 0) {
uint32_t lsb = offset & 3;
if (lsb == 0 && len >= 4) {
@@ -476,8 +298,6 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
val32 |= (*src++ << 16);
val32 |= (*src++ << 24);
if (*(uint32_t *)(&FlexRAM[offset]) != val32) {
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint32_t *)(&FlexRAM[offset]) = val32;
flexram_wait();
}
@@ -489,8 +309,6 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
val16 = *src++;
val16 |= (*src++ << 8);
if (*(uint16_t *)(&FlexRAM[offset]) != val16) {
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
*(uint16_t *)(&FlexRAM[offset]) = val16;
flexram_wait();
}
@@ -500,8 +318,6 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
// write 8 bits
uint8_t val8 = *src++;
if (FlexRAM[offset] != val8) {
- uint8_t stat = FTFL->FSTAT & 0x70;
- if (stat) FTFL->FSTAT = stat;
FlexRAM[offset] = val8;
flexram_wait();
}
@@ -509,7 +325,6 @@ void eeprom_write_block(const void *buf, void *addr, uint32_t len) {
len--;
}
}
- kinetis_hsrun_enable();
}
/*
diff --git a/quantum/action.c b/quantum/action.c
index 5e81efb671..7a330b05cd 100644
--- a/quantum/action.c
+++ b/quantum/action.c
@@ -834,10 +834,9 @@ void register_code(uint8_t code) {
}
#endif
- else if
- IS_KEY(code) {
- // TODO: should push command_proc out of this block?
- if (command_proc(code)) return;
+ else if IS_KEY (code) {
+ // TODO: should push command_proc out of this block?
+ if (command_proc(code)) return;
#ifndef NO_ACTION_ONESHOT
/* TODO: remove
@@ -854,35 +853,33 @@ void register_code(uint8_t code) {
} else
*/
#endif
- {
- // Force a new key press if the key is already pressed
- // without this, keys with the same keycode, but different
- // modifiers will be reported incorrectly, see issue #1708
- if (is_key_pressed(keyboard_report, code)) {
- del_key(code);
- send_keyboard_report();
- }
- add_key(code);
+ {
+ // Force a new key press if the key is already pressed
+ // without this, keys with the same keycode, but different
+ // modifiers will be reported incorrectly, see issue #1708
+ if (is_key_pressed(keyboard_report, code)) {
+ del_key(code);
send_keyboard_report();
}
- }
- else if
- IS_MOD(code) {
- add_mods(MOD_BIT(code));
+ add_key(code);
send_keyboard_report();
}
+ } else if IS_MOD (code) {
+ add_mods(MOD_BIT(code));
+ send_keyboard_report();
+ }
#ifdef EXTRAKEY_ENABLE
- else if
- IS_SYSTEM(code) { host_system_send(KEYCODE2SYSTEM(code)); }
- else if
- IS_CONSUMER(code) { host_consumer_send(KEYCODE2CONSUMER(code)); }
+ else if IS_SYSTEM (code) {
+ host_system_send(KEYCODE2SYSTEM(code));
+ } else if IS_CONSUMER (code) {
+ host_consumer_send(KEYCODE2CONSUMER(code));
+ }
#endif
#ifdef MOUSEKEY_ENABLE
- else if
- IS_MOUSEKEY(code) {
- mousekey_on(code);
- mousekey_send();
- }
+ else if IS_MOUSEKEY (code) {
+ mousekey_on(code);
+ mousekey_send();
+ }
#endif
}
@@ -927,26 +924,22 @@ void unregister_code(uint8_t code) {
}
#endif
- else if
- IS_KEY(code) {
- del_key(code);
- send_keyboard_report();
- }
- else if
- IS_MOD(code) {
- del_mods(MOD_BIT(code));
- send_keyboard_report();
- }
- else if
- IS_SYSTEM(code) { host_system_send(0); }
- else if
- IS_CONSUMER(code) { host_consumer_send(0); }
+ else if IS_KEY (code) {
+ del_key(code);
+ send_keyboard_report();
+ } else if IS_MOD (code) {
+ del_mods(MOD_BIT(code));
+ send_keyboard_report();
+ } else if IS_SYSTEM (code) {
+ host_system_send(0);
+ } else if IS_CONSUMER (code) {
+ host_consumer_send(0);
+ }
#ifdef MOUSEKEY_ENABLE
- else if
- IS_MOUSEKEY(code) {
- mousekey_off(code);
- mousekey_send();
- }
+ else if IS_MOUSEKEY (code) {
+ mousekey_off(code);
+ mousekey_send();
+ }
#endif
}
diff --git a/quantum/action.h b/quantum/action.h
index b562f18c5b..8a357ded87 100644
--- a/quantum/action.h
+++ b/quantum/action.h
@@ -88,7 +88,7 @@ extern bool disable_action_cache;
/* Code for handling one-handed key modifiers. */
#ifdef SWAP_HANDS_ENABLE
-extern bool swap_hands;
+extern bool swap_hands;
extern const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS];
# if (MATRIX_COLS <= 8)
typedef uint8_t swap_state_row_t;
diff --git a/quantum/backlight/backlight_avr.c b/quantum/backlight/backlight_avr.c
index 67b551dc3c..9c972ae02e 100644
--- a/quantum/backlight/backlight_avr.c
+++ b/quantum/backlight/backlight_avr.c
@@ -232,19 +232,19 @@ ISR(TIMERx_OVF_vect) {
// See http://jared.geek.nz/2013/feb/linear-led-pwm
static uint16_t cie_lightness(uint16_t v) {
- if (v <= ICRx / 12) // If the value is less than or equal to ~8% of max
+ if (v <= (uint32_t)ICRx / 12) // If the value is less than or equal to ~8% of max
{
return v / 9; // Same as dividing by 900%
} else {
// In the next two lines values are bit-shifted. This is to avoid loosing decimals in integer math.
- uint32_t y = (((uint32_t)v + ICRx / 6) << 5) / (ICRx / 6 + ICRx); // If above 8%, add ~16% of max, and normalize with (max + ~16% max)
- uint32_t out = (y * y * y * ICRx) >> 15; // Cube it and undo the bit-shifting. (which is now three times as much due to the cubing)
+ uint32_t y = (((uint32_t)v + (uint32_t)ICRx / 6) << 5) / ((uint32_t)ICRx / 6 + ICRx); // If above 8%, add ~16% of max, and normalize with (max + ~16% max)
+ uint32_t out = (y * y * y * ICRx) >> 15; // Cube it and undo the bit-shifting. (which is now three times as much due to the cubing)
if (out > ICRx) // Avoid overflows
{
out = ICRx;
}
- return out;
+ return (uint16_t)out;
}
}
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index f5525576d8..19a6bea59a 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -14,7 +14,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "config.h"
#include "keymap.h" // to get keymaps[][][]
#include "eeprom.h"
#include "progmem.h" // to read default from flash
diff --git a/quantum/encoder.c b/quantum/encoder.c
index 8fb87281c2..ecbc0c1615 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -59,6 +59,8 @@ static uint8_t thisHand, thatHand;
static uint8_t encoder_value[NUMBER_OF_ENCODERS] = {0};
#endif
+__attribute__((weak)) void encoder_wait_pullup_charge(void) { wait_us(100); }
+
__attribute__((weak)) bool encoder_update_user(uint8_t index, bool clockwise) { return true; }
__attribute__((weak)) bool encoder_update_kb(uint8_t index, bool clockwise) { return encoder_update_user(index, clockwise); }
@@ -84,7 +86,9 @@ void encoder_init(void) {
for (int i = 0; i < NUMBER_OF_ENCODERS; i++) {
setPinInputHigh(encoders_pad_a[i]);
setPinInputHigh(encoders_pad_b[i]);
-
+ }
+ encoder_wait_pullup_charge();
+ for (int i = 0; i < NUMBER_OF_ENCODERS; i++) {
encoder_state[i] = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1);
}
diff --git a/quantum/joystick.h b/quantum/joystick.h
index 87dbc24aff..9156491aca 100644
--- a/quantum/joystick.h
+++ b/quantum/joystick.h
@@ -50,7 +50,7 @@ extern joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT];
enum joystick_status { JS_INITIALIZED = 1, JS_UPDATED = 2 };
typedef struct {
- uint8_t buttons[JOYSTICK_BUTTON_COUNT / 8 + 1];
+ uint8_t buttons[(JOYSTICK_BUTTON_COUNT - 1) / 8 + 1];
int16_t axes[JOYSTICK_AXES_COUNT];
uint8_t status : 2;
diff --git a/quantum/keymap_extras/keymap_lithuanian_azerty.h b/quantum/keymap_extras/keymap_lithuanian_azerty.h
index 8ca38129e3..6f47b16702 100644
--- a/quantum/keymap_extras/keymap_lithuanian_azerty.h
+++ b/quantum/keymap_extras/keymap_lithuanian_azerty.h
@@ -138,7 +138,7 @@
#define LT_CIRC ALGR(LT_COMM) // ^
#define LT_AMPR ALGR(LT_DOT) // &
#define LT_ASTR ALGR(LT_EQL) // *
-#define LT_LBRC ALGR(LT_LRPN) // [
+#define LT_LBRC ALGR(LT_LPRN) // [
#define LT_RBRC ALGR(LT_RPRN) // ]
#define LT_QUOT ALGR(LT_QUES) // '
#define LT_PERC ALGR(LT_X) // %
diff --git a/quantum/keymap_extras/keymap_slovak.h b/quantum/keymap_extras/keymap_slovak.h
index 71344c07ff..bf0b7275ce 100644
--- a/quantum/keymap_extras/keymap_slovak.h
+++ b/quantum/keymap_extras/keymap_slovak.h
@@ -102,10 +102,10 @@
// Row 1
#define SK_RNGA S(SK_SCLN) // ° (dead)
#define SK_1 S(SK_PLUS) // 1
-#define SK_2 S(SK_LACU) // 2
+#define SK_2 S(SK_LCAR) // 2
#define SK_3 S(SK_SCAR) // 3
#define SK_4 S(SK_CCAR) // 4
-#define SK_5 S(SK_TACU) // 5
+#define SK_5 S(SK_TCAR) // 5
#define SK_6 S(SK_ZCAR) // 6
#define SK_7 S(SK_YACU) // 7
#define SK_8 S(SK_AACU) // 8
@@ -141,9 +141,8 @@
*/
// Row 1
#define SK_TILD ALGR(SK_PLUS) // ~
-#define SK_CIRC ALGR(SK_LCAR) // ^ (dead)
-#define SK_BREV ALGR(SK_SCAR) // ˘ (dead)
-#define SK_RNGA ALGR(SK_CCAR) // ° (dead)
+#define SK_CIRC ALGR(SK_SCAR) // ^ (dead)
+#define SK_BREV ALGR(SK_CCAR) // ˘ (dead)
#define SK_OGON ALGR(SK_TCAR) // ˛ (dead)
#define SK_GRV ALGR(SK_ZCAR) // `
#define SK_DOTA ALGR(SK_YACU) // ˙ (dead)
diff --git a/quantum/keymap_extras/sendstring_canadian_multilingual.h b/quantum/keymap_extras/sendstring_canadian_multilingual.h
index c3fcc62c37..3679a98c14 100644
--- a/quantum/keymap_extras/sendstring_canadian_multilingual.h
+++ b/quantum/keymap_extras/sendstring_canadian_multilingual.h
@@ -80,7 +80,7 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// 0 1 2 3 4 5 6 7
CA_0, CA_1, CA_2, CA_3, CA_4, CA_5, CA_6, CA_7,
// 8 9 : ; < = > ?
- CA_8, CA_9, CA_SCLN, CA_SCLN, CA_DOT, CA_EQL, CA_COMM, CA_6,
+ CA_8, CA_9, CA_SCLN, CA_SCLN, CA_COMM, CA_EQL, CA_DOT, CA_6,
// @ A B C D E F G
CA_2, CA_A, CA_B, CA_C, CA_D, CA_E, CA_F, CA_G,
// H I J K L M N O
diff --git a/quantum/keymap_extras/sendstring_lithuanian_azerty.h b/quantum/keymap_extras/sendstring_lithuanian_azerty.h
index 7498a3dc4d..a886411143 100644
--- a/quantum/keymap_extras/sendstring_lithuanian_azerty.h
+++ b/quantum/keymap_extras/sendstring_lithuanian_azerty.h
@@ -76,9 +76,9 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// ! " # $ % & '
KC_SPC, LT_EXLM, LT_EDOT, LT_SLSH, LT_SCLN, LT_X, LT_DOT, LT_QUES,
// ( ) * + , - . /
- LT_LRPN, LT_RPRN, LT_EQL, LT_QUES, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
+ LT_LPRN, LT_RPRN, LT_EQL, LT_QUES, LT_COMM, LT_MINS, LT_DOT, LT_SLSH,
// 0 1 2 3 4 5 6 7
- LT_RPRN, LT_EXLM, LT_MINS, LT_SLSH, LT_SLCN, LT_COLN, LT_COMM, LT_DOT,
+ LT_RPRN, LT_EXLM, LT_MINS, LT_SLSH, LT_SCLN, LT_COLN, LT_COMM, LT_DOT,
// 8 9 : ; < = > ?
LT_EQL, LT_LPRN, LT_COLN, LT_SCLN, LT_LABK, LT_EQL, LT_LABK, LT_QUES,
// @ A B C D E F G
diff --git a/quantum/keymap_extras/sendstring_slovak.h b/quantum/keymap_extras/sendstring_slovak.h
index 72eeb86a53..f48d30dcb1 100644
--- a/quantum/keymap_extras/sendstring_slovak.h
+++ b/quantum/keymap_extras/sendstring_slovak.h
@@ -78,7 +78,7 @@ const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// ( ) * + , - . /
SK_ADIA, SK_NCAR, SK_AMPR, SK_PLUS, SK_COMM, SK_MINS, SK_DOT, SK_UACU,
// 0 1 2 3 4 5 6 7
- SK_EACU, SK_PLUS, SK_LACU, SK_SCAR, SK_CCAR, SK_TACU, SK_ZCAR, SK_YACU,
+ SK_EACU, SK_PLUS, SK_LCAR, SK_SCAR, SK_CCAR, SK_TCAR, SK_ZCAR, SK_YACU,
// 8 9 : ; < = > ?
SK_AACU, SK_IACU, SK_DOT, SK_SCLN, SK_AMPR, SK_EQL, SK_Y, SK_COMM,
// @ A B C D E F G
diff --git a/quantum/led_matrix/animations/solid_reactive_wide.h b/quantum/led_matrix/animations/solid_reactive_wide.h
index 3aa88063a7..9f039c45d4 100644
--- a/quantum/led_matrix/animations/solid_reactive_wide.h
+++ b/quantum/led_matrix/animations/solid_reactive_wide.h
@@ -1,5 +1,5 @@
#ifdef LED_MATRIX_KEYREACTIVE_ENABLED
-# if !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE)
+# if defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE)
# ifdef ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE
LED_MATRIX_EFFECT(SOLID_REACTIVE_WIDE)
@@ -26,5 +26,5 @@ bool SOLID_REACTIVE_MULTIWIDE(effect_params_t* params) { return effect_runner_re
# endif
# endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
-# endif // !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || !defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE)
+# endif // defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE) || defined(ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE)
#endif // LED_MATRIX_KEYREACTIVE_ENABLED
diff --git a/quantum/matrix.c b/quantum/matrix.c
index 483d518ecc..8596c2eabd 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -82,6 +82,13 @@ static inline void setPinOutput_writeLow(pin_t pin) {
}
}
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
static inline void setPinInputHigh_atomic(pin_t pin) {
ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); }
}
@@ -141,7 +148,11 @@ static bool select_row(uint8_t row) {
static void unselect_row(uint8_t row) {
pin_t pin = row_pins[row];
if (pin != NO_PIN) {
+# ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+# else
setPinInputHigh_atomic(pin);
+# endif
}
}
@@ -200,7 +211,11 @@ static bool select_col(uint8_t col) {
static void unselect_col(uint8_t col) {
pin_t pin = col_pins[col];
if (pin != NO_PIN) {
+# ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+# else
setPinInputHigh_atomic(pin);
+# endif
}
}
diff --git a/quantum/process_keycode/process_joystick.c b/quantum/process_keycode/process_joystick.c
index 3ffaf42bf8..fa9c2c1dbc 100644
--- a/quantum/process_keycode/process_joystick.c
+++ b/quantum/process_keycode/process_joystick.c
@@ -28,10 +28,11 @@ bool process_joystick_buttons(uint16_t keycode, keyrecord_t *record) {
if (keycode < JS_BUTTON0 || keycode > JS_BUTTON_MAX) {
return true;
} else {
+ uint8_t button_idx = (keycode - JS_BUTTON0);
if (record->event.pressed) {
- joystick_status.buttons[(keycode - JS_BUTTON0) / 8] |= 1 << (keycode % 8);
+ joystick_status.buttons[button_idx / 8] |= 1 << (button_idx % 8);
} else {
- joystick_status.buttons[(keycode - JS_BUTTON0) / 8] &= ~(1 << (keycode % 8));
+ joystick_status.buttons[button_idx / 8] &= ~(1 << (button_idx % 8));
}
joystick_status.status |= JS_UPDATED;
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 35b6351e9d..be43faaf6b 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -488,6 +488,7 @@ __attribute__((weak)) void suspend_power_down_user(void) {}
__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); }
void suspend_power_down_quantum(void) {
+ suspend_power_down_kb();
#ifndef NO_SUSPEND_POWER_DOWN
// Turn off backlight
# ifdef BACKLIGHT_ENABLE
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index 558c7bd41a..51e9554e2d 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -275,12 +275,8 @@ static void rgb_task_timers(void) {
// Update double buffer timers
#if RGB_DISABLE_TIMEOUT > 0
- if (rgb_anykey_timer < UINT32_MAX) {
- if (UINT32_MAX - deltaTime < rgb_anykey_timer) {
- rgb_anykey_timer = UINT32_MAX;
- } else {
- rgb_anykey_timer += deltaTime;
- }
+ if (rgb_anykey_timer + deltaTime <= UINT32_MAX) {
+ rgb_anykey_timer += deltaTime;
}
#endif // RGB_DISABLE_TIMEOUT > 0
diff --git a/readme.md b/readme.md
index 63b483c744..5649ddfa09 100644
--- a/readme.md
+++ b/readme.md
@@ -1,7 +1,3 @@
-# This is the `develop` branch!
-
-See the [Breaking Changes](https://docs.qmk.fm/#/breaking_changes) document for more information.
-
# Quantum Mechanical Keyboard Firmware
[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
diff --git a/tmk_core/protocol/arm_atsam/usb/compiler.h b/tmk_core/protocol/arm_atsam/usb/compiler.h
index 6ba2322340..4eeef96cf4 100644
--- a/tmk_core/protocol/arm_atsam/usb/compiler.h
+++ b/tmk_core/protocol/arm_atsam/usb/compiler.h
@@ -43,7 +43,7 @@
*/
#ifndef UTILS_COMPILER_H_INCLUDED
-# define UTILS_COMPILER_H_INCLUDED
+#define UTILS_COMPILER_H_INCLUDED
/**
* \defgroup group_sam0_utils Compiler abstraction layer and code utilities
@@ -54,38 +54,38 @@
* @{
*/
-# if (defined __ICCARM__)
-# include <intrinsics.h>
-# endif
+#if (defined __ICCARM__)
+# include <intrinsics.h>
+#endif
-# include <stddef.h>
+#include <stddef.h>
//#include <parts.h>
//#include <status_codes.h>
//#include <preprocessor.h>
//#include <io.h>
-# ifndef __ASSEMBLY__
+#ifndef __ASSEMBLY__
-# include <stdio.h>
-# include <stdbool.h>
-# include <stdint.h>
-# include <stdlib.h>
+# include <stdio.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <stdlib.h>
/**
* \def UNUSED
* \brief Marking \a v as a unused parameter or value.
*/
-# define UNUSED(v) (void)(v)
+# define UNUSED(v) (void)(v)
/**
* \def barrier
* \brief Memory barrier
*/
-# ifdef __GNUC__
-# define barrier() asm volatile("" ::: "memory")
-# else
-# define barrier() asm("")
-# endif
+# ifdef __GNUC__
+# define barrier() asm volatile("" ::: "memory")
+# else
+# define barrier() asm("")
+# endif
/**
* \brief Emit the compiler pragma \a arg.
@@ -93,37 +93,37 @@
* \param[in] arg The pragma directive as it would appear after \e \#pragma
* (i.e. not stringified).
*/
-# define COMPILER_PRAGMA(arg) _Pragma(# arg)
+# define COMPILER_PRAGMA(arg) _Pragma(# arg)
/**
* \def COMPILER_PACK_SET(alignment)
* \brief Set maximum alignment for subsequent struct and union definitions to \a alignment.
*/
-# define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment))
+# define COMPILER_PACK_SET(alignment) COMPILER_PRAGMA(pack(alignment))
/**
* \def COMPILER_PACK_RESET()
* \brief Set default alignment for subsequent struct and union definitions.
*/
-# define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack())
+# define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack())
/**
* \brief Set aligned boundary.
*/
-# if (defined __GNUC__) || (defined __CC_ARM)
-# define COMPILER_ALIGNED(a) __attribute__((__aligned__(a)))
-# elif (defined __ICCARM__)
-# define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a)
-# endif
+# if (defined __GNUC__) || (defined __CC_ARM)
+# define COMPILER_ALIGNED(a) __attribute__((__aligned__(a)))
+# elif (defined __ICCARM__)
+# define COMPILER_ALIGNED(a) COMPILER_PRAGMA(data_alignment = a)
+# endif
/**
* \brief Set word-aligned boundary.
*/
-# if (defined __GNUC__) || defined(__CC_ARM)
-# define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4)))
-# elif (defined __ICCARM__)
-# define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4)
-# endif
+# if (defined __GNUC__) || defined(__CC_ARM)
+# define COMPILER_WORD_ALIGNED __attribute__((__aligned__(4)))
+# elif (defined __ICCARM__)
+# define COMPILER_WORD_ALIGNED COMPILER_PRAGMA(data_alignment = 4)
+# endif
/**
* \def __always_inline
@@ -133,15 +133,15 @@
* heuristics and inline the function no matter how big it thinks it
* becomes.
*/
-# if !defined(__always_inline)
-# if defined(__CC_ARM)
-# define __always_inline __forceinline
-# elif (defined __GNUC__)
-# define __always_inline __attribute__((__always_inline__))
-# elif (defined __ICCARM__)
-# define __always_inline _Pragma("inline=forced")
-# endif
+# if !defined(__always_inline)
+# if defined(__CC_ARM)
+# define __always_inline __forceinline
+# elif (defined __GNUC__)
+# define __always_inline __attribute__((__always_inline__))
+# elif (defined __ICCARM__)
+# define __always_inline _Pragma("inline=forced")
# endif
+# endif
/**
* \def __no_inline
@@ -151,13 +151,13 @@
* heuristics and not inline the function no matter how small it thinks it
* becomes.
*/
-# if defined(__CC_ARM)
-# define __no_inline __attribute__((noinline))
-# elif (defined __GNUC__)
-# define __no_inline __attribute__((noinline))
-# elif (defined __ICCARM__)
-# define __no_inline _Pragma("inline=never")
-# endif
+# if defined(__CC_ARM)
+# define __no_inline __attribute__((noinline))
+# elif (defined __GNUC__)
+# define __no_inline __attribute__((noinline))
+# elif (defined __ICCARM__)
+# define __no_inline _Pragma("inline=never")
+# endif
/** \brief This macro is used to test fatal errors.
*
@@ -168,47 +168,47 @@
*
* \param[in] expr Expression to evaluate and supposed to be nonzero.
*/
-# if defined(_ASSERT_ENABLE_)
-# if defined(TEST_SUITE_DEFINE_ASSERT_MACRO)
-# include "unit_test/suite.h"
-# else
-# undef TEST_SUITE_DEFINE_ASSERT_MACRO
-# define Assert(expr) \
- { \
- if (!(expr)) asm("BKPT #0"); \
- }
-# endif
+# if defined(_ASSERT_ENABLE_)
+# if defined(TEST_SUITE_DEFINE_ASSERT_MACRO)
+# include "unit_test/suite.h"
# else
-# define Assert(expr) ((void)0)
+# undef TEST_SUITE_DEFINE_ASSERT_MACRO
+# define Assert(expr) \
+ { \
+ if (!(expr)) asm("BKPT #0"); \
+ }
# endif
+# else
+# define Assert(expr) ((void)0)
+# endif
/* Define WEAK attribute */
-# if defined(__CC_ARM)
-# define WEAK __attribute__((weak))
-# elif defined(__ICCARM__)
-# define WEAK __weak
-# elif defined(__GNUC__)
-# define WEAK __attribute__((weak))
-# endif
+# if defined(__CC_ARM)
+# define WEAK __attribute__((weak))
+# elif defined(__ICCARM__)
+# define WEAK __weak
+# elif defined(__GNUC__)
+# define WEAK __attribute__((weak))
+# endif
/* Define NO_INIT attribute */
-# if defined(__CC_ARM)
-# define NO_INIT __attribute__((zero_init))
-# elif defined(__ICCARM__)
-# define NO_INIT __no_init
-# elif defined(__GNUC__)
-# define NO_INIT __attribute__((section(".no_init")))
-# endif
+# if defined(__CC_ARM)
+# define NO_INIT __attribute__((zero_init))
+# elif defined(__ICCARM__)
+# define NO_INIT __no_init
+# elif defined(__GNUC__)
+# define NO_INIT __attribute__((section(".no_init")))
+# endif
//#include "interrupt.h"
/** \name Usual Types
* @{ */
-# ifndef __cplusplus
-# if !defined(__bool_true_false_are_defined)
+# ifndef __cplusplus
+# if !defined(__bool_true_false_are_defined)
typedef unsigned char bool;
-# endif
# endif
+# endif
typedef uint16_t le16_t;
typedef uint16_t be16_t;
typedef uint32_t le32_t;
@@ -347,22 +347,22 @@ typedef struct {
/** @} */
-# endif /* #ifndef __ASSEMBLY__ */
+#endif /* #ifndef __ASSEMBLY__ */
/** \name Usual Constants
* @{ */
// kmod #define DISABLE 0
// kmod #define ENABLE 1
-# ifndef __cplusplus
-# if !defined(__bool_true_false_are_defined)
-# define false 0
-# define true 1
-# endif
+#ifndef __cplusplus
+# if !defined(__bool_true_false_are_defined)
+# define false 0
+# define true 1
# endif
+#endif
/** @} */
-# ifndef __ASSEMBLY__
+#ifndef __ASSEMBLY__
/** \name Optimization Control
* @{ */
@@ -371,17 +371,17 @@ typedef struct {
* \def likely(exp)
* \brief The expression \a exp is likely to be true
*/
-# if !defined(likely) || defined(__DOXYGEN__)
-# define likely(exp) (exp)
-# endif
+# if !defined(likely) || defined(__DOXYGEN__)
+# define likely(exp) (exp)
+# endif
/**
* \def unlikely(exp)
* \brief The expression \a exp is unlikely to be true
*/
-# if !defined(unlikely) || defined(__DOXYGEN__)
-# define unlikely(exp) (exp)
-# endif
+# if !defined(unlikely) || defined(__DOXYGEN__)
+# define unlikely(exp) (exp)
+# endif
/**
* \def is_constant(exp)
@@ -391,11 +391,11 @@ typedef struct {
*
* \return true if \a exp is constant, false otherwise.
*/
-# if (defined __GNUC__) || (defined __CC_ARM)
-# define is_constant(exp) __builtin_constant_p(exp)
-# else
-# define is_constant(exp) (0)
-# endif
+# if (defined __GNUC__) || (defined __CC_ARM)
+# define is_constant(exp) __builtin_constant_p(exp)
+# else
+# define is_constant(exp) (0)
+# endif
/** @} */
@@ -409,7 +409,7 @@ typedef struct {
*
* \return Read bits.
*/
-# define Rd_bits(value, mask) ((value) & (mask))
+# define Rd_bits(value, mask) ((value) & (mask))
/** \brief Writes the bits of a C lvalue specified by a given bit-mask.
*
@@ -419,7 +419,7 @@ typedef struct {
*
* \return Resulting value with written bits.
*/
-# define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) | ((bits) & (mask)))
+# define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) | ((bits) & (mask)))
/** \brief Tests the bits of a value specified by a given bit-mask.
*
@@ -428,7 +428,7 @@ typedef struct {
*
* \return \c 1 if at least one of the tested bits is set, else \c 0.
*/
-# define Tst_bits(value, mask) (Rd_bits(value, mask) != 0)
+# define Tst_bits(value, mask) (Rd_bits(value, mask) != 0)
/** \brief Clears the bits of a C lvalue specified by a given bit-mask.
*
@@ -437,7 +437,7 @@ typedef struct {
*
* \return Resulting value with cleared bits.
*/
-# define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask))
+# define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask))
/** \brief Sets the bits of a C lvalue specified by a given bit-mask.
*
@@ -446,7 +446,7 @@ typedef struct {
*
* \return Resulting value with set bits.
*/
-# define Set_bits(lvalue, mask) ((lvalue) |= (mask))
+# define Set_bits(lvalue, mask) ((lvalue) |= (mask))
/** \brief Toggles the bits of a C lvalue specified by a given bit-mask.
*
@@ -455,7 +455,7 @@ typedef struct {
*
* \return Resulting value with toggled bits.
*/
-# define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask))
+# define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask))
/** \brief Reads the bit-field of a value specified by a given bit-mask.
*
@@ -464,7 +464,7 @@ typedef struct {
*
* \return Read bit-field.
*/
-# define Rd_bitfield(value, mask) (Rd_bits(value, mask) >> ctz(mask))
+# define Rd_bitfield(value, mask) (Rd_bits(value, mask) >> ctz(mask))
/** \brief Writes the bit-field of a C lvalue specified by a given bit-mask.
*
@@ -474,7 +474,7 @@ typedef struct {
*
* \return Resulting value with written bit-field.
*/
-# define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (uint32_t)(bitfield) << ctz(mask)))
+# define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (uint32_t)(bitfield) << ctz(mask)))
/** @} */
@@ -498,11 +498,11 @@ typedef struct {
*
* \return The count of leading zero bits in \a u.
*/
-# if (defined __GNUC__) || (defined __CC_ARM)
-# define clz(u) ((u) ? __builtin_clz(u) : 32)
-# else
-# define clz(u) (((u) == 0) ? 32 : ((u) & (1ul << 31)) ? 0 : ((u) & (1ul << 30)) ? 1 : ((u) & (1ul << 29)) ? 2 : ((u) & (1ul << 28)) ? 3 : ((u) & (1ul << 27)) ? 4 : ((u) & (1ul << 26)) ? 5 : ((u) & (1ul << 25)) ? 6 : ((u) & (1ul << 24)) ? 7 : ((u) & (1ul << 23)) ? 8 : ((u) & (1ul << 22)) ? 9 : ((u) & (1ul << 21)) ? 10 : ((u) & (1ul << 20)) ? 11 : ((u) & (1ul << 19)) ? 12 : ((u) & (1ul << 18)) ? 13 : ((u) & (1ul << 17)) ? 14 : ((u) & (1ul << 16)) ? 15 : ((u) & (1ul << 15)) ? 16 : ((u) & (1ul << 14)) ? 17 : ((u) & (1ul << 13)) ? 18 : ((u) & (1ul << 12)) ? 19 : ((u) & (1ul << 11)) ? 20 : ((u) & (1ul << 10)) ? 21 : ((u) & (1ul << 9)) ? 22 : ((u) & (1ul << 8)) ? 23 : ((u) & (1ul << 7)) ? 24 : ((u) & (1ul << 6)) ? 25 : ((u) & (1ul << 5)) ? 26 : ((u) & (1ul << 4)) ? 27 : ((u) & (1ul << 3)) ? 28 : ((u) & (1ul << 2)) ? 29 : ((u) & (1ul << 1)) ? 30 : 31)
-# endif
+# if (defined __GNUC__) || (defined __CC_ARM)
+# define clz(u) ((u) ? __builtin_clz(u) : 32)
+# else
+# define clz(u) (((u) == 0) ? 32 : ((u) & (1ul << 31)) ? 0 : ((u) & (1ul << 30)) ? 1 : ((u) & (1ul << 29)) ? 2 : ((u) & (1ul << 28)) ? 3 : ((u) & (1ul << 27)) ? 4 : ((u) & (1ul << 26)) ? 5 : ((u) & (1ul << 25)) ? 6 : ((u) & (1ul << 24)) ? 7 : ((u) & (1ul << 23)) ? 8 : ((u) & (1ul << 22)) ? 9 : ((u) & (1ul << 21)) ? 10 : ((u) & (1ul << 20)) ? 11 : ((u) & (1ul << 19)) ? 12 : ((u) & (1ul << 18)) ? 13 : ((u) & (1ul << 17)) ? 14 : ((u) & (1ul << 16)) ? 15 : ((u) & (1ul << 15)) ? 16 : ((u) & (1ul << 14)) ? 17 : ((u) & (1ul << 13)) ? 18 : ((u) & (1ul << 12)) ? 19 : ((u) & (1ul << 11)) ? 20 : ((u) & (1ul << 10)) ? 21 : ((u) & (1ul << 9)) ? 22 : ((u) & (1ul << 8)) ? 23 : ((u) & (1ul << 7)) ? 24 : ((u) & (1ul << 6)) ? 25 : ((u) & (1ul << 5)) ? 26 : ((u) & (1ul << 4)) ? 27 : ((u) & (1ul << 3)) ? 28 : ((u) & (1ul << 2)) ? 29 : ((u) & (1ul << 1)) ? 30 : 31)
+# endif
/** \brief Counts the trailing zero bits of the given value considered as a 32-bit integer.
*
@@ -510,11 +510,11 @@ typedef struct {
*
* \return The count of trailing zero bits in \a u.
*/
-# if (defined __GNUC__) || (defined __CC_ARM)
-# define ctz(u) ((u) ? __builtin_ctz(u) : 32)
-# else
-# define ctz(u) ((u) & (1ul << 0) ? 0 : (u) & (1ul << 1) ? 1 : (u) & (1ul << 2) ? 2 : (u) & (1ul << 3) ? 3 : (u) & (1ul << 4) ? 4 : (u) & (1ul << 5) ? 5 : (u) & (1ul << 6) ? 6 : (u) & (1ul << 7) ? 7 : (u) & (1ul << 8) ? 8 : (u) & (1ul << 9) ? 9 : (u) & (1ul << 10) ? 10 : (u) & (1ul << 11) ? 11 : (u) & (1ul << 12) ? 12 : (u) & (1ul << 13) ? 13 : (u) & (1ul << 14) ? 14 : (u) & (1ul << 15) ? 15 : (u) & (1ul << 16) ? 16 : (u) & (1ul << 17) ? 17 : (u) & (1ul << 18) ? 18 : (u) & (1ul << 19) ? 19 : (u) & (1ul << 20) ? 20 : (u) & (1ul << 21) ? 21 : (u) & (1ul << 22) ? 22 : (u) & (1ul << 23) ? 23 : (u) & (1ul << 24) ? 24 : (u) & (1ul << 25) ? 25 : (u) & (1ul << 26) ? 26 : (u) & (1ul << 27) ? 27 : (u) & (1ul << 28) ? 28 : (u) & (1ul << 29) ? 29 : (u) & (1ul << 30) ? 30 : (u) & (1ul << 31) ? 31 : 32)
-# endif
+# if (defined __GNUC__) || (defined __CC_ARM)
+# define ctz(u) ((u) ? __builtin_ctz(u) : 32)
+# else
+# define ctz(u) ((u) & (1ul << 0) ? 0 : (u) & (1ul << 1) ? 1 : (u) & (1ul << 2) ? 2 : (u) & (1ul << 3) ? 3 : (u) & (1ul << 4) ? 4 : (u) & (1ul << 5) ? 5 : (u) & (1ul << 6) ? 6 : (u) & (1ul << 7) ? 7 : (u) & (1ul << 8) ? 8 : (u) & (1ul << 9) ? 9 : (u) & (1ul << 10) ? 10 : (u) & (1ul << 11) ? 11 : (u) & (1ul << 12) ? 12 : (u) & (1ul << 13) ? 13 : (u) & (1ul << 14) ? 14 : (u) & (1ul << 15) ? 15 : (u) & (1ul << 16) ? 16 : (u) & (1ul << 17) ? 17 : (u) & (1ul << 18) ? 18 : (u) & (1ul << 19) ? 19 : (u) & (1ul << 20) ? 20 : (u) & (1ul << 21) ? 21 : (u) & (1ul << 22) ? 22 : (u) & (1ul << 23) ? 23 : (u) & (1ul << 24) ? 24 : (u) & (1ul << 25) ? 25 : (u) & (1ul << 26) ? 26 : (u) & (1ul << 27) ? 27 : (u) & (1ul << 28) ? 28 : (u) & (1ul << 29) ? 29 : (u) & (1ul << 30) ? 30 : (u) & (1ul << 31) ? 31 : 32)
+# endif
/** @} */
@@ -527,7 +527,7 @@ typedef struct {
*
* \return Value resulting from \a u8 with reversed bits.
*/
-# define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24))
+# define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24))
/** \brief Reverses the bits of \a u16.
*
@@ -535,7 +535,7 @@ typedef struct {
*
* \return Value resulting from \a u16 with reversed bits.
*/
-# define bit_reverse16(u16) ((uint16_t)(bit_reverse32((uint16_t)(u16)) >> 16))
+# define bit_reverse16(u16) ((uint16_t)(bit_reverse32((uint16_t)(u16)) >> 16))
/** \brief Reverses the bits of \a u32.
*
@@ -543,7 +543,7 @@ typedef struct {
*
* \return Value resulting from \a u32 with reversed bits.
*/
-# define bit_reverse32(u32) __RBIT(u32)
+# define bit_reverse32(u32) __RBIT(u32)
/** \brief Reverses the bits of \a u64.
*
@@ -551,7 +551,7 @@ typedef struct {
*
* \return Value resulting from \a u64 with reversed bits.
*/
-# define bit_reverse64(u64) ((uint64_t)(((uint64_t)bit_reverse32((uint64_t)(u64) >> 32)) | ((uint64_t)bit_reverse32((uint64_t)(u64)) << 32)))
+# define bit_reverse64(u64) ((uint64_t)(((uint64_t)bit_reverse32((uint64_t)(u64) >> 32)) | ((uint64_t)bit_reverse32((uint64_t)(u64)) << 32)))
/** @} */
@@ -565,7 +565,7 @@ typedef struct {
*
* \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0.
*/
-# define Test_align(val, n) (!Tst_bits(val, (n)-1))
+# define Test_align(val, n) (!Tst_bits(val, (n)-1))
/** \brief Gets alignment of the number \a val with respect to the \a n boundary.
*
@@ -574,7 +574,7 @@ typedef struct {
*
* \return Alignment of the number \a val with respect to the \a n boundary.
*/
-# define Get_align(val, n) (Rd_bits(val, (n)-1))
+# define Get_align(val, n) (Rd_bits(val, (n)-1))
/** \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary.
*
@@ -584,7 +584,7 @@ typedef struct {
*
* \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary.
*/
-# define Set_align(lval, n, alg) (Wr_bits(lval, (n)-1, alg))
+# define Set_align(lval, n, alg) (Wr_bits(lval, (n)-1, alg))
/** \brief Aligns the number \a val with the upper \a n boundary.
*
@@ -593,7 +593,7 @@ typedef struct {
*
* \return Value resulting from the number \a val aligned with the upper \a n boundary.
*/
-# define Align_up(val, n) (((val) + ((n)-1)) & ~((n)-1))
+# define Align_up(val, n) (((val) + ((n)-1)) & ~((n)-1))
/** \brief Aligns the number \a val with the lower \a n boundary.
*
@@ -602,7 +602,7 @@ typedef struct {
*
* \return Value resulting from the number \a val aligned with the lower \a n boundary.
*/
-# define Align_down(val, n) ((val) & ~((n)-1))
+# define Align_down(val, n) ((val) & ~((n)-1))
/** @} */
@@ -627,9 +627,9 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Abs(a) (((a) < 0) ? -(a) : (a))
+# define Abs(a) (((a) < 0) ? -(a) : (a))
-# ifndef __cplusplus
+# ifndef __cplusplus
/** \brief Takes the minimal value of \a a and \a b.
*
* \param[in] a Input value.
@@ -639,7 +639,7 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Min(a, b) (((a) < (b)) ? (a) : (b))
+# define Min(a, b) (((a) < (b)) ? (a) : (b))
/** \brief Takes the maximal value of \a a and \a b.
*
@@ -650,7 +650,7 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Max(a, b) (((a) > (b)) ? (a) : (b))
+# define Max(a, b) (((a) > (b)) ? (a) : (b))
/** \brief Takes the minimal value of \a a and \a b.
*
@@ -661,7 +661,7 @@ typedef struct {
*
* \note More optimized if only used with values unknown at compile time.
*/
-# define min(a, b) Min(a, b)
+# define min(a, b) Min(a, b)
/** \brief Takes the maximal value of \a a and \a b.
*
@@ -672,8 +672,8 @@ typedef struct {
*
* \note More optimized if only used with values unknown at compile time.
*/
-# define max(a, b) Max(a, b)
-# endif
+# define max(a, b) Max(a, b)
+# endif
/** @} */
@@ -688,34 +688,34 @@ typedef struct {
*
* \note It may be used as a long jump opcode in some special cases.
*/
-# define Long_call(addr) ((*(void (*)(void))(addr))())
+# define Long_call(addr) ((*(void (*)(void))(addr))())
/** \name MCU Endianism Handling
* ARM is MCU little endian.
*
* @{ */
-# define BE16(x) swap16(x)
-# define LE16(x) (x)
-
-# define le16_to_cpu(x) (x)
-# define cpu_to_le16(x) (x)
-# define LE16_TO_CPU(x) (x)
-# define CPU_TO_LE16(x) (x)
-
-# define be16_to_cpu(x) swap16(x)
-# define cpu_to_be16(x) swap16(x)
-# define BE16_TO_CPU(x) swap16(x)
-# define CPU_TO_BE16(x) swap16(x)
-
-# define le32_to_cpu(x) (x)
-# define cpu_to_le32(x) (x)
-# define LE32_TO_CPU(x) (x)
-# define CPU_TO_LE32(x) (x)
-
-# define be32_to_cpu(x) swap32(x)
-# define cpu_to_be32(x) swap32(x)
-# define BE32_TO_CPU(x) swap32(x)
-# define CPU_TO_BE32(x) swap32(x)
+# define BE16(x) swap16(x)
+# define LE16(x) (x)
+
+# define le16_to_cpu(x) (x)
+# define cpu_to_le16(x) (x)
+# define LE16_TO_CPU(x) (x)
+# define CPU_TO_LE16(x) (x)
+
+# define be16_to_cpu(x) swap16(x)
+# define cpu_to_be16(x) swap16(x)
+# define BE16_TO_CPU(x) swap16(x)
+# define CPU_TO_BE16(x) swap16(x)
+
+# define le32_to_cpu(x) (x)
+# define cpu_to_le32(x) (x)
+# define LE32_TO_CPU(x) (x)
+# define CPU_TO_LE32(x) (x)
+
+# define be32_to_cpu(x) swap32(x)
+# define cpu_to_be32(x) swap32(x)
+# define BE32_TO_CPU(x) swap32(x)
+# define CPU_TO_BE32(x) swap32(x)
/** @} */
/** \name Endianism Conversion
@@ -738,7 +738,7 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Swap16(u16) ((uint16_t)(((uint16_t)(u16) >> 8) | ((uint16_t)(u16) << 8)))
+# define Swap16(u16) ((uint16_t)(((uint16_t)(u16) >> 8) | ((uint16_t)(u16) << 8)))
/** \brief Toggles the endianism of \a u32 (by swapping its bytes).
*
@@ -748,7 +748,7 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Swap32(u32) ((uint32_t)(((uint32_t)Swap16((uint32_t)(u32) >> 16)) | ((uint32_t)Swap16((uint32_t)(u32)) << 16)))
+# define Swap32(u32) ((uint32_t)(((uint32_t)Swap16((uint32_t)(u32) >> 16)) | ((uint32_t)Swap16((uint32_t)(u32)) << 16)))
/** \brief Toggles the endianism of \a u64 (by swapping its bytes).
*
@@ -758,7 +758,7 @@ typedef struct {
*
* \note More optimized if only used with values known at compile time.
*/
-# define Swap64(u64) ((uint64_t)(((uint64_t)Swap32((uint64_t)(u64) >> 32)) | ((uint64_t)Swap32((uint64_t)(u64)) << 32)))
+# define Swap64(u64) ((uint64_t)(((uint64_t)Swap32((uint64_t)(u64) >> 32)) | ((uint64_t)Swap32((uint64_t)(u64)) << 32)))
/** \brief Toggles the endianism of \a u16 (by swapping its bytes).
*
@@ -768,7 +768,7 @@ typedef struct {
*
* \note More optimized if only used with values unknown at compile time.
*/
-# define swap16(u16) Swap16(u16)
+# define swap16(u16) Swap16(u16)
/** \brief Toggles the endianism of \a u32 (by swapping its bytes).
*
@@ -778,11 +778,11 @@ typedef struct {
*
* \note More optimized if only used with values unknown at compile time.
*/
-# if (defined __GNUC__)
-# define swap32(u32) ((uint32_t)__builtin_bswap32((uint32_t)(u32)))
-# else
-# define swap32(u32) Swap32(u32)
-# endif
+# if (defined __GNUC__)
+# define swap32(u32) ((uint32_t)__builtin_bswap32((uint32_t)(u32)))
+# else
+# define swap32(u32) Swap32(u32)
+# endif
/** \brief Toggles the endianism of \a u64 (by swapping its bytes).
*
@@ -792,11 +792,11 @@ typedef struct {
*
* \note More optimized if only used with values unknown at compile time.
*/
-# if (defined __GNUC__)
-# define swap64(u64) ((uint64_t)__builtin_bswap64((uint64_t)(u64)))
-# else
-# define swap64(u64) ((uint64_t)(((uint64_t)swap32((uint64_t)(u64) >> 32)) | ((uint64_t)swap32((uint64_t)(u64)) << 32)))
-# endif
+# if (defined __GNUC__)
+# define swap64(u64) ((uint64_t)__builtin_bswap64((uint64_t)(u64)))
+# else
+# define swap64(u64) ((uint64_t)(((uint64_t)swap32((uint64_t)(u64) >> 32)) | ((uint64_t)swap32((uint64_t)(u64)) << 32)))
+# endif
/** @} */
@@ -804,16 +804,16 @@ typedef struct {
*
* @{ */
-# define _GLOBEXT_ extern /**< extern storage-class specifier. */
-# define _CONST_TYPE_ const /**< const type qualifier. */
-# define _MEM_TYPE_SLOW_ /**< Slow memory type. */
-# define _MEM_TYPE_MEDFAST_ /**< Fairly fast memory type. */
-# define _MEM_TYPE_FAST_ /**< Fast memory type. */
+# define _GLOBEXT_ extern /**< extern storage-class specifier. */
+# define _CONST_TYPE_ const /**< const type qualifier. */
+# define _MEM_TYPE_SLOW_ /**< Slow memory type. */
+# define _MEM_TYPE_MEDFAST_ /**< Fairly fast memory type. */
+# define _MEM_TYPE_FAST_ /**< Fast memory type. */
-# define memcmp_ram2ram memcmp /**< Target-specific memcmp of RAM to RAM. */
-# define memcmp_code2ram memcmp /**< Target-specific memcmp of RAM to NVRAM. */
-# define memcpy_ram2ram memcpy /**< Target-specific memcpy from RAM to RAM. */
-# define memcpy_code2ram memcpy /**< Target-specific memcpy from NVRAM to RAM. */
+# define memcmp_ram2ram memcmp /**< Target-specific memcmp of RAM to RAM. */
+# define memcmp_code2ram memcmp /**< Target-specific memcmp of RAM to NVRAM. */
+# define memcpy_ram2ram memcpy /**< Target-specific memcpy from RAM to RAM. */
+# define memcpy_code2ram memcpy /**< Target-specific memcpy from NVRAM to RAM. */
/** @} */
@@ -826,51 +826,51 @@ typedef struct {
*
* \return (\a a / \a b) rounded up to the nearest integer.
*/
-# define div_ceil(a, b) (((a) + (b)-1) / (b))
+# define div_ceil(a, b) (((a) + (b)-1) / (b))
-# endif /* #ifndef __ASSEMBLY__ */
-# ifdef __ICCARM__
+#endif /* #ifndef __ASSEMBLY__ */
+#ifdef __ICCARM__
/** \name Compiler Keywords
*
* Port of some keywords from GCC to IAR Embedded Workbench.
*
* @{ */
-# define __asm__ asm
-# define __inline__ inline
-# define __volatile__
+# define __asm__ asm
+# define __inline__ inline
+# define __volatile__
/** @} */
-# endif
+#endif
-# define FUNC_PTR void *
+#define FUNC_PTR void *
/**
* \def unused
* \brief Marking \a v as a unused parameter or value.
*/
-# define unused(v) \
- do { \
- (void)(v); \
- } while (0)
+#define unused(v) \
+ do { \
+ (void)(v); \
+ } while (0)
/* Define RAMFUNC attribute */
-# if defined(__CC_ARM) /* Keil uVision 4 */
-# define RAMFUNC __attribute__((section(".ramfunc")))
-# elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
-# define RAMFUNC __ramfunc
-# elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
-# define RAMFUNC __attribute__((section(".ramfunc")))
-# endif
+#if defined(__CC_ARM) /* Keil uVision 4 */
+# define RAMFUNC __attribute__((section(".ramfunc")))
+#elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
+# define RAMFUNC __ramfunc
+#elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
+# define RAMFUNC __attribute__((section(".ramfunc")))
+#endif
/* Define OPTIMIZE_HIGH attribute */
-# if defined(__CC_ARM) /* Keil uVision 4 */
-# define OPTIMIZE_HIGH _Pragma("O3")
-# elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
-# define OPTIMIZE_HIGH _Pragma("optimize=high")
-# elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
-# define OPTIMIZE_HIGH __attribute__((optimize("s")))
-# endif
+#if defined(__CC_ARM) /* Keil uVision 4 */
+# define OPTIMIZE_HIGH _Pragma("O3")
+#elif defined(__ICCARM__) /* IAR Ewarm 5.41+ */
+# define OPTIMIZE_HIGH _Pragma("optimize=high")
+#elif defined(__GNUC__) /* GCC CS3 2009q3-68 */
+# define OPTIMIZE_HIGH __attribute__((optimize("s")))
+#endif
// kmod #define PASS 0
// kmod #define FAIL 1
// kmod #define LOW 0
@@ -887,101 +887,101 @@ typedef uint64_t U64; //!< 64-bit unsigned integer.
typedef float F32; //!< 32-bit floating-point number.
typedef double F64; //!< 64-bit floating-point number.
-# define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16.
-# define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16.
-
-# define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32.
-# define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32.
-# define MSB0W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32.
-# define MSB1W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32.
-# define MSB2W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32.
-# define MSB3W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32.
-# define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32.
-# define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32.
-# define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32.
-# define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32.
-
-# define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64.
-# define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64.
-# define MSH0(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64.
-# define MSH1(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64.
-# define MSH2(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64.
-# define MSH3(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64.
-# define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64.
-# define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64.
-# define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64.
-# define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64.
-# define MSB0D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64.
-# define MSB1D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64.
-# define MSB2D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64.
-# define MSB3D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64.
-# define MSB4D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64.
-# define MSB5D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64.
-# define MSB6D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64.
-# define MSB7D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64.
-# define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64.
-# define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64.
-# define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64.
-# define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64.
-# define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64.
-# define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64.
-# define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64.
-# define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64.
-
-# define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32.
-# define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32.
-# define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32.
-# define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32.
-# define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32.
-# define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32.
-# define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32.
-# define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32.
-
-# if defined(__ICCARM__)
-# define SHORTENUM __packed
-# elif defined(__GNUC__)
-# define SHORTENUM __attribute__((packed))
-# endif
+#define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16.
+#define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16.
+
+#define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32.
+#define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32.
+#define MSB0W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 1st rank of \a u32.
+#define MSB1W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 2nd rank of \a u32.
+#define MSB2W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 3rd rank of \a u32.
+#define MSB3W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 4th rank of \a u32.
+#define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32.
+#define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32.
+#define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32.
+#define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32.
+
+#define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64.
+#define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64.
+#define MSH0(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 1st rank of \a u64.
+#define MSH1(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 2nd rank of \a u64.
+#define MSH2(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 3rd rank of \a u64.
+#define MSH3(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 4th rank of \a u64.
+#define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64.
+#define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64.
+#define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64.
+#define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64.
+#define MSB0D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 1st rank of \a u64.
+#define MSB1D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 2nd rank of \a u64.
+#define MSB2D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 3rd rank of \a u64.
+#define MSB3D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 4th rank of \a u64.
+#define MSB4D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 5th rank of \a u64.
+#define MSB5D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 6th rank of \a u64.
+#define MSB6D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 7th rank of \a u64.
+#define MSB7D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 8th rank of \a u64.
+#define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64.
+#define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64.
+#define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64.
+#define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64.
+#define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64.
+#define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64.
+#define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64.
+#define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64.
+
+#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32.
+#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32.
+#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32.
+#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32.
+#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32.
+#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32.
+#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32.
+#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32.
+
+#if defined(__ICCARM__)
+# define SHORTENUM __packed
+#elif defined(__GNUC__)
+# define SHORTENUM __attribute__((packed))
+#endif
/* No operation */
-# if defined(__ICCARM__)
-# define nop() __no_operation()
-# elif defined(__GNUC__)
-# define nop() (__NOP())
-# endif
-
-# define FLASH_DECLARE(x) const x
-# define FLASH_EXTERN(x) extern const x
-# define PGM_READ_BYTE(x) *(x)
-# define PGM_READ_WORD(x) *(x)
-# define MEMCPY_ENDIAN memcpy
-# define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len))
+#if defined(__ICCARM__)
+# define nop() __no_operation()
+#elif defined(__GNUC__)
+# define nop() (__NOP())
+#endif
+
+#define FLASH_DECLARE(x) const x
+#define FLASH_EXTERN(x) extern const x
+#define PGM_READ_BYTE(x) *(x)
+#define PGM_READ_WORD(x) *(x)
+#define MEMCPY_ENDIAN memcpy
+#define PGM_READ_BLOCK(dst, src, len) memcpy((dst), (src), (len))
/*Defines the Flash Storage for the request and response of MAC*/
-# define CMD_ID_OCTET (0)
+#define CMD_ID_OCTET (0)
/* Converting of values from CPU endian to little endian. */
-# define CPU_ENDIAN_TO_LE16(x) (x)
-# define CPU_ENDIAN_TO_LE32(x) (x)
-# define CPU_ENDIAN_TO_LE64(x) (x)
+#define CPU_ENDIAN_TO_LE16(x) (x)
+#define CPU_ENDIAN_TO_LE32(x) (x)
+#define CPU_ENDIAN_TO_LE64(x) (x)
/* Converting of values from little endian to CPU endian. */
-# define LE16_TO_CPU_ENDIAN(x) (x)
-# define LE32_TO_CPU_ENDIAN(x) (x)
-# define LE64_TO_CPU_ENDIAN(x) (x)
+#define LE16_TO_CPU_ENDIAN(x) (x)
+#define LE32_TO_CPU_ENDIAN(x) (x)
+#define LE64_TO_CPU_ENDIAN(x) (x)
/* Converting of constants from little endian to CPU endian. */
-# define CLE16_TO_CPU_ENDIAN(x) (x)
-# define CLE32_TO_CPU_ENDIAN(x) (x)
-# define CLE64_TO_CPU_ENDIAN(x) (x)
+#define CLE16_TO_CPU_ENDIAN(x) (x)
+#define CLE32_TO_CPU_ENDIAN(x) (x)
+#define CLE64_TO_CPU_ENDIAN(x) (x)
/* Converting of constants from CPU endian to little endian. */
-# define CCPU_ENDIAN_TO_LE16(x) (x)
-# define CCPU_ENDIAN_TO_LE32(x) (x)
-# define CCPU_ENDIAN_TO_LE64(x) (x)
+#define CCPU_ENDIAN_TO_LE16(x) (x)
+#define CCPU_ENDIAN_TO_LE32(x) (x)
+#define CCPU_ENDIAN_TO_LE64(x) (x)
-# define ADDR_COPY_DST_SRC_16(dst, src) ((dst) = (src))
-# define ADDR_COPY_DST_SRC_64(dst, src) ((dst) = (src))
+#define ADDR_COPY_DST_SRC_16(dst, src) ((dst) = (src))
+#define ADDR_COPY_DST_SRC_64(dst, src) ((dst) = (src))
/**
* @brief Converts a 64-Bit value into a 8 Byte array
diff --git a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
index 27db4017c4..322a32ebcc 100644
--- a/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
+++ b/tmk_core/protocol/arm_atsam/usb/udi_cdc.c
@@ -89,14 +89,14 @@
*
* @{
*/
-bool udi_cdc_comm_enable(void);
-void udi_cdc_comm_disable(void);
-bool udi_cdc_comm_setup(void);
-bool udi_cdc_data_enable(void);
-void udi_cdc_data_disable(void);
-bool udi_cdc_data_setup(void);
-uint8_t udi_cdc_getsetting(void);
-void udi_cdc_data_sof_notify(void);
+bool udi_cdc_comm_enable(void);
+void udi_cdc_comm_disable(void);
+bool udi_cdc_comm_setup(void);
+bool udi_cdc_data_enable(void);
+void udi_cdc_data_disable(void);
+bool udi_cdc_data_setup(void);
+uint8_t udi_cdc_getsetting(void);
+void udi_cdc_data_sof_notify(void);
UDC_DESC_STORAGE udi_api_t udi_api_cdc_comm = {.enable = udi_cdc_comm_enable, .disable = udi_cdc_comm_disable, .setup = udi_cdc_comm_setup, .getsetting = udi_cdc_getsetting, .sof_notify = NULL};
UDC_DESC_STORAGE udi_api_t udi_api_cdc_data = {
.enable = udi_cdc_data_enable,
diff --git a/tmk_core/protocol/arm_atsam/usb/usb_device_udd.c b/tmk_core/protocol/arm_atsam/usb/usb_device_udd.c
index f138b42786..b3d9cba826 100644
--- a/tmk_core/protocol/arm_atsam/usb/usb_device_udd.c
+++ b/tmk_core/protocol/arm_atsam/usb/usb_device_udd.c
@@ -596,11 +596,10 @@ void udd_set_address(uint8_t address) { usb_device_set_address(&usb_device, addr
uint8_t udd_getaddress(void) { return usb_device_get_address(&usb_device); }
void udd_send_remotewakeup(void) {
- uint32_t try
- = 5;
+ uint32_t try = 5;
udd_wait_clock_ready();
udd_sleep_mode(UDD_STATE_IDLE);
- while (2 != usb_get_state_machine_status(&usb_device) && try --) {
+ while (2 != usb_get_state_machine_status(&usb_device) && try--) {
usb_device_send_remote_wake_up(&usb_device);
}
}
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index a7db3e3ab1..ac46a9312b 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -1099,6 +1099,8 @@ void midi_ep_task(void) {
#ifdef VIRTSER_ENABLE
+void virtser_init(void) {}
+
void virtser_send(const uint8_t byte) { chnWrite(&drivers.serial_driver.driver, &byte, 1); }
__attribute__((weak)) void virtser_recv(uint8_t c) {
diff --git a/users/ajp10304/ajp10304.c b/users/ajp10304/ajp10304.c
index dd13787d63..b8729b94d7 100644
--- a/users/ajp10304/ajp10304.c
+++ b/users/ajp10304/ajp10304.c
@@ -24,6 +24,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
@@ -157,12 +161,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break;
case M_MODE:
if (record->event.pressed) {
- SEND_STRING("PC");
+ send_string("PC ");
+ send_string(get_highest_layer(default_layer_state) == _COLEMAK ? "COLEMAK" : "QWERTY");
}
break;
case M_MODE_MAC:
if (record->event.pressed) {
- SEND_STRING("OSX");
+ send_string("OSX ");
+ send_string(get_highest_layer(default_layer_state) == _COLEMAK ? "COLEMAK" : "QWERTY");
}
break;
}
diff --git a/users/ajp10304/ajp10304.h b/users/ajp10304/ajp10304.h
index ec1ed11c04..130c841607 100644
--- a/users/ajp10304/ajp10304.h
+++ b/users/ajp10304/ajp10304.h
@@ -18,6 +18,7 @@
enum ajp10304_layers {
_QWERTY,
+ _COLEMAK,
_MAC,
_LOWER,
_MLWR,
@@ -34,6 +35,7 @@ enum ajp10304_layers {
enum ajp10304_keycodes {
QWERTY = SAFE_RANGE,
+ COLEMAK,
MAC,
FUNC,
MFNC,
diff --git a/users/ajp10304/readme.md b/users/ajp10304/readme.md
index bfc39535c1..0683f42384 100644
--- a/users/ajp10304/readme.md
+++ b/users/ajp10304/readme.md
@@ -37,6 +37,15 @@ Refer to the README.md of the keyboard you want to flash.
| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 |
+##### Main Colemak-DHm Layer
+
+| | | | | | | | | | | | |
+| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
+| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp |
+| Tab | A | R | S | T | G | M | N | E | I | O | Enter|
+| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft |
+| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 |
+
##### Function Layer
Activated when `fn` held in the above `qwerty` layer.
@@ -88,12 +97,12 @@ To finish the recording, press STOP. To replay the macro, press either PLAY1 or
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
-| | | | | | | | | | | | |
-| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
-| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | |
-| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | |
-| | | | | | | | | DYN | | | |
+| | | | | | | | | | | | |
+| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
+| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del |
+| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty |
+| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak |
+| | | | | | | | | DYN | | | |
##### Function 2 Layer
Activated when `fn` held in the above `qwerty` layer.
diff --git a/users/bcat/bcat.c b/users/bcat/bcat.c
index f21d282e43..3a407cfac0 100644
--- a/users/bcat/bcat.c
+++ b/users/bcat/bcat.c
@@ -16,16 +16,15 @@
#include "bcat.h"
-#if defined(RGBLIGHT_ENABLE)
-/* Adjust RGB static hue ranges for shorter gradients than default. */
-const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
-#endif
+#include "quantum.h"
static int8_t alt_tab_layer = -1;
+__attribute__((weak)) void process_record_oled(uint16_t keycode, const keyrecord_t *record) {}
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ process_record_oled(keycode, record);
if (!process_record_keymap(keycode, record)) {
return false;
}
@@ -51,6 +50,9 @@ __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state)
layer_state_t layer_state_set_user(layer_state_t state) {
state = layer_state_set_keymap(state);
+#if defined(BCAT_ORTHO_LAYERS)
+ state = update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+#endif
if (alt_tab_layer >= 0 && !layer_state_cmp(state, alt_tab_layer)) {
unregister_code(KC_LALT);
alt_tab_layer = -1;
diff --git a/users/bcat/bcat.h b/users/bcat/bcat.h
index 0dae774ec5..4a88acba7d 100644
--- a/users/bcat/bcat.h
+++ b/users/bcat/bcat.h
@@ -16,9 +16,43 @@
#pragma once
-#include "quantum.h"
+#include <stdbool.h>
+#include "keymap.h"
+
+/* Layer numbers shared across keymaps. */
+enum user_layer {
+ /* Base layers: */
+ LAYER_DEFAULT,
+
+#if defined(BCAT_ORTHO_LAYERS)
+ /* Function layers for ortho (and ergo) boards: */
+ LAYER_LOWER,
+ LAYER_RAISE,
+ LAYER_ADJUST,
+#else
+ /* Function layers for traditional boards: */
+ LAYER_FUNCTION_1,
+ LAYER_FUNCTION_2,
+#endif
+};
+
+/* Custom keycodes shared across keymaps. */
enum user_keycode {
MC_ALTT = SAFE_RANGE,
KEYMAP_SAFE_RANGE,
};
+
+/* Keycode aliases shared across keymaps. */
+#define KY_CSPC LCTL(KC_SPC)
+#define KY_ZMIN LCTL(KC_EQL)
+#define KY_ZMOUT LCTL(KC_MINS)
+#define KY_ZMRST LCTL(KC_0)
+
+#if defined(BCAT_ORTHO_LAYERS)
+# define LY_LWR MO(LAYER_LOWER)
+# define LY_RSE MO(LAYER_RAISE)
+#else
+# define LY_FN1 MO(LAYER_FUNCTION_1)
+# define LY_FN2 MO(LAYER_FUNCTION_2)
+#endif
diff --git a/users/bcat/bcat_oled.c b/users/bcat/bcat_oled.c
new file mode 100644
index 0000000000..390c9127b4
--- /dev/null
+++ b/users/bcat/bcat_oled.c
@@ -0,0 +1,216 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bcat_oled.h"
+
+#include "quantum.h"
+#include "bcat.h"
+
+#if defined(BCAT_OLED_PET)
+# include "bcat_oled_pet.h"
+#endif
+
+#define TRIANGLE_UP 0x1e
+#define TRIANGLE_DOWN 0x1f
+
+#if defined(BCAT_OLED_PET)
+static bool oled_pet_should_jump = false;
+#endif
+
+/* Should be overridden by the keymap to render the OLED contents. For split
+ * keyboards, this function is only called on the master side.
+ */
+__attribute__((weak)) void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {}
+
+bool oled_task_user(void) {
+#if defined(SPLIT_KEYBOARD)
+ if (is_keyboard_master()) {
+#endif
+ /* Custom OLED timeout implementation that only considers user activity.
+ * Allows the OLED to turn off in the middle of a continuous animation.
+ */
+ static const uint16_t TIMEOUT_MILLIS = 60000 /* 1 min */;
+
+ if (last_input_activity_elapsed() < TIMEOUT_MILLIS) {
+ if (!is_oled_on()) {
+ oled_on();
+ }
+ oled_keyboard_state_t keyboard_state = {
+ .mods = get_mods(),
+ .leds = host_keyboard_led_state(),
+ .wpm = get_current_wpm(),
+ };
+ oled_task_keymap(&keyboard_state);
+ } else if (is_oled_on()) {
+ oled_off();
+ }
+#if defined(SPLIT_KEYBOARD)
+ } else {
+ /* Display logo embedded at standard location in the OLED font on the
+ * slave side. By default, this is a "QMK firmware" logo, but many
+ * keyboards substitute their own logo. Occupies 21x3 character cells.
+ *
+ * Since the slave display buffer never changes, we don't need to worry
+ * about oled_render incorrectly turning the OLED on. Instead, we rely
+ * on SPLIT_OLED_ENABLE to propagate OLED on/off status from master.
+ */
+ static const char PROGMEM logo[] = {
+ // clang-format off
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+ 0x00,
+ // clang-format on
+ };
+
+ oled_write_P(logo, /*invert=*/false);
+ }
+#endif
+
+ return false;
+}
+
+void render_oled_layers(void) {
+ oled_advance_char();
+ oled_advance_char();
+#if defined(BCAT_ORTHO_LAYERS)
+ oled_write_char(IS_LAYER_ON(LAYER_LOWER) ? TRIANGLE_DOWN : ' ', /*invert=*/false);
+ oled_advance_char();
+ oled_write_char(IS_LAYER_ON(LAYER_RAISE) ? TRIANGLE_UP : ' ', /*invert=*/false);
+#else
+ switch (get_highest_layer(layer_state)) {
+ case LAYER_FUNCTION_1:
+ oled_write_P(PSTR("FN1"), /*invert=*/false);
+ break;
+ case LAYER_FUNCTION_2:
+ oled_write_P(PSTR("FN2"), /*invert=*/false);
+ break;
+ default:
+ oled_write_P(PSTR(" "), /*invert=*/false);
+ break;
+ }
+#endif
+}
+
+void render_oled_indicators(led_t leds) {
+ oled_advance_char();
+ oled_advance_char();
+ oled_write_P(leds.num_lock ? PSTR("NUM") : PSTR(" "), /*invert=*/false);
+ oled_advance_char();
+ oled_advance_char();
+ oled_write_P(leds.caps_lock ? PSTR("CAP") : PSTR(" "), /*invert=*/false);
+ oled_advance_char();
+ oled_advance_char();
+ oled_write_P(leds.scroll_lock ? PSTR("SCR") : PSTR(" "), /*invert=*/false);
+}
+
+void render_oled_wpm(uint8_t wpm) {
+ static const uint16_t UPDATE_MILLIS = 100;
+ static uint32_t update_timeout = 0;
+
+ if (timer_expired32(timer_read32(), update_timeout)) {
+ oled_advance_char();
+ oled_advance_char();
+ oled_write_P(wpm > 0 ? PSTR("WPM") : PSTR(" "), /*invert=*/false);
+ if (wpm > 0) {
+ oled_advance_char();
+ oled_advance_char();
+ oled_write(get_u8_str(wpm, ' '), /*invert=*/false);
+ } else {
+ oled_advance_page(/*clearPageRemainder=*/true);
+ }
+
+ update_timeout = timer_read32() + UPDATE_MILLIS;
+ }
+}
+
+#if defined(BCAT_OLED_PET)
+void process_record_oled(uint16_t keycode, const keyrecord_t *record) {
+ switch (keycode) {
+ case KC_SPACE:
+ if (oled_pet_can_jump()) {
+ oled_pet_should_jump = record->event.pressed;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+static void redraw_oled_pet(uint8_t col, uint8_t line, bool jumping, oled_pet_state_t state) {
+ oled_set_cursor(col, line);
+ if (jumping) {
+ oled_write_raw_P(oled_pet_frame(state), oled_pet_frame_bytes());
+ oled_set_cursor(col, line + oled_pet_frame_lines());
+ oled_advance_page(/*clearPageRemainder=*/true);
+ } else {
+ oled_advance_page(/*clearPageRemainder=*/true);
+ oled_write_raw_P(oled_pet_frame(state), oled_pet_frame_bytes());
+ }
+}
+
+void render_oled_pet(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state) {
+ /* Current animation to draw. We track changes to avoid redrawing the same
+ * frame repeatedly, allowing oled_pet_post_render to draw over the
+ * animation frame.
+ */
+ static oled_pet_state_t state = 0;
+ static bool state_changed = true;
+
+ /* Minimum time until the pet comes down after jumping. */
+ static const uint16_t JUMP_MILLIS = 200;
+ static bool jumping = false;
+
+ /* Time until the next animation or jump state change. */
+ static uint32_t update_timeout = 0;
+ static uint32_t jump_timeout = 0;
+
+ /* If the user pressed the jump key, immediately redraw instead of waiting
+ * for the animation frame to update. That way, the pet appears to respond
+ * to jump commands quickly rather than lagging. If the user released the
+ * jump key, wait for the jump timeout to avoid overly brief jumps.
+ */
+ bool redraw = state_changed;
+ if (oled_pet_should_jump && !jumping) {
+ redraw = true;
+ jumping = true;
+ jump_timeout = timer_read32() + JUMP_MILLIS;
+ } else if (!oled_pet_should_jump && jumping && timer_expired32(timer_read32(), jump_timeout)) {
+ redraw = true;
+ jumping = false;
+ }
+
+ /* Draw the actual animation, then move the cursor to the end of the
+ * rendered area. (Note that we take up an extra line to account for
+ * jumping, which shifts the animation up or down a line.)
+ */
+ if (redraw) {
+ redraw_oled_pet(col, line, jumping, state);
+ }
+ oled_pet_post_render(col, line + !jumping, keyboard_state, redraw);
+ oled_set_cursor(col, line + oled_pet_frame_lines() + 1);
+
+ /* If the update timer expired, recompute the pet's animation state. */
+ if (timer_expired32(timer_read32(), update_timeout)) {
+ oled_pet_state_t new_state = oled_pet_next_state(state, keyboard_state);
+ state_changed = new_state != state;
+ state = new_state;
+ update_timeout = timer_read32() + oled_pet_update_millis(keyboard_state);
+ } else {
+ state_changed = false;
+ }
+}
+#endif
diff --git a/users/bcat/bcat_oled.h b/users/bcat/bcat_oled.h
new file mode 100644
index 0000000000..f617e1f064
--- /dev/null
+++ b/users/bcat/bcat_oled.h
@@ -0,0 +1,55 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "led.h"
+
+/* Keyboard status passed to the oled_task_keymap function and used by the
+ * various keyboard pet implementations.
+ */
+typedef struct {
+ uint8_t mods;
+ led_t leds;
+ uint8_t wpm;
+} oled_keyboard_state_t;
+
+/* Note: Functions below assume a vertical OLED that is 32px (5 chars) wide. */
+
+/* Renders layer status at the cursor. Occupies 5x1 character cells. */
+void render_oled_layers(void);
+
+/* Renders LED indicators (Num/Caps/Scroll Lock) at the cursor. Occupies 5x3
+ * character cells.
+ */
+void render_oled_indicators(led_t leds);
+
+/* Renders calculated WPM count at the cursor. Occupies 5x2 character cells. */
+void render_oled_wpm(uint8_t wpm);
+
+#if defined(BCAT_OLED_PET)
+/* Renders an animated critter at the cursor that can respond to keystrokes,
+ * typing speed, etc. Should be about 5 character cells wide, but exact height
+ * varies depending on the specific OLED pet implementation linked in.
+ *
+ * The rendered image will be one line taller than the OLED pet's animation
+ * frame height to accommodate pets that "jump" when the spacebar is pressed.
+ */
+void render_oled_pet(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state);
+#endif
diff --git a/users/bcat/bcat_oled_pet.h b/users/bcat/bcat_oled_pet.h
new file mode 100644
index 0000000000..ba8227ab61
--- /dev/null
+++ b/users/bcat/bcat_oled_pet.h
@@ -0,0 +1,73 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Common interface for an OLED pet (animated critter that reacts to typing).
+ * Please link exactly one accompanying .c file to implement these functions.
+ */
+
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "bcat_oled.h"
+
+/* Opaque token representing a single frame of the OLED pet animation.
+ * Different pet implementations have different valid state values, but the
+ * zero value must always represent the default state of the pet at startup.
+ */
+typedef uint16_t oled_pet_state_t;
+
+/* Returns the number of bytes used to represent the animation frame (in
+ * oled_write_raw_P format). Note that every state the pet supports is expected
+ * to have the same frame size.
+ */
+uint16_t oled_pet_frame_bytes(void);
+
+/* Returns the number of lines of the OLED occupied by the animation. Note that
+ * every state the pet supports is expected to have the same frame size. The
+ * returned value does not include the one line of padding that render_oled_pet
+ * uses to account for "jumping".
+ */
+uint8_t oled_pet_frame_lines(void);
+
+/* Returns whether or not the OLED pet should "jump" when the spacebar is
+ * pressed. (The render_oled_pet implementation shifts the animation frame up
+ * one line when this happens.)
+ */
+bool oled_pet_can_jump(void);
+
+/* Returns the delay before the next animation frame should be displayed. */
+uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state);
+
+/* Returns the state of the pet to be animated on the next animation tick. */
+oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state);
+
+/* Called after the OLED pet is rendered during each OLED task invocation.
+ * Receives the same keyboard state as render_oled_pet. The redraw param
+ * indicates whether or not an OLED frame was just redrawn, allowing a specific
+ * pet implementation to draw custom things atop its animation frames.
+ *
+ * When this function is called, the cursor will be in an unspecified location,
+ * not necessarily the top-left corner of the OLED pet.
+ */
+void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw);
+
+/* Returns a PROGMEM pointer to the specified frame buffer for the specified
+ * state. The animation frame has length given by oled_pet_frame_bytes and is
+ * formatted as expected by oled_write_raw_P.
+ */
+const char *oled_pet_frame(oled_pet_state_t state);
diff --git a/users/bcat/bcat_oled_pet_isda.c b/users/bcat/bcat_oled_pet_isda.c
new file mode 100644
index 0000000000..98abddb13b
--- /dev/null
+++ b/users/bcat/bcat_oled_pet_isda.c
@@ -0,0 +1,134 @@
+/* Copyright 2018 sparrow666
+ * Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* OLED pet "Isda" (animated unicorn) featuring artwork by OpenGameArt user
+ * sparrow666, licensed under GPL v2.0.
+ *
+ * The animation is 32x72 pixels (9 lines tall).
+ *
+ * Runs faster the quicker you type. Shows LED indicator (Num/Caps/Scroll Lock)
+ * status in the bottom-right corner.
+ *
+ * Named after the goddess Ehlonna's personal unicorn in the first D&D campaign
+ * I ever played. :)
+ *
+ * Artwork source: https://opengameart.org/content/unicorn-2
+ */
+
+#include "bcat_oled_pet.h"
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "bcat_oled.h"
+#include "led.h"
+#include "oled_driver.h"
+#include "progmem.h"
+
+#define NUM_FRAMES 4
+#define FRAME_BYTES 288 /* (32 pixel) * (72 pixel) / (8 pixel/byte) */
+
+uint16_t oled_pet_frame_bytes(void) { return FRAME_BYTES; }
+uint8_t oled_pet_frame_lines(void) { return 9 /* (72 pixel) / (8 pixel/line) */; }
+bool oled_pet_can_jump(void) { return false; }
+
+uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state) {
+ static const uint16_t MIN_MILLIS = 75;
+ static const uint16_t MAX_MILLIS = 300;
+ static const uint8_t MAX_WPM = 150;
+ uint8_t wpm = keyboard_state->wpm;
+ if (wpm > MAX_WPM) {
+ wpm = MAX_WPM;
+ }
+ return MAX_MILLIS - (MAX_MILLIS - MIN_MILLIS) * wpm / MAX_WPM;
+}
+
+oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state) {
+ /* When the user stops typing, cycle the animation to frame 0 and stop. */
+ return state != 0 || keyboard_state->wpm > 0 ? (state + 1) % NUM_FRAMES : 0;
+}
+
+void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw) {
+ /* Draws LED indicator status in the bottom-right corner of the OLED pet,
+ * atop the animation frame. Redrawn only when necessary, e.g., when LED
+ * status changes or the animation itself updated (which overwrites any
+ * previously drawn indicators).
+ */
+ static led_t prev_leds = {.raw = 0};
+ led_t leds = keyboard_state->leds;
+ if (redraw || leds.raw != prev_leds.raw) {
+ oled_set_cursor(col + 4, line + 4);
+ oled_write_char(leds.num_lock ? 'N' : ' ', /*invert=*/false);
+ oled_set_cursor(col + 4, line + 6);
+ oled_write_char(leds.caps_lock ? 'C' : ' ', /*invert=*/false);
+ oled_set_cursor(col + 4, line + 8);
+ oled_write_char(leds.scroll_lock ? 'S' : ' ', /*invert=*/false);
+ prev_leds = leds;
+ }
+}
+
+const char *oled_pet_frame(oled_pet_state_t state) {
+ static const char PROGMEM FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xa0, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x88, 0xd0, 0x78, 0x04, 0x28, 0x70, 0x60, 0x90, 0x88, 0xc4, 0x22, 0x19, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, 0x8c, 0x08, 0x01, 0x01, 0x02, 0x02, 0x04, 0x88, 0xf0, 0x00,
+ 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x03, 0xc6, 0x3c, 0x00, 0x80, 0x70, 0x1c, 0x0f, 0x03, 0x0f, 0x3f, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0x7f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x0e, 0x30, 0x40, 0x47, 0x4f, 0x77, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xa0, 0xf0, 0x08, 0x50, 0xe0, 0xc0, 0x20, 0x10, 0x88, 0x44, 0x32, 0x09, 0x06, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x19, 0x11, 0x03, 0x02, 0x04, 0x04, 0x08, 0x10, 0xe0, 0x00,
+ 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00,
+ 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x03, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x03, 0xc6, 0x3c, 0x00, 0x80, 0x70, 0x18, 0x0f, 0x03, 0x0f, 0x3f, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x38, 0x07, 0xc0, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xff, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x20, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xa0, 0xf0, 0x08, 0x50, 0xe0, 0xc0, 0x20, 0x10, 0x88, 0x44, 0x32, 0x09, 0x06, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x19, 0x11, 0x03, 0x02, 0x04, 0x04, 0x08, 0x10, 0xe0, 0x00,
+ 0xc0, 0xc0, 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00,
+ 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x03, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x03, 0xc3, 0xfe, 0xfe, 0xfc, 0x7c, 0x1c, 0x0c, 0x0c, 0x08, 0x10, 0x60, 0x83, 0x07, 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x71, 0x0e, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x0f, 0x3f, 0x7f, 0x7f, 0x78, 0xe0, 0x90, 0x88, 0x66, 0x11, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xa0, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x88, 0xd0, 0x78, 0x04, 0x28, 0x70, 0x60, 0x90, 0x88, 0xc4, 0x22, 0x19, 0x04, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x84, 0x8c, 0x08, 0x01, 0x01, 0x02, 0x02, 0x04, 0x88, 0xf0, 0x00,
+ 0xc0, 0xe0, 0xe0, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0xff, 0xff, 0xff, 0x7f, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xfc, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x03, 0xc6, 0xfc, 0xfc, 0xfc, 0x7c, 0x18, 0x08, 0x08, 0x08, 0x30, 0xc0, 0x03, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xc0, 0xf8, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x70, 0x80, 0x1f, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x3e, 0x3f, 0x3f, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x09, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ return FRAMES[state];
+}
diff --git a/users/bcat/bcat_oled_pet_luna.c b/users/bcat/bcat_oled_pet_luna.c
new file mode 100644
index 0000000000..f0397c9c05
--- /dev/null
+++ b/users/bcat/bcat_oled_pet_luna.c
@@ -0,0 +1,168 @@
+/* Copyright 2021 HellSingCoder
+ * Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* OLED pet "Luna" (animated doggo) originally by HellSingCoder
+ * (https://www.simonepellegrino.com/) and licensed under GPL v2.0, adapted to
+ * fit the OLED pet framework in bcat's userspace.
+ *
+ * The animation is 32x24 pixels (3 lines tall).
+ *
+ * Walks or runs in response to typing speed. Sneaks when Ctrl is pressed and
+ * barks when Caps Lock is on. Jumps when space is pressed.
+ *
+ * Original source:
+ * https://github.com/qmk/qmk_firmware/blob/6dfe915e26d7147e6c2bed495d3b01cf5b21e6ec/keyboards/sofle/keymaps/helltm/keymap.c
+ */
+
+#include "bcat_oled_pet.h"
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "bcat_oled.h"
+#include "keycode.h"
+#include "progmem.h"
+
+enum image {
+ IMAGE_IDLE,
+ IMAGE_WALK,
+ IMAGE_RUN,
+ IMAGE_SNEAK,
+ IMAGE_BARK,
+};
+
+typedef union {
+ oled_pet_state_t raw;
+ struct {
+ uint8_t image;
+ uint8_t frame;
+ };
+} luna_state_t;
+
+#define NUM_FRAMES 2
+#define FRAME_BYTES 96 /* (32 pixel) * (24 pixel) / (8 pixel/byte) */
+
+uint16_t oled_pet_frame_bytes(void) { return FRAME_BYTES; }
+uint8_t oled_pet_frame_lines(void) { return 3 /* (24 pixel) / (8 pixel/line) */; }
+bool oled_pet_can_jump(void) { return true; }
+
+uint16_t oled_pet_update_millis(const oled_keyboard_state_t *keyboard_state) { return 200; }
+
+oled_pet_state_t oled_pet_next_state(oled_pet_state_t state, const oled_keyboard_state_t *keyboard_state) {
+ luna_state_t luna_state = {.raw = state};
+ if (keyboard_state->leds.caps_lock) {
+ luna_state.image = IMAGE_BARK;
+ } else if (keyboard_state->mods & MOD_MASK_CTRL) {
+ luna_state.image = IMAGE_SNEAK;
+ } else if (keyboard_state->wpm >= 100) {
+ luna_state.image = IMAGE_RUN;
+ } else if (keyboard_state->wpm >= 25) {
+ luna_state.image = IMAGE_WALK;
+ } else {
+ luna_state.image = IMAGE_IDLE;
+ }
+ luna_state.frame = (luna_state.frame + 1) % NUM_FRAMES;
+ return luna_state.raw;
+}
+
+void oled_pet_post_render(uint8_t col, uint8_t line, const oled_keyboard_state_t *keyboard_state, bool redraw) {}
+
+const char *oled_pet_frame(oled_pet_state_t state) {
+ static const char PROGMEM IDLE_FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ static const char PROGMEM WALK_FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ static const char PROGMEM RUN_FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ static const char PROGMEM SNEAK_FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ static const char PROGMEM BARK_FRAMES[NUM_FRAMES][FRAME_BYTES] = {
+ // clang-format off
+ {
+ 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ {
+ 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ },
+ // clang-format on
+ };
+ luna_state_t luna_state = {.raw = state};
+ switch (luna_state.image) {
+ case IMAGE_WALK:
+ return WALK_FRAMES[luna_state.frame];
+ case IMAGE_RUN:
+ return RUN_FRAMES[luna_state.frame];
+ case IMAGE_SNEAK:
+ return SNEAK_FRAMES[luna_state.frame];
+ case IMAGE_BARK:
+ return BARK_FRAMES[luna_state.frame];
+ default:
+ return IDLE_FRAMES[luna_state.frame];
+ }
+}
diff --git a/users/bcat/bcat_rgblight.c b/users/bcat/bcat_rgblight.c
new file mode 100644
index 0000000000..cd6222262b
--- /dev/null
+++ b/users/bcat/bcat_rgblight.c
@@ -0,0 +1,22 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdint.h>
+
+#include "progmem.h"
+
+/* Adjust RGB static hue ranges for shorter gradients than default. */
+const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
diff --git a/users/bcat/compile.sh b/users/bcat/compile.sh
new file mode 100755
index 0000000000..9d5e58b1a1
--- /dev/null
+++ b/users/bcat/compile.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -o errexit -o nounset
+
+usage () {
+ printf "\
+usage: ./users/bcat/compile.sh [-c] [-j N]
+
+Compiles all keyboards for which bcat maintains keymaps.
+
+optional arguments:
+ -c performs a clean build
+ -j N runs N make tasks in parallel
+ -v shows verbose output
+"
+}
+
+compile () {
+ local keyboard=$1 layout=${2:-}
+ FORCE_LAYOUT="$layout" SILENT="$opt_silent" make -j "$opt_parallel" "$keyboard":bcat
+}
+
+opt_parallel=1
+opt_silent=true
+
+while getopts :chj:v opt; do
+ case $opt in
+ c) opt_clean=1 ;;
+ j) opt_parallel=$OPTARG ;;
+ v) opt_silent=false ;;
+ h) usage; exit 0 ;;
+ \?) usage >&2; exit 2 ;;
+ esac
+done
+
+if [[ -n ${opt_clean:-} ]]; then
+ SILENT="$opt_silent" make clean
+fi
+
+compile 9key
+compile ai03/polaris 60_tsangan_hhkb
+compile cannonkeys/an_c 60_tsangan_hhkb
+compile cannonkeys/instant60 60_tsangan_hhkb
+compile crkbd/rev1 split_3x6_3
+compile dz60 60_ansi_split_bs_rshift
+compile dz60 60_tsangan_hhkb
+compile eco/rev2
+compile kbdfans/kbd67/hotswap 65_ansi_blocker_split_bs
+compile keebio/bdn9/rev1
+compile keebio/quefrency/rev1
+compile lily58/rev1
+compile yanghu/unicorne/f411
diff --git a/users/bcat/config.h b/users/bcat/config.h
index 5bb93f3833..7bb5d71bae 100644
--- a/users/bcat/config.h
+++ b/users/bcat/config.h
@@ -14,6 +14,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+/* Enable NKRO by default. All my devices support this, and it enables me to
+ * dispense with the NK_TOGG key, thus saving firmware space by not compiling
+ * magic keycode support.
+ */
+#define FORCE_NKRO
+
/* Wait between tap_code register and unregister to fix flaky media keys. */
#undef TAP_CODE_DELAY
@@ -31,6 +37,22 @@
*/
#define TAPPING_FORCE_HOLD
+#if defined(OLED_ENABLE)
+/* The built-in OLED timeout wakes the OLED screen every time the buffer is
+ * updated, even if no user activity has occurred recently. This prevents the
+ * OLED from ever turning off during a continuously running animation. To avoid
+ * this, we disable the default timeout and implement our own in
+ * oled_task_user.
+ */
+# undef OLED_TIMEOUT
+# define OLED_DISABLE_TIMEOUT
+
+# if defined(SPLIT_KEYBOARD)
+/* Sync OLED on/off state between halves of split keyboards. */
+# define SPLIT_OLED_ENABLE
+# endif
+#endif
+
#if defined(RGB_MATRIX_ENABLE)
/* Turn off per-key RGB when the host goes to sleep. */
# define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -46,9 +68,42 @@
# define RGB_MATRIX_VAL_STEP 17
# define RGB_MATRIX_SPD_STEP 17
-/* Turn on additional RGB animations. */
+/* Enable specific per-key animation modes. */
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+
+/* Enable additional per-key animation modes that require a copy of the
+ * framebuffer (with accompanying storage cost).
+ */
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-# define RGB_MATRIX_KEYPRESSES
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#endif
#if defined(RGBLIGHT_ENABLE)
@@ -64,8 +119,18 @@
# define RGBLIGHT_SAT_STEP 17
# define RGBLIGHT_VAL_STEP 17
-/* Turn on additional RGB animations. */
-# define RGBLIGHT_ANIMATIONS
+/* Enable specific underglow animation modes. (Skip TWINKLE because it seems to
+ * be broken on ARM: https://github.com/qmk/qmk_firmware/issues/15345.)
+ */
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
#endif
#if defined(BACKLIGHT_ENABLE)
@@ -77,3 +142,9 @@
# define BACKLIGHT_LEVELS 7
#endif
+
+/* Turn off unused config options to reduce firmware size. */
+#define LAYER_STATE_8BIT
+#define NO_ACTION_ONESHOT
+#undef LOCKING_RESYNC_ENABLE
+#undef LOCKING_SUPPORT_ENABLE
diff --git a/users/bcat/readme.md b/users/bcat/readme.md
index 1922f95f4a..3650e8ee42 100644
--- a/users/bcat/readme.md
+++ b/users/bcat/readme.md
@@ -6,6 +6,8 @@ keyboard-specific keymaps for boards without standard layout support. I derive
my keymaps from two canonical ones (preferred for typing and gaming,
respectively).
+You can build all keymaps I maintain at once using `./users/bcat/compile.sh`.
+
## Canonical keymaps
* [Split 3x6 + 3 thumb
@@ -22,6 +24,7 @@ AN-C, CannonKeys Instant60, DZ60.
### Ergo
* [Lily58](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat)
+* [Unicorne](https://github.com/qmk/qmk_firmware/tree/master/keyboards/yanghu/unicorne/keymaps/bcat)
### Ortho
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 12c9a89bf4..1ad2ee0aa8 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -1,7 +1,10 @@
-SRC += bcat.c
-
-# Enable Bootmagic Lite to consistently reset to bootloader and clear EEPROM.
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+# Enable Bootmagic Lite for keyboards that don't have an easily accessible
+# reset button, but keep it disabled for all others to reduce firmware size.
+ifneq ($(filter $(strip $(KEYBOARD)),ai03/polaris dz60 kbdfans/kbd67/hotswap yanghu/unicorne/f411),)
+ BOOTMAGIC_ENABLE = yes
+else
+ BOOTMAGIC_ENABLE = no
+endif
# Enable media keys on all keyboards.
EXTRAKEY_ENABLE = yes
@@ -16,21 +19,49 @@ NKRO_ENABLE = yes
# Enable link-time optimization to reduce binary size.
LTO_ENABLE = yes
-# Disable unused build options on all keyboards.
+# Include common utilities shared across all our keymaps.
+SRC += bcat.c
+
+# Include additional utilities that extend optional QMK features only enabled
+# on some keyboards.
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += bcat_oled.c
+ WPM_ENABLE = yes # for WPM and animated "keyboard pet" widgets
+
+ # OLED pets (animated critters that react to typing) take up a lot of
+ # firmware space, so only compile one, and only if requested.
+ BCAT_OLED_PET ?= no
+ ifneq ($(strip $(BCAT_OLED_PET)), no)
+ SRC += bcat_oled_pet_$(strip $(BCAT_OLED_PET)).c
+ OPT_DEFS += -DBCAT_OLED_PET
+ endif
+endif
+
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
+ SRC += bcat_rgblight.c
+endif
+
+# Disable unwanted build options on all keyboards. (Mouse keys are turned off
+# due to https://github.com/qmk/qmk_firmware/issues/8323, and the rest are
+# turned off to reduce firmware size.)
COMMAND_ENABLE = no
CONSOLE_ENABLE = no
MOUSEKEY_ENABLE = no
TERMINAL_ENABLE = no
-# Disable unused hardware options on all keyboards.
+# Disable unwanted hardware options on all keyboards. (Some keyboards turn
+# these features on by default even though they aren't actually required.)
MIDI_ENABLE = no
SLEEP_LED_ENABLE = no
# Disable other unused options on all keyboards.
AUTO_SHIFT_ENABLE = no
COMBO_ENABLE = no
+GRAVE_ESC_ENABLE = no
KEY_LOCK_ENABLE = no
LEADER_ENABLE = no
+MAGIC_ENABLE = no
+SPACE_CADET_ENABLE = no
SWAP_HANDS_ENABLE = no
TAP_DANCE_ENABLE = no
UCIS_ENABLE = no
diff --git a/users/byungyoonc/byungyoonc.c b/users/byungyoonc/byungyoonc.c
new file mode 100644
index 0000000000..5059de0d97
--- /dev/null
+++ b/users/byungyoonc/byungyoonc.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 Choi Byungyoon <byungyoonc@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "byungyoonc.h"
+
+#if (__has_include("secrets.h") && !defined(NO_SECRETS))
+# include "secrets.h"
+#else
+static const char *const secrets[] = {"test1", "test2"};
+#endif
+
+#if !defined(MACRO_TIMER)
+# define MACRO_TIMER 20
+#endif
+
+/* replicaJunction's process_record_user_kb */
+__attribute__ ((weak))
+bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_SEC1 ... KC_SEC2: /* Secrets! Externally defined strings, not stored in repo */
+ if (!record->event.pressed) {
+ clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+ send_string_with_delay(secrets[keycode - KC_SEC1], MACRO_TIMER);
+ }
+ return false;
+ break;
+ }
+ return process_record_user_kb(keycode, record);
+};
+
diff --git a/users/byungyoonc/byungyoonc.h b/users/byungyoonc/byungyoonc.h
new file mode 100644
index 0000000000..6d82370a01
--- /dev/null
+++ b/users/byungyoonc/byungyoonc.h
@@ -0,0 +1,27 @@
+/* Copyright 2021 Choi Byungyoon <byungyoonc@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+enum custom_keycodes {
+ KC_SEC1 = SAFE_RANGE,
+ KC_SEC2
+};
+
+#define KC_TASK LCTL(LSFT(KC_ESC))
+#define KC_MMUT LSG(KC_A)
+
+bool process_record_user_kb(uint16_t keycode, keyrecord_t *record);
diff --git a/users/byungyoonc/readme.md b/users/byungyoonc/readme.md
new file mode 100644
index 0000000000..d0bc8d14d4
--- /dev/null
+++ b/users/byungyoonc/readme.md
@@ -0,0 +1,14 @@
+byungyoonc QMK Userspace
+========================
+
+# Overview
+Defines some custom keycodes, alongside with the Secrets feature. Also incorporates `process_record_user_kb()` for further controls.
+
+Heavily influenced by the [Userspace code by replicaJunction](../replicaJunction/readme.md).
+
+# Features
+
+## Custom Keycodes
+- `KC_SEC#` for the Secrets input
+- `KC_TASK` for the Windows Task Manager shortcut `LCTL(LSFT(KC_ESC))`
+- `KC_MMUT` for the Windows PowerToys Conference Mute microphone `LSG(KC_A)`
diff --git a/users/byungyoonc/rules.mk b/users/byungyoonc/rules.mk
new file mode 100644
index 0000000000..39c65e2238
--- /dev/null
+++ b/users/byungyoonc/rules.mk
@@ -0,0 +1 @@
+SRC += byungyoonc.c
diff --git a/users/byungyoonc/saturated_solid_multisplash.h b/users/byungyoonc/saturated_solid_multisplash.h
new file mode 100644
index 0000000000..f302348524
--- /dev/null
+++ b/users/byungyoonc/saturated_solid_multisplash.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Choi Byungyoon <byungyoonc@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#if defined(RGB_MATRIX_KEYPRESSES)
+RGB_MATRIX_EFFECT(saturated_solid_multisplash)
+
+# if defined(RGB_MATRIX_CUSTOM_EFFECT_IMPLS)
+
+static bool saturated_solid_multisplash(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t count = g_last_hit_tracker.count;
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ HSV hsv = rgb_matrix_config.hsv;
+ hsv.v = 0;
+ for (uint8_t j = 0; j < count; j++) {
+ int16_t dx = g_led_config.point[i].x - g_last_hit_tracker.x[j];
+ int16_t dy = g_led_config.point[i].y - g_last_hit_tracker.y[j];
+ uint8_t dist = sqrt16(dx * dx + dy * dy);
+ uint16_t tick = scale16by8(g_last_hit_tracker.tick[j], qadd8(rgb_matrix_config.speed, 1));
+
+ uint16_t effect = tick - dist;
+ if (effect > 255) effect = 255;
+ uint16_t vdiff = scale16by8(255 - effect, 255 - dist);
+ hsv.v = qadd8(hsv.v, vdiff);
+ hsv.s = qsub8(hsv.s, qsub8(127, effect));
+ }
+ hsv.v = scale8(hsv.v, rgb_matrix_config.hsv.v);
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // RGB_MATRIX_KEYPRESSES
diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c
new file mode 100644
index 0000000000..f01aab433e
--- /dev/null
+++ b/users/drashna/callbacks.c
@@ -0,0 +1,211 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+
+__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
+void keyboard_pre_init_user(void) {
+ userspace_config.raw = eeconfig_read_user();
+ keyboard_pre_init_keymap();
+}
+// Add reconfigurable functions here, for keymap customization
+// This allows for a global, userspace functions, and continued
+// customization of the keymap. Use _keymap instead of _user
+// functions in the keymaps
+// Call user matrix init, set default RGB colors and then
+// call the keymap's init function
+__attribute__((weak)) void matrix_init_keymap(void) {}
+__attribute__((weak)) void matrix_init_secret(void) {}
+void matrix_init_user(void) {
+#if defined(BOOTLOADER_CATERINA) && defined(__AVR__) && defined(__AVR_ATmega32U4__)
+ DDRD &= ~(1 << 5);
+ PORTD &= ~(1 << 5);
+
+ DDRB &= ~(1 << 0);
+ PORTB &= ~(1 << 0);
+#endif
+#ifdef CUSTOM_UNICODE_ENABLE
+ matrix_init_unicode();
+#endif
+ matrix_init_secret();
+ matrix_init_keymap();
+}
+
+__attribute__((weak)) void keyboard_post_init_keymap(void) {}
+void keyboard_post_init_user(void) {
+#if defined(RGBLIGHT_ENABLE)
+ keyboard_post_init_rgb_light();
+#endif
+#if defined(RGB_MATRIX_ENABLE)
+ keyboard_post_init_rgb_matrix();
+#endif
+#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER)
+ keyboard_post_init_transport_sync();
+#endif
+ keyboard_post_init_keymap();
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_update_pwm_buffers(void);
+#endif
+
+__attribute__((weak)) void shutdown_keymap(void) {}
+void shutdown_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(1);
+ rgblight_setrgb_red();
+#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
+ rgb_matrix_update_pwm_buffers();
+#endif // RGB_MATRIX_ENABLE
+#ifdef OLED_ENABLE
+ oled_off();
+#endif
+
+ shutdown_keymap();
+}
+
+__attribute__((weak)) void suspend_power_down_keymap(void) {}
+
+void suspend_power_down_user(void) {
+ if (layer_state_is(_GAMEPAD)) {
+ layer_off(_GAMEPAD);
+ }
+ if (layer_state_is(_DIABLO)) {
+ layer_off(_DIABLO);
+ }
+ if (layer_state_is(_DIABLOII)) {
+ layer_off(_DIABLOII);
+ }
+#ifdef OLED_ENABLE
+ oled_off();
+#endif
+ suspend_power_down_keymap();
+}
+
+__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
+void suspend_wakeup_init_user(void) {
+ suspend_wakeup_init_keymap();
+}
+
+// No global matrix scan code, so just run keymap's matrix
+// scan function
+__attribute__((weak)) void matrix_scan_keymap(void) {}
+__attribute__((weak)) void matrix_scan_secret(void) {}
+void matrix_scan_user(void) {
+ static bool has_ran_yet;
+ if (!has_ran_yet) {
+ has_ran_yet = true;
+ startup_user();
+ }
+
+#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
+ run_diablo_macro_check();
+#endif // TAP_DANCE_ENABLE
+
+#if defined(RGB_MATRIX_ENABLE)
+ matrix_scan_rgb_matrix();
+#endif
+ matrix_scan_secret();
+
+ matrix_scan_keymap();
+}
+
+#ifdef AUDIO_ENABLE
+float doom_song[][2] = SONG(E1M1_DOOM);
+#endif
+
+// on layer change, no matter where the change was initiated
+// Then runs keymap's layer change check
+__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (!is_keyboard_master()) {
+ return state;
+ }
+
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+#if defined(POINTING_DEVICE_ENABLE)
+ state = layer_state_set_pointing(state);
+#endif
+#if defined(RGBLIGHT_ENABLE)
+ state = layer_state_set_rgb_light(state);
+#endif // RGBLIGHT_ENABLE
+#if defined(AUDIO_ENABLE) && !defined(__arm__)
+ static bool is_gamepad_on = false;
+ if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) {
+ is_gamepad_on = layer_state_cmp(state, _GAMEPAD);
+ if (is_gamepad_on) {
+ PLAY_LOOP(doom_song);
+ } else {
+ stop_all_notes();
+ }
+ }
+#endif
+ state = layer_state_set_keymap(state);
+ return state;
+}
+
+// Runs state check and changes underglow color and animation
+__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ if (!is_keyboard_master()) {
+ return state;
+ }
+
+ state = default_layer_state_set_keymap(state);
+#if 0
+# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ state = default_layer_state_set_rgb(state);
+# endif // RGBLIGHT_ENABLE
+#endif
+ return state;
+}
+
+__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
+void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
+
+__attribute__((weak)) void eeconfig_init_keymap(void) {}
+void eeconfig_init_user(void) {
+ userspace_config.raw = 0;
+ userspace_config.rgb_layer_change = true;
+ eeconfig_update_user(userspace_config.raw);
+ eeconfig_init_keymap();
+}
+
+#ifdef SPLIT_KEYBOARD
+__attribute__((weak)) void matrix_slave_scan_keymap(void) {}
+void matrix_slave_scan_user(void) {
+# if defined(AUDIO_ENABLE)
+# if !defined(NO_MUSIC_MODE)
+ music_task();
+# endif
+# ifdef AUDIO_INIT_DELAY
+ if (!is_keyboard_master()) {
+ static bool delayed_tasks_run = false;
+ static uint16_t delayed_task_timer = 0;
+ if (!delayed_tasks_run) {
+ if (!delayed_task_timer) {
+ delayed_task_timer = timer_read();
+ } else if (timer_elapsed(delayed_task_timer) > 300) {
+ audio_startup();
+ delayed_tasks_run = true;
+ }
+ }
+ }
+# endif
+# endif
+# ifdef SEQUENCER_ENABLE
+ sequencer_task();
+# endif
+# ifdef LED_MATRIX_ENABLE
+ led_matrix_task();
+# endif
+# ifdef HAPTIC_ENABLE
+ haptic_task();
+# endif
+
+ matrix_slave_scan_keymap();
+}
+#endif
diff --git a/users/drashna/callbacks.h b/users/drashna/callbacks.h
new file mode 100644
index 0000000000..f6ac6b88de
--- /dev/null
+++ b/users/drashna/callbacks.h
@@ -0,0 +1,25 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+void matrix_init_keymap(void);
+void matrix_init_secret(void);
+void shutdown_keymap(void);
+void suspend_power_down_keymap(void);
+void suspend_wakeup_init_keymap(void);
+void matrix_scan_keymap(void);
+void matrix_scan_secret(void);
+layer_state_t layer_state_set_keymap(layer_state_t state);
+layer_state_t default_layer_state_set_keymap(layer_state_t state);
+void led_set_keymap(uint8_t usb_led);
+void eeconfig_init_keymap(void);
+
+#ifdef CUSTOM_UNICODE_ENABLE
+void matrix_init_unicode(void);
+#endif
+#ifdef SPLIT_KEYBOARD
+void matrix_slave_scan_keymap(void);
+#endif
diff --git a/users/drashna/callbacks.md b/users/drashna/callbacks.md
new file mode 100644
index 0000000000..a0f0d9fdae
--- /dev/null
+++ b/users/drashna/callbacks.md
@@ -0,0 +1,71 @@
+# Custom Userspace Callback Functions
+
+Specifically QMK works by using customized callback functions for everything. This allows for multiple levels of customization.
+
+`matrix_scan` calls `matrix_scan_quantum`, which calls `matrix_scan_kb`, which calls `matrix_scan_user`.
+`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user`
+The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions.
+
+All (most) `_user` functions are handled here, in the userspace instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
+
+This allows for keyboard specific configuration while maintaining the ability to customize the board.
+
+My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/drashna/keymap.c) is a good example of this, as it uses the LEDs as modifier indicators.
+
+You can see a list of these files in [callbacks.c](callbacks.c), or a shortend list here
+
+```c
+__attribute__((weak)) void matrix_init_keymap(void) {}
+void matrix_init_user(void) {
+ matrix_init_keymap();
+}
+
+__attribute__((weak)) void keyboard_post_init_keymap(void) {}
+void keyboard_post_init_user(void) {
+ keyboard_post_init_keymap();
+}
+
+__attribute__((weak)) void matrix_scan_keymap(void) {}
+void matrix_scan_user(void) {
+ matrix_scan_keymap();
+}
+
+__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keymap(keycode, record)) { return false; }
+ return true;
+}
+
+__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = layer_state_set_keymap(state);
+ return state;
+}
+
+__attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) {}
+void led_set_user(uint8_t usb_led) {
+ led_set_keymap(usb_led);
+}
+
+__attribute__ ((weak)) void suspend_power_down_keymap(void) {}
+void suspend_power_down_user(void) {
+ suspend_power_down_keymap();
+}
+
+__attribute__ ((weak)) void suspend_wakeup_init_keymap(void) {}
+void suspend_wakeup_init_user(void) {
+ suspend_wakeup_init_keymap();
+}
+
+
+__attribute__ ((weak)) void shutdown_keymap(void) {}
+void shutdown_user (void) {
+ shutdown_keymap();
+}
+
+__attribute__ ((weak)) void eeconfig_init_keymap(void) {}
+void eeconfig_init_user(void) {
+ eeconfig_update_user(0);
+ eeconfig_init_keymap();
+}
+```
diff --git a/users/drashna/config.h b/users/drashna/config.h
index ebb8d7b7ac..f55ed36bc2 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -1,24 +1,16 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// Use custom magic number so that when switching branches, EEPROM always gets reset
#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
+#ifdef IS_COMMAND
+#undef IS_COMMAND
+#endif
+#define IS_COMMAND() (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) == MOD_MASK_SHIFT)
+
/* Set Polling rate to 1000Hz */
#define USB_POLLING_INTERVAL_MS 1
@@ -37,10 +29,19 @@
# define SELECT_SOFT_SERIAL_SPEED 1
# endif
# ifdef CUSTOM_SPLIT_TRANSPORT_SYNC
-# define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC
+# define SPLIT_TRANSACTION_IDS_USER RPC_ID_USER_STATE_SYNC, RPC_ID_USER_KEYMAP_SYNC, RPC_ID_USER_CONFIG_SYNC, RPC_ID_USER_WATCHDOG_SYNC, RPC_ID_USER_KEYLOG_STR
# endif
#endif
+#if defined(WPM_ENABLE)
+// # define WPM_LAUNCH_CONTROL
+// # define WPM_ALLOW_COUNT_REGRESSOIN
+// # define WPM_UNFILTERED
+# define WPM_SAMPLE_SECONDS 6
+# define WPM_SAMPLE_PERIODS 50
+# define WPM_ESTIMATED_WORD_SIZE 6
+#endif
+
#ifdef AUDIO_ENABLE
# define AUDIO_CLICKY
# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
@@ -68,7 +69,7 @@
# endif
#endif // !AUDIO_ENABLE
-#define UNICODE_SELECTED_MODES UC_WIN, UC_MAC
+#define UNICODE_SELECTED_MODES UC_WINC, UC_MAC
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_SLEEP
@@ -191,7 +192,7 @@
# ifdef OLED_FONT_H
# undef OLED_FONT_H
# endif
-# define OLED_FONT_H "drashna_font.h"
+# define OLED_FONT_H "oled/drashna_font.h"
# define OLED_FONT_END 255
// # define OLED_FONT_5X5
// # define OLED_FONT_AZTECH
@@ -242,17 +243,6 @@
# define TAPPING_TOGGLE 1
#endif
-#ifdef TAPPING_TERM
-# undef TAPPING_TERM
-#endif // TAPPING_TERM
-#if defined(KEYBOARD_ergodox_ez)
-# define TAPPING_TERM 185
-#elif defined(KEYBOARD_crkbd)
-# define TAPPING_TERM 200
-#else
-# define TAPPING_TERM 175
-#endif
-
#define TAP_CODE_DELAY 5
/* Disable unused and unneeded features to reduce on firmware size */
@@ -281,3 +271,24 @@
# define C14 PAL_LINE(GPIOC, 14)
# define C15 PAL_LINE(GPIOC, 15)
#endif
+
+#ifdef OLED_DRIVER_SH1107
+# define OLED_DISPLAY_CUSTOM
+# define OLED_IC_SH1107 2
+# define OLED_DISPLAY_128X128
+# define OLED_DISPLAY_WIDTH 128
+# define OLED_DISPLAY_HEIGHT 128
+# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH)
+# define OLED_BLOCK_TYPE uint32_t
+# define OLED_SOURCE_MAP \
+ { 0, 8, 16, 24, 32, 40, 48, 56 }
+# define OLED_TARGET_MAP \
+ { 56, 48, 40, 32, 24, 16, 8, 0 }
+# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8)
+# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)
+# define OLED_COM_PINS COM_PINS_ALT
+# define OLED_IC OLED_IC_SH1107
+# ifndef OLED_BRIGHTNESS
+# define OLED_BRIGHTNESS 50
+# endif
+#endif
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 7e07a2c7c5..6e8d4ac9bd 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -1,39 +1,38 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#include "drashna.h"
+#ifdef __AVR__
+# include <avr/wdt.h>
+#endif
userspace_config_t userspace_config;
+/**
+ * @brief Handle registering a keycode, with optional modifer based on timed event
+ *
+ * @param code keycode to send to host
+ * @param mod_code modifier to send with code, if held for tapping term or longer
+ * @param pressed the press/release event (can use "record->event.pressed" for this)
+ * @return true exits function
+ * @return false exits function
+ */
bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
static uint16_t this_timer;
- if (pressed) {
- this_timer = timer_read();
- } else {
- if (timer_elapsed(this_timer) < TAPPING_TERM) {
- tap_code(code);
- } else {
- register_code(mod_code);
- tap_code(code);
- unregister_code(mod_code);
- }
- }
+ mod_key_press(code, mod_code, pressed, this_timer);
return false;
}
+/**
+ * @brief Handle registation of keycode, with optional modifier based on custom timer
+ *
+ * @param code keycode to send to host
+ * @param mod_code modifier keycode to send with code, if held for tapping term or longer
+ * @param pressed the press/release event
+ * @param this_timer custom timer to use
+ * @return true
+ * @return false
+ */
bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
if (pressed) {
this_timer = timer_read();
@@ -49,271 +48,77 @@ bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this
return false;
}
-__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
-void keyboard_pre_init_user(void) {
- userspace_config.raw = eeconfig_read_user();
- keyboard_pre_init_keymap();
-}
-// Add reconfigurable functions here, for keymap customization
-// This allows for a global, userspace functions, and continued
-// customization of the keymap. Use _keymap instead of _user
-// functions in the keymaps
-// Call user matrix init, set default RGB colors and then
-// call the keymap's init function
-__attribute__((weak)) void matrix_init_keymap(void) {}
-__attribute__((weak)) void matrix_init_secret(void) {}
-void matrix_init_user(void) {
-#if defined(BOOTLOADER_CATERINA) && defined(__AVR__)
- DDRD &= ~(1 << 5);
- PORTD &= ~(1 << 5);
-
- DDRB &= ~(1 << 0);
- PORTB &= ~(1 << 0);
-#endif
+/**
+ * @brief Performs exact match for modifier values
+ *
+ * @param value the modifer varible (get_mods/get_oneshot_mods/get_weak_mods)
+ * @param mask the modifier mask to check for
+ * @return true Has the exact modifiers specifed
+ * @return false Does not have the exact modifiers specified
+ */
+bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
+ value &= 0xF;
+ mask &= 0xF;
- matrix_init_secret();
- matrix_init_keymap();
+ return (value & mask) == mask;
}
-__attribute__((weak)) void keyboard_post_init_keymap(void) {}
-void keyboard_post_init_user(void) {
-#if defined(RGBLIGHT_ENABLE)
- keyboard_post_init_rgb_light();
-#endif
-#if defined(RGB_MATRIX_ENABLE)
- keyboard_post_init_rgb_matrix();
-#endif
-#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER)
- keyboard_post_init_transport_sync();
-#endif
- keyboard_post_init_keymap();
+/**
+ * @brief Tap keycode, with no mods
+ *
+ * @param kc keycode to use
+ */
+void tap_code16_nomods(uint16_t kc) {
+ uint8_t temp_mod = get_mods();
+ clear_mods();
+ clear_oneshot_mods();
+ tap_code16(kc);
+ set_mods(temp_mod);
}
-#ifdef RGB_MATRIX_ENABLE
-void rgb_matrix_update_pwm_buffers(void);
-#endif
+/**
+ * @brief Run shutdown routine and soft reboot firmware.
+ *
+ */
-__attribute__((weak)) void shutdown_keymap(void) {}
-void shutdown_user(void) {
-#ifdef RGBLIGHT_ENABLE
- rgblight_enable_noeeprom();
- rgblight_mode_noeeprom(1);
- rgblight_setrgb_red();
-#endif // RGBLIGHT_ENABLE
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
- rgb_matrix_update_pwm_buffers();
-#endif // RGB_MATRIX_ENABLE
-#ifdef OLED_ENABLE
- oled_off();
+#ifdef HAPTIC_ENABLE
+# include "haptic.h"
#endif
- shutdown_keymap();
-}
-
-__attribute__((weak)) void suspend_power_down_keymap(void) {}
-
-void suspend_power_down_user(void) {
-#ifdef OLED_ENABLE
- oled_off();
+#ifdef AUDIO_ENABLE
+# ifndef GOODBYE_SONG
+# define GOODBYE_SONG SONG(GOODBYE_SOUND)
+# endif
+float reset_song[][2] = GOODBYE_SONG;
#endif
- suspend_power_down_keymap();
-}
-
-__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
-void suspend_wakeup_init_user(void) {
- if (layer_state_is(_GAMEPAD)) {
- layer_off(_GAMEPAD);
- }
- if (layer_state_is(_DIABLO)) {
- layer_off(_DIABLO);
- }
- suspend_wakeup_init_keymap();
-}
-
-// No global matrix scan code, so just run keymap's matrix
-// scan function
-__attribute__((weak)) void matrix_scan_keymap(void) {}
-__attribute__((weak)) void matrix_scan_secret(void) {}
-void matrix_scan_user(void) {
- static bool has_ran_yet;
- if (!has_ran_yet) {
- has_ran_yet = true;
- startup_user();
- }
-
-#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
- run_diablo_macro_check();
-#endif // TAP_DANCE_ENABLE
-#if defined(RGBLIGHT_ENABLE)
- matrix_scan_rgb_light();
-#endif // RGBLIGHT_ENABLE
-#if defined(RGB_MATRIX_ENABLE)
- matrix_scan_rgb_matrix();
+void software_reset(void) {
+ clear_keyboard();
+#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
+ process_midi_all_notes_off();
#endif
-
- matrix_scan_secret();
-
- matrix_scan_keymap();
-}
-
#ifdef AUDIO_ENABLE
-float doom_song[][2] = SONG(E1M1_DOOM);
+# ifndef NO_MUSIC_MODE
+ music_all_notes_off();
+# endif
+ uint16_t timer_start = timer_read();
+ PLAY_SONG(reset_song);
+ shutdown_user();
+ while (timer_elapsed(timer_start) < 250) wait_ms(1);
+ stop_all_notes();
+#else
+ shutdown_user();
+ wait_ms(250);
#endif
-
-// on layer change, no matter where the change was initiated
-// Then runs keymap's layer change check
-__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
-layer_state_t layer_state_set_user(layer_state_t state) {
- if (!is_keyboard_master()) {
- return state;
- }
-
- state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
-#if defined(RGBLIGHT_ENABLE)
- state = layer_state_set_rgb_light(state);
-#endif // RGBLIGHT_ENABLE
-#if defined(AUDIO_ENABLE) && !defined(__arm__)
- static bool is_gamepad_on = false;
- if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) {
- is_gamepad_on = layer_state_cmp(state, _GAMEPAD);
- if (is_gamepad_on) {
- PLAY_LOOP(doom_song);
- } else {
- stop_all_notes();
- }
- }
+#ifdef HAPTIC_ENABLE
+ haptic_shutdown();
#endif
- state = layer_state_set_keymap(state);
- return state;
-}
-
-// Runs state check and changes underglow color and animation
-__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
-layer_state_t default_layer_state_set_user(layer_state_t state) {
- if (!is_keyboard_master()) {
- return state;
- }
-
- state = default_layer_state_set_keymap(state);
-#if 0
-# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
- state = default_layer_state_set_rgb(state);
-# endif // RGBLIGHT_ENABLE
-#endif
- return state;
-}
-
-__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
-void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
-
-__attribute__((weak)) void eeconfig_init_keymap(void) {}
-void eeconfig_init_user(void) {
- userspace_config.raw = 0;
- userspace_config.rgb_layer_change = true;
- eeconfig_update_user(userspace_config.raw);
- eeconfig_init_keymap();
- keyboard_init();
-}
-
-bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
- value &= 0xF;
- mask &= 0xF;
-
- return (value & mask) == mask;
-}
-#ifdef SPLIT_KEYBOARD
-__attribute__((weak)) void matrix_slave_scan_keymap(void) {}
-void matrix_slave_scan_user(void) {
-# if defined(AUDIO_ENABLE)
-# if !defined(NO_MUSIC_MODE)
- music_task();
-# endif
-# ifdef AUDIO_INIT_DELAY
- if (!is_keyboard_master()) {
- static bool delayed_tasks_run = false;
- static uint16_t delayed_task_timer = 0;
- if (!delayed_tasks_run) {
- if (!delayed_task_timer) {
- delayed_task_timer = timer_read();
- } else if (timer_elapsed(delayed_task_timer) > 300) {
- audio_startup();
- delayed_tasks_run = true;
- }
- }
- }
-# endif
-# endif
-# ifdef SEQUENCER_ENABLE
- sequencer_task();
+#if defined(PROTOCOL_LUFA)
+ wdt_enable(WDTO_250MS);
+#elif defined(PROTOCOL_CHIBIOS)
+# if defined(MCU_STM32) || defined(MCU_KINETIS)
+ NVIC_SystemReset();
# endif
-# ifdef LED_MATRIX_ENABLE
- led_matrix_task();
-# endif
-# ifdef HAPTIC_ENABLE
- haptic_task();
-# endif
-
- matrix_slave_scan_keymap();
-}
#endif
-
-__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- default:
- return TAPPING_TERM;
- }
-}
-
-__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
- // Immediately select the hold action when another key is tapped:
- // return true;
- // Do not select the hold action when another key is tapped.
- // return false;
- switch (keycode) {
- default:
- return false;
- }
-}
-
-__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
- // Immediately select the hold action when another key is pressed.
- // return true;
- // Do not select the hold action when another key is pressed.
- // return false;
- switch (keycode) {
- case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
- return true;
- default:
- return false;
- }
-}
-
-__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
- // Do not force the mod-tap key press to be handled as a modifier
- // if any other key was pressed while the mod-tap key is held down.
- // return true;
- // Force the mod-tap key press to be handled as a modifier if any
- // other key was pressed while the mod-tap key is held down.
- // return false;
- switch (keycode) {
- default:
- return true;
- }
-}
-
-__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- default:
- return false;
- }
-}
-
-__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- default:
- return false;
- }
}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 6a45141d9a..0bf1de84cf 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -1,42 +1,31 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include QMK_KEYBOARD_H
#include "eeprom.h"
-#include "wrappers.h"
-#include "process_records.h"
+#include "keyrecords/wrappers.h"
+#include "keyrecords/process_records.h"
+#include "callbacks.h"
+
#ifdef TAP_DANCE_ENABLE
-# include "tap_dances.h"
+# include "keyrecords/tap_dances.h"
#endif // TAP_DANCE_ENABLE
#if defined(RGBLIGHT_ENABLE)
-# include "rgb_stuff.h"
+# include "rgb/rgb_stuff.h"
#endif
#if defined(RGB_MATRIX_ENABLE)
-# include "rgb_matrix_stuff.h"
+# include "rgb/rgb_matrix_stuff.h"
#endif
#if defined(OLED_ENABLE)
-# include "oled_stuff.h"
-#endif
-#if defined(PIMORONI_TRACKBALL_ENABLE)
-# include "drivers/sensors/pimoroni_trackball.h"
+# include "oled/oled_stuff.h"
#endif
#ifdef SPLIT_KEYBOARD
-# include "transport_sync.h"
+# include "split/transport_sync.h"
+#endif
+#ifdef POINTING_DEVICE_ENABLE
+# include "pointing/pointing.h"
#endif
/* Define layer names */
@@ -58,7 +47,7 @@ enum userspace_layers {
_ADJUST,
};
-#define _MACROS _MOUSE
+#define _MACROS _MOUSE
#define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER
#define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1)
#define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2)
@@ -86,23 +75,11 @@ enum userspace_layers {
#define DEFAULT_LAYER_3_RGB RGB_MAGENTA
#define DEFAULT_LAYER_4_RGB RGB_GOLDENROD
-bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed);
-bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
-void matrix_init_keymap(void);
-void matrix_init_secret(void);
-void shutdown_keymap(void);
-void suspend_power_down_keymap(void);
-void suspend_wakeup_init_keymap(void);
-void matrix_scan_keymap(void);
-void matrix_scan_secret(void);
-layer_state_t layer_state_set_keymap(layer_state_t state);
-layer_state_t default_layer_state_set_keymap(layer_state_t state);
-void led_set_keymap(uint8_t usb_led);
-void eeconfig_init_keymap(void);
-bool hasAllBitsInMask(uint8_t value, uint8_t mask);
-#ifdef SPLIT_KEYBOARD
-void matrix_slave_scan_keymap(void);
-#endif
+bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed);
+bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
+bool hasAllBitsInMask(uint8_t value, uint8_t mask);
+void tap_code16_nomods(uint16_t kc);
+void software_reset(void);
// clang-format off
typedef union {
@@ -113,25 +90,9 @@ typedef union {
bool nuke_switch :1;
bool swapped_numbers :1;
bool rgb_matrix_idle_anim :1;
+ bool autocorrection :1;
};
} userspace_config_t;
// clang-format on
extern userspace_config_t userspace_config;
-
-/*
-Custom Keycodes for Diablo 3 layer
-But since TD() doesn't work when tap dance is disabled
-We use custom codes here, so we can substitute the right stuff
-*/
-#ifdef TAP_DANCE_ENABLE
-# define KC_D3_1 TD(TD_D3_1)
-# define KC_D3_2 TD(TD_D3_2)
-# define KC_D3_3 TD(TD_D3_3)
-# define KC_D3_4 TD(TD_D3_4)
-#else // TAP_DANCE_ENABLE
-# define KC_D3_1 KC_1
-# define KC_D3_2 KC_2
-# define KC_D3_3 KC_3
-# define KC_D3_4 KC_4
-#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h
deleted file mode 100644
index 844292a53a..0000000000
--- a/users/drashna/drashna_font.h
+++ /dev/null
@@ -1,1404 +0,0 @@
-#pragma once
-
-// additional fonts from
-// https://github.com/datacute/TinyOLED-Fonts
-
-#if __has_include("../../../../Documents/qmk/oled_font.h")
-# include "../../../../Documents/qmk/oled_font.h"
-#else
-
-// additional fonts from
-// https://github.com/datacute/TinyOLED-Fonts
-
-# include "progmem.h"
-
-// clang-format off
-static const unsigned char font[] PROGMEM = {
- 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00,
- 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
- 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
- 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
- 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
- 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
- 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
- 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
- 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
- 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
- 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
- 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
- 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
- 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
- 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
- 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
- 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
- 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
- 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
- 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
- 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
- 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
- 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
- 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
- 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
- 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
- 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
- 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
- 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
- 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
- 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
-
-# if defined(OLED_FONT_5X5)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
- 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00,
- 0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00,
- 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
- 0x28, 0x54, 0x54, 0x20, 0x50, 0x00,
- 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x38, 0x44, 0x00, 0x00, 0x00, 0x00,
- 0x44, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00,
- 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x10, 0x0c, 0x00, 0x00, 0x00,
- 0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00,
- 0x48, 0x7c, 0x40, 0x00, 0x00, 0x00,
- 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
- 0x44, 0x54, 0x54, 0x54, 0x6c, 0x00,
- 0x3c, 0x20, 0x70, 0x20, 0x20, 0x00,
- 0x5c, 0x54, 0x54, 0x54, 0x24, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x04, 0x64, 0x14, 0x0c, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00,
- 0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00,
- 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
- 0x28, 0x28, 0x28, 0x28, 0x28, 0x00,
- 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
- 0x08, 0x04, 0x54, 0x08, 0x00, 0x00,
- 0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00,
- 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
- 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
- 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
- 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
- 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
- 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
- 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
- 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
- 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
- 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
- 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
- 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
- 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
- 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
- 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
- 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
- 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
- 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
- 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00,
- 0x0c, 0x10, 0x60, 0x00, 0x00, 0x00,
- 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
- 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
- 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
- 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
- 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
- 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
- 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
- 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
- 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
- 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
- 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
- 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
- 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
- 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
- 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
- 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
- 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
- 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
- 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
- 0x10, 0x7c, 0x44, 0x00, 0x00, 0x00,
- 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00,
- 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# lif defined(OLED_FONT_AZTECH)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
- 0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00,
- 0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a,
- 0x00, 0x06, 0x06, 0x26, 0x18, 0x06,
- 0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
- 0x18, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
- 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00,
- 0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00,
- 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
- 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x20, 0x18, 0x06, 0x00, 0x00,
- 0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e,
- 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e,
- 0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00,
- 0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08,
- 0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38,
- 0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
- 0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e,
- 0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38,
- 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e,
- 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x14, 0x22, 0x00, 0x00,
- 0x00, 0x14, 0x14, 0x14, 0x14, 0x00,
- 0x00, 0x22, 0x14, 0x08, 0x00, 0x00,
- 0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06,
- 0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a,
- 0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e,
- 0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38,
- 0x00, 0x3e, 0x22, 0x22, 0x20, 0x30,
- 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c,
- 0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30,
- 0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02,
- 0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38,
- 0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e,
- 0x00, 0x22, 0x3e, 0x22, 0x00, 0x00,
- 0x00, 0x30, 0x20, 0x20, 0x22, 0x3e,
- 0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38,
- 0x00, 0x3e, 0x20, 0x20, 0x20, 0x30,
- 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
- 0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
- 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
- 0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e,
- 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
- 0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38,
- 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a,
- 0x00, 0x06, 0x02, 0x3e, 0x02, 0x06,
- 0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e,
- 0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00,
- 0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e,
- 0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a,
- 0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e,
- 0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e,
- 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x0c, 0x30, 0x00, 0x00,
- 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
- 0x00, 0x20, 0x20, 0x20, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x28, 0x28, 0x08, 0x38,
- 0x00, 0x3e, 0x20, 0x28, 0x28, 0x38,
- 0x00, 0x38, 0x28, 0x28, 0x20, 0x30,
- 0x00, 0x38, 0x28, 0x28, 0x20, 0x3e,
- 0x00, 0xf8, 0x88, 0x28, 0x28, 0x38,
- 0x00, 0xf8, 0x28, 0x28, 0x18, 0x08,
- 0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8,
- 0x00, 0x3c, 0x08, 0x08, 0x08, 0x38,
- 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xfa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c,
- 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x08, 0x38, 0x20, 0x38,
- 0x38, 0x38, 0x08, 0x38, 0x20, 0x38,
- 0x00, 0x38, 0x28, 0x28, 0x28, 0x38,
- 0x00, 0xf8, 0x08, 0x28, 0x28, 0x38,
- 0x00, 0x38, 0x28, 0x28, 0x08, 0xf8,
- 0x00, 0x38, 0x08, 0x08, 0x18, 0x08,
- 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8,
- 0x00, 0x3e, 0x28, 0x28, 0x20, 0x30,
- 0x00, 0x38, 0x20, 0x20, 0x20, 0x38,
- 0x00, 0x38, 0x20, 0x38, 0x00, 0x00,
- 0x00, 0x38, 0x20, 0x38, 0x08, 0x38,
- 0x38, 0x28, 0x38, 0x10, 0x38, 0x28,
- 0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8,
- 0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38,
- 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
- 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
- 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_FONT_BMPLAIN)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
- 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00,
- 0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00,
- 0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a,
- 0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08,
- 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x1c, 0x22, 0x00, 0x00, 0x00, 0x00,
- 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00,
- 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00,
- 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00,
- 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
- 0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00,
- 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00,
- 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
- 0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00,
- 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
- 0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
- 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00,
- 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
- 0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
- 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
- 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
- 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
- 0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00,
- 0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00,
- 0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00,
- 0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00,
- 0x3e, 0x22, 0x22, 0x22, 0x22, 0x00,
- 0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00,
- 0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00,
- 0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00,
- 0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00,
- 0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00,
- 0x22, 0x3e, 0x22, 0x00, 0x00, 0x00,
- 0x38, 0x20, 0x20, 0x20, 0x3e, 0x00,
- 0x3e, 0x08, 0x08, 0x14, 0x22, 0x00,
- 0x3e, 0x20, 0x20, 0x20, 0x20, 0x00,
- 0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00,
- 0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00,
- 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00,
- 0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00,
- 0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00,
- 0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00,
- 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
- 0x02, 0x02, 0x3e, 0x02, 0x02, 0x00,
- 0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00,
- 0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00,
- 0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00,
- 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
- 0x02, 0x04, 0x38, 0x04, 0x02, 0x00,
- 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
- 0x3e, 0x22, 0x00, 0x00, 0x00, 0x00,
- 0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00,
- 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
- 0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
- 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00,
- 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20,
- 0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00,
- 0x3c, 0x24, 0x24, 0x24, 0x24, 0x00,
- 0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00,
- 0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00,
- 0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00,
- 0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00,
- 0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00,
- 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3e, 0x08, 0x14, 0x22, 0x00, 0x00,
- 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
- 0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00,
- 0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00,
- 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00,
- 0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00,
- 0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00,
- 0x3c, 0x04, 0x04, 0x04, 0x00, 0x00,
- 0x24, 0x2c, 0x34, 0x24, 0x00, 0x00,
- 0x04, 0x3e, 0x24, 0x24, 0x00, 0x00,
- 0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00,
- 0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00,
- 0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00,
- 0x24, 0x24, 0x18, 0x24, 0x24, 0x00,
- 0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00,
- 0x24, 0x34, 0x2c, 0x24, 0x00, 0x00,
- 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
- 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00,
- 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_FONT_CRACKERS)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5E, 0x06, 0x06, 0x00, 0x00, 0x00,
- 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00,
- 0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08,
- 0x48, 0xFE, 0x64, 0x64, 0x00, 0x00,
- 0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C,
- 0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00,
- 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00,
- 0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00,
- 0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04,
- 0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00,
- 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
- 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x60, 0x78, 0x78, 0x1E, 0x06, 0x00,
- 0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E,
- 0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
- 0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00,
- 0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00,
- 0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00,
- 0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
- 0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00,
- 0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00,
- 0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00,
- 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
- 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00,
- 0x14, 0x14, 0x14, 0x00, 0x00, 0x00,
- 0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00,
- 0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00,
- 0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30,
- 0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00,
- 0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00,
- 0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00,
- 0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00,
- 0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00,
- 0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00,
- 0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00,
- 0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00,
- 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00,
- 0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
- 0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00,
- 0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00,
- 0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E,
- 0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00,
- 0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00,
- 0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C,
- 0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00,
- 0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
- 0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00,
- 0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00,
- 0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00,
- 0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C,
- 0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62,
- 0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00,
- 0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00,
- 0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00,
- 0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00,
- 0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
- 0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x02, 0x06, 0x06, 0x04, 0x00, 0x00,
- 0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00,
- 0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00,
- 0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00,
- 0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00,
- 0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00,
- 0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00,
- 0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00,
- 0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00,
- 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
- 0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00,
- 0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00,
- 0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C,
- 0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00,
- 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
- 0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00,
- 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
- 0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00,
- 0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00,
- 0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00,
- 0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00,
- 0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00,
- 0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78,
- 0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00,
- 0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00,
- 0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00,
- 0x24, 0x7E, 0x42, 0x42, 0x00, 0x00,
- 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x42, 0x7E, 0x24, 0x00, 0x00, 0x00,
- 0x04, 0x06, 0x06, 0x02, 0x04, 0x06,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_FONT_EIN)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
- 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
- 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
- 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
- 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
- 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
- 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
- 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
- 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
- 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
- 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
- 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
- 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
- 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
- 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
- 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
- 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
- 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
- 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
- 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
- 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
- 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
- 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
- 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00,
- 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
- 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
- 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
- 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
- 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
- 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
- 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
- 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
- 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00,
- 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
- 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
- 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
- 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
- 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
- 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
- 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
- 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
- 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,
- 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
- 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
- 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
- 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
- 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
- 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
- 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
- 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
- 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
- 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
- 0x78, 0x14, 0x14, 0x78, 0x00, 0x00,
- 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00,
- 0x38, 0x44, 0x44, 0x28, 0x00, 0x00,
- 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00,
- 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00,
- 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00,
- 0x38, 0x44, 0x54, 0x34, 0x00, 0x00,
- 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00,
- 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00,
- 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00,
- 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
- 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00,
- 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00,
- 0x38, 0x44, 0x44, 0x38, 0x00, 0x00,
- 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00,
- 0x38, 0x44, 0x24, 0x58, 0x00, 0x00,
- 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00,
- 0x48, 0x54, 0x54, 0x24, 0x00, 0x00,
- 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00,
- 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00,
- 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00,
- 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
- 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
- 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00,
- 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
- 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
- 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
- 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
-# elif defined(OLED_FONT_HISKYF21)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
- 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00,
- 0x48, 0x54, 0x54, 0xFE, 0x54, 0x54,
- 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
- 0x28, 0x54, 0x54, 0x54, 0x74, 0x10,
- 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x78, 0x84, 0x00, 0x00, 0x00, 0x00,
- 0x84, 0x78, 0x00, 0x00, 0x00, 0x00,
- 0x48, 0x30, 0x30, 0x48, 0x00, 0x00,
- 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x10, 0x0C, 0x00, 0x00, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
- 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00,
- 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
- 0x44, 0x54, 0x54, 0x54, 0x28, 0x00,
- 0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00,
- 0x4C, 0x54, 0x54, 0x54, 0x24, 0x00,
- 0x38, 0x54, 0x54, 0x54, 0x54, 0x20,
- 0x44, 0x24, 0x14, 0x0C, 0x00, 0x00,
- 0x28, 0x54, 0x54, 0x54, 0x54, 0x28,
- 0x08, 0x54, 0x54, 0x54, 0x54, 0x38,
- 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
- 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
- 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
- 0x04, 0x54, 0x14, 0x14, 0x08, 0x00,
- 0x38, 0x44, 0x5C, 0x54, 0x48, 0x00,
- 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
- 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
- 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
- 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
- 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
- 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
- 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
- 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
- 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
- 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
- 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
- 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
- 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
- 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
- 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
- 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
- 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
- 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
- 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
- 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
- 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
- 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
- 0xFC, 0x84, 0x00, 0x00, 0x00, 0x00,
- 0x0C, 0x10, 0x60, 0x00, 0x00, 0x00,
- 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
- 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
- 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
- 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
- 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
- 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
- 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
- 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
- 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
- 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
- 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
- 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
- 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
- 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
- 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
- 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
- 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
- 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
- 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
- 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
- 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
- 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
- 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
- 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
- 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
- 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
- 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_FONT_SUPER_DIGG)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
- 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
- 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00,
- 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60,
- 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50,
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00,
- 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00,
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
- 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00,
- 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
- 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00,
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C,
- 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00,
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
- 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70,
- 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00,
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
- 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70,
- 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00,
- 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C,
- 0x50, 0x50, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x24, 0x42, 0x00, 0x00,
- 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
- 0x42, 0x24, 0x18, 0x18, 0x00, 0x00,
- 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C,
- 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54,
- 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
- 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
- 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
- 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
- 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
- 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
- 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
- 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
- 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
- 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
- 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
- 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
- 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
- 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
- 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
- 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
- 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
- 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00,
- 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00,
- 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00,
- 0x04, 0x02, 0x01, 0x06, 0x04, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
- 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
- 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
- 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
- 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
- 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
- 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
- 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
- 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
- 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
- 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
- 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
- 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
- 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
- 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
- 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
- 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
- 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
- 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
- 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00,
- 0x00, 0x44, 0x77, 0x00, 0x00, 0x00,
- 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00,
- 0x02, 0x01, 0x03, 0x04, 0x06, 0x02,
- 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00,
-#elif defined (OLED_FONT_ZXPIX)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
- 0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12,
- 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
- 0x23, 0x13, 0x08, 0x04, 0x32, 0x31,
- 0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20,
- 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00,
- 0x21, 0x1E, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08,
- 0x08, 0x08, 0x3E, 0x08, 0x08, 0x08,
- 0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
- 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
- 0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E,
- 0x22, 0x21, 0x3F, 0x20, 0x20, 0x20,
- 0x32, 0x29, 0x29, 0x29, 0x29, 0x26,
- 0x12, 0x21, 0x21, 0x25, 0x25, 0x1A,
- 0x18, 0x14, 0x12, 0x3F, 0x10, 0x10,
- 0x17, 0x25, 0x25, 0x25, 0x25, 0x19,
- 0x1E, 0x25, 0x25, 0x25, 0x25, 0x18,
- 0x01, 0x01, 0x31, 0x09, 0x05, 0x03,
- 0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A,
- 0x06, 0x29, 0x29, 0x29, 0x29, 0x1E,
- 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
- 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
- 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
- 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
- 0x02, 0x01, 0x01, 0x29, 0x05, 0x02,
- 0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E,
- 0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E,
- 0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A,
- 0x1E, 0x21, 0x21, 0x21, 0x21, 0x12,
- 0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C,
- 0x3F, 0x25, 0x25, 0x25, 0x25, 0x21,
- 0x3F, 0x05, 0x05, 0x05, 0x05, 0x01,
- 0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A,
- 0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F,
- 0x21, 0x21, 0x3F, 0x21, 0x21, 0x21,
- 0x10, 0x20, 0x20, 0x20, 0x20, 0x1F,
- 0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20,
- 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F,
- 0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F,
- 0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E,
- 0x3F, 0x09, 0x09, 0x09, 0x09, 0x06,
- 0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E,
- 0x3F, 0x09, 0x09, 0x09, 0x19, 0x26,
- 0x12, 0x25, 0x25, 0x25, 0x25, 0x18,
- 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01,
- 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F,
- 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F,
- 0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F,
- 0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21,
- 0x01, 0x02, 0x0C, 0x38, 0x04, 0x02,
- 0x21, 0x31, 0x29, 0x25, 0x23, 0x21,
- 0x3F, 0x21, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
- 0x21, 0x3F, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x02, 0x3F, 0x02, 0x04, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
- 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00,
- 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00,
- 0x0C, 0x14, 0x22, 0x22, 0x00, 0x00,
- 0x18, 0x24, 0x24, 0x24, 0x3F, 0x00,
- 0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00,
- 0x3E, 0x05, 0x01, 0x00, 0x00, 0x00,
- 0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00,
- 0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00,
- 0x24, 0x3D, 0x20, 0x00, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
- 0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00,
- 0x1F, 0x20, 0x20, 0x00, 0x00, 0x00,
- 0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00,
- 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00,
- 0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00,
- 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00,
- 0x18, 0x24, 0x24, 0x24, 0xFC, 0x80,
- 0x3C, 0x04, 0x02, 0x02, 0x00, 0x00,
- 0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00,
- 0x02, 0x1F, 0x22, 0x20, 0x00, 0x00,
- 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00,
- 0x06, 0x18, 0x20, 0x18, 0x06, 0x00,
- 0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00,
- 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
- 0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00,
- 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22,
- 0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00,
- 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00,
- 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# else // default font
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
- 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
- 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
- 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
- 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
- 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
- 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
- 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
- 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
- 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
- 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
- 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
- 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
- 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
- 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
- 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
- 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
- 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
- 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
- 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
- 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
- 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
- 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
- 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
- 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
- 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
- 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
- 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
- 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
- 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
- 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
- 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
- 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
- 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
- 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
- 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
- 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
- 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
- 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
- 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
- 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
- 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
- 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
- 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
- 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
- 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
- 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
- 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
- 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
- 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
- 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
- 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
- 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
- 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
- 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
- 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
- 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
- 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
- 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
- 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
- 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
- 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
- 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
- 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
- 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
- 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
- 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
- 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
- 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
- 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
- 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
- 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
- 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
- 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
- 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
- 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
- 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
- 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
- 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
- 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
- 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
- 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
-# endif
-
-// top Logo section
-# if defined(OLED_LOGO_GMK_BAD)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
- 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
- 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
- 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
- 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
- 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
- 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
- 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
- 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_HUE_MANITEE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
- 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
- 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
- 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
- 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_CORNE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
- 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
- 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
- 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
- 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
- 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
- 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
- 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_LOOSE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
- 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00,
- 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
- 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09,
- 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE,
- 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46,
- 0x44, 0x44, 0x45, 0x44, 0x29, 0x28,
- 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07,
- 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
- 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07,
- 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
- 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
- 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
- 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
- 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
- 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
- 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07,
- 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7,
- 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_SKEEB)
- 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F,
- 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01,
- 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF,
- 0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9,
- 0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9,
- 0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19,
- 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
- 0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F,
- 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0,
-# else
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
- 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
- 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
- 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
- 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0,
- 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-#endif
-
-// First icon section
- 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
- 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
- 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
- 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
- 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
- 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
- 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
- 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
- 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00,
- 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24,
- 0x14, 0x36, 0x00, 0x36, 0x77, 0x77,
-
-// middle logo section
-# if defined(OLED_LOGO_GMK_BAD)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
- 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
- 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
- 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
- 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
- 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
- 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
- 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
- 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
- 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
- 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
- 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
- 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
- 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
- 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_HUE_MANITEE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
- 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
- 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
- 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
- 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
- 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
- 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
- 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
- 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
- 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_CORNE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
- 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
- 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
- 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
- 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
- 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
- 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
- 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_LOOSE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00,
- 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0x14, 0x14, 0x14,
- 0x14, 0x14, 0x08, 0x08, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE,
- 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD,
- 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
- 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C,
- 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00,
- 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C,
- 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_SKEEB)
- 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
- 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F,
- 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
- 0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09,
- 0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09,
- 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
- 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09,
- 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
- 0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
- 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
- 0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
-# else
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00,
- 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF,
- 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F,
- 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00,
- 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E,
- 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F,
- 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
- 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E,
- 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00,
- 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E,
- 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F,
- 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70,
- 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49,
- 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E,
- 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69,
- 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# endif
-
-// second icon section
- 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
- 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
- 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
- 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
- 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
- 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
- 0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24,
- 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0,
- 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0,
-
-// bottom logo section
-# if defined(OLED_LOGO_GMK_BAD)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
- 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
- 0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
- 0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
- 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
- 0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
- 0x07, 0x07, 0x01, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_HUE_MANITEE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
- 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_CORNE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
- 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
- 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
- 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
- 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
- 0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_LOOSE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F,
- 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
- 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
- 0x20, 0x47, 0x48, 0x50, 0x40, 0x41,
- 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F,
- 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31,
- 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A,
- 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70,
- 0x50, 0x70, 0x50, 0x70, 0x50, 0x70,
- 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
- 0x53, 0x73, 0x53, 0x73, 0x53, 0x70,
- 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
- 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
- 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
- 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
- 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
- 0x53, 0x73, 0x53, 0x73, 0x51, 0x70,
- 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
- 0x53, 0x73, 0x53, 0x73, 0x53, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-# elif defined(OLED_LOGO_SKEEB)
- 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF,
- 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
- 0x03, 0x04, 0x08, 0x10, 0x20, 0x40,
- 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
- 0x40, 0x20, 0x10, 0x08, 0x04, 0x03,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
- 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
- 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8,
- 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
- 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80,
- 0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
-#else
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
- 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
- 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
- 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-#endif
-
-// third icon section
- 0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00,
- 0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00,
- 0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00,
- 0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00,
- 0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00,
- 0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00,
- 0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00,
- 0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00,
- 0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00,
- 0x1F, 0x05, 0x00, 0x70, 0x77, 0x00,
- 0x1F, 0x05, 0x00, 0x00, 0x77, 0x00,
-
-// fourth icon section
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
- 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
- 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
- 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
- 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
- 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
- 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
- 0x1F, 0x05, 0x00, 0x10, 0x77, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };
-// clang-format on
-#endif
diff --git a/users/drashna/keyrecords/autocorrection/autocorrection.c b/users/drashna/keyrecords/autocorrection/autocorrection.c
new file mode 100644
index 0000000000..c7e938a341
--- /dev/null
+++ b/users/drashna/keyrecords/autocorrection/autocorrection.c
@@ -0,0 +1,170 @@
+// Copyright 2021 Google LLC
+// Copyright 2021 @filterpaper
+// SPDX-License-Identifier: Apache-2.0
+// Original source: https://getreuer.info/posts/keyboards/autocorrection
+
+#include "autocorrection.h"
+#include <string.h>
+
+#if __has_include("autocorrection_data.h")
+# pragma GCC push_options
+# pragma GCC optimize("O0")
+# include "autocorrection_data.h"
+# if AUTOCORRECTION_MIN_LENGTH < 4
+# error Minimum Length is too short and may cause overflows
+# endif
+# if DICTIONARY_SIZE > SIZE_MAX
+# error Dictionary size excees maximum size permitted
+# endif
+
+/**
+ * @brief Process handler for autocorrect feature
+ *
+ * @param keycode Keycode registered by matrix press, per keymap
+ * @param record keyrecord_t structure
+ * @return true Continue processing keycodes, and send to host
+ * @return false Stop processing keycodes, and don't send to host
+ */
+bool process_autocorrection(uint16_t keycode, keyrecord_t* record) {
+ static uint8_t typo_buffer[AUTOCORRECTION_MAX_LENGTH] = {KC_SPC};
+ static uint8_t typo_buffer_size = 1;
+
+ if (keycode == AUTO_CTN) {
+ if (record->event.pressed) {
+ typo_buffer_size = 0;
+ userspace_config.autocorrection ^= 1;
+ eeconfig_update_user(userspace_config.raw);
+ }
+ return false;
+ }
+
+ if (!userspace_config.autocorrection) {
+ typo_buffer_size = 0;
+ return true;
+ }
+
+ switch (keycode) {
+ case KC_LSFT:
+ case KC_RSFT:
+ return true;
+# ifndef NO_ACTION_TAPPING
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ if (((keycode >> 8) & 0xF) == MOD_LSFT) {
+ return true;
+ }
+# ifndef NO_ACTION_LAYER
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+# endif
+ if (record->event.pressed || !record->tap.count) {
+ return true;
+ }
+ keycode &= 0xFF;
+ break;
+# endif
+# ifdef SWAP_HANDS_ENABLE
+ case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:
+ if (keycode >= 0x56F0 || record->event.pressed || !record->tap.count) {
+ return true;
+ }
+ keycode &= 0xFF;
+ break;
+# endif
+# ifndef NO_ACTION_ONESHOT
+ case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:
+ if ((keycode & 0xF) == MOD_LSFT) {
+ return true;
+ }
+# endif
+ default:
+ // Disable autocorrection while a mod other than shift is active.
+ if (((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT) != 0) {
+ typo_buffer_size = 0;
+ return true;
+ }
+ if (!record->event.pressed) {
+ return true;
+ }
+ }
+
+ // Subtract buffer for Backspace key, reset for other non-alpha.
+ if (!(KC_A <= keycode && keycode <= KC_Z)) {
+ if (keycode == KC_BSPC) {
+ // Remove last character from the buffer.
+ if (typo_buffer_size > 0) {
+ --typo_buffer_size;
+ }
+ return true;
+ } else if (KC_1 <= keycode && keycode <= KC_SLSH && keycode != KC_ESC) {
+ // Set a word boundary if space, period, digit, etc. is pressed.
+ // Behave more conservatively for the enter key. Reset, so that enter
+ // can't be used on a word ending.
+ if (keycode == KC_ENT || (keycode == KC_MINUS && (get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT)) {
+ typo_buffer_size = 0;
+ }
+ keycode = KC_SPC;
+ } else {
+ // Clear state if some other non-alpha key is pressed.
+ typo_buffer_size = 0;
+ return true;
+ }
+ }
+
+ // Rotate oldest character if buffer is full.
+ if (typo_buffer_size >= AUTOCORRECTION_MAX_LENGTH) {
+ memmove(typo_buffer, typo_buffer + 1, AUTOCORRECTION_MAX_LENGTH - 1);
+ typo_buffer_size = AUTOCORRECTION_MAX_LENGTH - 1;
+ }
+
+ // Append `keycode` to buffer.
+ typo_buffer[typo_buffer_size++] = keycode;
+ // Return if buffer is smaller than the shortest word.
+ if (typo_buffer_size < AUTOCORRECTION_MIN_LENGTH) {
+ return true;
+ }
+
+ // Check for typo in buffer using a trie stored in `autocorrection_data`.
+ uint16_t state = 0;
+ uint8_t code = pgm_read_byte(autocorrection_data + state);
+ for (uint8_t i = typo_buffer_size - 1; i >= 0; --i) {
+ uint8_t const key_i = typo_buffer[i];
+
+ if (code & 64) { // Check for match in node with multiple children.
+ code &= 63;
+ for (; code != key_i; code = pgm_read_byte(autocorrection_data + (state += 3))) {
+ if (!code) return true;
+ }
+ // Follow link to child node.
+ state = (pgm_read_byte(autocorrection_data + state + 1) | pgm_read_byte(autocorrection_data + state + 2) << 8);
+ // Check for match in node with single child.
+ } else if (code != key_i) {
+ return true;
+ } else if (!(code = pgm_read_byte(autocorrection_data + (++state)))) {
+ ++state;
+ }
+
+ code = pgm_read_byte(autocorrection_data + state);
+
+ if (code & 128) { // A typo was found! Apply autocorrection.
+ const uint8_t backspaces = code & 63;
+ for (uint8_t i = 0; i < backspaces; ++i) {
+ tap_code(KC_BSPC);
+ }
+ send_string_P((char const*)(autocorrection_data + state + 1));
+
+ if (keycode == KC_SPC) {
+ typo_buffer[0] = KC_SPC;
+ typo_buffer_size = 1;
+ return true;
+ } else {
+ typo_buffer_size = 0;
+ return false;
+ }
+ }
+ }
+ return true;
+}
+# pragma GCC pop_options
+#else
+# pragma message "Warning!!! Autocorrect is not corretly setup!"
+bool process_autocorrection(uint16_t keycode, keyrecord_t* record) { return true; }
+#endif
diff --git a/users/drashna/keyrecords/autocorrection/autocorrection.h b/users/drashna/keyrecords/autocorrection/autocorrection.h
new file mode 100644
index 0000000000..cea93159ae
--- /dev/null
+++ b/users/drashna/keyrecords/autocorrection/autocorrection.h
@@ -0,0 +1,10 @@
+// Copyright 2021 Google LLC
+// Copyright 2021 @filterpaper
+// SPDX-License-Identifier: Apache-2.0
+// Original source: https://getreuer.info/posts/keyboards/autocorrection
+
+#pragma once
+
+#include "drashna.h"
+
+bool process_autocorrection(uint16_t keycode, keyrecord_t* record);
diff --git a/users/drashna/keyrecords/autocorrection/make_autocorrection_data.py b/users/drashna/keyrecords/autocorrection/make_autocorrection_data.py
new file mode 100755
index 0000000000..54fd9ba594
--- /dev/null
+++ b/users/drashna/keyrecords/autocorrection/make_autocorrection_data.py
@@ -0,0 +1,274 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Python program to make autocorrection_data.h.
+
+This program reads "autocorrection_dict.txt" and generates a C source file
+"autocorrection_data.h" with a serialized trie embedded as an array. Run this
+program without arguments like
+
+$ python3 make_autocorrection_data.py
+
+Or to read from a different typo dict file, pass it as the first argument like
+
+$ python3 make_autocorrection_data.py dict.txt
+
+Each line of the dict file defines one typo and its correction with the syntax
+"typo -> correction". Blank lines or lines starting with '#' are ignored.
+Example:
+
+ :thier -> their
+ fitler -> filter
+ lenght -> length
+ ouput -> output
+ widht -> width
+
+See autocorrection_dict_extra.txt for a larger example.
+
+For full documentation, see
+https://getreuer.info/posts/keyboards/autocorrection
+"""
+
+import sys
+import textwrap
+from typing import Any, Dict, List, Tuple
+
+try:
+ from english_words import english_words_lower_alpha_set as CORRECT_WORDS
+except ImportError:
+ print('Autocorrection will falsely trigger when a typo is a substring of a '
+ 'correctly spelled word. To check for this, install the english_words '
+ 'package and rerun this script:\n\n pip install english_words\n')
+ # Use a minimal word list as a fallback.
+ CORRECT_WORDS = ('information', 'available', 'international', 'language',
+ 'loosest', 'reference', 'wealthier', 'entertainment',
+ 'association', 'provides', 'technology', 'statehood')
+
+KC_A = 4
+KC_SPC = 0x2c
+
+def parse_file(file_name: str) -> List[Tuple[str, str]]:
+ """Parses autocorrections dictionary file.
+
+ Each line of the file defines one typo and its correction with the syntax
+ "typo -> correction". Blank lines or lines starting with '#' are ignored. The
+ function validates that typos only have characters a-z and that typos are not
+ substrings of other typos, otherwise the longer typo would never trigger.
+
+ Args:
+ file_name: String, path of the autocorrections dictionary.
+ Returns:
+ List of (typo, correction) tuples.
+ """
+
+ autocorrections = []
+ typos = set()
+ line_number = 0
+ for line in open(file_name, 'rt'):
+ line_number += 1
+ line = line.strip()
+ if line and line[0] != '#':
+ # Parse syntax "typo -> correction", using strip to ignore indenting.
+ tokens = [token.strip() for token in line.split('->', 1)]
+ if len(tokens) != 2 or not tokens[0]:
+ print(f'Error:{line_number}: Invalid syntax: "{line}"')
+ sys.exit(1)
+
+ typo, correction = tokens
+ typo = typo.lower() # Force typos to lowercase.
+ typo = typo.replace(' ', ':')
+
+ if typo in typos:
+ print(f'Warning:{line_number}: Ignoring duplicate typo: "{typo}"')
+ continue
+
+ # Check that `typo` is valid.
+ if not(all([ord('a') <= ord(c) <= ord('z') or c == ':' for c in typo])):
+ print(f'Error:{line_number}: Typo "{typo}" has '
+ 'characters other than a-z and :.')
+ sys.exit(1)
+ for other_typo in typos:
+ if typo in other_typo or other_typo in typo:
+ print(f'Error:{line_number}: Typos may not be substrings of one '
+ f'another, otherwise the longer typo would never trigger: '
+ f'"{typo}" vs. "{other_typo}".')
+ sys.exit(1)
+ if len(typo) < 5:
+ print(f'Warning:{line_number}: It is suggested that typos are at '
+ f'least 5 characters long to avoid false triggers: "{typo}"')
+
+ if typo.startswith(':') and typo.endswith(':'):
+ if typo[1:-1] in CORRECT_WORDS:
+ print(f'Warning:{line_number}: Typo "{typo}" is a correctly spelled '
+ 'dictionary word.')
+ elif typo.startswith(':') and not typo.endswith(':'):
+ for word in CORRECT_WORDS:
+ if word.startswith(typo[1:]):
+ print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger '
+ f'on correctly spelled word "{word}".')
+ elif not typo.startswith(':') and typo.endswith(':'):
+ for word in CORRECT_WORDS:
+ if word.endswith(typo[:-1]):
+ print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger '
+ f'on correctly spelled word "{word}".')
+ elif not typo.startswith(':') and not typo.endswith(':'):
+ for word in CORRECT_WORDS:
+ if typo in word:
+ print(f'Warning:{line_number}: Typo "{typo}" would falsely trigger '
+ f'on correctly spelled word "{word}".')
+
+ autocorrections.append((typo, correction))
+ typos.add(typo)
+
+ return autocorrections
+
+
+def make_trie(autocorrections: List[Tuple[str, str]]) -> Dict[str, Any]:
+ """Makes a trie from the the typos, writing in reverse.
+
+ Args:
+ autocorrections: List of (typo, correction) tuples.
+ Returns:
+ Dict of dict, representing the trie.
+ """
+ trie = {}
+ for typo, correction in autocorrections:
+ node = trie
+ for letter in typo[::-1]:
+ node = node.setdefault(letter, {})
+ node['LEAF'] = (typo, correction)
+
+ return trie
+
+
+def serialize_trie(autocorrections: List[Tuple[str, str]],
+ trie: Dict[str, Any]) -> List[int]:
+ """Serializes trie and correction data in a form readable by the C code.
+
+ Args:
+ autocorrections: List of (typo, correction) tuples.
+ trie: Dict of dicts.
+ Returns:
+ List of ints in the range 0-255.
+ """
+ table = []
+
+ # Traverse trie in depth first order.
+ def traverse(trie_node):
+ if 'LEAF' in trie_node: # Handle a leaf trie node.
+ typo, correction = trie_node['LEAF']
+ word_boundary_ending = typo[-1] == ':'
+ typo = typo.strip(':')
+ i = 0 # Make the autocorrection data for this entry and serialize it.
+ while i < min(len(typo), len(correction)) and typo[i] == correction[i]:
+ i += 1
+ backspaces = len(typo) - i - 1 + word_boundary_ending
+ assert 0 <= backspaces <= 63
+ correction = correction[i:]
+ data = [backspaces + 128] + list(bytes(correction, 'ascii')) + [0]
+
+ entry = {'data': data, 'links': [], 'byte_offset': 0}
+ table.append(entry)
+ elif len(trie_node) == 1: # Handle trie node with a single child.
+ c, trie_node = next(iter(trie_node.items()))
+ entry = {'chars': c, 'byte_offset': 0}
+
+ # It's common for a trie to have long chains of single-child nodes. We
+ # find the whole chain so that we can serialize it more efficiently.
+ while len(trie_node) == 1 and 'LEAF' not in trie_node:
+ c, trie_node = next(iter(trie_node.items()))
+ entry['chars'] += c
+
+ table.append(entry)
+ entry['links'] = [traverse(trie_node)]
+ else: # Handle trie node with multiple children.
+ entry = {'chars': ''.join(sorted(trie_node.keys())), 'byte_offset': 0}
+ table.append(entry)
+ entry['links'] = [traverse(trie_node[c]) for c in entry['chars']]
+ return entry
+
+ traverse(trie)
+
+ def serialize(e):
+ def kc_code(c):
+ if ord('a') <= ord(c) <= ord('z'):
+ return ord(c) - ord('a') + KC_A
+ elif c == ':':
+ return KC_SPC
+ else:
+ raise ValueError(f'Invalid character: {c}')
+
+ encode_link = lambda link: [link['byte_offset'] & 255,
+ link['byte_offset'] >> 8]
+
+ if not e['links']: # Handle a leaf table entry.
+ return e['data']
+ elif len(e['links']) == 1: # Handle a chain table entry.
+ return list(map(kc_code, e['chars'])) + [0] #+ encode_link(e['links'][0]))
+ else: # Handle a branch table entry.
+ data = []
+ for c, link in zip(e['chars'], e['links']):
+ data += [kc_code(c) | (0 if data else 64)] + encode_link(link)
+ return data + [0]
+
+ byte_offset = 0
+ for e in table: # To encode links, first compute byte offset of each entry.
+ e['byte_offset'] = byte_offset
+ byte_offset += len(serialize(e))
+ assert 0 <= byte_offset <= 0xffff
+
+ return [b for e in table for b in serialize(e)] # Serialize final table.
+
+
+def write_generated_code(autocorrections: List[Tuple[str, str]],
+ data: List[int],
+ file_name: str) -> None:
+ """Writes autocorrection data as generated C code to `file_name`.
+
+ Args:
+ autocorrections: List of (typo, correction) tuples.
+ data: List of ints in 0-255, the serialized trie.
+ file_name: String, path of the output C file.
+ """
+ assert all(0 <= b <= 255 for b in data)
+ typo_len = lambda e: len(e[0])
+ min_typo = min(autocorrections, key=typo_len)[0]
+ max_typo = max(autocorrections, key=typo_len)[0]
+ generated_code = ''.join([
+ '// Generated code.\n\n',
+ f'// Autocorrection dictionary ({len(autocorrections)} entries):\n',
+ ''.join(sorted(f'// {typo:<{len(max_typo)}} -> {correction}\n'
+ for typo, correction in autocorrections)),
+ f'\n#define AUTOCORRECTION_MIN_LENGTH {len(min_typo)} // "{min_typo}"\n',
+ f'#define AUTOCORRECTION_MAX_LENGTH {len(max_typo)} // "{max_typo}"\n\n',
+ f'#define DICTIONARY_SIZE {len(data)}\n\n',
+ textwrap.fill('static const uint8_t autocorrection_data[DICTIONARY_SIZE] PROGMEM = {%s};' % (
+ ', '.join(map(str, data))), width=120, subsequent_indent=' '),
+ '\n\n'])
+
+ with open(file_name, 'wt') as f:
+ f.write(generated_code)
+
+
+def main(argv):
+ dict_file = argv[1] if len(argv) > 1 else 'autocorrection_dict.txt'
+ autocorrections = parse_file(dict_file)
+ trie = make_trie(autocorrections)
+ data = serialize_trie(autocorrections, trie)
+ print(f'Processed %d autocorrection entries to table with %d bytes.'
+ % (len(autocorrections), len(data)))
+ write_generated_code(autocorrections, data, 'autocorrection_data.h')
+
+if __name__ == '__main__':
+ main(sys.argv)
diff --git a/users/drashna/keyrecords/autocorrection/readme.md b/users/drashna/keyrecords/autocorrection/readme.md
new file mode 100644
index 0000000000..d920508793
--- /dev/null
+++ b/users/drashna/keyrecords/autocorrection/readme.md
@@ -0,0 +1,301 @@
+# Autocorrection
+
+This is taken from [Pascal Getreuer's implemenation](https://getreuer.info/posts/keyboards/autocorrection/index.html), with a number of modifications.
+
+To enabled Autocorrection, add `AUTOCORRECTION_ENABLE = yes` to your `rules.mk` file.
+
+This is mostly a reproduction of Pascal's docs:
+
+## Overview
+Some words are more prone to typos than others. I have a habit of typo-ing *ouput* and *fitler*. This post describes a rudimentary autocorrection implementation that runs on your keyboard with QMK.
+
+The animation below shows the effect as I type *aparent*. As I press the final t, the autocorrection feature detects the typo and automatically sends keys to correct it:
+
+Example: Autocorrecting *aparent* → apparent.
+
+**Features**:
+* It runs on your keyboard, so it is always active no matter what software.
+* Low resource cost: for an autocorrection dictionary of 70 entries, firmware size cost is 1620 bytes and average CPU cost per key press is about 20 µs.
+* It is case insensitive. It corrects Fitler to Filter and FITLER to FILTER.
+* It works within words. It corrects fitlered, fitlering, and useful for programming, within longer identifiers like DesignButterworthFitle*r.
+
+**Limitations**: Running autocorrection on the keyboard comes with some constraints. It is rudimentary like I said:
+* It is limited to alphabet characters a–z. No accented or Unicode letters; I’m sorry this probably isn’t useful for languages besides English.
+* It does not follow mouse or hotkey driven cursor movement.
+
+## Taking autocorrection for a test drive
+With the above flashed to your keyboard, try for instance typing the misspelled word ouput. The instant you type the final t, the word should be speedily autocorrected to output. As further tests, try becuase and invliad.
+
+Here is the full list of typos corrected using the provided autocorrection_data.h file. : is a special character denoting a word break. See below for how to change the autocorrection dictionary.
+
+```
+:guage -> gauge
+:the:the: -> the
+:thier -> their
+:ture -> true
+accomodate -> accommodate
+acommodate -> accommodate
+aparent -> apparent
+aparrent -> apparent
+apparant -> apparent
+apparrent -> apparent
+aquire -> acquire
+becuase -> because
+cauhgt -> caught
+cheif -> chief
+choosen -> chosen
+cieling -> ceiling
+collegue -> colleague
+concensus -> consensus
+contians -> contains
+cosnt -> const
+dervied -> derived
+fales -> false
+fasle -> false
+fitler -> filter
+flase -> false
+foward -> forward
+frequecy -> frequency
+gaurantee -> guarantee
+guaratee -> guarantee
+heigth -> height
+heirarchy -> hierarchy
+inclued -> include
+interator -> iterator
+intput -> input
+invliad -> invalid
+lenght -> length
+liasion -> liaison
+libary -> library
+listner -> listener
+looses: -> loses
+looup -> lookup
+manefist -> manifest
+namesapce -> namespace
+namespcae -> namespace
+occassion -> occasion
+occured -> occurred
+ouptut -> output
+ouput -> output
+overide -> override
+postion -> position
+priviledge -> privilege
+psuedo -> pseudo
+recieve -> receive
+refered -> referred
+relevent -> relevant
+repitition -> repetition
+reuslt -> result
+retrun -> return
+retun -> return
+reutrn -> return
+saftey -> safety
+seperate -> separate
+singed -> signed
+stirng -> string
+strign -> string
+swithc -> switch
+swtich -> switch
+thresold -> threshold
+udpate -> update
+widht -> width
+```
+
+## Firmware size and CPU costs
+I am anxiously aware that a keyboard microcontroller has limited resources. So I was sure to measure how much memory and CPU time autocorrection consumes during development. These measurements are for the example autocorrection dictionary as used above, which has 70 entries:
+* **Firmware size**: Autocorrection increases my firmware size by a total of 1620 bytes. Breaking that down, 1104 bytes are for the autocorrection_data array and 516 bytes for the autocorrection code.
+* **CPU time**: On my Elite-C microcontrollers, the average CPU time for process_autocorrection to process an alpha key press is around 20 µs. Consider this a rough order-of-magnitude cost. Processing cost increases (more trie nodes are visited) when recent input is close to a known typo, with the max being when a long typo is matched.
+
+The costs are not free but reasonable. For reference, the firmware size cost for mouse keys is 2124 bytes and the CPU time to process a layer switch is about 70 µs, so autocorrection is cheaper than those things. Of course, the cost scales with the size of the autocorrection dictionary, so keep that in mind if you add a lot more entries.
+
+## How does it work?
+The function process_autocorrection maintains a small buffer of recent key presses. On each key press, it checks whether the buffer ends in a recognized typo, and if so, automatically sends keystrokes to correct it.
+
+The tricky part is how to efficiently check the buffer for typos. We don’t want to spend too much memory or time on storing or searching the typos. A good solution is to represent the typos with a trie data structure. A trie is a tree data structure where each node is a letter, and words are formed by following a path to one of the leaves.
+
+
+An example trie.
+Since we search whether the buffer ends in a typo, we store the trie writing in reverse. The trie is queried starting from the last letter, then second to last letter, and so on, until either a letter doesn’t match or we reach a leaf, meaning a typo was found.
+
+## Changing the autocorrection dictionary
+The file autocorrection_data.h encodes the typos to correct. While you could simply use the version of this file provided above for a practical configuration, you can make your own to personalize the autocorrection to your most troublesome typos:
+
+1. First, create an autocorrection dictionary autocorrection_dict.txt, like
+
+ ```
+:thier -> their
+fitler -> filter
+lenght -> length
+ouput -> output
+widht -> width
+```
+ For a practical 70-entry example, see autocorrection_dict.txt. And for a yet larger 400-entry example, see autocorrection_dict_extra.txt.
+
+ The syntax is `typo -> correction`. Typos and corrections are case insensitive, and any whitespace before or after the typo and correction is ignored. The typo must be only the letters a–z, or the special character : representing a word break. The correction may have any characters.
+
+2. Use the make_autocorrection_data.py Python script to process the dictionary
+
+```
+$ python3 make_autocorrection_data.py
+Processed 70 autocorrection entries to table with 1104 bytes.
+```
+The script arranges the entries in autocorrection_dict.txt into a trie and generates autocorrection_data.h with the serialized trie embedded as an array.
+
+3. Finally, recompile and flash your keymap.
+
+The generated C header looks like this:
+
+autocorrection_data.h
+```c
+// Generated code.
+
+#define AUTOCORRECTION_MIN_LENGTH 5 // "cheif"
+#define AUTOCORRECTION_MAX_LENGTH 10 // "accomodate"
+
+static const uint8_t autocorrection_data[1104] PROGMEM = {108, 43, 0, 6,
+ 71, 0, 7, 81, 0, 8, 199, 0, 9, 240, 1, 10, 250, 1, 11, 26, 2, 17, 53, 2,
+ 18, 190, 2, 19, 202, 2, 21, 212, 2, 22, 20, 3, 23, 67, 3, 28, 16, 4, 0,
+ 72, 50, 0, 22, 60, 0, 0, 11, 23, 44, 8, 11, 23, 44, 0, 132, 0, 8, 22, 18,
+ 18, 15, 0, 132, 115, 101, 115, 0, 11, 23, 12, 26, 22, 0, 129, 99, 104, 0,
+ 68, 94, 0, 8, 106, 0, 15, 174, 0, 21, 187, 0, 0, 12, 15, 25, 17, 12, 0,
+ 131, 97, 108, 105, 100, 0, 74, 119, 0, 12, 129, 0, 21, 140, 0, 24, 165,
+ 0, 0, 17, 12, 22, 0, 131, 103, 110, 101, 100, 0, 25, 21, 8, 7, 0, 131,
+ 105, 118, 101, 100, 0, 72, 147, 0, 24, 156, 0, 0, 9, 8, 21, 0, 129, 114,
+ 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 15, 6, 17, 12, 0, 129,
+ 100, 101, 0, 18, 22, 8, 21, 11, 23, 0, 130, 104, 111, 108, 100, 0, 4, 26,
+ 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 68, 233, 0, 6, 246, 0, 7, 4, 1,
+ 8, 16, 1, 10, 52, 1, 15, 81, 1, 21, 90, 1, 22, 117, 1, 23, 144, 1, 24,
+ 215, 1, 25, 228, 1, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130, 97, 99, 101, 0,
+ 19, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12, 21, 8, 25, 18,
+ 0, 130, 114, 105, 100, 101, 0, 23, 0, 68, 25, 1, 17, 36, 1, 0, 21, 4, 24,
+ 10, 0, 130, 110, 116, 101, 101, 0, 4, 21, 24, 4, 10, 0, 135, 117, 97,
+ 114, 97, 110, 116, 101, 101, 0, 68, 59, 1, 7, 69, 1, 0, 24, 10, 44, 0,
+ 131, 97, 117, 103, 101, 0, 8, 15, 12, 25, 12, 21, 19, 0, 130, 103, 101,
+ 0, 22, 4, 9, 0, 130, 108, 115, 101, 0, 76, 97, 1, 24, 109, 1, 0, 24, 20,
+ 4, 0, 132, 99, 113, 117, 105, 114, 101, 0, 23, 44, 0, 130, 114, 117, 101,
+ 0, 4, 0, 79, 126, 1, 24, 134, 1, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6,
+ 8, 5, 0, 131, 97, 117, 115, 101, 0, 4, 0, 71, 156, 1, 19, 193, 1, 21,
+ 203, 1, 0, 18, 16, 0, 80, 166, 1, 18, 181, 1, 0, 18, 6, 4, 0, 135, 99,
+ 111, 109, 109, 111, 100, 97, 116, 101, 0, 6, 6, 4, 0, 132, 109, 111, 100,
+ 97, 116, 101, 0, 7, 24, 0, 132, 112, 100, 97, 116, 101, 0, 8, 19, 8, 22,
+ 0, 132, 97, 114, 97, 116, 101, 0, 10, 8, 15, 15, 18, 6, 0, 130, 97, 103,
+ 117, 101, 0, 8, 12, 6, 8, 21, 0, 131, 101, 105, 118, 101, 0, 12, 8, 11,
+ 6, 0, 130, 105, 101, 102, 0, 17, 0, 76, 3, 2, 21, 16, 2, 0, 15, 8, 12, 6,
+ 0, 133, 101, 105, 108, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114, 105,
+ 110, 103, 0, 70, 33, 2, 23, 44, 2, 0, 12, 23, 26, 22, 0, 131, 105, 116,
+ 99, 104, 0, 10, 12, 8, 11, 0, 129, 104, 116, 0, 72, 69, 2, 10, 80, 2, 18,
+ 89, 2, 21, 156, 2, 24, 167, 2, 0, 22, 18, 18, 11, 6, 0, 131, 115, 101,
+ 110, 0, 12, 21, 23, 22, 0, 129, 110, 103, 0, 12, 0, 86, 98, 2, 23, 124,
+ 2, 0, 68, 105, 2, 22, 114, 2, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0,
+ 4, 6, 6, 18, 0, 131, 105, 111, 110, 0, 76, 131, 2, 22, 146, 2, 0, 23, 12,
+ 19, 8, 21, 0, 134, 101, 116, 105, 116, 105, 111, 110, 0, 18, 19, 0, 131,
+ 105, 116, 105, 111, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0,
+ 85, 174, 2, 23, 183, 2, 0, 23, 8, 21, 0, 130, 117, 114, 110, 0, 8, 21, 0,
+ 128, 114, 110, 0, 7, 8, 24, 22, 19, 0, 131, 101, 117, 100, 111, 0, 24,
+ 18, 18, 15, 0, 129, 107, 117, 112, 0, 72, 219, 2, 18, 3, 3, 0, 76, 229,
+ 2, 15, 238, 2, 17, 248, 2, 0, 11, 23, 44, 0, 130, 101, 105, 114, 0, 23,
+ 12, 9, 0, 131, 108, 116, 101, 114, 0, 23, 22, 12, 15, 0, 130, 101, 110,
+ 101, 114, 0, 23, 4, 21, 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116,
+ 111, 114, 0, 72, 30, 3, 17, 38, 3, 24, 51, 3, 0, 15, 4, 9, 0, 129, 115,
+ 101, 0, 4, 12, 23, 17, 18, 6, 0, 131, 97, 105, 110, 115, 0, 22, 17, 8, 6,
+ 17, 18, 6, 0, 133, 115, 101, 110, 115, 117, 115, 0, 74, 86, 3, 11, 96, 3,
+ 15, 118, 3, 17, 129, 3, 22, 218, 3, 24, 232, 3, 0, 11, 24, 4, 6, 0, 130,
+ 103, 104, 116, 0, 71, 103, 3, 10, 110, 3, 0, 12, 26, 0, 129, 116, 104, 0,
+ 17, 8, 15, 0, 129, 116, 104, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108,
+ 116, 0, 68, 139, 3, 8, 150, 3, 22, 210, 3, 0, 21, 4, 19, 19, 4, 0, 130,
+ 101, 110, 116, 0, 85, 157, 3, 25, 200, 3, 0, 68, 164, 3, 21, 175, 3, 0,
+ 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 4, 19, 0, 68, 185, 3, 19,
+ 193, 3, 0, 133, 112, 97, 114, 101, 110, 116, 0, 4, 0, 131, 101, 110, 116,
+ 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 18, 6, 0, 130, 110, 115, 116,
+ 0, 12, 9, 8, 17, 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 83, 239, 3,
+ 23, 6, 4, 0, 87, 246, 3, 24, 254, 3, 0, 17, 12, 0, 131, 112, 117, 116, 0,
+ 18, 0, 130, 116, 112, 117, 116, 0, 19, 24, 18, 0, 131, 116, 112, 117,
+ 116, 0, 70, 29, 4, 8, 41, 4, 11, 51, 4, 21, 69, 4, 0, 8, 24, 20, 8, 21,
+ 9, 0, 129, 110, 99, 121, 0, 23, 9, 4, 22, 0, 130, 101, 116, 121, 0, 6,
+ 21, 4, 21, 12, 8, 11, 0, 135, 105, 101, 114, 97, 114, 99, 104, 121, 0, 4,
+ 5, 12, 15, 0, 130, 114, 97, 114, 121, 0};
+```
+
+## Troubleshooting
+### Avoiding false triggers
+By default, typos are searched within words, to find typos within longer identifiers like maxFitlerOuput. While this is useful, a consequence is that autocorrection will falsely trigger when a typo happens to be a substring of a correctly-spelled word. For instance, if we had thier -> their as an entry, it would falsely trigger on (correct, though relatively uncommon) words like “wealthier” and “filthier.”
+
+The solution is to set a word break : before and/or after the typo to constrain matching. : matches space, period, comma, underscore, digits, and most other non-alpha characters.
+
+| Text | thier | :thier | thier: | :thier: |
+|------|-------|--------|--------|---------|
+|see thier typo|matches|matches|matches|matches|
+it’s thiers |matches|matches|no|no|
+wealthier words|matches|no|matches|no|
+
+:thier: is most restrictive, matching only when thier is a whole word.
+
+The make_autocorrection_data.py script makes an effort to check for entries that would false trigger as substrings of correct words. It searches each typo against a dictionary of 25K English words from the english_words Python package, provided it’s installed.
+
+### Overriding autocorrection
+Occasionally you might actually want to type a typo (for instance, while editing autocorrection_dict.txt) without being autocorrected. Here is a way to do that:
+
+1. Begin typing the typo.
+2. Before typing the last letter, press and release the Ctrl or Alt key.
+3. Type the remaining letters.
+
+This works because the autocorrection implementation doesn’t understand hotkeys, so it resets itself whenever a modifier other than shift is held.
+
+Alternatively, the `AUTO_CTN` keycode will toggle autocorrection on and off.
+
+## Closing thoughts
+Based on my own use, an autocorrection dictionary of a few dozen entries is enough to help in day-to-day writing. On the other hand, it is of course far from comprehensively checking that every word is spelled correctly. Keyboard microcontrollers might not have the resources check against a full English dictionary any time soon, but a lot of editors and other software have good integrated spell check features.
+
+I suggest to enable and use spell check in combination with autocorrection:
+* Sublime: Open the View menu and enable “Spell Check.”
+* Eclipse: Open the Window menu, click Preferences, and search for “Spelling.”
+* Vim: Type :set spell, and misspellings will be highlighted. Use ]s to jump to the next misspelled word and z= to get suggested corrections for the word under the cursor. See the :help spell documentation. Vim also has an abbreviations feature that can autocorrect misspellings (see :help abbreviations).
+* Emacs: Use M-x flyspell-mode to enable Flyspell mode in the current buffer. Or for programming, use M-x flyspell-prog-mode to check comments and strings only. See the spelling documentation. There is also an abbreviations feature that can do autocorrection.
+
+Some useful resources:
+
+* Wikipedia has a [large list of common typos](https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines).
+* EmacsWiki has another [list of typos](https://www.emacswiki.org/emacs/autocorrection_abbrev_defs).
+* You can find data on English word frequencies at https://www.wordfrequency.info/samples.asp.
+
+# Appendix: Trie binary data format
+This section details how the trie is serialized to byte data in autocorrection_data. You don’t need to care about this to use this autocorrection implementation. But I document it for the record in case anyone is interested in modifying the implementation, or just curious how it works.
+
+What I did here is fairly arbitrary, but it is simple to decode and gets the job done.
+
+## Encoding
+All autocorrection data is stored in a single flat array autocorrection_data. Each trie node is associated with a byte offset into this array, where data for that node is encoded, beginning with root at offset 0. There are three kinds of nodes. The highest two bits of the first byte of the node indicate what kind:
+
+* 00 ⇒ chain node: a trie node with a single child.
+* 01 ⇒ branching node: a trie node with multiple children.
+* 10 ⇒ leaf node: a leaf, corresponding to a typo and storing its correction.
+
+An example trie.
+Branching node. Each branch is encoded with one byte for the keycode (KC_A–KC_Z) followed by a link to the child node. Links between nodes are 16-bit byte offsets relative to the beginning of the array, serialized in little endian order.
+
+All branches are serialized this way, one after another, and terminated with a zero byte. As described above, the node is identified as a branch by setting the two high bits of the first byte to 01, done by bitwise ORing the first keycode with 64. keycode. The root node for the above figure would be serialized like:
+
+ +-------+-------+-------+-------+-------+-------+-------+
+ | R|64 | node 2 | T | node 3 | 0 |
+ +-------+-------+-------+-------+-------+-------+-------+
+
+Chain node. Tries tend to have long chains of single-child nodes, as seen in the example above with f-i-t-l in fitler. So to save space, we use a different format to encode chains than branching nodes. A chain is encoded as a string of keycodes, beginning with the node closest to the root, and terminated with a zero byte. The child of the last node in the chain is encoded immediately after. That child could be either a branching node or a leaf.
+
+In the figure above, the f-i-t-l chain is encoded as
+
+ +-------+-------+-------+-------+-------+
+ | L | T | I | F | 0 |
+ +-------+-------+-------+-------+-------+
+If we were to encode this chain using the same format used for branching nodes, we would encode a 16-bit node link with every node, costing 8 more bytes in this example. Across the whole trie, this adds up. Conveniently, we can point to intermediate points in the chain and interpret the bytes in the same way as before. E.g. starting at the i instead of the l, and the subchain has the same format.
+
+Leaf node. A leaf node corresponds to a particular typo and stores data to correct the typo. The leaf begins with a byte for the number of backspaces to type, and is followed by a null-terminated ASCII string of the replacement text. The idea is, after tapping backspace the indicated number of times, we can simply pass this string to QMK’s send_string_P function. For fitler, we need to tap backspace 3 times (not 4, because we catch the typo as the final ‘r’ is pressed) and replace it with lter. To identify the node as a leaf, the two high bits are set to 10 by ORing the backspace count with 128:
+
+ +-------+-------+-------+-------+-------+-------+
+ | 3|128 | 'l' | 't' | 'e' | 'r' | 0 |
+ +-------+-------+-------+-------+-------+-------+
+## Decoding
+This format is by design decodable with fairly simple logic. A 16-bit variable state represents our current position in the trie, initialized with 0 to start at the root node. Then, for each keycode, test the highest two bits in the byte at state to identify the kind of node.
+
+* 00 ⇒ chain node: If the node’s byte matches the keycode, increment state by one to go to the next byte. If the next byte is zero, increment again to go to the following node.
+* 01 ⇒ branching node: Search the branches for one that matches the keycode, and follow its node link.
+* 10 ⇒ leaf node: a typo has been found! We read its first byte for the number of backspaces to type, then pass its following bytes to send_string_P to type the correction.
diff --git a/users/drashna/keyrecords/caps_word.c b/users/drashna/keyrecords/caps_word.c
new file mode 100644
index 0000000000..0c7cd6cfe5
--- /dev/null
+++ b/users/drashna/keyrecords/caps_word.c
@@ -0,0 +1,83 @@
+// Copyright 2021 Google LLC.
+// SPDX-License-Identifier: Apache-2.0
+
+#include "caps_word.h"
+
+#ifndef IS_COMMAND
+# define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+#endif
+
+bool caps_word_enabled = false;
+bool caps_word_shifted = false;
+
+/**
+ * @brief Handler for Caps Word feature.
+ *
+ * This checks the keycodes, and applies shift to the correct keys, if and when needid.
+ *
+ * @param keycode Keycode from matrix
+ * @param record keyrecord_t data structure
+ * @return true Continue processing keycode and sent to host
+ * @return false Stop processing keycode, and do not send to host
+ */
+bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
+ if (!caps_word_enabled) {
+ // Pressing both shift keys at the same time enables caps word.
+ if (IS_COMMAND()) {
+ clear_mods();
+ clear_oneshot_mods();
+ caps_word_shifted = false;
+ caps_word_enabled = true;
+ return false;
+ }
+ return true;
+ }
+
+ if (!record->event.pressed) {
+ return true;
+ }
+
+ if (!((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT)) {
+ switch (keycode) {
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ // Earlier return if this has not been considered tapped yet.
+ if (record->tap.count == 0) {
+ return true;
+ }
+ // Get the base tapping keycode of a mod- or layer-tap key.
+ keycode &= 0xff;
+ }
+
+ switch (keycode) {
+ // Letter keys should be shifted.
+ case KC_A ... KC_Z:
+ if (!caps_word_shifted) {
+ register_code(KC_LSFT);
+ }
+ caps_word_shifted = true;
+ return true;
+
+ // Keycodes that continue caps word but shouldn't get shifted.
+ case KC_1 ... KC_0:
+ case KC_BSPC:
+ case KC_MINS:
+ case KC_UNDS:
+ if (caps_word_shifted) {
+ unregister_code(KC_LSFT);
+ }
+ caps_word_shifted = false;
+ return true;
+
+ // Any other keycode disables caps word.
+ }
+ }
+
+ // Disable caps word.
+ caps_word_enabled = false;
+ if (caps_word_shifted) {
+ unregister_code(KC_LSFT);
+ }
+ caps_word_shifted = false;
+ return true;
+}
diff --git a/users/drashna/keyrecords/caps_word.h b/users/drashna/keyrecords/caps_word.h
new file mode 100644
index 0000000000..79e410ddda
--- /dev/null
+++ b/users/drashna/keyrecords/caps_word.h
@@ -0,0 +1,8 @@
+// Copyright 2021 Google LLC.
+// SPDX-License-Identifier: Apache-2.0
+
+#pragma once
+
+#include "drashna.h"
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record);
diff --git a/users/drashna/keyrecords/capwords.md b/users/drashna/keyrecords/capwords.md
new file mode 100644
index 0000000000..1ca01ed853
--- /dev/null
+++ b/users/drashna/keyrecords/capwords.md
@@ -0,0 +1,36 @@
+# Cap Words
+
+This is taken from [Pascal Getreuer's implemenation](https://getreuer.info/posts/keyboards/caps-word/index.html), with a number of modifications.
+
+To enable Caps Word, add `CAPS_WORD_ENABLE = yes` to your `rules.mk`.
+
+This is mostly a reproduction of Pascal's docs:
+
+## Overview
+
+All-caps identifiers like “MOD_MASK_ALT” are awkward to type.
+
+Caps Lock would be the standard solution to this problem, but it is awkward: it needs a dedicated key to toggle it (an imposition on smaller keyboards), and we need to remember to toggle it off after typing the word. Or with normal shifting, we either perform finger gymnastics or need to stop typing in the middle of the word to release shift with one hand to switch to holding shift with the other hand. In my experience, this is a nuisance especially if your shift keys are mod-taps, as in home row mods.
+
+Caps Word, implemented here, is a modern alternative to Caps Lock:
+
+* Caps Word is activated by pressing the left and right shift keys at the same time. This way you don’t need a dedicated key for using Caps Word.
+* Caps Word automatically disables itself at the end of the word.
+
+**Compatibility**: I’ve tested that this implementation works with one-shot mods and Space Cadet Shift, and it predictably handles key repeating.
+
+Unlike some other QMK Caps Word implementations, this library does not use the Caps Lock (KC_CAPS) keycode. It works even if the OS remaps Caps Lock to Ctrl or something else, as Emacs and Vim users often do.
+
+## Using Caps Word
+With the above flashed to your keyboard:
+
+1. **Activating**: Press and release both left and right shift keys at the same time. If your shift keys are mod-taps, activate Caps Word by holding both shift mod-tap keys until the tapping term, then release them.
+2. Then begin typing to get capitalized letters.
+3. **Disabling**: Caps Word disables itself when the next word breaking key is typed.
+
+If you want to explicitly stop Caps Word, press and release Ctrl or another non-shift modifier or layer key. This also disables Caps Word.
+
+## Explanation
+The code checks the mod bits on each key event, enabling Caps Word when both left and right shifts are active.
+
+While enabled, Caps Word automatically presses and releases left shift (KC_LSFT) as needed so that letters are shifted and other keys are not. The word continues while typing a–z, 0–9, -, _, and backspace. Any other key is considered “word breaking” and disables Caps Word. You can edit the switch statement at the end of the process_caps_word() function to adjust which keys count as word breaking.
diff --git a/users/drashna/keyrecords/keycodes.md b/users/drashna/keyrecords/keycodes.md
new file mode 100644
index 0000000000..348c68e46c
--- /dev/null
+++ b/users/drashna/keyrecords/keycodes.md
@@ -0,0 +1,18 @@
+
+# Custom Keycodes
+
+Keycodes are defined in the `process_record.h` file and need to be included in the keymap.c files, so that they can be used there.
+
+A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.
+
+* `KC_MAKE` - outputs `qmk compile -kb (keyboard) -km (keymap)` and enter, to start compiling the currenct keyboard. This uses generated variables to always use the current keyboard and keymap. Will work with any keyboard and any keymap.
+ * If you are holding shift, it will use `qmk flash` instead of `qmk compile`.
+ * If `MAKE_BOOTLOADER` is defined, it will always use `qmk flash` instead of `qmk compile`.
+* `DEFAULT_LAYER_1` ... `DEFAULT_LAYER_4` - This sets layer 0-3 as the default layer, and writes that to eeprom, and plays a chime.
+* `VRSN`, outputs the keyboard, keymap, commit and date info. Eg:
+ * `handwired/tractyl_manuform/5x6_right/f411/drashna @ 0.15.9-162-g087d08, Built on: 2021-12-19-21:10:26`
+* `KC_DIABLO_CLEAR` - clears the diablo tapdance status.
+* `KC_CCCV` - Copy on hold, paste on tap.
+* `KEYLOCK` - This unloads the host driver, and prevents any data from being sent to the host. Hitting it again loads the driver, back.
+* `REBOOT` - Uses watchdog timer on AVR, and `NVIC_SystemReset()` on ChibiOS to reset the board, without jumping to the bootloader.
+* `EEP_RST` - Overrides the default behavior, disables EEPROM (which will trigger a reset on init), and reboots the keyboard as per `REBOOT` keycode.
diff --git a/users/drashna/keyrecords/process_records.c b/users/drashna/keyrecords/process_records.c
new file mode 100644
index 0000000000..160a880215
--- /dev/null
+++ b/users/drashna/keyrecords/process_records.c
@@ -0,0 +1,242 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+#include "version.h"
+#ifdef CAPS_WORD_ENABLE
+# include "caps_word.h"
+#endif
+#ifdef AUTOCORRECTION_ENABLE
+# include "autocorrection/autocorrection.h"
+#endif
+#ifdef __AVR__
+# include <avr/wdt.h>
+#endif
+
+uint16_t copy_paste_timer;
+bool host_driver_disabled = false;
+// Defines actions tor my global custom keycodes. Defined in drashna.h file
+// Then runs the _keymap's record handier if not processed here
+
+/**
+ * @brief Keycode handler for keymaps
+ *
+ * This handles the keycodes at the keymap level, useful for keyboard specific customization
+ */
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
+
+/**
+ * @brief Main user keycode handler
+ *
+ * This handles all of the keycodes for the user, including calling feature handlers.
+ *
+ * @param keycode Keycode from matrix
+ * @param record keyrecord_t data structure
+ * @return true Continue processing keycode and send to host
+ * @return false Stop process keycode and do not send to host
+ */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#ifdef KEYLOGGER_ENABLE
+ uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
+#endif // KEYLOGGER_ENABLE
+#ifdef OLED_ENABLE
+ process_record_user_oled(keycode, record);
+#endif // OLED
+
+ if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
+#ifdef RGB_MATRIX_ENABLE
+ && process_record_user_rgb_matrix(keycode, record)
+#endif
+#ifdef RGBLIGHT_ENABLE
+ && process_record_user_rgb_light(keycode, record)
+#endif
+#ifdef CUSTOM_UNICODE_ENABLE
+ && process_record_unicode(keycode, record)
+#endif
+#if defined(POINTING_DEVICE_ENABLE)
+ && process_record_pointing(keycode, record)
+#endif
+#ifdef CAPS_WORD_ENABLE
+ && process_caps_word(keycode, record)
+#endif
+#ifdef AUTOCORRECTION_ENABLE
+ && process_autocorrection(keycode, record)
+#endif
+ && true)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case FIRST_DEFAULT_LAYER_KEYCODE ... LAST_DEFAULT_LAYER_KEYCODE:
+ if (record->event.pressed) {
+ uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
+ if (!mods) {
+ set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE);
+#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
+ } else if (mods & MOD_MASK_SHIFT) {
+ set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 4);
+# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+
+ } else if (mods & MOD_MASK_CTRL) {
+ set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 8);
+# endif
+#endif
+ }
+ }
+ break;
+
+ case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
+ if (!record->event.pressed) {
+#ifndef MAKE_BOOTLOADER
+ uint8_t temp_mod = mod_config(get_mods());
+ uint8_t temp_osm = mod_config(get_oneshot_mods());
+ clear_mods();
+ clear_oneshot_mods();
+#endif
+ send_string_with_delay_P(PSTR("qmk"), TAP_CODE_DELAY);
+#ifndef MAKE_BOOTLOADER
+ if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
+#endif
+ {
+ send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY);
+#ifndef MAKE_BOOTLOADER
+ } else {
+ send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY);
+#endif
+ }
+ send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
+#ifdef CONVERT_TO_PROTON_C
+ send_string_with_delay_P(PSTR(" -e CTPC=yes"), TAP_CODE_DELAY);
+#endif
+ send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
+ }
+ break;
+
+ case VRSN: // Prints firmware version
+ if (record->event.pressed) {
+ send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
+ }
+ break;
+
+ case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
+#ifdef TAP_DANCE_ENABLE
+ if (record->event.pressed) {
+ for (uint8_t index = 0; index < 4; index++) {
+ diablo_timer[index].key_interval = 0;
+ }
+ }
+#endif // TAP_DANCE_ENABLE
+ break;
+
+ case KC_CCCV: // One key copy/paste
+ if (record->event.pressed) {
+ copy_paste_timer = timer_read();
+ } else {
+ if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
+ tap_code16(LCTL(KC_C));
+ } else { // Tap, paste
+ tap_code16(LCTL(KC_V));
+ }
+ }
+ break;
+ case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ if (record->event.pressed) {
+ userspace_config.rgb_layer_change ^= 1;
+ dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
+ eeconfig_update_user(userspace_config.raw);
+ if (userspace_config.rgb_layer_change) {
+# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
+ rgblight_enable_noeeprom();
+# endif
+ layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
+# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
+ } else {
+ rgblight_disable_noeeprom();
+# endif
+ }
+ }
+#endif // RGBLIGHT_ENABLE
+ break;
+
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ case RGB_TOG:
+ // Split keyboards need to trigger on key-up for edge-case issue
+# ifndef SPLIT_KEYBOARD
+ if (record->event.pressed) {
+# else
+ if (!record->event.pressed) {
+# endif
+# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
+ rgblight_toggle();
+# endif
+# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
+ rgb_matrix_toggle();
+# endif
+ }
+ return false;
+ break;
+ case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
+ if (record->event.pressed) {
+ bool is_eeprom_updated;
+# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
+ // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
+ if (userspace_config.rgb_layer_change) {
+ userspace_config.rgb_layer_change = false;
+ dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
+ is_eeprom_updated = true;
+ }
+# endif
+# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ if (userspace_config.rgb_matrix_idle_anim) {
+ userspace_config.rgb_matrix_idle_anim = false;
+ dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
+ is_eeprom_updated = true;
+ }
+# endif
+ if (is_eeprom_updated) {
+ eeconfig_update_user(userspace_config.raw);
+ }
+ }
+ break;
+#endif
+ case KEYLOCK: {
+ static host_driver_t *host_driver = 0;
+
+ if (record->event.pressed) {
+ if (host_get_driver()) {
+ host_driver = host_get_driver();
+ clear_keyboard();
+ host_set_driver(0);
+ host_driver_disabled = true;
+ } else {
+ host_set_driver(host_driver);
+ host_driver_disabled = false;
+ }
+ }
+ break;
+ }
+ case EEP_RST:
+ if (record->event.pressed) {
+ eeconfig_disable();
+ shutdown_user();
+#ifdef __AVR__
+ wdt_enable(WDTO_250MS);
+#else
+ NVIC_SystemReset();
+#endif
+ }
+ return false;
+ case REBOOT:
+ if (record->event.pressed) {
+ software_reset();
+ }
+ return false;
+ }
+ return true;
+}
+
+__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {}
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) { post_process_record_keymap(keycode, record); }
diff --git a/users/drashna/keyrecords/process_records.h b/users/drashna/keyrecords/process_records.h
new file mode 100644
index 0000000000..d7a81d4607
--- /dev/null
+++ b/users/drashna/keyrecords/process_records.h
@@ -0,0 +1,147 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "drashna.h"
+
+#if defined(KEYBOARD_handwired_tractyl_manuform)
+# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
+#else
+# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
+#endif
+
+enum userspace_custom_keycodes {
+ VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
+ KC_QWERTY, // Sets default layer to QWERTY
+ FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY, // Sets default layer to QWERTY
+ KC_COLEMAK_DH, // Sets default layer to COLEMAK
+ KC_COLEMAK, // Sets default layer to COLEMAK
+ KC_DVORAK, // Sets default layer to DVORAK
+ LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK, // Sets default layer to WORKMAN
+ KC_DIABLO_CLEAR, // Clears all Diablo Timers
+ KC_MAKE, // Run keyboard's customized make command
+ KC_RGB_T, // Toggles RGB Layer Indication mode
+ RGB_IDL, // RGB Idling animations
+ KC_SECRET_1, // test1
+ KC_SECRET_2, // test2
+ KC_SECRET_3, // test3
+ KC_SECRET_4, // test4
+ KC_SECRET_5, // test5
+ KC_CCCV, // Hold to copy, tap to paste
+ KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
+ UC_FLIP, // (ಠ痊ಠ)┻━┻
+ UC_TABL, // ┬─┬ノ( º _ ºノ)
+ UC_SHRG, // ¯\_(ツ)_/¯
+ UC_DISA, // ಠ_ಠ
+ UC_IRNY,
+ UC_CLUE,
+ KEYLOCK, // Locks keyboard by unmounting driver
+ KC_NOMODE,
+ KC_WIDE,
+ KC_SCRIPT,
+ KC_BLOCKS,
+ KC_REGIONAL,
+ KC_AUSSIE,
+ KC_ZALGO,
+ KC_ACCEL,
+ AUTO_CTN, // Toggle Autocorrect status
+ REBOOT,
+ NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
+};
+
+bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
+void post_process_record_keymap(uint16_t keycode, keyrecord_t *record);
+#ifdef CUSTOM_UNICODE_ENABLE
+bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
+#endif
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+#define TG_MODS OS_TOGG
+#define TG_GAME TG(_GAMEPAD)
+#define TG_DBLO TG(_DIABLO)
+#define OS_LWR OSL(_LOWER)
+#define OS_RSE OSL(_RAISE)
+
+#define KC_SEC1 KC_SECRET_1
+#define KC_SEC2 KC_SECRET_2
+#define KC_SEC3 KC_SECRET_3
+#define KC_SEC4 KC_SECRET_4
+#define KC_SEC5 KC_SECRET_5
+
+#define QWERTY KC_QWERTY
+#define DVORAK KC_DVORAK
+#define COLEMAK KC_COLEMAK
+#define COLEMAKDH KC_COLEMAK_DH
+
+#define DEFLYR1 FIRST_DEFAULT_LAYER_KEYCODE
+#define DEFLYR2 (FIRST_DEFAULT_LAYER_KEYCODE + 1)
+#define DEFLYR3 (FIRST_DEFAULT_LAYER_KEYCODE + 2)
+#define DEFLYR4 (FIRST_DEFAULT_LAYER_KEYCODE + 3)
+#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
+# define DEFLYR5 (FIRST_DEFAULT_LAYER_KEYCODE + 4)
+# define DEFLYR6 (FIRST_DEFAULT_LAYER_KEYCODE + 5)
+# define DEFLYR7 (FIRST_DEFAULT_LAYER_KEYCODE + 6)
+# define DEFLYR8 (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
+# define DEFLYR9 (FIRST_DEFAULT_LAYER_KEYCODE + 8)
+# define DEFLYR10 (FIRST_DEFAULT_LAYER_KEYCODE + 9)
+# define DEFLYR11 (FIRST_DEFAULT_LAYER_KEYCODE + 10)
+# define DEFLYR12 (FIRST_DEFAULT_LAYER_KEYCODE + 11)
+# endif
+#endif
+
+#define KC_RESET RESET
+#define KC_RST KC_RESET
+
+#ifdef SWAP_HANDS_ENABLE
+# define KC_C1R3 SH_T(KC_TAB)
+#elif defined(DRASHNA_LP)
+# define KC_C1R3 TG(_GAMEPAD)
+#else // SWAP_HANDS_ENABLE
+# define KC_C1R3 KC_TAB
+#endif // SWAP_HANDS_ENABLE
+
+#define BK_LWER LT(_LOWER, KC_BSPC)
+#define SP_LWER LT(_LOWER, KC_SPC)
+#define DL_RAIS LT(_RAISE, KC_DEL)
+#define ET_RAIS LT(_RAISE, KC_ENTER)
+
+/* OSM keycodes, to keep things clean and easy to change */
+#define KC_MLSF OSM(MOD_LSFT)
+#define KC_MRSF OSM(MOD_RSFT)
+
+#define OS_LGUI OSM(MOD_LGUI)
+#define OS_RGUI OSM(MOD_RGUI)
+#define OS_LSFT OSM(MOD_LSFT)
+#define OS_RSFT OSM(MOD_RSFT)
+#define OS_LCTL OSM(MOD_LCTL)
+#define OS_RCTL OSM(MOD_RCTL)
+#define OS_LALT OSM(MOD_LALT)
+#define OS_RALT OSM(MOD_RALT)
+#define OS_MEH OSM(MOD_MEH)
+#define OS_HYPR OSM(MOD_HYPR)
+
+#define ALT_APP ALT_T(KC_APP)
+
+#define MG_NKRO MAGIC_TOGGLE_NKRO
+
+
+/*
+Custom Keycodes for Diablo 3 layer
+But since TD() doesn't work when tap dance is disabled
+We use custom codes here, so we can substitute the right stuff
+*/
+#ifdef TAP_DANCE_ENABLE
+# define KC_D3_1 TD(TD_D3_1)
+# define KC_D3_2 TD(TD_D3_2)
+# define KC_D3_3 TD(TD_D3_3)
+# define KC_D3_4 TD(TD_D3_4)
+#else // TAP_DANCE_ENABLE
+# define KC_D3_1 KC_1
+# define KC_D3_2 KC_2
+# define KC_D3_3 KC_3
+# define KC_D3_4 KC_4
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/keyrecords/readme.md b/users/drashna/keyrecords/readme.md
new file mode 100644
index 0000000000..5f708f9edf
--- /dev/null
+++ b/users/drashna/keyrecords/readme.md
@@ -0,0 +1,9 @@
+# Keycode handling and interception
+
+ * [Autocorrection](autocorrection/readme.md)
+ * [Cap Words](capwords.md)
+ * [Diablo Tap Dancing](tap_dance.md)
+ * [Keymap Wrappers](wrappers.md)
+ * [Secret Macros](secrets.md)
+ * [Custom Keycodes](keycodes.md)
+ * [Unicode Input](unicode.md)
diff --git a/users/drashna/readme_secrets.md b/users/drashna/keyrecords/secrets.md
index a9408dc2ef..a9408dc2ef 100644
--- a/users/drashna/readme_secrets.md
+++ b/users/drashna/keyrecords/secrets.md
diff --git a/users/drashna/keyrecords/tap_dance.md b/users/drashna/keyrecords/tap_dance.md
new file mode 100644
index 0000000000..0bf67cbd5a
--- /dev/null
+++ b/users/drashna/keyrecords/tap_dance.md
@@ -0,0 +1,121 @@
+# Diablo Tap Dances
+
+My [Tap Dance](tap_dances.c) file includes the tap dance declarations, and everything needed for them.
+
+To disable, add `CUSTOM_TAP_DANCE = no` to your `rules.mk`.
+
+This is used for making Diablo 3 much easier to plan, especially at high rift levels.
+
+This works by using Tap Dances. The taps don't actually "do anything". Instead, it sets up the interval for how often to send specific keypresses. As you can tell, this makes automating things very easy.
+
+For critics that think this is cheating, just search "[diablo 3 num lock auto cast](http://lmgtfy.com/?q=diablo+3+numlock+autocast)". This is just a simpler method, that doesn't require a numpad.
+
+
+## Custom Tap Dance Type
+The real fun here is that the tap dances use a custom defined Tap Dance type:
+
+```c
+#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
+ .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
+ .user_data = (void *)&((diable_keys_t) { index, keycode }), \
+ }
+```
+This lets me set an index and keycode for the tap dance. This isn't the cool part yet, but this allows for the really cool stuff.
+
+The Index is needed because I don't know how to handle it otherwise.
+
+## The Actual Dances
+
+These are the custom defined dances that I'm using. It sets up everything for later, using the above custom dance type.
+
+```c
+//Tap Dance Definitions, sets the index and the keycode.
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // tap once to disable, and more to enable timed micros
+ [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
+ [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
+ [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
+ [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
+};
+```
+
+## Custom Data Structures
+
+First, to get this all working, there are a couple of things that need to be set up. In a header file (or you could put it into the keymap), you need to create a couple of custom structures:
+
+```c
+typedef struct {
+ uint16_t timer;
+ uint8_t key_interval;
+ uint8_t keycode;
+} diablo_timer_t;
+
+typedef struct {
+ uint8_t index;
+ uint8_t keycode;
+} diable_keys_t;
+```
+
+The first structure is for tracking each key that is being used. The second is to pass data from the Tap Dance action array to the actual function that we will need.
+
+
+## Custom Arrays
+
+To facilitate things, you will need a couple of arrays in your `c` file.
+
+```c
+//define diablo macro timer variables
+diablo_timer_t diablo_timer[4];
+
+// Set the default intervals. Always start with 0 so that it will disable on first hit.
+// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
+uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
+```
+
+The first one (`diablo_timer`) is what keeps track of the timer used for the keys, the interval that it uses, and the actual keycode. This makes managing it a lot easier.
+
+The second array is a list of predefined intervals, in seconds. You can add more here, or remove entries. It doesn't matter how long the array is, as this is computed automatically.
+
+## The Magic - Part 1: Master function
+
+The first part of the magic here is the `diablo_tapdance_master` function. The Tap Dance feature calls this function, directly, and passes some data to the function. Namely, it passes the array of the index and the keycode (`diablo_keys_t` from above). This sets the keycode and the interval for the specific index of `diabolo_timer` based on the number of taps. If you hit it more than the number of items in the array, then it zeroes out the interval, disabling it.
+
+```c
+// Cycle through the times for the macro, starting at 0, for disabled.
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
+ diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
+ // Sets the keycode based on the index
+ diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
+
+ // if the tapdance is hit more than the number of elemints in the array, reset
+ if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t) ) ) {
+ diablo_timer[diablo_keys->index].key_interval = 0;
+ reset_tap_dance(state);
+ } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
+ diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
+ }
+}
+```
+
+## The Magic - Part 2: The Coup de Grace
+
+The real core here is the `run_diablo_macro_check()` function. You need to call this from `matrix_scan_user`, as this handles the timer check.
+
+Specifically, it runs a check for each index of the timer. It checks to see if it's enabled, and if enough time has passed. If enough time has passed, it resets the timer, and will tap the keycode that you set for that index, but only if the Diablo layer is enabled.
+
+```c
+// Checks each of the 4 timers/keys to see if enough time has elapsed
+void run_diablo_macro_check(void) {
+ for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
+ // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
+ if ( diablo_timer[index].key_interval && timer_elapsed( diablo_timer[index].timer ) > ( diablo_timer[index].key_interval * 1000 ) ) {
+ // reset the timer, since enough time has passed
+ diablo_timer[index].timer = timer_read();
+ // send keycode ONLY if we're on the diablo layer.
+ if (IS_LAYER_ON(_DIABLO)) {
+ tap_code(diablo_timer[index].keycode);
+ }
+ }
+ }
+}
+```
diff --git a/users/drashna/keyrecords/tap_dances.c b/users/drashna/keyrecords/tap_dances.c
new file mode 100644
index 0000000000..a1a7439164
--- /dev/null
+++ b/users/drashna/keyrecords/tap_dances.c
@@ -0,0 +1,67 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "tap_dances.h"
+
+#define NUM_OF_DIABLO_KEYS 4
+// define diablo macro timer variables
+diablo_timer_t diablo_timer[NUM_OF_DIABLO_KEYS];
+
+// Set the default intervals. Always start with 0 so that it will disable on first hit.
+// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
+uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30};
+
+/**
+ * @brief Main function for handling diable related tap dances.
+ *
+ * @param state Main data struction contining information about events
+ * @param user_data Local data for the dance. Allows customization to be passed on to function
+ */
+void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
+ diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
+ // Sets the keycode based on the index
+ diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
+
+ // if the tapdance is hit more than the number of elemints in the array, reset
+ if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t))) {
+ diablo_timer[diablo_keys->index].key_interval = 0;
+ reset_tap_dance(state);
+ } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
+ diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
+ }
+}
+
+// clang-format off
+// One function to rule them all!! Where the Magic Sauce lies
+#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
+ .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
+ .user_data = (void *)&((diable_keys_t) { index, keycode }), \
+ }
+// clang-format on
+
+// Tap Dance Definitions, sets the index and the keycode.
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // tap once to disable, and more to enable timed micros
+ [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
+ [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
+ [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
+ [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
+};
+
+/**
+ * @brief Runs check to see if timer has elapsed for each dance, and sends keycodes, if it has.
+ *
+ */
+void run_diablo_macro_check(void) {
+ for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
+ // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
+ if (diablo_timer[index].key_interval && timer_elapsed(diablo_timer[index].timer) > (diablo_timer[index].key_interval * 1000)) {
+ // reset the timer, since enough time has passed
+ diablo_timer[index].timer = timer_read();
+ // send keycode ONLY if we're on the diablo layer.
+ if (IS_LAYER_ON(_DIABLO)) {
+ tap_code(diablo_timer[index].keycode);
+ }
+ }
+ }
+}
diff --git a/users/drashna/keyrecords/tap_dances.h b/users/drashna/keyrecords/tap_dances.h
new file mode 100644
index 0000000000..d9baedc867
--- /dev/null
+++ b/users/drashna/keyrecords/tap_dances.h
@@ -0,0 +1,31 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "drashna.h"
+
+// define diablo macro timer variables
+extern uint8_t diablo_times[];
+typedef struct {
+ uint16_t timer;
+ uint8_t key_interval;
+ uint8_t keycode;
+} diablo_timer_t;
+
+typedef struct {
+ uint8_t index;
+ uint8_t keycode;
+} diable_keys_t;
+
+extern diablo_timer_t diablo_timer[];
+
+void run_diablo_macro_check(void);
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+ TD_D3_1 = 0,
+ TD_D3_2,
+ TD_D3_3,
+ TD_D3_4,
+};
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/keyrecords/tapping.c b/users/drashna/keyrecords/tapping.c
new file mode 100644
index 0000000000..9c4892b33d
--- /dev/null
+++ b/users/drashna/keyrecords/tapping.c
@@ -0,0 +1,64 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+
+__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case BK_LWER:
+ return TAPPING_TERM + 25;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
+__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
+ // Immediately select the hold action when another key is tapped:
+ // return true;
+ // Do not select the hold action when another key is tapped.
+ // return false;
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
+ // Immediately select the hold action when another key is pressed.
+ // return true;
+ // Do not select the hold action when another key is pressed.
+ // return false;
+ switch (keycode) {
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ return true;
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
+ // Do not force the mod-tap key press to be handled as a modifier
+ // if any other key was pressed while the mod-tap key is held down.
+ // return true;
+ // Force the mod-tap key press to be handled as a modifier if any
+ // other key was pressed while the mod-tap key is held down.
+ // return false;
+ switch (keycode) {
+ default:
+ return true;
+ }
+}
+
+__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
diff --git a/users/drashna/keyrecords/unicode.c b/users/drashna/keyrecords/unicode.c
new file mode 100644
index 0000000000..5acd51da9b
--- /dev/null
+++ b/users/drashna/keyrecords/unicode.c
@@ -0,0 +1,294 @@
+// Copyright 2020 @ridingqwerty
+// Copyright 2020 @tzarc
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+#include "process_unicode_common.h"
+
+uint16_t typing_mode;
+
+/**
+ * @brief Registers the unicode keystrokes based on desired unicode
+ *
+ * @param glyph Unicode character, supports up to 0x1FFFF (or higher)
+ */
+void tap_unicode_glyph_nomods(uint32_t glyph) {
+ uint8_t temp_mod = get_mods();
+ clear_mods();
+ clear_oneshot_mods();
+ register_unicode(glyph);
+ set_mods(temp_mod);
+}
+
+typedef uint32_t (*translator_function_t)(bool is_shifted, uint32_t keycode);
+
+#define DEFINE_UNICODE_RANGE_TRANSLATOR(translator_name, lower_alpha, upper_alpha, zero_glyph, number_one, space_glyph) \
+ static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
+ switch (keycode) { \
+ case KC_A ... KC_Z: \
+ return (is_shifted ? upper_alpha : lower_alpha) + keycode - KC_A; \
+ case KC_0: \
+ return zero_glyph; \
+ case KC_1 ... KC_9: \
+ return (number_one + keycode - KC_1); \
+ case KC_SPACE: \
+ return space_glyph; \
+ } \
+ return keycode; \
+ }
+
+#define DEFINE_UNICODE_LUT_TRANSLATOR(translator_name, ...) \
+ static inline uint32_t translator_name(bool is_shifted, uint32_t keycode) { \
+ static const uint32_t translation[] = {__VA_ARGS__}; \
+ uint32_t ret = keycode; \
+ if ((keycode - KC_A) < (sizeof(translation) / sizeof(uint32_t))) { \
+ ret = translation[keycode - KC_A]; \
+ } \
+ return ret; \
+ }
+
+/**
+ * @brief Handler function for outputting unicode.
+ *
+ * @param keycode Keycode from matrix.
+ * @param record keyrecord_t data structure
+ * @param translator translator lut for different unicode modes
+ * @return true Continue processing matrix press, and send to host
+ * @return false Replace keycode, and do not send to host
+ */
+bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, translator_function_t translator) {
+ uint8_t temp_mod = get_mods();
+ uint8_t temp_osm = get_oneshot_mods();
+ bool is_shifted = (temp_mod | temp_osm) & MOD_MASK_SHIFT;
+ if (((temp_mod | temp_osm) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI)) == 0) {
+ if (KC_A <= keycode && keycode <= KC_Z) {
+ if (record->event.pressed) {
+ tap_unicode_glyph_nomods(translator(is_shifted, keycode));
+ }
+ return false;
+ } else if (KC_1 <= keycode && keycode <= KC_0) {
+ if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc.
+ return process_record_keymap(keycode, record);
+ }
+ if (record->event.pressed) {
+ register_unicode(translator(is_shifted, keycode));
+ }
+ return false;
+ } else if (keycode == KC_SPACE) {
+ if (record->event.pressed) {
+ register_unicode(translator(is_shifted, keycode));
+ }
+ return false;
+ }
+ }
+ return true;
+}
+
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_wide, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_script, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7C1, 0x2002);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170, 0x1F170, '0', '1', 0x2002);
+DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_regional, 0x1F1E6, 0x1F1E6, '0', '1', 0x2003);
+
+DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_aussie,
+ 0x0250, // a
+ 'q', // b
+ 0x0254, // c
+ 'p', // d
+ 0x01DD, // e
+ 0x025F, // f
+ 0x0183, // g
+ 0x0265, // h
+ 0x1D09, // i
+ 0x027E, // j
+ 0x029E, // k
+ 'l', // l
+ 0x026F, // m
+ 'u', // n
+ 'o', // o
+ 'd', // p
+ 'b', // q
+ 0x0279, // r
+ 's', // s
+ 0x0287, // t
+ 'n', // u
+ 0x028C, // v
+ 0x028D, // w
+ 0x2717, // x
+ 0x028E, // y
+ 'z', // z
+ 0x0269, // 1
+ 0x3139, // 2
+ 0x0190, // 3
+ 0x3123, // 4
+ 0x03DB, // 5
+ '9', // 6
+ 0x3125, // 7
+ '8', // 8
+ '6', // 9
+ '0' // 0
+);
+
+bool process_record_aussie(uint16_t keycode, keyrecord_t *record) {
+ bool is_shifted = (get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT;
+ if ((KC_A <= keycode) && (keycode <= KC_0)) {
+ if (record->event.pressed) {
+ if (!process_record_glyph_replacement(keycode, record, unicode_lut_translator_aussie)) {
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ }
+ }
+ } else if (record->event.pressed && keycode == KC_SPACE) {
+ tap_code16_nomods(KC_SPACE);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_ENTER) {
+ tap_code16_nomods(KC_END);
+ tap_code16_nomods(KC_ENTER);
+ return false;
+ } else if (record->event.pressed && keycode == KC_HOME) {
+ tap_code16_nomods(KC_END);
+ return false;
+ } else if (record->event.pressed && keycode == KC_END) {
+ tap_code16_nomods(KC_HOME);
+ return false;
+ } else if (record->event.pressed && keycode == KC_BSPC) {
+ tap_code16_nomods(KC_DELT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_DELT) {
+ tap_code16_nomods(KC_BSPC);
+ return false;
+ } else if (record->event.pressed && keycode == KC_QUOT) {
+ tap_unicode_glyph_nomods(is_shifted ? 0x201E : 0x201A);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_COMMA) {
+ tap_unicode_glyph_nomods(is_shifted ? '<' : 0x2018);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_DOT) {
+ tap_unicode_glyph_nomods(is_shifted ? '>' : 0x02D9);
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ } else if (record->event.pressed && keycode == KC_SLASH) {
+ tap_unicode_glyph_nomods(is_shifted ? 0x00BF : '/');
+ tap_code16_nomods(KC_LEFT);
+ return false;
+ }
+ return true;
+}
+
+bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) {
+ if ((KC_A <= keycode) && (keycode <= KC_0)) {
+ if (record->event.pressed) {
+ tap_code16_nomods(keycode);
+
+ int number = (rand() % (8 + 1 - 2)) + 2;
+ for (int index = 0; index < number; index++) {
+ uint16_t hex = (rand() % (0x036F + 1 - 0x0300)) + 0x0300;
+ register_unicode(hex);
+ }
+
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * @brief Main handler for unicode input
+ *
+ * @param keycode Keycode from switch matrix
+ * @param record keyrecord_t data struture
+ * @return true Send keycode from matrix to host
+ * @return false Stop processing and do not send to host
+ */
+
+bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
+ if (record->event.pressed) {
+ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
+ }
+ break;
+
+ case UC_TABL: // ┬─┬ノ( º _ ºノ)
+ if (record->event.pressed) {
+ send_unicode_string("┬─┬ノ( º _ ºノ)");
+ }
+ break;
+
+ case UC_SHRG: // ¯\_(ツ)_/¯
+ if (record->event.pressed) {
+ send_unicode_string("¯\\_(ツ)_/¯");
+ }
+ break;
+
+ case UC_DISA: // ಠ_ಠ
+ if (record->event.pressed) {
+ send_unicode_string("ಠ_ಠ");
+ }
+ break;
+
+ case UC_IRNY: // ⸮
+ if (record->event.pressed) {
+ register_unicode(0x2E2E);
+ }
+ break;
+ case UC_CLUE: // ‽
+ if (record->event.pressed) {
+ register_unicode(0x203D);
+ }
+ break;
+ case KC_NOMODE ... KC_ZALGO:
+ if (record->event.pressed) {
+ if (typing_mode != keycode) {
+ typing_mode = keycode;
+ } else {
+ typing_mode = 0;
+ }
+ }
+ break;
+ }
+
+ if (((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT) != 0) {
+ return true;
+ }
+
+ if (((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) && record->tap.count) {
+ keycode &= 0xFF;
+ }
+
+ if (typing_mode == KC_WIDE) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
+ return process_record_glyph_replacement(keycode, record, unicode_range_translator_wide);
+ }
+ } else if (typing_mode == KC_SCRIPT) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
+ return process_record_glyph_replacement(keycode, record, unicode_range_translator_script);
+ }
+ } else if (typing_mode == KC_BLOCKS) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
+ return process_record_glyph_replacement(keycode, record, unicode_range_translator_boxes);
+ }
+ } else if (typing_mode == KC_REGIONAL) {
+ if (((KC_A <= keycode) && (keycode <= KC_0)) || keycode == KC_SPACE) {
+ if (!process_record_glyph_replacement(keycode, record, unicode_range_translator_regional)) {
+ wait_us(500);
+ tap_unicode_glyph_nomods(0x200C);
+ return false;
+ }
+ }
+ } else if (typing_mode == KC_AUSSIE) {
+ return process_record_aussie(keycode, record);
+ } else if (typing_mode == KC_ZALGO) {
+ return process_record_zalgo(keycode, record);
+ }
+ return true;
+}
+
+/**
+ * @brief Initialize the default unicode mode on firmware startu
+ *
+ */
+void matrix_init_unicode(void) { unicode_input_mode_init(); }
diff --git a/users/drashna/keyrecords/unicode.md b/users/drashna/keyrecords/unicode.md
new file mode 100644
index 0000000000..1b3f696a82
--- /dev/null
+++ b/users/drashna/keyrecords/unicode.md
@@ -0,0 +1,27 @@
+# Custom Unicode
+
+To disable, add `CUSTOM_UNICODE_ENABLE = no` to the keymap's `rules.mk`.
+
+This disables all of the various implementations of unicode, enables the common unicode core, and allows usage.
+
+In addition to a number of unicode keycodes:
+
+* `UC_FLIP` - `(ノಠ痊ಠ)ノ彡┻━┻`
+* `UC_TABL` - `┬─┬ノ( º _ ºノ)`
+* `UC_SHRG` - `¯\_(ツ)_/¯`
+* `UC_DISA` - `ಠ_ಠ`
+* `UC_IRNY` - `⸮`
+* `UC_CLUE` - `‽`
+
+There are a number of unicode typing modes. This replaces the normal alpha keys with special unicodes.
+
+* `KC_WIDE` - this is wide mode
+* `KC_SCRIPT` - 𝓽𝓱𝓲𝓼 𝓲𝓼 𝓼𝓬𝓻𝓲𝓹𝓽 𝓶𝓸𝓭𝓮
+* `KC_BLOCKS` - 🆃🅷🅸🆂 🅸🆂 🅱🅻🅾🅲🅺 🅼🅾🅳🅴
+* `KC_REGIONAL` - 🇹‌‌🇭‌‌🇮‌‌🇸‌‌ ‌‌🇮‌‌🇸‌‌ ‌‌🇷‌‌🇪‌‌🇬‌‌🇮‌‌🇴‌‌🇳‌‌🇦‌‌🇱‌‌ ‌‌🇲‌‌🇴‌‌🇩‌‌🇪‌‌
+* `KC_AUSSIE` - ǝpoɯ ǝᴉssnɐ sᴉ sᴉɥʇ
+* `KC_ZALGO` - t̨͕͙̺͍͐̾ĥ̻ï̳̻̗̜͔ͦs͎̠͈͓͗̀ i̶̫ͭ̆s̛̫̻̜̝͑͡ z̩͈̠͗a͚̜̓͜l͈̟g͋͢͝ò͚ͥ͘͡͞ ḿ̴̡̻̼̔ͪò͔̭̿ͪ̍ḏ̻̊̄̈e̳͕̤ͣͯ
+* `KC_NOMODE` - this is the normal typing mode with no unicode glyphs
+
+
+Credit goes to ridingqwerty and tzarc for the unicode typing modes.
diff --git a/users/drashna/keyrecords/wrappers.h b/users/drashna/keyrecords/wrappers.h
new file mode 100644
index 0000000000..cb8dc6189a
--- /dev/null
+++ b/users/drashna/keyrecords/wrappers.h
@@ -0,0 +1,266 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2020 @jola5
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "drashna.h"
+/*
+Since our quirky block definitions are basically a list of comma separated
+arguments, we need a wrapper in order for these definitions to be
+expanded before being used as arguments to the LAYOUT_xxx macro.
+*/
+
+/*
+Blocks for each of the four major keyboard layouts
+Organized so we can quickly adapt and modify all of them
+at once, rather than for each keyboard, one at a time.
+And this allows for much cleaner blocks in the keymaps.
+For instance Tap/Hold for Control on all of the layouts
+
+NOTE: These are all the same length. If you do a search/replace
+ then you need to add/remove underscores to keep the
+ lengths consistent.
+*/
+// clang-format off
+#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
+#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
+#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
+#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
+#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
+#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D
+#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
+#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
+#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
+#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V
+
+#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT
+#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
+
+
+#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
+#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I
+#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
+
+#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
+#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
+#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
+
+
+#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
+#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U
+#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
+
+#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
+#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
+#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
+
+#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
+#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G
+#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
+
+#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
+#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT
+#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
+#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G
+#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
+#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT
+#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
+#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F
+#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
+
+#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
+#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT
+#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
+
+
+#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN
+#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U
+#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F
+
+#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P
+#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT
+#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH
+
+// Qwerty-like
+#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W
+#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
+#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X
+
+#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J
+#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT
+#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
+
+// Colemak like
+#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
+#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
+#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J
+
+#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
+#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
+#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
+
+// colemak like, zxcv fixed
+#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
+#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
+#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J
+
+#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
+#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
+#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
+
+// teeheehee
+#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L
+#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G
+#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A
+
+#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H
+#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT
+#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
+#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
+#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
+
+#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
+#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I
+#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
+
+
+#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
+#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
+#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
+
+#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
+#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
+#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
+
+
+#define __________________ISRT_L1__________________ KC_W, KC_C, KC_L, KC_M, KC_K
+#define __________________ISRT_L2__________________ KC_I, KC_S, KC_R, KC_T, KC_G
+#define __________________ISRT_L3__________________ KC_Q, KC_V, KC_W, KC_D, KC_J
+
+#define __________________ISRT_R1__________________ KC_Z, KC_F, KC_U, KC_COMM, KC_QUOTE
+#define __________________ISRT_R2__________________ KC_P, KC_N, KC_E, KC_A, KC_O, KC_SCLN
+#define __________________ISRT_R3__________________ KC_B, KC_H, KC_SLSH, KC_DOT, KC_X
+
+
+#define __________________SOUL_L1__________________ KC_Q, KC_W, KC_L, KC_D, KC_P
+#define __________________SOUL_L2__________________ KC_A, KC_S, KC_R, KC_T, KC_G
+#define __________________SOUL_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_J
+
+#define __________________SOUL_R1__________________ KC_K, KC_M, KC_U, KC_Y, KC_SCLN
+#define __________________SOUL_R2__________________ KC_F, KC_N, KC_E, KC_I, KC_O, KC_QUOTE
+#define __________________SOUL_R3__________________ KC_B, KC_H, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define __________________NIRO_L1__________________ KC_Q, KC_W, KC_U, KC_D, KC_P
+#define __________________NIRO_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_G
+#define __________________NIRO_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define __________________NIRO_R1__________________ KC_J, KC_F, KC_Y, KC_L, KC_SCLN
+#define __________________NIRO_R2__________________ KC_H, KC_N, KC_I, KC_R, KC_O, KC_QUOTE
+#define __________________NIRO_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________ASSET_L1__________________ KC_Q, KC_W, KC_J, KC_F, KC_G
+#define _________________ASSET_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_D
+#define _________________ASSET_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________ASSET_R1__________________ KC_Y, KC_P, KC_U, KC_L, KC_SCLN
+#define _________________ASSET_R2__________________ KC_H, KC_N, KC_I, KC_O, KC_R, KC_QUOTE
+#define _________________ASSET_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________MTGAP_L1__________________ KC_Y, KC_P, KC_O, KC_U, KC_J
+#define _________________MTGAP_L2__________________ KC_I, KC_N, KC_E, KC_A, KC_COMM
+#define _________________MTGAP_L3__________________ KC_Q, KC_Z, KC_SLSH, KC_DOT, KC_SCLN
+
+#define _________________MTGAP_R1__________________ KC_K, KC_D, KC_L, KC_C, KC_W
+#define _________________MTGAP_R2__________________ KC_M, KC_H, KC_T, KC_S, KC_R, KC_QUOTE
+#define _________________MTGAP_R3__________________ KC_B, KC_F, KC_G, KC_V, KC_X
+
+
+#define _________________MINIMAK_L1________________ KC_Q, KC_W, KC_D, KC_R, KC_K
+#define _________________MINIMAK_L2________________ KC_A, KC_S, KC_T, KC_F, KC_G
+#define _________________MINIMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________MINIMAK_R1________________ KC_Y, KC_U, KC_I, KC_O, KC_P
+#define _________________MINIMAK_R2________________ KC_H, KC_J, KC_E, KC_L, KC_SCLN, KC_QUOT
+#define _________________MINIMAK_R3________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define ________________MINIMAK_8_L1_______________ KC_Q, KC_W, KC_D, KC_R, KC_K
+#define ________________MINIMAK_8_L2_______________ KC_A, KC_S, KC_T, KC_F, KC_G
+#define ________________MINIMAK_8_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define ________________MINIMAK_8_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_P
+#define ________________MINIMAK_8_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_SCLN, KC_QUOT
+#define ________________MINIMAK_8_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _______________MINIMAK_12_L1_______________ KC_Q, KC_W, KC_D, KC_F, KC_K
+#define _______________MINIMAK_12_L2_______________ KC_A, KC_S, KC_T, KC_R, KC_G
+#define _______________MINIMAK_12_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _______________MINIMAK_12_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_SCLN
+#define _______________MINIMAK_12_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_P, KC_QUOT
+#define _______________MINIMAK_12_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
+#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
+#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
+#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+
+#define ___________________BLANK___________________ _______, _______, _______, _______, _______
+
+
+#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
+#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________
+#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________
+
+#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
+#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+
+
+
+#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________
+#define _________________RAISE_L2__________________ ___________________BLANK___________________
+#define _________________RAISE_L3__________________ ___________________BLANK___________________
+
+#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
+#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
+#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+
+
+
+#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
+#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM
+#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
+
+#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
+#define _________________ADJUST_R2_________________ CG_SWAP, DEFLYR1, DEFLYR2, DEFLYR3, DEFLYR4
+#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
+
+// clang-format on
diff --git a/users/drashna/readme_wrappers.md b/users/drashna/keyrecords/wrappers.md
index fd62ff1609..fd62ff1609 100644
--- a/users/drashna/readme_wrappers.md
+++ b/users/drashna/keyrecords/wrappers.md
diff --git a/users/drashna/oled/drashna_font.h b/users/drashna/oled/drashna_font.h
new file mode 100644
index 0000000000..7ba03c4c13
--- /dev/null
+++ b/users/drashna/oled/drashna_font.h
@@ -0,0 +1,1404 @@
+#pragma once
+
+// additional fonts from
+// https://github.com/datacute/TinyOLED-Fonts
+
+#if __has_include("oled_font.h")
+# include "oled_font.h"
+#else
+
+// additional fonts from
+// https://github.com/datacute/TinyOLED-Fonts
+
+# include "progmem.h"
+
+// clang-format off
+static const unsigned char font[] PROGMEM = {
+ 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+
+# if defined(OLED_FONT_5X5)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00,
+ 0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00,
+ 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
+ 0x28, 0x54, 0x54, 0x20, 0x50, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x44, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x38, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00,
+ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x10, 0x0c, 0x00, 0x00, 0x00,
+ 0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00,
+ 0x48, 0x7c, 0x40, 0x00, 0x00, 0x00,
+ 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x3c, 0x20, 0x70, 0x20, 0x20, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x64, 0x14, 0x0c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x28, 0x00,
+ 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
+ 0x08, 0x04, 0x54, 0x08, 0x00, 0x00,
+ 0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
+ 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
+ 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
+ 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
+ 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
+ 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
+ 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
+ 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
+ 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
+ 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
+ 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
+ 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x10, 0x60, 0x00, 0x00, 0x00,
+ 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
+ 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
+ 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
+ 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
+ 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
+ 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
+ 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
+ 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
+ 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
+ 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
+ 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
+ 0x10, 0x7c, 0x44, 0x00, 0x00, 0x00,
+ 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# lif defined(OLED_FONT_AZTECH)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00,
+ 0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a,
+ 0x00, 0x06, 0x06, 0x26, 0x18, 0x06,
+ 0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x18, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00,
+ 0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00,
+ 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x18, 0x06, 0x00, 0x00,
+ 0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e,
+ 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e,
+ 0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00,
+ 0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08,
+ 0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e,
+ 0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38,
+ 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e,
+ 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x00, 0x00,
+ 0x00, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x22, 0x14, 0x08, 0x00, 0x00,
+ 0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06,
+ 0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a,
+ 0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e,
+ 0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38,
+ 0x00, 0x3e, 0x22, 0x22, 0x20, 0x30,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c,
+ 0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30,
+ 0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02,
+ 0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38,
+ 0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e,
+ 0x00, 0x22, 0x3e, 0x22, 0x00, 0x00,
+ 0x00, 0x30, 0x20, 0x20, 0x22, 0x3e,
+ 0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38,
+ 0x00, 0x3e, 0x20, 0x20, 0x20, 0x30,
+ 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
+ 0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
+ 0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
+ 0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38,
+ 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a,
+ 0x00, 0x06, 0x02, 0x3e, 0x02, 0x06,
+ 0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e,
+ 0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00,
+ 0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e,
+ 0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a,
+ 0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e,
+ 0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e,
+ 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x0c, 0x30, 0x00, 0x00,
+ 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x20, 0x20, 0x20, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x28, 0x28, 0x08, 0x38,
+ 0x00, 0x3e, 0x20, 0x28, 0x28, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x20, 0x30,
+ 0x00, 0x38, 0x28, 0x28, 0x20, 0x3e,
+ 0x00, 0xf8, 0x88, 0x28, 0x28, 0x38,
+ 0x00, 0xf8, 0x28, 0x28, 0x18, 0x08,
+ 0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8,
+ 0x00, 0x3c, 0x08, 0x08, 0x08, 0x38,
+ 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xfa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c,
+ 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x08, 0x38, 0x20, 0x38,
+ 0x38, 0x38, 0x08, 0x38, 0x20, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x28, 0x38,
+ 0x00, 0xf8, 0x08, 0x28, 0x28, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x08, 0xf8,
+ 0x00, 0x38, 0x08, 0x08, 0x18, 0x08,
+ 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8,
+ 0x00, 0x3e, 0x28, 0x28, 0x20, 0x30,
+ 0x00, 0x38, 0x20, 0x20, 0x20, 0x38,
+ 0x00, 0x38, 0x20, 0x38, 0x00, 0x00,
+ 0x00, 0x38, 0x20, 0x38, 0x08, 0x38,
+ 0x38, 0x28, 0x38, 0x10, 0x38, 0x28,
+ 0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8,
+ 0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38,
+ 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_BMPLAIN)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00,
+ 0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00,
+ 0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a,
+ 0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1c, 0x22, 0x00, 0x00, 0x00, 0x00,
+ 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00,
+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00,
+ 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
+ 0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00,
+ 0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00,
+ 0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x22, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00,
+ 0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00,
+ 0x22, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x38, 0x20, 0x20, 0x20, 0x3e, 0x00,
+ 0x3e, 0x08, 0x08, 0x14, 0x22, 0x00,
+ 0x3e, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00,
+ 0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00,
+ 0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x02, 0x02, 0x3e, 0x02, 0x02, 0x00,
+ 0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00,
+ 0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00,
+ 0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00,
+ 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
+ 0x02, 0x04, 0x38, 0x04, 0x02, 0x00,
+ 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
+ 0x3e, 0x22, 0x00, 0x00, 0x00, 0x00,
+ 0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00,
+ 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20,
+ 0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00,
+ 0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00,
+ 0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00,
+ 0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00,
+ 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3e, 0x08, 0x14, 0x22, 0x00, 0x00,
+ 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00,
+ 0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x3c, 0x04, 0x04, 0x04, 0x00, 0x00,
+ 0x24, 0x2c, 0x34, 0x24, 0x00, 0x00,
+ 0x04, 0x3e, 0x24, 0x24, 0x00, 0x00,
+ 0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00,
+ 0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00,
+ 0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00,
+ 0x24, 0x24, 0x18, 0x24, 0x24, 0x00,
+ 0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00,
+ 0x24, 0x34, 0x2c, 0x24, 0x00, 0x00,
+ 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00,
+ 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_CRACKERS)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5E, 0x06, 0x06, 0x00, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00,
+ 0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08,
+ 0x48, 0xFE, 0x64, 0x64, 0x00, 0x00,
+ 0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C,
+ 0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00,
+ 0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00,
+ 0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04,
+ 0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00,
+ 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
+ 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
+ 0x60, 0x78, 0x78, 0x1E, 0x06, 0x00,
+ 0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E,
+ 0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00,
+ 0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00,
+ 0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00,
+ 0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00,
+ 0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00,
+ 0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00,
+ 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
+ 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00,
+ 0x14, 0x14, 0x14, 0x00, 0x00, 0x00,
+ 0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00,
+ 0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30,
+ 0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00,
+ 0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00,
+ 0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E,
+ 0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00,
+ 0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E,
+ 0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C,
+ 0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00,
+ 0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
+ 0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00,
+ 0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00,
+ 0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00,
+ 0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C,
+ 0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62,
+ 0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00,
+ 0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00,
+ 0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00,
+ 0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x02, 0x06, 0x06, 0x04, 0x00, 0x00,
+ 0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00,
+ 0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00,
+ 0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00,
+ 0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00,
+ 0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00,
+ 0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
+ 0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00,
+ 0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C,
+ 0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00,
+ 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
+ 0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00,
+ 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
+ 0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00,
+ 0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00,
+ 0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00,
+ 0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00,
+ 0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00,
+ 0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78,
+ 0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00,
+ 0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00,
+ 0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00,
+ 0x24, 0x7E, 0x42, 0x42, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x42, 0x7E, 0x24, 0x00, 0x00, 0x00,
+ 0x04, 0x06, 0x06, 0x02, 0x04, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_EIN)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x78, 0x14, 0x14, 0x78, 0x00, 0x00,
+ 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x00, 0x00,
+ 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00,
+ 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00,
+ 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00,
+ 0x38, 0x44, 0x54, 0x34, 0x00, 0x00,
+ 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00,
+ 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00,
+ 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00,
+ 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x38, 0x00, 0x00,
+ 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00,
+ 0x38, 0x44, 0x24, 0x58, 0x00, 0x00,
+ 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00,
+ 0x48, 0x54, 0x54, 0x24, 0x00, 0x00,
+ 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00,
+ 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00,
+ 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+# elif defined(OLED_FONT_HISKYF21)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00,
+ 0x48, 0x54, 0x54, 0xFE, 0x54, 0x54,
+ 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
+ 0x28, 0x54, 0x54, 0x54, 0x74, 0x10,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x78, 0x84, 0x00, 0x00, 0x00, 0x00,
+ 0x84, 0x78, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x30, 0x30, 0x48, 0x00, 0x00,
+ 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x10, 0x0C, 0x00, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x28, 0x00,
+ 0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00,
+ 0x4C, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x44, 0x24, 0x14, 0x0C, 0x00, 0x00,
+ 0x28, 0x54, 0x54, 0x54, 0x54, 0x28,
+ 0x08, 0x54, 0x54, 0x54, 0x54, 0x38,
+ 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
+ 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
+ 0x04, 0x54, 0x14, 0x14, 0x08, 0x00,
+ 0x38, 0x44, 0x5C, 0x54, 0x48, 0x00,
+ 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
+ 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
+ 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
+ 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
+ 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
+ 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
+ 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
+ 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
+ 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
+ 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
+ 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
+ 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
+ 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
+ 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0xFC, 0x84, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x10, 0x60, 0x00, 0x00, 0x00,
+ 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
+ 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
+ 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
+ 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
+ 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
+ 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
+ 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
+ 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
+ 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
+ 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
+ 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
+ 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
+ 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
+ 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_SUPER_DIGG)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00,
+ 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60,
+ 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00,
+ 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00,
+ 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
+ 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C,
+ 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70,
+ 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70,
+ 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00,
+ 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C,
+ 0x50, 0x50, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x18, 0x24, 0x42, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
+ 0x42, 0x24, 0x18, 0x18, 0x00, 0x00,
+ 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C,
+ 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54,
+ 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
+ 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
+ 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
+ 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
+ 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
+ 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
+ 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
+ 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
+ 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
+ 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
+ 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
+ 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
+ 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
+ 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
+ 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
+ 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
+ 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00,
+ 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00,
+ 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x01, 0x06, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
+ 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
+ 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
+ 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
+ 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
+ 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
+ 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
+ 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
+ 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
+ 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
+ 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
+ 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
+ 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
+ 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
+ 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
+ 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
+ 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00,
+ 0x00, 0x44, 0x77, 0x00, 0x00, 0x00,
+ 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x03, 0x04, 0x06, 0x02,
+ 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00,
+#elif defined (OLED_FONT_ZXPIX)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12,
+ 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
+ 0x23, 0x13, 0x08, 0x04, 0x32, 0x31,
+ 0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x1E, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x08,
+ 0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E,
+ 0x22, 0x21, 0x3F, 0x20, 0x20, 0x20,
+ 0x32, 0x29, 0x29, 0x29, 0x29, 0x26,
+ 0x12, 0x21, 0x21, 0x25, 0x25, 0x1A,
+ 0x18, 0x14, 0x12, 0x3F, 0x10, 0x10,
+ 0x17, 0x25, 0x25, 0x25, 0x25, 0x19,
+ 0x1E, 0x25, 0x25, 0x25, 0x25, 0x18,
+ 0x01, 0x01, 0x31, 0x09, 0x05, 0x03,
+ 0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A,
+ 0x06, 0x29, 0x29, 0x29, 0x29, 0x1E,
+ 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x01, 0x29, 0x05, 0x02,
+ 0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E,
+ 0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E,
+ 0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A,
+ 0x1E, 0x21, 0x21, 0x21, 0x21, 0x12,
+ 0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C,
+ 0x3F, 0x25, 0x25, 0x25, 0x25, 0x21,
+ 0x3F, 0x05, 0x05, 0x05, 0x05, 0x01,
+ 0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A,
+ 0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F,
+ 0x21, 0x21, 0x3F, 0x21, 0x21, 0x21,
+ 0x10, 0x20, 0x20, 0x20, 0x20, 0x1F,
+ 0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20,
+ 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F,
+ 0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F,
+ 0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E,
+ 0x3F, 0x09, 0x09, 0x09, 0x09, 0x06,
+ 0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E,
+ 0x3F, 0x09, 0x09, 0x09, 0x19, 0x26,
+ 0x12, 0x25, 0x25, 0x25, 0x25, 0x18,
+ 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01,
+ 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F,
+ 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F,
+ 0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F,
+ 0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21,
+ 0x01, 0x02, 0x0C, 0x38, 0x04, 0x02,
+ 0x21, 0x31, 0x29, 0x25, 0x23, 0x21,
+ 0x3F, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x21, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x3F, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00,
+ 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x0C, 0x14, 0x22, 0x22, 0x00, 0x00,
+ 0x18, 0x24, 0x24, 0x24, 0x3F, 0x00,
+ 0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00,
+ 0x3E, 0x05, 0x01, 0x00, 0x00, 0x00,
+ 0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00,
+ 0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00,
+ 0x24, 0x3D, 0x20, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00,
+ 0x1F, 0x20, 0x20, 0x00, 0x00, 0x00,
+ 0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00,
+ 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00,
+ 0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00,
+ 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x24, 0xFC, 0x80,
+ 0x3C, 0x04, 0x02, 0x02, 0x00, 0x00,
+ 0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00,
+ 0x02, 0x1F, 0x22, 0x20, 0x00, 0x00,
+ 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00,
+ 0x06, 0x18, 0x20, 0x18, 0x06, 0x00,
+ 0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00,
+ 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
+ 0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00,
+ 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22,
+ 0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# else // default font
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+# endif
+
+// top Logo section
+# if defined(OLED_LOGO_GMK_BAD)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
+ 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
+ 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
+ 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
+ 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
+ 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
+ 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
+ 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_HUE_MANITEE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
+ 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
+ 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
+ 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
+ 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_CORNE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
+ 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
+ 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
+ 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
+ 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
+ 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
+ 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
+ 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00,
+ 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09,
+ 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46,
+ 0x44, 0x44, 0x45, 0x44, 0x29, 0x28,
+ 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07,
+ 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
+ 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07,
+ 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_SKEEB)
+ 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F,
+ 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01,
+ 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF,
+ 0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9,
+ 0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9,
+ 0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F,
+ 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0,
+# else
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
+ 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
+ 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
+ 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
+ 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+#endif
+
+// First icon section
+ 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
+ 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
+ 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
+ 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
+ 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
+ 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00,
+ 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24,
+ 0x14, 0x36, 0x00, 0x36, 0x77, 0x77,
+
+// middle logo section
+# if defined(OLED_LOGO_GMK_BAD)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
+ 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
+ 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
+ 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
+ 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
+ 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
+ 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
+ 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
+ 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
+ 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
+ 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_HUE_MANITEE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
+ 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+ 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
+ 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
+ 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
+ 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
+ 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
+ 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_CORNE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
+ 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
+ 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
+ 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
+ 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00,
+ 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x14, 0x14, 0x14,
+ 0x14, 0x14, 0x08, 0x08, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE,
+ 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD,
+ 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C,
+ 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C,
+ 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_SKEEB)
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09,
+ 0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09,
+ 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+# else
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00,
+ 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F,
+ 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00,
+ 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E,
+ 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F,
+ 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
+ 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E,
+ 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00,
+ 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E,
+ 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F,
+ 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70,
+ 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49,
+ 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E,
+ 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69,
+ 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# endif
+
+// second icon section
+ 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
+ 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
+ 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
+ 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
+ 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
+ 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24,
+ 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0,
+ 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0,
+
+// bottom logo section
+# if defined(OLED_LOGO_GMK_BAD)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
+ 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
+ 0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
+ 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
+ 0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
+ 0x07, 0x07, 0x01, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_HUE_MANITEE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
+ 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_CORNE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
+ 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
+ 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
+ 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
+ 0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
+ 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+ 0x20, 0x47, 0x48, 0x50, 0x40, 0x41,
+ 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F,
+ 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31,
+ 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A,
+ 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70,
+ 0x50, 0x70, 0x50, 0x70, 0x50, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x70,
+ 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
+ 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x51, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_SKEEB)
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF,
+ 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
+ 0x03, 0x04, 0x08, 0x10, 0x20, 0x40,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x40, 0x20, 0x10, 0x08, 0x04, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
+ 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80,
+ 0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+#else
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
+ 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
+ 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
+ 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+#endif
+
+// third icon section
+ 0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00,
+ 0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00,
+ 0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00,
+ 0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00,
+ 0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x70, 0x77, 0x00,
+ 0x1F, 0x05, 0x00, 0x00, 0x77, 0x00,
+
+// fourth icon section
+ 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
+ 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
+ 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
+ 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
+ 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
+ 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
+ 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
+ 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
+ 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
+ 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
+ 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
+ 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
+ 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
+ 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
+ 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
+ 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
+ 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
+ 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
+ 0x1F, 0x05, 0x00, 0x10, 0x77, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ };
+// clang-format on
+#endif
diff --git a/users/drashna/oled/oled_stuff.c b/users/drashna/oled/oled_stuff.c
new file mode 100644
index 0000000000..c850c5336f
--- /dev/null
+++ b/users/drashna/oled/oled_stuff.c
@@ -0,0 +1,1120 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2021 John Ezra - wpm graph
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "drashna.h"
+#ifdef UNICODE_COMMON_ENABLE
+# include "process_unicode_common.h"
+#endif
+#include <string.h>
+
+extern bool host_driver_disabled;
+
+uint32_t oled_timer = 0;
+char keylog_str[OLED_KEYLOGGER_LENGTH] = {0};
+static uint16_t log_timer = 0;
+static const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0};
+
+deferred_token kittoken;
+
+// clang-format off
+static const char PROGMEM code_to_name[256] = {
+// 0 1 2 3 4 5 6 7 8 9 A B c D E F
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
+ 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
+ '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
+ ']','\\', '#', ';','\'', '`', ',', '.', '/', 128,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA, // 3x
+ 0xDB,0xDC,0xDD,0xDE,0XDF,0xFB,'P', 'S', 19, ' ', 17, 30, 16, 16, 31, 26, // 4x
+ 27, 25, 24, 'N', '/', '*', '-', '+', 23, '1', '2', '3', '4', '5', '6', '7', // 5x
+ '8', '9', '0', '.','\\', 'A', 0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
+ ' ', ' ', ' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
+ 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24, 26, 24, // Ex
+ 25,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 24, 25, 27, 26, ' ', ' ', ' ' // Fx
+};
+// clang-format on
+
+/**
+ * @brief parses pressed keycodes and saves to buffer
+ *
+ * @param keycode Keycode pressed from switch matrix
+ * @param record keyrecord_t data structure
+ */
+void add_keylog(uint16_t keycode, keyrecord_t *record) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
+ if (((keycode & 0xFF) == KC_BSPC) && mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) {
+ memset(keylog_str, ' ', OLED_KEYLOGGER_LENGTH);
+ return;
+ }
+ if (record->tap.count) {
+ keycode &= 0xFF;
+ } else if (keycode > 0xFF) {
+ return;
+ }
+ }
+ if (keycode > 0xFF) {
+ return;
+ }
+
+ memmove(keylog_str, keylog_str + 1, OLED_KEYLOGGER_LENGTH - 1);
+
+ if (keycode < (sizeof(code_to_name) / sizeof(char))) {
+ keylog_str[(OLED_KEYLOGGER_LENGTH - 1)] = pgm_read_byte(&code_to_name[keycode]);
+ }
+
+ log_timer = timer_read();
+}
+
+/**
+ * @brief Keycode handler for oled display.
+ *
+ * This adds pressed keys to buffer, but also resets the oled timer
+ *
+ * @param keycode Keycode from matrix
+ * @param record keyrecord data struture
+ * @return true
+ * @return false
+ */
+bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ oled_timer = timer_read32();
+ add_keylog(keycode, record);
+ }
+ return true;
+}
+
+void update_log(void) {
+ if (timer_elapsed(log_timer) > 750) {
+ // add_keylog(0);
+ }
+}
+
+/**
+ * @brief Renders keylogger buffer to oled
+ *
+ */
+void render_keylogger_status(void) {
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_set_cursor(1, 6);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false);
+ oled_write(keylog_str, false);
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_advance_page(true);
+#endif
+}
+
+/**
+ * @brief Renders default layer state (aka layout) to oled
+ *
+ */
+void render_default_layer_state(void) {
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_set_cursor(1, 1);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
+ break;
+ case _COLEMAK_DH:
+ oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false);
+ break;
+ case _COLEMAK:
+ oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false);
+ break;
+ case _DVORAK:
+ oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false);
+ break;
+ }
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_advance_page(true);
+#endif
+}
+
+/**
+ * @brief Renders the active layers to the OLED
+ *
+ */
+void render_layer_state(void) {
+#ifdef OLED_DISPLAY_VERBOSE
+ // clang-format off
+ static const char PROGMEM tri_layer_image[][3][24] = {
+ // base
+ {
+ {
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40,
+ 0x40, 0x20, 0x20, 0x10, 0x10, 0x08,
+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x40,
+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x88, 0x88, 0x5D,
+ 0x5D, 0x3E, 0x3E, 0x7C, 0x7C, 0xF8,
+ 0xF8, 0x7C, 0x7C, 0x3E, 0x3E, 0x5D,
+ 0x5D, 0x88, 0x88, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x02, 0x02, 0x04, 0x04, 0x08,
+ 0x08, 0x04, 0x04, 0x02, 0x02, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ },
+ // raise
+ {
+ {
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0,
+ 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8,
+ 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0,
+ 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x88, 0x88, 0x55,
+ 0x55, 0x23, 0x23, 0x47, 0x47, 0x8F,
+ 0x8F, 0x47, 0x47, 0x23, 0x23, 0x55,
+ 0x55, 0x88, 0x88, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x02, 0x02, 0x04, 0x04, 0x08,
+ 0x08, 0x04, 0x04, 0x02, 0x02, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ },
+ // lower
+ {
+ {
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40,
+ 0x40, 0x20, 0x20, 0x10, 0x10, 0x08,
+ 0x08, 0x10, 0x10, 0x20, 0x20, 0x40,
+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x88, 0x88, 0xD5,
+ 0xD5, 0xE2, 0xE2, 0xC4, 0xC4, 0x88,
+ 0x88, 0xC4, 0xC4, 0xE2, 0xE2, 0xD5,
+ 0xD5, 0x88, 0x88, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F,
+ 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ },
+ // adjust
+ {
+ {
+ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40,
+ 0xC0, 0x60, 0xA0, 0x50, 0xB0, 0x58,
+ 0xA8, 0x50, 0xB0, 0x60, 0xA0, 0x40,
+ 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x88, 0x88, 0x5D,
+ 0xD5, 0x6B, 0xB6, 0x6D, 0xD6, 0xAD,
+ 0xDA, 0x6D, 0xD6, 0x6B, 0xB6, 0x5D,
+ 0xD5, 0x88, 0x88, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x03, 0x02, 0x05, 0x06, 0x0D,
+ 0x0A, 0x05, 0x06, 0x03, 0x02, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ },
+ // blank
+ {
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+ },
+ // better gamepad
+ {
+ { 0, 0, 0,192,224,224,112,240,240,240,240,144,144,240,240,240,240,112,224,224,192, 0, 0, 0 },
+ { 128,248,255,255,255,254,252,230,195,195,230,255,255,254,247,227,246,253,254,255,255,255,248,128 },
+ { 7, 15, 15, 15, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 15, 15, 15, 7 }
+
+ },
+ // mouse
+ {
+ { 0, 0, 0, 0, 0, 0, 0, 0,192, 32, 32, 32,160, 32, 32, 32,192, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0,240, 15, 0, 0, 0, 3, 0, 0, 0, 15,240, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 3, 6, 4, 4, 4, 4, 4, 4, 4, 6, 3, 0, 0, 0, 0, 0, 0 }
+ }
+ };
+
+
+ // clang-format on
+ uint8_t layer_is[4] = { 0, 4, 4, 4};
+ if (layer_state_is(_ADJUST)) {
+ layer_is[0] = 3;
+ } else if (layer_state_is(_RAISE)) {
+ layer_is[0] = 1;
+ } else if (layer_state_is(_LOWER)) {
+ layer_is[0] = 2;
+ }
+
+ if (layer_state_is(_MOUSE)) {
+ layer_is[1] = 6;
+ }
+ if (layer_state_is(_GAMEPAD)) {
+ layer_is[2] = 5;
+ }
+
+
+ oled_set_cursor(1, 2);
+ oled_write_raw_P(tri_layer_image[layer_is[0]][0], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(5, 2);
+ oled_write_raw_P(tri_layer_image[layer_is[1]][0], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(9, 2);
+ oled_write_raw_P(tri_layer_image[layer_is[2]][0], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(14, 2);
+ oled_write_P(PSTR("Diablo2"), layer_state_is(_DIABLOII));
+ oled_advance_page(true);
+
+ oled_set_cursor(1, 3);
+ oled_write_raw_P(tri_layer_image[layer_is[0]][1], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(5, 3);
+ oled_write_raw_P(tri_layer_image[layer_is[1]][1], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(9, 3);
+ oled_write_raw_P(tri_layer_image[layer_is[2]][1], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(14, 3);
+ oled_write_P(PSTR("Diablo3"), layer_state_is(_DIABLO));
+ oled_advance_page(true);
+
+ oled_set_cursor(1, 4);
+ oled_write_raw_P(tri_layer_image[layer_is[0]][2], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(5, 4);
+ oled_write_raw_P(tri_layer_image[layer_is[1]][2], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(9, 4);
+ oled_write_raw_P(tri_layer_image[layer_is[2]][2], sizeof(tri_layer_image[0][0]));
+ oled_set_cursor(14, 4);
+ oled_write_P(PSTR("Media"), layer_state_is(_MEDIA));
+#else
+ oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
+ oled_write_P(PSTR(OLED_RENDER_LAYER_LOWER), layer_state_is(_LOWER));
+ oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
+#endif
+ oled_advance_page(true);
+}
+
+/**
+ * @brief Renders the current lock status to oled
+ *
+ * @param led_usb_state Current keyboard led state
+ */
+void render_keylock_status(uint8_t led_usb_state) {
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_set_cursor(1, 6);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
+#if !defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
+#endif
+}
+
+/**
+ * @brief Renders the matrix scan rate to the host system
+ *
+ */
+void render_matrix_scan_rate(uint8_t padding) {
+#ifdef DEBUG_MATRIX_SCAN_RATE
+ oled_write_P(PSTR("MS:"), false);
+ if (padding) {
+ for (uint8_t n = padding; n > 0; n--) {
+ oled_write_P(PSTR(" "), false);
+ }
+ }
+ oled_write(get_u16_str(get_matrix_scan_rate(), ' '), false);
+#endif
+}
+
+/**
+ * @brief Renders the modifier state
+ *
+ * @param modifiers Modifiers to check against (real, weak, onesheot, etc;)
+ */
+void render_mod_status(uint8_t modifiers) {
+ static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_set_cursor(1, 5);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_LSHIFT)));
+ oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_LGUI)));
+ oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_LALT)));
+ oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_LCTL)));
+ oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_RCTL)));
+ oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_RALT)));
+ oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_RGUI)));
+ oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_RSHIFT)));
+#else
+ oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
+ oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
+ oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
+#endif
+}
+
+#ifdef SWAP_HANDS_ENABLE
+extern bool swap_hands;
+#endif
+
+void render_bootmagic_status(void) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+
+ bool is_bootmagic_on;
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_set_cursor(7, 3);
+ is_bootmagic_on = !keymap_config.swap_lctl_lgui;
+#else
+ is_bootmagic_on = keymap_config.swap_lctl_lgui;
+#endif
+
+#ifdef OLED_DISPLAY_VERBOSE
+ if (keymap_config.swap_lctl_lgui)
+#else
+ oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NAME), false);
+ oled_write_P(PSTR(" "), false);
+#endif
+ {
+ oled_write_P(logo[1][0], is_bootmagic_on);
+#ifdef OLED_DISPLAY_VERBOSE
+ } else {
+#endif
+ oled_write_P(logo[0][0], !is_bootmagic_on);
+ }
+#ifndef OLED_DISPLAY_VERBOSE
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(logo[1][1], is_bootmagic_on);
+ oled_write_P(logo[0][1], !is_bootmagic_on);
+#endif
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
+ oled_write_P(PSTR(" "), false);
+#ifdef AUTOCORRECTION_ENABLE
+ oled_write_P(PSTR("CRCT"), userspace_config.autocorrection);
+ oled_write_P(PSTR(" "), false);
+#else
+ oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui);
+#endif
+#ifdef OLED_DISPLAY_VERBOSE
+ oled_set_cursor(7, 4);
+ if (keymap_config.swap_lctl_lgui) {
+ oled_write_P(logo[1][1], is_bootmagic_on);
+ } else {
+ oled_write_P(logo[0][1], !is_bootmagic_on);
+ }
+#endif
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_ONESHOT), !is_oneshot_enabled());
+#ifdef SWAP_HANDS_ENABLE
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_SWAP), swap_hands);
+ oled_write_P(PSTR(" "), false);
+#endif
+}
+
+#if defined(POINTING_DEVICE_ENABLE)
+extern bool tap_toggling;
+#endif
+
+void render_user_status(void) {
+#ifdef AUDIO_ENABLE
+ bool is_audio_on = false, is_clicky_on = false;
+# ifdef SPLIT_KEYBOARD
+
+ is_audio_on = user_state.audio_enable;
+ is_clicky_on = user_state.audio_clicky_enable;
+# else
+ is_audio_on = is_audio_on();
+ is_clicky_on = is_clicky_on();
+# endif
+#endif
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_set_cursor(1, 5);
+#endif
+ oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
+#if !defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+#endif
+#if defined(RGB_MATRIX_ENABLE)
+ oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
+# if !defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+# endif
+#elif defined(POINTING_DEVICE_ENABLE)
+ static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0};
+ oled_write_P(mouse_lock, tap_toggling);
+#endif
+#ifdef AUDIO_ENABLE
+ static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
+ oled_write_P(audio_status[is_audio_on], false);
+
+# ifdef AUDIO_CLICKY
+ static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
+ oled_write_P(audio_clicky_status[is_clicky_on && is_audio_on], false);
+# if !defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+# endif
+# endif
+#endif
+
+ static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
+ oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
+ static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
+ oled_write_P(cat_mode[0], host_driver_disabled);
+#if defined(UNICODE_COMMON_ENABLE)
+ static const char PROGMEM uc_mod_status[5][3] = {{0xEC, 0xED, 0}, {0x20, 0x20, 0}, {0x20, 0x20, 0}, {0x20, 0x20, 0}, {0xEA, 0xEB, 0}};
+ oled_write_P(uc_mod_status[get_unicode_input_mode()], false);
+#endif
+ if (userspace_config.nuke_switch) {
+#if !defined(OLED_DISPLAY_VERBOSE)
+ oled_write_P(PSTR(" "), false);
+#endif
+ static const char PROGMEM nukem_good[2] = {0xFA, 0};
+ oled_write_P(nukem_good, false);
+#if !defined(OLED_DISPLAY_VERBOSE)
+ oled_advance_page(true);
+#endif
+ }
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_advance_page(true);
+#endif
+}
+
+void render_wpm(uint8_t padding) {
+#ifdef WPM_ENABLE
+
+ oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
+ if (padding) {
+ for (uint8_t n = padding; n > 0; n--) {
+ oled_write_P(PSTR(" "), false);
+ }
+ }
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+#endif
+}
+
+//============= USER CONFIG PARAMS ===============
+// wpm graph originally designed by john-ezra
+
+// for 128x128:
+// max_lines_graph = 54;
+// vertical_offset = 64;
+// for 128x64:
+// max_lines_graph = 64;
+// vertical_offset = 0;
+
+void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset) {
+ static uint16_t timer = 0;
+ static uint8_t x = OLED_DISPLAY_HEIGHT - 1;
+ uint8_t currwpm = get_current_wpm();
+ float max_wpm = OLED_WPM_GRAPH_MAX_WPM;
+
+ if (timer_elapsed(timer) > OLED_WPM_GRAPH_REFRESH_INTERVAL) { // check if it's been long enough before refreshing graph
+ x = (max_lines_graph - 1) - ((currwpm / max_wpm) * (max_lines_graph - 1)); // main calculation to plot graph line
+ for (uint8_t i = 0; i <= OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS - 1; i++) { // first draw actual value line
+ oled_write_pixel(3, x + i + vertical_offset, true);
+ }
+# ifdef OLED_WPM_GRAPH_VERTICAL_LINE
+ static uint8_t vert_count = 0;
+ if (vert_count == OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL) {
+ vert_count = 0;
+ while (x <= (max_lines_graph - 1)) {
+ oled_write_pixel(3, x + vertical_offset, true);
+ x++;
+ }
+ } else {
+ for (uint8_t i = (max_lines_graph - 1); i > x; i--) {
+ if (i % OLED_WPM_GRAPH_AREA_FILL_INTERVAL == 0) {
+ oled_write_pixel(3, i + vertical_offset, true);
+ }
+ }
+ vert_count++;
+ }
+# else
+ for (int i = (max_lines_graph - 1); i > x; i--) {
+ if (i % OLED_WPM_GRAPH_AREA_FILL_INTERVAL == 0) {
+ oled_write_pixel(3, i + vertical_offset, true);
+ }
+ }
+# endif
+ oled_pan(false); // then move the entire graph one pixel to the right
+ static const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0};
+ for (uint8_t i = 0; i < 7; i++) {
+ oled_set_cursor(0, i + 8);
+ oled_write_raw_P(display_border, sizeof(display_border));
+ oled_set_cursor(21, i + 8);
+ oled_write_raw_P(display_border, sizeof(display_border));
+ }
+ static const char PROGMEM footer_image[] = {0, 3, 4, 8, 16, 32, 64, 128, 128, 128, 128, 128, 128, 128, 192, 224, 240, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 240, 224, 192, 128, 128, 128, 128, 128, 128, 128, 64, 32, 16, 8, 4, 3, 0};
+ oled_set_cursor(0, 15);
+
+ oled_write_raw_P(footer_image, sizeof(footer_image));
+
+ timer = timer_read(); // refresh the timer for the next iteration
+ }
+}
+
+#if defined(POINTING_DEVICE_ENABLE)
+void render_pointing_dpi_status(uint16_t cpi, uint8_t padding) {
+ oled_write_P(PSTR("CPI:"), false);
+ if (padding) {
+ for (uint8_t n = padding - 1; n > 0; n--) {
+ oled_write_P(PSTR(" "), false);
+ }
+ }
+
+ oled_write(get_u16_str(cpi, ' '), false);
+}
+#endif
+
+__attribute__((weak)) void oled_driver_render_logo_right(void) {
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_set_cursor(0, 1);
+#endif
+ render_default_layer_state();
+}
+
+// WPM-responsive animation stuff here
+#define OLED_SLEEP_FRAMES 2
+#define OLED_SLEEP_SPEED 10 // below this wpm value your animation will idle
+
+#define OLED_WAKE_FRAMES 2 // uncomment if >1
+#define OLED_WAKE_SPEED OLED_SLEEP_SPEED // below this wpm value your animation will idle
+
+#define OLED_KAKI_FRAMES 3
+#define OLED_KAKI_SPEED 40 // above this wpm value typing animation to triggere
+
+#define OLED_RTOGI_FRAMES 2
+//#define OLED_LTOGI_FRAMES 2
+
+//#define ANIM_FRAME_DURATION 500 // how long each frame lasts in ms
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+#define OLED_ANIM_SIZE 32 // number of bytes in array, minimize for adequate firmware size, max is 1024
+#define OLED_ANIM_ROWS 4
+#define OLED_ANIM_MAX_FRAMES 3
+#if (OLED_SLEEP_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_WAKE_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_KAKI_FRAMES > OLED_ANIM_MAX_FRAMES) || (OLED_RTOGI_FRAMES > OLED_ANIM_MAX_FRAMES)
+# error frame size too large
+#endif
+
+static uint8_t animation_frame = 0;
+static uint8_t animation_type = 0;
+
+void render_kitty(void) {
+ // Images credit j-inc(/James Incandenza) and pixelbenny.
+ // Credit to obosob for initial animation approach.
+ // heavily modified by drashna because he's a glutton for punishment
+
+ // clang-format off
+ static const char PROGMEM animation[4][OLED_ANIM_MAX_FRAMES][OLED_ANIM_ROWS][OLED_ANIM_SIZE] = {
+ // sleep frames
+ {
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
+ 0xa8, 0x48, 0xa8, 0x18, 0x08, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x80,
+ 0x44, 0x84, 0x06, 0x05, 0x04, 0x80, 0x40, 0x20,
+ 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20,
+ 0x18, 0x04, 0x04, 0x02, 0x7a, 0x86, 0x01, 0x80,
+ 0x80, 0x01, 0x03, 0x05, 0x07, 0x01, 0x00, 0x00,
+ 0x80, 0x83, 0x45, 0xfa, 0x3c, 0xe0, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28,
+ 0x28, 0x29, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39,
+ 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00
+ }
+ },
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x22, 0x22, 0x3a, 0x2a, 0x26, 0x22, 0x80, 0xc0,
+ 0x80, 0x00, 0x24, 0x34, 0x2c, 0xe4, 0x60, 0x10,
+ 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x38,
+ 0x04, 0x02, 0x02, 0x01, 0x79, 0x87, 0x01, 0x80,
+ 0x81, 0x83, 0x05, 0x05, 0x03, 0x01, 0x00, 0x00,
+ 0x80, 0x43, 0x05, 0xfa, 0x3c, 0xe0, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x33, 0x24, 0x28,
+ 0x28, 0x28, 0x29, 0x29, 0x3a, 0x18, 0x1c, 0x39,
+ 0x24, 0x24, 0x3a, 0x2d, 0x26, 0x31, 0x1f, 0x00
+ }
+ }
+ },
+ // wake frames
+ {
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80,
+ 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7f, 0x80, 0x40, 0x40, 0x5c, 0x00, 0x01,
+ 0x41, 0x01, 0x00, 0x5c, 0x40, 0x40, 0x80, 0x7f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x00,
+ 0x80, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40,
+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14,
+ 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18,
+ 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10,
+ 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08
+ }
+ },
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0x30, 0x08, 0x10, 0x60, 0x80,
+ 0x00, 0x80, 0x60, 0x10, 0x08, 0x30, 0xc0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7f, 0x90, 0x12, 0x0a, 0x02, 0xf4, 0x09,
+ 0x0d, 0xf1, 0x04, 0x02, 0x0a, 0x12, 0x90, 0x7f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x40, 0x40, 0x80, 0xe1, 0x12, 0x0a, 0x06, 0x01,
+ 0x81, 0x00, 0x06, 0x0a, 0x12, 0xe1, 0x80, 0x40,
+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14,
+ 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18,
+ 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x11, 0x10, 0x10,
+ 0x14, 0x14, 0x1f, 0x1c, 0x14, 0x14, 0x14, 0x08
+ }
+ }
+ },
+ // kaki frames
+ {
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40,
+ 0x80, 0x80, 0x80, 0x00, 0xfc, 0x84, 0x08, 0x08,
+ 0x10, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0x60,
+ 0x80, 0x00, 0x00, 0x91, 0xa1, 0x80, 0x00, 0x00,
+ 0x22, 0x84, 0x40, 0x50, 0x48, 0xc1, 0x3e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x40, 0x41, 0x82, 0xe2, 0x12, 0x0a, 0x06, 0x00,
+ 0x80, 0x88, 0x4f, 0x02, 0x22, 0xe2, 0x9f, 0x40,
+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14,
+ 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18,
+ 0x0f, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10,
+ 0x14, 0x14, 0x1f, 0x1a, 0x0a, 0x0a, 0x04, 0x00
+ }
+ },
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x06, 0x1a, 0x22, 0xc2, 0x04, 0x04,
+ 0x04, 0x07, 0x00, 0xc0, 0x20, 0x10, 0x80, 0x80,
+ 0x01, 0x01, 0x02, 0xfc, 0xfe, 0x02, 0x3c, 0x20,
+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d,
+ 0x55, 0x50, 0x94, 0xf0, 0x10, 0x09, 0x08, 0x00,
+ 0x80, 0x00, 0x06, 0x09, 0x1b, 0xee, 0x00, 0x00,
+ 0x00, 0x00, 0x81, 0xfe, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14,
+ 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18,
+ 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c,
+ 0x14, 0x16, 0x15, 0x14, 0x14, 0x14, 0x14, 0x08
+ }
+ },
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x20, 0x40,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x01,
+ 0x02, 0x04, 0x04, 0x03, 0x80, 0x40, 0x40, 0x20,
+ 0x00, 0x01, 0x02, 0x8c, 0x70, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0d, 0x8d,
+ 0x55, 0x50, 0x94, 0xf0, 0x10, 0x0a, 0x0e, 0x1d,
+ 0x95, 0x24, 0x24, 0x27, 0x13, 0xe1, 0x01, 0x01,
+ 0x01, 0x01, 0x02, 0xfc, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1f, 0x14,
+ 0x14, 0x10, 0x10, 0x11, 0x1f, 0x10, 0x10, 0x18,
+ 0x0f, 0x18, 0x10, 0x10, 0x1f, 0x19, 0x18, 0x1c,
+ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x14, 0x08
+ }
+ }
+ },
+ // rtogi frames
+ {
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02,
+ 0x01, 0x0f, 0x90, 0x10, 0x20, 0xf0, 0xf8, 0xf8
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
+ 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x88, 0xc7, 0xc4, 0x62, 0x23, 0x11, 0x3f
+ },
+ {
+ 0x80, 0x40, 0x20, 0x10, 0x88, 0xcc, 0x43, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0,
+ 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c,
+ 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04,
+ 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ },
+ {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xc0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x02,
+ 0x01, 0x1f, 0xa0, 0x20, 0x40, 0x80, 0x00, 0xf0
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
+ 0x48, 0x47, 0x88, 0x00, 0x00, 0x00, 0x00, 0x24,
+ 0x24, 0x28, 0x6b, 0x40, 0xa0, 0x99, 0x86, 0xff
+ },
+ {
+ 0x0f, 0x11, 0x22, 0x44, 0x48, 0x4c, 0x43, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0,
+ 0x80, 0x80, 0xc0, 0xe1, 0xfe, 0xb8, 0x88, 0x0c,
+ 0x04, 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x06, 0x01
+ },
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04,
+ 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ }
+ }
+ };
+ // clang-format on
+
+ for (uint8_t i = 0; i < 4; i++) {
+ oled_set_cursor(1, i + 1);
+ oled_write_raw_P(animation[animation_type][animation_frame][i], OLED_ANIM_SIZE);
+ }
+}
+
+uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) {
+ static uint32_t anim_frame_duration = 500;
+#ifdef POINTING_DEVICE_ENABLE
+ if (tap_toggling) {
+ animation_frame = (animation_frame + 1) % OLED_RTOGI_FRAMES;
+ animation_type = 3;
+ anim_frame_duration = 300;
+ } else
+#endif
+ {
+#ifdef WPM_ENABLE
+ if (get_current_wpm() <= OLED_SLEEP_SPEED) {
+#endif
+ animation_frame = (animation_frame + 1) % OLED_SLEEP_FRAMES;
+ animation_type = 0;
+ anim_frame_duration = 500;
+#ifdef WPM_ENABLE
+ } else if (get_current_wpm() > OLED_WAKE_SPEED) {
+ animation_frame = (animation_frame + 1) % OLED_WAKE_FRAMES;
+ animation_type = 1;
+ anim_frame_duration = 800;
+ } else if (get_current_wpm() >= OLED_KAKI_SPEED) {
+ animation_frame = (animation_frame + 1) % OLED_KAKI_FRAMES;
+ animation_type = 2;
+ anim_frame_duration = 500;
+ }
+#endif
+ }
+ return anim_frame_duration;
+}
+
+void oled_driver_render_logo_left(void) {
+#if defined(OLED_DISPLAY_VERBOSE)
+ oled_set_cursor(0, 1);
+ render_kitty();
+
+# if defined(KEYBOARD_handwired_tractyl_manuform)
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("Tractyl"), true);
+# elif defined(KEYBOARD_bastardkb_charybdis)
+ oled_set_cursor(6, 0);
+ oled_write_P(PSTR("Charybdis"), true);
+# elif defined(KEYBOARD_splitkb_kyria)
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("SplitKB"), true);
+# else
+ oled_set_cursor(8, 0);
+ oled_write_P(PSTR("Left"), true);
+# endif
+ oled_set_cursor(7, 1);
+# if defined(WPM_ENABLE)
+ render_wpm(1);
+# elif defined(DEBUG_MATRIX_SCAN_RATE)
+ render_matrix_scan_rate(2);
+# endif
+ oled_set_cursor(7, 2);
+# if defined(KEYBOARD_bastardkb_charybdis)
+ render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1);
+
+// credit and thanks to jaspertandy on discord for these images
+ static const char PROGMEM mouse_logo[3][2][16] = {
+ // mouse icon
+ {
+ { 0, 0, 0, 252, 2, 2, 2, 58, 2, 2, 2, 252, 0, 0, 0, 0 },
+ { 0, 0, 63, 96, 64, 64, 64, 64, 64, 64, 64, 96, 63, 0, 0, 0 }
+ },
+ // crosshair icon
+ {
+ { 128, 240, 136, 228, 146, 138, 202, 127, 202, 138, 146, 228, 136, 240, 128, 0 },
+ { 0, 7, 8, 19, 36, 40, 41, 127, 41, 40, 36, 19, 8, 7, 0, 0 }
+ },
+ // dragscroll icon
+ {
+ { 0, 0, 112, 136, 156, 2, 15, 1, 15, 2, 140, 68, 56, 0, 0, 0 },
+ { 0, 0, 2, 6, 15, 28, 60, 124, 60, 28, 15, 6, 2, 0, 0, 0 }
+ }
+ };
+
+
+ uint8_t image_index = 0;
+# ifdef OLED_DISPLAY_TEST
+ image_index = animation_frame;
+# else
+ if (charybdis_get_pointer_sniping_enabled()) {
+ image_index = 1;
+ } else if (charybdis_get_pointer_dragscroll_enabled()) {
+ image_index = 2;
+ }
+# endif
+
+ oled_set_cursor(17, 1);
+ oled_write_raw_P(mouse_logo[image_index][0], 16);
+ oled_set_cursor(17, 2);
+ oled_write_raw_P(mouse_logo[image_index][1], 16);
+# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE)
+ render_matrix_scan_rate(2);
+# endif
+
+ oled_set_cursor(0, 5);
+#else
+ render_default_layer_state();
+#endif
+}
+
+void render_status_right(void) {
+#if defined(KEYBOARD_handwired_tractyl_manuform)
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("Manuform"), true);
+#elif defined(KEYBOARD_bastardkb_charybdis)
+ oled_set_cursor(6, 0);
+ oled_write_P(PSTR("Charybdis"), true);
+#elif defined(KEYBOARD_splitkb_kyria)
+ oled_set_cursor(8, 0);
+ oled_write_P(PSTR("Kyria"), true);
+#else
+ oled_set_cursor(8, 0);
+ oled_write_P(PSTR("Right"), true);
+#endif
+ oled_driver_render_logo_right();
+ /* Show Keyboard Layout */
+ render_layer_state();
+ render_mod_status(get_mods() | get_oneshot_mods());
+#if !defined(OLED_DISPLAY_VERBOSE) && defined(WPM_ENABLE) && !defined(CONVERT_TO_PROTON_C)
+ render_wpm(2);
+#endif
+ render_keylock_status(host_keyboard_leds());
+}
+
+void render_status_left(void) {
+ oled_driver_render_logo_left();
+
+ /* Show Keyboard Layout */
+ render_bootmagic_status();
+ render_user_status();
+
+ render_keylogger_status();
+}
+
+__attribute__((weak)) void oled_render_large_display(void) {}
+
+__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; }
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ memset(keylog_str, ' ', OLED_KEYLOGGER_LENGTH);
+ }
+
+ kittoken = defer_exec(3000, kitty_animation_phases, NULL);
+
+ oled_clear();
+ oled_render();
+ return oled_init_keymap(rotation);
+}
+
+__attribute__((weak)) bool oled_task_keymap(void) { return true; }
+
+bool oled_task_user(void) {
+ update_log();
+
+ if (is_keyboard_master()) {
+#ifndef OLED_DISPLAY_TEST
+ if (timer_elapsed32(oled_timer) > 60000) {
+ oled_off();
+ return false;
+ } else
+#endif
+ {
+ oled_on();
+ }
+ }
+
+ if (!oled_task_keymap()) {
+ return false;
+ }
+
+#if defined(OLED_DISPLAY_128X128)
+ oled_set_cursor(0, 7);
+ oled_render_large_display();
+#endif
+
+#if defined(OLED_DISPLAY_VERBOSE)
+ static const char PROGMEM header_image[] = {
+ 0, 192, 32, 16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 7, 15, 31, 63, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 63, 31, 15, 7, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16, 32, 192, 0,
+ // 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0
+ };
+ static const char PROGMEM footer_image[] = {0, 3, 4, 8, 16, 32, 64, 128, 128, 128, 128, 128, 128, 128, 192, 224, 240, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 240, 224, 192, 128, 128, 128, 128, 128, 128, 128, 64, 32, 16, 8, 4, 3, 0};
+ oled_set_cursor(0, 0);
+ oled_write_raw_P(header_image, sizeof(header_image));
+ oled_set_cursor(0, 1);
+#endif
+
+#ifndef OLED_DISPLAY_TEST
+ if (is_keyboard_left()) {
+#endif
+ render_status_left();
+#ifndef OLED_DISPLAY_TEST
+ } else {
+ render_status_right();
+ }
+#endif
+
+#if defined(OLED_DISPLAY_VERBOSE)
+ uint8_t num_of_rows;
+# if defined(OLED_DISPLAY_128X128)
+ num_of_rows = 15;
+# else
+ num_of_rows = 7;
+# endif
+ for (uint8_t i = 1; i < num_of_rows; i++) {
+ oled_set_cursor(0, i);
+ oled_write_raw_P(display_border, sizeof(display_border));
+ oled_set_cursor(21, i);
+ oled_write_raw_P(display_border, sizeof(display_border));
+ }
+
+ oled_set_cursor(0, num_of_rows);
+ oled_write_raw_P(footer_image, sizeof(footer_image));
+#endif
+
+ return false;
+}
diff --git a/users/drashna/oled/oled_stuff.h b/users/drashna/oled/oled_stuff.h
new file mode 100644
index 0000000000..7245f6131c
--- /dev/null
+++ b/users/drashna/oled/oled_stuff.h
@@ -0,0 +1,159 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "oled_driver.h"
+extern deferred_token kittoken;
+
+void oled_driver_render_logo(void);
+bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
+oled_rotation_t oled_init_keymap(oled_rotation_t rotation);
+extern uint32_t oled_timer;
+void render_keylogger_status(void);
+void render_default_layer_state(void);
+void render_layer_state(void);
+void render_keylock_status(uint8_t led_usb_state);
+void render_matrix_scan_rate(uint8_t padding);
+void render_mod_status(uint8_t modifiers);
+void render_bootmagic_status(void);
+void render_user_status(void);
+void oled_driver_render_logo(void);
+void render_wpm(uint8_t padding);
+void render_pointing_dpi_status(uint16_t cpi, uint8_t padding);
+void oled_driver_render_logo_left(void);
+void oled_driver_render_logo_right(void);
+void oled_render_large_display(void);
+void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset);
+
+#if defined(OLED_DISPLAY_128X128) || defined(OLED_DISPLAY_128X64)
+# define OLED_DISPLAY_VERBOSE
+
+# define OLED_RENDER_KEYLOGGER "Keylogger: "
+# ifndef OLED_KEYLOGGER_LENGTH
+# define OLED_KEYLOGGER_LENGTH 9
+# endif
+# define OLED_RENDER_LAYOUT_NAME "Layout: "
+# define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
+# define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak DH"
+# define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
+# define OLED_RENDER_LAYOUT_DVORAK "Dvorak"
+# define OLED_RENDER_LAYOUT_WORKMAN "Workman"
+# define OLED_RENDER_LAYOUT_NORMAN "Norman"
+# define OLED_RENDER_LAYOUT_MALTRON "Matron"
+# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
+# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
+
+# define OLED_RENDER_LAYER_NAME "Layer:"
+# define OLED_RENDER_LAYER_LOWER "Lower"
+# define OLED_RENDER_LAYER_RAISE "Raise"
+# define OLED_RENDER_LAYER_ADJUST "Adjust"
+# define OLED_RENDER_LAYER_MODS "Mods"
+
+# define OLED_RENDER_LOCK_NAME "Lock: "
+# define OLED_RENDER_LOCK_NUML "NUM"
+# define OLED_RENDER_LOCK_CAPS "CAPS"
+# define OLED_RENDER_LOCK_SCLK "SCLK"
+
+# define OLED_RENDER_MODS_NAME "Mods"
+# define OLED_RENDER_MODS_SFT "Sft"
+# define OLED_RENDER_MODS_CTL "Ctl"
+# define OLED_RENDER_MODS_ALT "Alt"
+# define OLED_RENDER_MODS_GUI "GUI"
+
+# define OLED_RENDER_BOOTMAGIC_NAME "Boot "
+# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
+# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
+# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
+# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
+# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
+# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
+
+# define OLED_RENDER_USER_NAME "USER:"
+# define OLED_RENDER_USER_ANIM "Anim"
+# define OLED_RENDER_USER_LAYR "Layr"
+# define OLED_RENDER_USER_NUKE "Nuke"
+
+# define OLED_RENDER_WPM_COUNTER "WPM: "
+#else
+# define OLED_RENDER_KEYLOGGER "KLogr"
+# ifndef OLED_KEYLOGGER_LENGTH
+# define OLED_KEYLOGGER_LENGTH 5
+# endif
+
+# define OLED_RENDER_LAYOUT_NAME "Lyout"
+# define OLED_RENDER_LAYOUT_QWERTY " QRTY"
+# define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH"
+# define OLED_RENDER_LAYOUT_COLEMAK " COLE"
+# define OLED_RENDER_LAYOUT_DVORAK " DVRK"
+# define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
+# define OLED_RENDER_LAYOUT_NORMAN " NORM"
+# define OLED_RENDER_LAYOUT_MALTRON " MLTN"
+# define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
+# define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
+
+# define OLED_RENDER_LAYER_NAME "LAYER"
+# define OLED_RENDER_LAYER_LOWER "Lower"
+# define OLED_RENDER_LAYER_RAISE "Raise"
+# define OLED_RENDER_LAYER_ADJUST "Adjst"
+# define OLED_RENDER_LAYER_MODS " Mods"
+
+# define OLED_RENDER_LOCK_NAME "Lock:"
+# define OLED_RENDER_LOCK_NUML "NumL"
+# define OLED_RENDER_LOCK_CAPS "CapL"
+# define OLED_RENDER_LOCK_SCLK "ScrL"
+
+# define OLED_RENDER_MODS_NAME "Mods: "
+# define OLED_RENDER_MODS_SFT "Shft"
+# define OLED_RENDER_MODS_CTL "Ctrl"
+# define OLED_RENDER_MODS_ALT "Alt\n"
+# define OLED_RENDER_MODS_GUI "GUI\n"
+
+# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
+# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
+# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
+# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
+# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
+# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
+# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
+
+# define OLED_RENDER_USER_NAME "USER:"
+# define OLED_RENDER_USER_ANIM "Anim"
+# define OLED_RENDER_USER_LAYR "Layr"
+# define OLED_RENDER_USER_NUKE "Nuke"
+
+# define OLED_RENDER_WPM_COUNTER "WPM: "
+#endif
+
+
+extern char keylog_str[OLED_KEYLOGGER_LENGTH];
+
+#ifndef OLED_WPM_GRAPH_MAX_WPM
+# define OLED_WPM_GRAPH_MAX_WPM 120
+#endif
+#ifndef OLED_WPM_GRAPH_REFRESH_INTERVAL
+# define OLED_WPM_GRAPH_REFRESH_INTERVAL 300
+#endif
+#ifndef OLED_WPM_GRAPH_AREA_FILL_INTERVAL
+# define OLED_WPM_GRAPH_AREA_FILL_INTERVAL 3
+#endif
+#ifndef OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL
+# define OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL 3
+#endif
+#ifndef OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS
+# define OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS 2
+#endif
diff --git a/users/drashna/oled/readme.md b/users/drashna/oled/readme.md
new file mode 100644
index 0000000000..dbb8187d49
--- /dev/null
+++ b/users/drashna/oled/readme.md
@@ -0,0 +1,42 @@
+# OLED Display
+
+To disable the pre genrated oled display, add `CUSTOM_OLED_DRIVER = no` to your `rules.mk`.
+
+<!-- to do: add all the stuff -->
+## OLED Font
+
+My font file has multiple fonts and multiple logs integrated into the one file. And it uses the full 255 possible characters.
+
+In addition to the default font and logos:
+
+```c
+# define OLED_FONT_5X5
+# define OLED_FONT_AZTECH
+# define OLED_FONT_BMPLAIN
+# define OLED_FONT_CRACKERS
+# define OLED_FONT_EIN
+# define OLED_FONT_HISKYF21
+# define OLED_FONT_SQUASH
+# define OLED_FONT_SUPER_DIGG
+# define OLED_FONT_ZXPIX
+```
+
+```c
+# define OLED_LOGO_CORNE
+# define OLED_LOGO_GMK_BAD
+# define OLED_LOGO_GOTHAM
+# define OLED_LOGO_HUE_MANITEE
+# define OLED_LOGO_LOOSE
+# define OLED_LOGO_SETS3N
+# define OLED_LOGO_SKEEB
+```
+
+Additionally, the font file allows for external oled font files, instead. This allows for additional files that cannot be hosted in the QMK Repo.
+
+## Display
+
+A picture is worth a thousand words. So here are two:
+
+![Right](https://i.imgur.com/4XFOVKBl.jpg)
+
+![Left](https://i.imgur.com/W5RX4pAl.jpg)
diff --git a/users/drashna/oled/sh110x.c b/users/drashna/oled/sh110x.c
new file mode 100644
index 0000000000..c850a47538
--- /dev/null
+++ b/users/drashna/oled/sh110x.c
@@ -0,0 +1,860 @@
+/*
+Copyright 2019 Ryan Caltabiano <https://github.com/XScorpion2>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "i2c_master.h"
+#include "oled_driver.h"
+#include OLED_FONT_H
+#include "timer.h"
+#include "print.h"
+
+#include <string.h>
+
+#include "progmem.h"
+
+#include "keyboard.h"
+
+// Used commands from spec sheet: https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
+// for SH1106: https://www.velleman.eu/downloads/29/infosheets/sh1106_datasheet.pdf
+
+// Fundamental Commands
+#define CONTRAST 0x81
+#define DISPLAY_ALL_ON 0xA5
+#define DISPLAY_ALL_ON_RESUME 0xA4
+#define NORMAL_DISPLAY 0xA6
+#define INVERT_DISPLAY 0xA7
+#define DISPLAY_ON 0xAF
+#define DISPLAY_OFF 0xAE
+#define NOP 0xE3
+
+// Scrolling Commands
+#define ACTIVATE_SCROLL 0x2F
+#define DEACTIVATE_SCROLL 0x2E
+#define SCROLL_RIGHT 0x26
+#define SCROLL_LEFT 0x27
+#define SCROLL_RIGHT_UP 0x29
+#define SCROLL_LEFT_UP 0x2A
+
+// Addressing Setting Commands
+#define MEMORY_MODE 0x20
+#define COLUMN_ADDR 0x21
+#define PAGE_ADDR 0x22
+#define PAM_SETCOLUMN_LSB 0x00
+#define PAM_SETCOLUMN_MSB 0x10
+#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
+
+// Hardware Configuration Commands
+#define DISPLAY_START_LINE 0x40
+#define SEGMENT_REMAP 0xA0
+#define SEGMENT_REMAP_INV 0xA1
+#define MULTIPLEX_RATIO 0xA8
+#define COM_SCAN_INC 0xC0
+#define COM_SCAN_DEC 0xC8
+#define DISPLAY_OFFSET 0xD3
+#define COM_PINS 0xDA
+#define COM_PINS_SEQ 0x02
+#define COM_PINS_ALT 0x12
+#define COM_PINS_SEQ_LR 0x22
+#define COM_PINS_ALT_LR 0x32
+
+// Timing & Driving Commands
+#define DISPLAY_CLOCK 0xD5
+#define PRE_CHARGE_PERIOD 0xD9
+#define VCOM_DETECT 0xDB
+
+// Advance Graphic Commands
+#define FADE_BLINK 0x23
+#define ENABLE_FADE 0x20
+#define ENABLE_BLINK 0x30
+
+// Charge Pump Commands
+#define CHARGE_PUMP 0x8D
+
+// Commands specific to the SH1107 chip
+#define SH1107_DISPLAY_START_LINE 0xDC
+#define SH1107_MEMORY_MODE_PAGE 0x20
+#define SH1107_MEMORY_MODE_VERTICAL 0x21
+
+// Misc defines
+#ifndef OLED_BLOCK_COUNT
+# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8)
+#endif
+#ifndef OLED_BLOCK_SIZE
+# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT)
+#endif
+
+#define OLED_ALL_BLOCKS_MASK (((((OLED_BLOCK_TYPE)1 << (OLED_BLOCK_COUNT - 1)) - 1) << 1) | 1)
+
+#define OLED_IC_HAS_HORIZONTAL_MODE (OLED_IC == OLED_IC_SSD1306)
+#define OLED_IC_COM_PINS_ARE_COLUMNS (OLED_IC == OLED_IC_SH1107)
+
+#ifndef OLED_COM_PIN_COUNT
+# if OLED_IC == OLED_IC_SH1106
+# define OLED_COM_PIN_COUNT 64
+# elif OLED_IC == OLED_IC_SH1107
+# define OLED_COM_PIN_COUNT 128
+# else
+# error Invalid OLED_IC value
+# endif
+#endif
+
+#ifndef OLED_COM_PIN_OFFSET
+# define OLED_COM_PIN_OFFSET 0
+#endif
+
+// i2c defines
+#define I2C_CMD 0x00
+#define I2C_DATA 0x40
+#if defined(__AVR__)
+# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
+#else // defined(__AVR__)
+# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
+#endif // defined(__AVR__)
+#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
+#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT)
+
+#define HAS_FLAGS(bits, flags) ((bits & flags) == flags)
+
+// Display buffer's is the same as the OLED memory layout
+// this is so we don't end up with rounding errors with
+// parts of the display unusable or don't get cleared correctly
+// and also allows for drawing & inverting
+uint8_t oled_buffer[OLED_MATRIX_SIZE];
+uint8_t * oled_cursor;
+OLED_BLOCK_TYPE oled_dirty = 0;
+bool oled_initialized = false;
+bool oled_active = false;
+bool oled_scrolling = false;
+bool oled_inverted = false;
+uint8_t oled_brightness = OLED_BRIGHTNESS;
+oled_rotation_t oled_rotation = 0;
+uint8_t oled_rotation_width = 0;
+uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values
+uint8_t oled_scroll_start = 0;
+uint8_t oled_scroll_end = 7;
+#if OLED_TIMEOUT > 0
+uint32_t oled_timeout;
+#endif
+#if OLED_SCROLL_TIMEOUT > 0
+uint32_t oled_scroll_timeout;
+#endif
+#if OLED_UPDATE_INTERVAL > 0
+uint16_t oled_update_timeout;
+#endif
+
+// Internal variables to reduce math instructions
+
+#if defined(__AVR__)
+// identical to i2c_transmit, but for PROGMEM since all initialization is in PROGMEM arrays currently
+// probably should move this into i2c_master...
+static i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t *data, uint16_t length, uint16_t timeout) {
+ i2c_status_t status = i2c_start(address | I2C_WRITE, timeout);
+
+ for (uint16_t i = 0; i < length && status >= 0; i++) {
+ status = i2c_write(pgm_read_byte((const char *)data++), timeout);
+ if (status) break;
+ }
+
+ i2c_stop();
+
+ return status;
+}
+#endif
+
+// Flips the rendering bits for a character at the current cursor position
+static void InvertCharacter(uint8_t *cursor) {
+ const uint8_t *end = cursor + OLED_FONT_WIDTH;
+ while (cursor < end) {
+ *cursor = ~(*cursor);
+ cursor++;
+ }
+}
+
+bool oled_init(oled_rotation_t rotation) {
+#if defined(USE_I2C) && defined(SPLIT_KEYBOARD)
+ if (!is_keyboard_master()) {
+ return true;
+ }
+#endif
+
+ oled_rotation = oled_init_user(oled_init_kb(rotation));
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ oled_rotation_width = OLED_DISPLAY_WIDTH;
+ } else {
+ oled_rotation_width = OLED_DISPLAY_HEIGHT;
+ }
+ i2c_init();
+
+ static const uint8_t PROGMEM display_setup1[] = {
+ I2C_CMD,
+ DISPLAY_OFF,
+ DISPLAY_CLOCK,
+ 0x80,
+ MULTIPLEX_RATIO,
+#if OLED_IC_COM_PINS_ARE_COLUMNS
+ OLED_DISPLAY_WIDTH - 1,
+#else
+ OLED_DISPLAY_HEIGHT - 1,
+#endif
+ DISPLAY_OFFSET,
+ 0x00,
+ DISPLAY_START_LINE | 0x00,
+ CHARGE_PUMP,
+ 0x14,
+#if (OLED_IC != OLED_IC_SH1106)
+ // MEMORY_MODE is unsupported on SH1106 (Page Addressing only)
+ MEMORY_MODE,
+ 0x00, // Horizontal addressing mode
+#elif OLED_IC == OLED_IC_SH1107
+ // Page addressing mode
+ SH1107_MEMORY_MODE_PAGE,
+#endif
+ };
+ if (I2C_TRANSMIT_P(display_setup1) != I2C_STATUS_SUCCESS) {
+ print("oled_init cmd set 1 failed\n");
+ return false;
+ }
+
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_180)) {
+ static const uint8_t PROGMEM display_normal[] = {
+ I2C_CMD, SEGMENT_REMAP_INV, COM_SCAN_DEC, DISPLAY_OFFSET, OLED_COM_PIN_OFFSET,
+ };
+ if (I2C_TRANSMIT_P(display_normal) != I2C_STATUS_SUCCESS) {
+ print("oled_init cmd normal rotation failed\n");
+ return false;
+ }
+ } else {
+ static const uint8_t PROGMEM display_flipped[] = {
+ I2C_CMD, SEGMENT_REMAP, COM_SCAN_INC, DISPLAY_OFFSET, (OLED_COM_PIN_COUNT - OLED_COM_PIN_OFFSET) % OLED_COM_PIN_COUNT,
+ };
+ if (I2C_TRANSMIT_P(display_flipped) != I2C_STATUS_SUCCESS) {
+ print("display_flipped failed\n");
+ return false;
+ }
+ }
+
+ static const uint8_t PROGMEM display_setup2[] = {I2C_CMD, COM_PINS, OLED_COM_PINS, CONTRAST, OLED_BRIGHTNESS, PRE_CHARGE_PERIOD, 0x22, VCOM_DETECT, 0x35, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON}; if (I2C_TRANSMIT_P(display_setup2) != I2C_STATUS_SUCCESS) {
+ print("display_setup2 failed\n");
+ return false;
+ }
+
+#if OLED_TIMEOUT > 0
+ oled_timeout = timer_read32() + OLED_TIMEOUT;
+#endif
+#if OLED_SCROLL_TIMEOUT > 0
+ oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT;
+#endif
+
+ oled_clear();
+ oled_initialized = true;
+ oled_active = true;
+ oled_scrolling = false;
+ return true;
+}
+
+__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; }
+__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; }
+
+void oled_clear(void) {
+ memset(oled_buffer, 0, sizeof(oled_buffer));
+ oled_cursor = &oled_buffer[0];
+ oled_dirty = OLED_ALL_BLOCKS_MASK;
+}
+
+static void calc_bounds(uint8_t update_start, uint8_t *cmd_array) {
+ // Calculate commands to set memory addressing bounds.
+ uint8_t start_page = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_WIDTH;
+ uint8_t start_column = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_WIDTH;
+#if !OLED_IC_HAS_HORIZONTAL_MODE
+ // Commands for Page Addressing Mode. Sets starting page and column; has no end bound.
+ // Column value must be split into high and low nybble and sent as two commands.
+ cmd_array[0] = PAM_PAGE_ADDR | start_page;
+ cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f);
+ cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f);
+ cmd_array[3] = NOP;
+ cmd_array[4] = NOP;
+ cmd_array[5] = NOP;
+#else
+ // Commands for use in Horizontal Addressing mode.
+ cmd_array[1] = start_column + OLED_COLUMN_OFFSET;
+ cmd_array[4] = start_page;
+ cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) % OLED_DISPLAY_WIDTH + cmd_array[1];
+ cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_WIDTH - 1) / OLED_DISPLAY_WIDTH - 1 + cmd_array[4];
+#endif
+}
+
+static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) {
+ // Block numbering starts from the bottom left corner, going up and then to
+ // the right. The controller needs the page and column numbers for the top
+ // left and bottom right corners of that block.
+
+ // Total number of pages across the screen height.
+ const uint8_t height_in_pages = OLED_DISPLAY_HEIGHT / 8;
+
+ // Difference of starting page numbers for adjacent blocks; may be 0 if
+ // blocks are large enough to occupy one or more whole 8px columns.
+ const uint8_t page_inc_per_block = OLED_BLOCK_SIZE % OLED_DISPLAY_HEIGHT / 8;
+
+ // Top page number for a block which is at the bottom edge of the screen.
+ const uint8_t bottom_block_top_page = (height_in_pages - page_inc_per_block) % height_in_pages;
+
+#if !OLED_IC_HAS_HORIZONTAL_MODE
+ // Only the Page Addressing Mode is supported
+ uint8_t start_page = bottom_block_top_page - (OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT / 8);
+ uint8_t start_column = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8;
+ cmd_array[0] = PAM_PAGE_ADDR | start_page;
+ cmd_array[1] = PAM_SETCOLUMN_LSB | ((OLED_COLUMN_OFFSET + start_column) & 0x0f);
+ cmd_array[2] = PAM_SETCOLUMN_MSB | ((OLED_COLUMN_OFFSET + start_column) >> 4 & 0x0f);
+#else
+ cmd_array[1] = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8 + OLED_COLUMN_OFFSET;
+ cmd_array[4] = bottom_block_top_page - (OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT / 8);
+ cmd_array[2] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) / OLED_DISPLAY_HEIGHT * 8 - 1 + cmd_array[1];
+ cmd_array[5] = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) % OLED_DISPLAY_HEIGHT / 8 + cmd_array[4];
+#endif
+}
+
+uint8_t crot(uint8_t a, int8_t n) {
+ const uint8_t mask = 0x7;
+ n &= mask;
+ return a << n | a >> (-n & mask);
+}
+
+static void rotate_90(const uint8_t *src, uint8_t *dest) {
+ for (uint8_t i = 0, shift = 7; i < 8; ++i, --shift) {
+ uint8_t selector = (1 << i);
+ for (uint8_t j = 0; j < 8; ++j) {
+ dest[i] |= crot(src[j] & selector, shift - (int8_t)j);
+ }
+ }
+}
+
+void oled_render(void) {
+ if (!oled_initialized) {
+ return;
+ }
+
+ // Do we have work to do?
+ oled_dirty &= OLED_ALL_BLOCKS_MASK;
+ if (!oled_dirty || oled_scrolling) {
+ return;
+ }
+
+ // Find first dirty block
+ uint8_t update_start = 0;
+ while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) {
+ ++update_start;
+ }
+
+ // Set column & page position
+#if OLED_IC_HAS_HORIZONTAL_MODE
+ static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
+#else
+ static uint8_t display_start[] = {I2C_CMD, PAM_PAGE_ADDR, PAM_SETCOLUMN_LSB, PAM_SETCOLUMN_MSB};
+#endif
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
+ } else {
+ calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
+ }
+
+ // Send column & page position
+ if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) {
+ print("oled_render offset command failed\n");
+ return;
+ }
+
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ // Send render data chunk as is
+ if (I2C_WRITE_REG(I2C_DATA, &oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
+ print("oled_render data failed\n");
+ return;
+ }
+ } else {
+ // Rotate the render chunks
+ const static uint8_t source_map[] = OLED_SOURCE_MAP;
+ const static uint8_t target_map[] = OLED_TARGET_MAP;
+
+ static uint8_t temp_buffer[OLED_BLOCK_SIZE];
+ memset(temp_buffer, 0, sizeof(temp_buffer));
+ for (uint8_t i = 0; i < sizeof(source_map); ++i) {
+ rotate_90(&oled_buffer[OLED_BLOCK_SIZE * update_start + source_map[i]], &temp_buffer[target_map[i]]);
+ }
+
+#if OLED_IC_HAS_HORIZONTAL_MODE
+ // Send render data chunk after rotating
+ if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[0], OLED_BLOCK_SIZE) != I2C_STATUS_SUCCESS) {
+ print("oled_render90 data failed\n");
+ return;
+ }
+#else
+ // For SH1106 or SH1107 the data chunk must be split into separate pieces for each page
+ const uint8_t columns_in_block = (OLED_BLOCK_SIZE + OLED_DISPLAY_HEIGHT - 1) / OLED_DISPLAY_HEIGHT * 8;
+ const uint8_t num_pages = OLED_BLOCK_SIZE / columns_in_block;
+ for (uint8_t i = 0; i < num_pages; ++i) {
+ // Send column & page position for all pages except the first one
+ if (i > 0) {
+ display_start[1]++;
+ if (I2C_TRANSMIT(display_start) != I2C_STATUS_SUCCESS) {
+ print("oled_render offset command failed\n");
+ return;
+ }
+ }
+ // Send data for the page
+ if (I2C_WRITE_REG(I2C_DATA, &temp_buffer[columns_in_block * i], columns_in_block) != I2C_STATUS_SUCCESS) {
+ print("oled_render90 data failed\n");
+ return;
+ }
+ }
+#endif
+ }
+
+ // Turn on display if it is off
+ oled_on();
+
+ // Clear dirty flag
+ oled_dirty &= ~((OLED_BLOCK_TYPE)1 << update_start);
+}
+
+void oled_set_cursor(uint8_t col, uint8_t line) {
+ uint16_t index = line * oled_rotation_width + col * OLED_FONT_WIDTH;
+
+ // Out of bounds?
+ if (index >= OLED_MATRIX_SIZE) {
+ index = 0;
+ }
+
+ oled_cursor = &oled_buffer[index];
+}
+
+void oled_advance_page(bool clearPageRemainder) {
+ uint16_t index = oled_cursor - &oled_buffer[0];
+ uint8_t remaining = oled_rotation_width - (index % oled_rotation_width);
+
+ if (clearPageRemainder) {
+ // Remaining Char count
+ remaining = remaining / OLED_FONT_WIDTH;
+
+ // Write empty character until next line
+ while (remaining--) oled_write_char(' ', false);
+ } else {
+ // Next page index out of bounds?
+ if (index + remaining >= OLED_MATRIX_SIZE) {
+ index = 0;
+ remaining = 0;
+ }
+
+ oled_cursor = &oled_buffer[index + remaining];
+ }
+}
+
+void oled_advance_char(void) {
+ uint16_t nextIndex = oled_cursor - &oled_buffer[0] + OLED_FONT_WIDTH;
+ uint8_t remainingSpace = oled_rotation_width - (nextIndex % oled_rotation_width);
+
+ // Do we have enough space on the current line for the next character
+ if (remainingSpace < OLED_FONT_WIDTH) {
+ nextIndex += remainingSpace;
+ }
+
+ // Did we go out of bounds
+ if (nextIndex >= OLED_MATRIX_SIZE) {
+ nextIndex = 0;
+ }
+
+ // Update cursor position
+ oled_cursor = &oled_buffer[nextIndex];
+}
+
+// Main handler that writes character data to the display buffer
+void oled_write_char(const char data, bool invert) {
+ // Advance to the next line if newline
+ if (data == '\n') {
+ // Old source wrote ' ' until end of line...
+ oled_advance_page(true);
+ return;
+ }
+
+ if (data == '\r') {
+ oled_advance_page(false);
+ return;
+ }
+
+ // copy the current render buffer to check for dirty after
+ static uint8_t oled_temp_buffer[OLED_FONT_WIDTH];
+ memcpy(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH);
+
+ _Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array");
+
+ // set the reder buffer data
+ uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
+ if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) {
+ memset(oled_cursor, 0x00, OLED_FONT_WIDTH);
+ } else {
+ const uint8_t *glyph = &font[(cast_data - OLED_FONT_START) * OLED_FONT_WIDTH];
+ memcpy_P(oled_cursor, glyph, OLED_FONT_WIDTH);
+ }
+
+ // Invert if needed
+ if (invert) {
+ InvertCharacter(oled_cursor);
+ }
+
+ // Dirty check
+ if (memcmp(&oled_temp_buffer, oled_cursor, OLED_FONT_WIDTH)) {
+ uint16_t index = oled_cursor - &oled_buffer[0];
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE));
+ // Edgecase check if the written data spans the 2 chunks
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << ((index + OLED_FONT_WIDTH - 1) / OLED_BLOCK_SIZE));
+ }
+
+ // Finally move to the next char
+ oled_advance_char();
+}
+
+void oled_write(const char *data, bool invert) {
+ const char *end = data + strlen(data);
+ while (data < end) {
+ oled_write_char(*data, invert);
+ data++;
+ }
+}
+
+void oled_write_ln(const char *data, bool invert) {
+ oled_write(data, invert);
+ oled_advance_page(true);
+}
+
+void oled_pan(bool left) {
+ uint16_t i = 0;
+ for (uint16_t y = 0; y < OLED_DISPLAY_HEIGHT / 8; y++) {
+ if (left) {
+ for (uint16_t x = 0; x < OLED_DISPLAY_WIDTH - 1; x++) {
+ i = y * OLED_DISPLAY_WIDTH + x;
+ oled_buffer[i] = oled_buffer[i + 1];
+ }
+ } else {
+ for (uint16_t x = OLED_DISPLAY_WIDTH - 1; x > 0; x--) {
+ i = y * OLED_DISPLAY_WIDTH + x;
+ oled_buffer[i] = oled_buffer[i - 1];
+ }
+ }
+ }
+ oled_dirty = OLED_ALL_BLOCKS_MASK;
+}
+
+oled_buffer_reader_t oled_read_raw(uint16_t start_index) {
+ if (start_index > OLED_MATRIX_SIZE) start_index = OLED_MATRIX_SIZE;
+ oled_buffer_reader_t ret_reader;
+ ret_reader.current_element = &oled_buffer[start_index];
+ ret_reader.remaining_element_count = OLED_MATRIX_SIZE - start_index;
+ return ret_reader;
+}
+
+void oled_write_raw_byte(const char data, uint16_t index) {
+ if (index > OLED_MATRIX_SIZE) index = OLED_MATRIX_SIZE;
+ if (oled_buffer[index] == data) return;
+ oled_buffer[index] = data;
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE));
+}
+
+void oled_write_raw(const char *data, uint16_t size) {
+ uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
+ if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
+ for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
+ uint8_t c = *data++;
+ if (oled_buffer[i] == c) continue;
+ oled_buffer[i] = c;
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
+ }
+}
+
+void oled_write_pixel(uint8_t x, uint8_t y, bool on) {
+ if (x >= oled_rotation_width) {
+ return;
+ }
+ uint16_t index = x + (y / 8) * oled_rotation_width;
+ if (index >= OLED_MATRIX_SIZE) {
+ return;
+ }
+ uint8_t data = oled_buffer[index];
+ if (on) {
+ data |= (1 << (y % 8));
+ } else {
+ data &= ~(1 << (y % 8));
+ }
+ if (oled_buffer[index] != data) {
+ oled_buffer[index] = data;
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (index / OLED_BLOCK_SIZE));
+ }
+}
+
+#if defined(__AVR__)
+void oled_write_P(const char *data, bool invert) {
+ uint8_t c = pgm_read_byte(data);
+ while (c != 0) {
+ oled_write_char(c, invert);
+ c = pgm_read_byte(++data);
+ }
+}
+
+void oled_write_ln_P(const char *data, bool invert) {
+ oled_write_P(data, invert);
+ oled_advance_page(true);
+}
+
+void oled_write_raw_P(const char *data, uint16_t size) {
+ uint16_t cursor_start_index = oled_cursor - &oled_buffer[0];
+ if ((size + cursor_start_index) > OLED_MATRIX_SIZE) size = OLED_MATRIX_SIZE - cursor_start_index;
+ for (uint16_t i = cursor_start_index; i < cursor_start_index + size; i++) {
+ uint8_t c = pgm_read_byte(data++);
+ if (oled_buffer[i] == c) continue;
+ oled_buffer[i] = c;
+ oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
+ }
+}
+#endif // defined(__AVR__)
+
+bool oled_on(void) {
+ if (!oled_initialized) {
+ return oled_active;
+ }
+
+#if OLED_TIMEOUT > 0
+ oled_timeout = timer_read32() + OLED_TIMEOUT;
+#endif
+
+ static const uint8_t PROGMEM display_on[] =
+#ifdef OLED_FADE_OUT
+ {I2C_CMD, FADE_BLINK, 0x00};
+#else
+ {I2C_CMD, DISPLAY_ON};
+#endif
+
+ if (!oled_active) {
+ if (I2C_TRANSMIT_P(display_on) != I2C_STATUS_SUCCESS) {
+ print("oled_on cmd failed\n");
+ return oled_active;
+ }
+ oled_active = true;
+ }
+ return oled_active;
+}
+
+bool oled_off(void) {
+ if (!oled_initialized) {
+ return !oled_active;
+ }
+
+ static const uint8_t PROGMEM display_off[] =
+#ifdef OLED_FADE_OUT
+ {I2C_CMD, FADE_BLINK, ENABLE_FADE | OLED_FADE_OUT_INTERVAL};
+#else
+ {I2C_CMD, DISPLAY_OFF};
+#endif
+
+ if (oled_active) {
+ if (I2C_TRANSMIT_P(display_off) != I2C_STATUS_SUCCESS) {
+ print("oled_off cmd failed\n");
+ return oled_active;
+ }
+ oled_active = false;
+ }
+ return !oled_active;
+}
+
+bool is_oled_on(void) { return oled_active; }
+
+uint8_t oled_set_brightness(uint8_t level) {
+ if (!oled_initialized) {
+ return oled_brightness;
+ }
+
+ uint8_t set_contrast[] = {I2C_CMD, CONTRAST, level};
+ if (oled_brightness != level) {
+ if (I2C_TRANSMIT(set_contrast) != I2C_STATUS_SUCCESS) {
+ print("set_brightness cmd failed\n");
+ return oled_brightness;
+ }
+ oled_brightness = level;
+ }
+ return oled_brightness;
+}
+
+uint8_t oled_get_brightness(void) { return oled_brightness; }
+
+// Set the specific 8 lines rows of the screen to scroll.
+// 0 is the default for start, and 7 for end, which is the entire
+// height of the screen. For 128x32 screens, rows 4-7 are not used.
+void oled_scroll_set_area(uint8_t start_line, uint8_t end_line) {
+ oled_scroll_start = start_line;
+ oled_scroll_end = end_line;
+}
+
+void oled_scroll_set_speed(uint8_t speed) {
+ // Sets the speed for scrolling... does not take effect
+ // until scrolling is either started or restarted
+ // the ssd1306 supports 8 speeds
+ // FrameRate2 speed = 7
+ // FrameRate3 speed = 4
+ // FrameRate4 speed = 5
+ // FrameRate5 speed = 0
+ // FrameRate25 speed = 6
+ // FrameRate64 speed = 1
+ // FrameRate128 speed = 2
+ // FrameRate256 speed = 3
+ // for ease of use these are remaped here to be in order
+ static const uint8_t scroll_remap[8] = {7, 4, 5, 0, 6, 1, 2, 3};
+ oled_scroll_speed = scroll_remap[speed];
+}
+
+bool oled_scroll_right(void) {
+ if (!oled_initialized) {
+ return oled_scrolling;
+ }
+
+ // Dont enable scrolling if we need to update the display
+ // This prevents scrolling of bad data from starting the scroll too early after init
+ if (!oled_dirty && !oled_scrolling) {
+ uint8_t display_scroll_right[] = {I2C_CMD, SCROLL_RIGHT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL};
+ if (I2C_TRANSMIT(display_scroll_right) != I2C_STATUS_SUCCESS) {
+ print("oled_scroll_right cmd failed\n");
+ return oled_scrolling;
+ }
+ oled_scrolling = true;
+ }
+ return oled_scrolling;
+}
+
+bool oled_scroll_left(void) {
+ if (!oled_initialized) {
+ return oled_scrolling;
+ }
+
+ // Dont enable scrolling if we need to update the display
+ // This prevents scrolling of bad data from starting the scroll too early after init
+ if (!oled_dirty && !oled_scrolling) {
+ uint8_t display_scroll_left[] = {I2C_CMD, SCROLL_LEFT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL};
+ if (I2C_TRANSMIT(display_scroll_left) != I2C_STATUS_SUCCESS) {
+ print("oled_scroll_left cmd failed\n");
+ return oled_scrolling;
+ }
+ oled_scrolling = true;
+ }
+ return oled_scrolling;
+}
+
+bool oled_scroll_off(void) {
+ if (!oled_initialized) {
+ return !oled_scrolling;
+ }
+
+ if (oled_scrolling) {
+ static const uint8_t PROGMEM display_scroll_off[] = {I2C_CMD, DEACTIVATE_SCROLL};
+ if (I2C_TRANSMIT_P(display_scroll_off) != I2C_STATUS_SUCCESS) {
+ print("oled_scroll_off cmd failed\n");
+ return oled_scrolling;
+ }
+ oled_scrolling = false;
+ oled_dirty = OLED_ALL_BLOCKS_MASK;
+ }
+ return !oled_scrolling;
+}
+
+bool is_oled_scrolling(void) { return oled_scrolling; }
+
+bool oled_invert(bool invert) {
+ if (!oled_initialized) {
+ return oled_inverted;
+ }
+
+ if (invert && !oled_inverted) {
+ static const uint8_t PROGMEM display_inverted[] = {I2C_CMD, INVERT_DISPLAY};
+ if (I2C_TRANSMIT_P(display_inverted) != I2C_STATUS_SUCCESS) {
+ print("oled_invert cmd failed\n");
+ return oled_inverted;
+ }
+ oled_inverted = true;
+ } else if (!invert && oled_inverted) {
+ static const uint8_t PROGMEM display_normal[] = {I2C_CMD, NORMAL_DISPLAY};
+ if (I2C_TRANSMIT_P(display_normal) != I2C_STATUS_SUCCESS) {
+ print("oled_invert cmd failed\n");
+ return oled_inverted;
+ }
+ oled_inverted = false;
+ }
+
+ return oled_inverted;
+}
+
+uint8_t oled_max_chars(void) {
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ return OLED_DISPLAY_WIDTH / OLED_FONT_WIDTH;
+ }
+ return OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH;
+}
+
+uint8_t oled_max_lines(void) {
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ return OLED_DISPLAY_HEIGHT / OLED_FONT_HEIGHT;
+ }
+ return OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT;
+}
+
+void oled_task(void) {
+ if (!oled_initialized) {
+ return;
+ }
+
+#if OLED_UPDATE_INTERVAL > 0
+ if (timer_elapsed(oled_update_timeout) >= OLED_UPDATE_INTERVAL) {
+ oled_update_timeout = timer_read();
+ oled_set_cursor(0, 0);
+ oled_task_kb();
+ }
+#else
+ oled_set_cursor(0, 0);
+ oled_task_kb();
+#endif
+
+#if OLED_SCROLL_TIMEOUT > 0
+ if (oled_dirty && oled_scrolling) {
+ oled_scroll_timeout = timer_read32() + OLED_SCROLL_TIMEOUT;
+ oled_scroll_off();
+ }
+#endif
+
+ // Smart render system, no need to check for dirty
+ oled_render();
+
+ // Display timeout check
+#if OLED_TIMEOUT > 0
+ if (oled_active && timer_expired32(timer_read32(), oled_timeout)) {
+ oled_off();
+ }
+#endif
+
+#if OLED_SCROLL_TIMEOUT > 0
+ if (!oled_scrolling && timer_expired32(timer_read32(), oled_scroll_timeout)) {
+# ifdef OLED_SCROLL_TIMEOUT_RIGHT
+ oled_scroll_right();
+# else
+ oled_scroll_left();
+# endif
+ }
+#endif
+}
+
+__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); }
+__attribute__((weak)) bool oled_task_user(void) { return true; }
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c
deleted file mode 100644
index 396e5e05b7..0000000000
--- a/users/drashna/oled_stuff.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "drashna.h"
-
-extern bool host_driver_disabled;
-
-#ifndef KEYLOGGER_LENGTH
-// # ifdef OLED_DISPLAY_128X64
-# define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
-// # else
-// # define KEYLOGGER_LENGTH (uint8_t *(OLED_DISPLAY_WIDTH / OLED_FONT_HEIGHT))
-// # endif
-#endif
-
-uint32_t oled_timer = 0;
-static char keylog_str[KEYLOGGER_LENGTH + 1] = {0};
-static uint16_t log_timer = 0;
-
-// clang-format off
-static const char PROGMEM code_to_name[256] = {
-// 0 1 2 3 4 5 6 7 8 9 A B c D E F
- ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
- 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
- '3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
- ']','\\', '#', ';','\'', '`', ',', '.', '/', 128,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA, // 3x
- 0xDB,0xDC,0xDD,0xDE,0XDF,0xFB,'P', 'S', 19, ' ', 17, 30, 16, 16, 31, 26, // 4x
- 27, 25, 24, 'N', '/', '*', '-', '+', 23, '1', '2', '3', '4', '5', '6', '7', // 5x
- '8', '9', '0', '.','\\', 'A', 0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
- ' ', ' ', ' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
- 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24, 26, 24, // Ex
- 25,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 24, 25, 27, 26, ' ', ' ', ' ' // Fx
-};
-// clang-format on
-
-void add_keylog(uint16_t keycode, keyrecord_t *record) {
- if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) {
- if (((keycode & 0xFF) == KC_BSPC) && mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) {
- memset(keylog_str, ' ', sizeof(keylog_str) - 1);
- return;
- }
- if (record->tap.count) {
- keycode = keycode & 0xFF;
- } else if (keycode > 0xFF) {
- return;
- }
- }
- if (keycode > 0xFF) {
- return;
- }
-
- for (uint8_t i = 1; i < KEYLOGGER_LENGTH; i++) {
- keylog_str[i - 1] = keylog_str[i];
- }
-
- if (keycode < (sizeof(code_to_name) / sizeof(char))) {
- keylog_str[(KEYLOGGER_LENGTH - 1)] = pgm_read_byte(&code_to_name[keycode]);
- }
-
- log_timer = timer_read();
-}
-
-bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
-#ifdef OLED_ENABLE
- oled_timer = timer_read32();
- add_keylog(keycode, record);
-#endif
- }
- return true;
-}
-
-void update_log(void) {
- if (timer_elapsed(log_timer) > 750) {
- // add_keylog(0);
- }
-}
-
-void render_keylogger_status(void) {
- oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false);
- oled_write(keylog_str, false);
-}
-
-void render_default_layer_state(void) {
- oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
- switch (get_highest_layer(default_layer_state)) {
- case _QWERTY:
- oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
- break;
- case _COLEMAK_DH:
- oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false);
- break;
- case _COLEMAK:
- oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK), false);
- break;
- case _DVORAK:
- oled_write_P(PSTR(OLED_RENDER_LAYOUT_DVORAK), false);
- break;
- }
-#ifdef OLED_DISPLAY_128X64
- oled_advance_page(true);
-#endif
-}
-
-void render_layer_state(void) {
- oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
-#ifdef OLED_DISPLAY_128X64
- oled_write_P(PSTR(" "), false);
-#endif
- oled_write_P(PSTR(OLED_RENDER_LAYER_LOWER), layer_state_is(_LOWER));
-#ifdef OLED_DISPLAY_128X64
- oled_write_P(PSTR(" "), false);
-#endif
- oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
-#ifdef OLED_DISPLAY_128X64
- oled_advance_page(true);
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE));
-#endif
-}
-
-void render_keylock_status(uint8_t led_usb_state) {
- oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
-#if !defined(OLED_DISPLAY_128X64)
- oled_write_P(PSTR(" "), false);
-#endif
- oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
-// oled_write_P(PSTR(" "), false);
-// oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
-}
-
-void render_matrix_scan_rate(void) {
-#ifdef DEBUG_MATRIX_SCAN_RATE
- char matrix_rate[5];
- uint16_t n = get_matrix_scan_rate();
- matrix_rate[4] = '\0';
- matrix_rate[3] = '0' + n % 10;
- matrix_rate[2] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- matrix_rate[1] = n / 10 ? '0' + n / 10 : ' ';
- matrix_rate[0] = ' ';
- oled_write_P(PSTR("MS:"), false);
- oled_write(matrix_rate, false);
-#endif
-}
-
-void render_mod_status(uint8_t modifiers) {
- static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
- oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
-#if defined(OLED_DISPLAY_128X64)
- oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_LSHIFT)));
- oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_LGUI)));
- oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_LALT)));
- oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_LCTL)));
- oled_write_P(mod_status[1], (modifiers & MOD_BIT(KC_RCTL)));
- oled_write_P(mod_status[2], (modifiers & MOD_BIT(KC_RALT)));
- oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_BIT(KC_RGUI)));
- oled_write_P(mod_status[0], (modifiers & MOD_BIT(KC_RSHIFT)));
-#else
- oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
- oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
- oled_write_P(PSTR(" "), false);
- oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
- oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
-#endif
-}
-
-#ifdef SWAP_HANDS_ENABLE
-extern bool swap_hands;
-#endif
-
-void render_bootmagic_status(void) {
- /* Show Ctrl-Gui Swap options */
- static const char PROGMEM logo[][2][3] = {
- {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
- {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
- };
-
- bool is_bootmagic_on;
-#ifdef OLED_DISPLAY_128X64
- is_bootmagic_on = !keymap_config.swap_lctl_lgui;
-#else
- is_bootmagic_on = keymap_config.swap_lctl_lgui;
-#endif
-
- oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NAME), false);
-#ifdef OLED_DISPLAY_128X64
- if (keymap_config.swap_lctl_lgui)
-#else
- oled_write_P(PSTR(" "), false);
-#endif
- {
- oled_write_P(logo[1][0], is_bootmagic_on);
-#ifdef OLED_DISPLAY_128X64
- } else {
-#endif
- oled_write_P(logo[0][0], !is_bootmagic_on);
- }
-#ifndef OLED_DISPLAY_128X64
- oled_write_P(PSTR(" "), false);
- oled_write_P(logo[1][1], is_bootmagic_on);
- oled_write_P(logo[0][1], !is_bootmagic_on);
-#endif
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui);
-#ifdef OLED_DISPLAY_128X64
- oled_advance_page(true);
- oled_write_P(PSTR("Magic"), false);
- oled_write_P(PSTR(" "), false);
- if (keymap_config.swap_lctl_lgui) {
- oled_write_P(logo[1][1], is_bootmagic_on);
- } else {
- oled_write_P(logo[0][1], !is_bootmagic_on);
- }
-#endif
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_ONESHOT), !is_oneshot_enabled());
-#ifdef SWAP_HANDS_ENABLE
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_SWAP), swap_hands);
-#endif
-#ifdef OLED_DISPLAY_128X64
- oled_advance_page(true);
-#endif
-}
-
-#if defined(POINTING_DEVICE_ENABLE)
-extern bool tap_toggling;
-#endif
-
-void render_user_status(void) {
-#ifdef AUDIO_ENABLE
- bool is_audio_on = false, is_clicky_on = false;
-# ifdef SPLIT_KEYBOARD
-
- is_audio_on = user_state.audio_enable;
- is_clicky_on = user_state.audio_clicky_enable;
-# else
- is_audio_on = is_audio_on();
- is_clicky_on = is_clicky_on();
-# endif
-#endif
- oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
-#if !defined(OLED_DISPLAY_128X64)
- oled_write_P(PSTR(" "), false);
-#endif
-#if defined(RGB_MATRIX_ENABLE)
- oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
-# if !defined(OLED_DISPLAY_128X64)
- oled_write_P(PSTR(" "), false);
-# endif
-#elif defined(POINTING_DEVICE_ENABLE)
- static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0};
- oled_write_P(mouse_lock, tap_toggling);
-#endif
-#ifdef AUDIO_ENABLE
- static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
- oled_write_P(audio_status[is_audio_on], false);
-
-# ifdef AUDIO_CLICKY
- static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
- oled_write_P(audio_clicky_status[is_clicky_on && is_audio_on], false);
-# if !defined(OLED_DISPLAY_128X64)
- oled_write_P(PSTR(" "), false);
-# endif
-# endif
-#endif
-
- static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
- oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
- static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
- oled_write_P(cat_mode[0], host_driver_disabled);
-#if defined(UNICODE_ENABLE)
- static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
- oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false);
-#endif
- if (userspace_config.nuke_switch) {
-#if !defined(OLED_DISPLAY_128X64)
- oled_write_P(PSTR(" "), false);
-#endif
- static const char PROGMEM nukem_good[2] = {0xFA, 0};
- oled_write_P(nukem_good, false);
-#if !defined(OLED_DISPLAY_128X64)
- oled_advance_page(true);
-#endif
- }
-#if defined(OLED_DISPLAY_128X64)
- oled_advance_page(true);
-#endif
-}
-
-void oled_driver_render_logo(void) {
- // clang-format off
- static const char PROGMEM qmk_logo[] = {
- 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
- 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
- 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
- // clang-format on
- oled_write_P(qmk_logo, false);
-}
-
-void render_wpm(uint8_t padding) {
-#ifdef WPM_ENABLE
- uint8_t n = get_current_wpm();
- char wpm_counter[4];
- wpm_counter[3] = '\0';
- wpm_counter[2] = '0' + n % 10;
- wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- wpm_counter[0] = n / 10 ? '0' + n / 10 : ' ';
- oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
- if (padding) {
- for (uint8_t n = padding; n > 0; n--) {
- oled_write_P(PSTR(" "), false);
- }
- }
- oled_write(wpm_counter, false);
-#endif
-}
-
-#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
-extern kb_config_data_t kb_config;
-void render_pointing_dpi_status(uint8_t padding) {
- char dpi_status[5];
- uint16_t n = kb_config.device_cpi;
- dpi_status[4] = '\0';
- dpi_status[3] = '0' + n % 10;
- dpi_status[2] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- dpi_status[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
- dpi_status[0] = n / 10 ? '0' + n / 10 : ' ';
- oled_write_P(PSTR("DPI: "), false);
- if (padding) {
- for (uint8_t n = padding; n > 0; n--) {
- oled_write_P(PSTR(" "), false);
- }
- }
- oled_write(dpi_status, false);
-}
-#endif
-
-__attribute__((weak)) void oled_driver_render_logo_right(void) {
-#if defined(OLED_DISPLAY_128X64)
- oled_driver_render_logo();
- render_default_layer_state();
- oled_set_cursor(0, 4);
-#else
- render_default_layer_state();
-#endif
-}
-
-__attribute__((weak)) void oled_driver_render_logo_left(void) {
-#if defined(OLED_DISPLAY_128X64)
- oled_driver_render_logo();
-# ifdef DEBUG_MATRIX_SCAN_RATE
- render_matrix_scan_rate();
-# elif defined(WPM_ENABLE)
- render_wpm(0);
-# endif
- oled_write_P(PSTR(" "), false);
-# if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
- render_pointing_dpi_status(1);
-# endif
- oled_set_cursor(0, 4);
-#else
- render_default_layer_state();
-#endif
-}
-
-void render_status_secondary(void) {
- oled_driver_render_logo_right();
- /* Show Keyboard Layout */
- render_layer_state();
- render_mod_status(get_mods() | get_oneshot_mods());
-#if !defined(OLED_DISPLAY_128X64) && defined(WPM_ENABLE) && !defined(CONVERT_TO_PROTON_C)
- render_wpm(2);
-#endif
- // render_keylock_status(host_keyboard_leds());
-}
-
-void render_status_main(void) {
- oled_driver_render_logo_left();
-
- /* Show Keyboard Layout */
- // render_keylock_status(host_keyboard_leds());
- render_bootmagic_status();
- render_user_status();
-
- // render_keylogger_status();
-}
-
-__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; }
-
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- memset(keylog_str, ' ', sizeof(keylog_str) - 1);
-
- return oled_init_keymap(rotation);
-}
-
-bool oled_task_user(void) {
- update_log();
-
- if (is_keyboard_master()) {
- if (timer_elapsed32(oled_timer) > 30000) {
- oled_off();
- return false;
- } else {
- oled_on();
- }
- }
- if (is_keyboard_left()) {
- render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
- } else {
- render_status_secondary();
- }
- if (is_keyboard_master()) {
- render_keylogger_status();
- } else {
- render_keylock_status(host_keyboard_leds());
- }
- return false;
-}
diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h
deleted file mode 100644
index 8795684d6a..0000000000
--- a/users/drashna/oled_stuff.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-#include "oled_driver.h"
-
-void oled_driver_render_logo(void);
-bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
-oled_rotation_t oled_init_keymap(oled_rotation_t rotation);
-extern uint32_t oled_timer;
-void render_keylogger_status(void);
-void render_default_layer_state(void);
-void render_layer_state(void);
-void render_keylock_status(uint8_t led_usb_state);
-void render_matrix_scan_rate(void);
-void render_mod_status(uint8_t modifiers);
-void render_bootmagic_status(void);
-void render_user_status(void);
-void oled_driver_render_logo(void);
-void render_wpm(uint8_t padding);
-void render_pointing_dpi_status(uint8_t padding);
-void oled_driver_render_logo_left(void);
-void oled_driver_render_logo_right(void);
-
-#ifdef OLED_DISPLAY_128X64
-# define OLED_RENDER_KEYLOGGER "Keylogger: "
-
-# define OLED_RENDER_LAYOUT_NAME "Layout: "
-# define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
-# define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak-DH"
-# define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
-# define OLED_RENDER_LAYOUT_DVORAK "Dvorak"
-# define OLED_RENDER_LAYOUT_WORKMAN "Workman"
-# define OLED_RENDER_LAYOUT_NORMAN "Norman"
-# define OLED_RENDER_LAYOUT_MALTRON "Matron"
-# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
-# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
-
-# define OLED_RENDER_LAYER_NAME "Layer:"
-# define OLED_RENDER_LAYER_LOWER "Lower"
-# define OLED_RENDER_LAYER_RAISE "Raise"
-# define OLED_RENDER_LAYER_ADJUST "Adjust"
-# define OLED_RENDER_LAYER_MODS "Mods"
-
-# define OLED_RENDER_LOCK_NAME "Lock: "
-# define OLED_RENDER_LOCK_NUML "NUML"
-# define OLED_RENDER_LOCK_CAPS "CAPS"
-# define OLED_RENDER_LOCK_SCLK "SCLK"
-
-# define OLED_RENDER_MODS_NAME "Mods:"
-# define OLED_RENDER_MODS_SFT "Sft"
-# define OLED_RENDER_MODS_CTL "Ctl"
-# define OLED_RENDER_MODS_ALT "Alt"
-# define OLED_RENDER_MODS_GUI "GUI"
-
-# define OLED_RENDER_BOOTMAGIC_NAME "Boot "
-# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
-# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
-# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
-# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
-# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
-# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
-
-# define OLED_RENDER_USER_NAME "USER:"
-# define OLED_RENDER_USER_ANIM "Anim"
-# define OLED_RENDER_USER_LAYR "Layr"
-# define OLED_RENDER_USER_NUKE "Nuke"
-
-# define OLED_RENDER_WPM_COUNTER "WPM: "
-#else
-# define OLED_RENDER_KEYLOGGER "KLogr"
-
-# define OLED_RENDER_LAYOUT_NAME "Lyout"
-# define OLED_RENDER_LAYOUT_QWERTY " QRTY"
-# define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH"
-# define OLED_RENDER_LAYOUT_COLEMAK " COLE"
-# define OLED_RENDER_LAYOUT_DVORAK " DVRK"
-# define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
-# define OLED_RENDER_LAYOUT_NORMAN " NORM"
-# define OLED_RENDER_LAYOUT_MALTRON " MLTN"
-# define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
-# define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
-
-# define OLED_RENDER_LAYER_NAME "LAYER"
-# define OLED_RENDER_LAYER_LOWER "Lower"
-# define OLED_RENDER_LAYER_RAISE "Raise"
-# define OLED_RENDER_LAYER_ADJUST "Adjst"
-# define OLED_RENDER_LAYER_MODS " Mods"
-
-# define OLED_RENDER_LOCK_NAME "Lock:"
-# define OLED_RENDER_LOCK_NUML "NumL"
-# define OLED_RENDER_LOCK_CAPS "CapL"
-# define OLED_RENDER_LOCK_SCLK "ScrL"
-
-# define OLED_RENDER_MODS_NAME "Mods: "
-# define OLED_RENDER_MODS_SFT "Shft"
-# define OLED_RENDER_MODS_CTL "Ctrl"
-# define OLED_RENDER_MODS_ALT "Alt\n"
-# define OLED_RENDER_MODS_GUI "GUI\n"
-
-# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
-# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
-# define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
-# define OLED_RENDER_BOOTMAGIC_GRV "GRV"
-# define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
-# define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
-# define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
-
-# define OLED_RENDER_USER_NAME "USER:"
-# define OLED_RENDER_USER_ANIM "Anim"
-# define OLED_RENDER_USER_LAYR "Layr"
-# define OLED_RENDER_USER_NUKE "Nuke"
-
-# define OLED_RENDER_WPM_COUNTER "WPM: "
-
-#endif
diff --git a/users/drashna/pointing/pointing.c b/users/drashna/pointing/pointing.c
new file mode 100644
index 0000000000..0dcfe73f34
--- /dev/null
+++ b/users/drashna/pointing/pointing.c
@@ -0,0 +1,125 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "pointing.h"
+
+static uint16_t mouse_timer = 0;
+static uint16_t mouse_debounce_timer = 0;
+static uint8_t mouse_keycode_tracker = 0;
+bool tap_toggling = false, enable_acceleration = false;
+
+#ifdef TAPPING_TERM_PER_KEY
+# define TAP_CHECK get_tapping_term(KC_BTN1, NULL)
+#else
+# ifndef TAPPING_TERM
+# define TAPPING_TERM 200
+# endif
+# define TAP_CHECK TAPPING_TERM
+#endif
+
+__attribute__((weak)) report_mouse_t pointing_device_task_keymap(report_mouse_t mouse_report) {
+ return mouse_report;
+}
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ int8_t x = mouse_report.x, y = mouse_report.y;
+ mouse_report.x = 0;
+ mouse_report.y = 0;
+
+ if (x != 0 && y != 0) {
+ mouse_timer = timer_read();
+#ifdef OLED_ENABLE
+ oled_timer = timer_read32();
+#endif
+ if (timer_elapsed(mouse_debounce_timer) > TAP_CHECK) {
+ if (enable_acceleration) {
+ x = (x > 0 ? x * x / 16 + x : -x * x / 16 + x);
+ y = (y > 0 ? y * y / 16 + y : -y * y / 16 + y);
+ }
+ mouse_report.x = x;
+ mouse_report.y = y;
+ if (!layer_state_is(_MOUSE)) {
+ layer_on(_MOUSE);
+ }
+ }
+ } else if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
+ layer_off(_MOUSE);
+ } else if (tap_toggling) {
+ if (!layer_state_is(_MOUSE)) {
+ layer_on(_MOUSE);
+ }
+ }
+
+ return pointing_device_task_keymap(mouse_report);
+}
+
+bool process_record_pointing(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case TT(_MOUSE):
+ if (record->event.pressed) {
+ mouse_keycode_tracker++;
+ } else {
+#if TAPPING_TOGGLE != 0
+ if (record->tap.count == TAPPING_TOGGLE) {
+ tap_toggling ^= 1;
+# if TAPPING_TOGGLE == 1
+ if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1;
+# else
+ if (!tap_toggling) mouse_keycode_tracker -= record->tap.count;
+# endif
+ } else {
+ mouse_keycode_tracker--;
+ }
+#endif
+ }
+ mouse_timer = timer_read();
+ break;
+ case TG(_MOUSE):
+ if (record->event.pressed) {
+ tap_toggling ^= 1;
+ }
+ break;
+ case MO(_MOUSE):
+#if defined(KEYBOARD_ploopy) || defined(KEYBOARD_handwired_tractyl_manuform)
+ case DPI_CONFIG:
+#elif defined(KEYBOARD_bastardkb_charybdis) && !defined(NO_CHARYBDIS_KEYCODES)
+ case SAFE_RANGE ... (CHARYBDIS_SAFE_RANGE-1):
+#endif
+ case KC_MS_UP ... KC_MS_WH_RIGHT:
+ record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
+ mouse_timer = timer_read();
+ break;
+ case KC_ACCEL:
+ enable_acceleration = record->event.pressed;
+ record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
+ mouse_timer = timer_read();
+ break;
+ case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:
+ break;
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ if (record->event.pressed || !record->tap.count) {
+ break;
+ }
+ default:
+ if (IS_NOEVENT(record->event)) break;
+ if ((keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) && (((keycode >> 0x8) & 0xF) == _MOUSE)) {
+ record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
+ mouse_timer = timer_read();
+ break;
+ }
+ if (layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
+ layer_off(_MOUSE);
+ }
+ mouse_keycode_tracker = 0;
+ mouse_debounce_timer = timer_read();
+ break;
+ }
+ return true;
+}
+
+layer_state_t layer_state_set_pointing(layer_state_t state) {
+ if (layer_state_cmp(state, _GAMEPAD) || layer_state_cmp(state, _DIABLO)) {
+ state |= ((layer_state_t)1 << _MOUSE);
+ }
+ return state;
+}
diff --git a/users/drashna/pointing/pointing.h b/users/drashna/pointing/pointing.h
new file mode 100644
index 0000000000..8b00ffc0ec
--- /dev/null
+++ b/users/drashna/pointing/pointing.h
@@ -0,0 +1,10 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+
+report_mouse_t pointing_device_task_keymap(report_mouse_t mouse_report);
+void matrix_scan_pointing(void);
+bool process_record_pointing(uint16_t keycode, keyrecord_t* record);
+layer_state_t layer_state_set_pointing(layer_state_t state);
+extern bool tap_toggling, enable_acceleration;
diff --git a/users/drashna/pointing/readme.md b/users/drashna/pointing/readme.md
new file mode 100644
index 0000000000..7770755050
--- /dev/null
+++ b/users/drashna/pointing/readme.md
@@ -0,0 +1,19 @@
+# User Pointing Device customization
+
+To disable the customized pointing device code and implement it at the keymap, add `CUSTOM_POINTING_DEVICE = no` to your `rules.mk`.
+
+## Automatic Mouse Layer
+
+Movement on the optical sensor triggers a layer that has all of the mouse keys on that layer. After a set time, the layer will automatically turn itself off after 650ms.
+
+Also, using mousekeys will extend the amount of time that the layer will stay active.
+
+Additionally, layer keys for the mouse layer will lock the layer on.
+
+## Gaming
+
+When the gamepad or diablo layers are enabled, the mouse layer is locked on, as well.
+
+## Keycodes
+
+The only custom keycode for Pointing devices here is `KC_ACCEL`. This allow the mouse report to have an acceleration curve (exponential).
diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h
index b9d934c42b..0c9bda2eeb 100644
--- a/users/drashna/post_config.h
+++ b/users/drashna/post_config.h
@@ -1,18 +1,5 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -137,3 +124,7 @@
#ifndef DYNAMIC_KEYMAP_LAYER_COUNT
# define DYNAMIC_KEYMAP_LAYER_COUNT 11
#endif
+
+#ifndef TAPPING_TERM
+# define TAPPING_TERM 175
+#endif
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
deleted file mode 100644
index c16c70c050..0000000000
--- a/users/drashna/process_records.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "drashna.h"
-#include "version.h"
-
-uint16_t copy_paste_timer;
-bool host_driver_disabled = false;
-// Defines actions tor my global custom keycodes. Defined in drashna.h file
-// Then runs the _keymap's record handier if not processed here
-
-__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
-__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- // If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef KEYLOGGER_ENABLE
- uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
-#endif // KEYLOGGER_ENABLE
-#ifdef OLED_ENABLE
- process_record_user_oled(keycode, record);
-#endif // OLED
-
- if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
-#ifdef RGB_MATRIX_ENABLE
- && process_record_user_rgb_matrix(keycode, record)
-#endif
-#ifdef RGBLIGHT_ENABLE
- && process_record_user_rgb_light(keycode, record)
-#endif
- && true)) {
- return false;
- }
-
- switch (keycode) {
- case FIRST_DEFAULT_LAYER_KEYCODE ... LAST_DEFAULT_LAYER_KEYCODE:
- if (record->event.pressed) {
- uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
- if (!mods) {
- set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE);
-#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
- } else if (mods & MOD_MASK_SHIFT) {
- set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 4);
-# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
-
- } else if (mods & MOD_MASK_CTRL) {
- set_single_persistent_default_layer(keycode - FIRST_DEFAULT_LAYER_KEYCODE + 8);
-# endif
-#endif
- }
- }
- break;
-
- case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
- if (!record->event.pressed) {
-#ifndef MAKE_BOOTLOADER
- uint8_t temp_mod = mod_config(get_mods());
- uint8_t temp_osm = mod_config(get_oneshot_mods());
- clear_mods();
- clear_oneshot_mods();
-#endif
- send_string_with_delay_P(PSTR("qmk"), TAP_CODE_DELAY);
-#ifndef MAKE_BOOTLOADER
- if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
-#endif
- {
- send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY);
-#ifndef MAKE_BOOTLOADER
- } else {
- send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY);
-#endif
- }
- send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
-#ifdef CONVERT_TO_PROTON_C
- send_string_with_delay_P(PSTR(" -e CTPC=yes"), TAP_CODE_DELAY);
-#endif
- send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
- }
- break;
-
- case VRSN: // Prints firmware version
- if (record->event.pressed) {
- send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
- }
- break;
-
- case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
-#ifdef TAP_DANCE_ENABLE
- if (record->event.pressed) {
- for (uint8_t index = 0; index < 4; index++) {
- diablo_timer[index].key_interval = 0;
- }
- }
-#endif // TAP_DANCE_ENABLE
- break;
-
- case KC_CCCV: // One key copy/paste
- if (record->event.pressed) {
- copy_paste_timer = timer_read();
- } else {
- if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
- tap_code16(LCTL(KC_C));
- } else { // Tap, paste
- tap_code16(LCTL(KC_V));
- }
- }
- break;
-#ifdef UNICODE_ENABLE
- case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
- if (record->event.pressed) {
- send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
- }
- break;
- case UC_TABL: // ┬─┬ノ( º _ ºノ)
- if (record->event.pressed) {
- send_unicode_string("┬─┬ノ( º _ ºノ)");
- }
- break;
- case UC_SHRG: // ¯\_(ツ)_/¯
- if (record->event.pressed) {
- send_unicode_string("¯\\_(ツ)_/¯");
- }
- break;
- case UC_DISA: // ಠ_ಠ
- if (record->event.pressed) {
- send_unicode_string("ಠ_ಠ");
- }
- break;
-#endif
- case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
-#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
- if (record->event.pressed) {
- userspace_config.rgb_layer_change ^= 1;
- dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
- eeconfig_update_user(userspace_config.raw);
- if (userspace_config.rgb_layer_change) {
-# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
- rgblight_enable_noeeprom();
-# endif
- layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
-# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
- } else {
- rgblight_disable_noeeprom();
-# endif
- }
- }
-#endif // RGBLIGHT_ENABLE
- break;
-
-#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
- case RGB_TOG:
- // Split keyboards need to trigger on key-up for edge-case issue
-# ifndef SPLIT_KEYBOARD
- if (record->event.pressed) {
-# else
- if (!record->event.pressed) {
-# endif
-# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
- rgblight_toggle();
-# endif
-# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
- rgb_matrix_toggle();
-# endif
- }
- return false;
- break;
- case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
- if (record->event.pressed) {
- bool is_eeprom_updated;
-# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
- // This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
- if (userspace_config.rgb_layer_change) {
- userspace_config.rgb_layer_change = false;
- dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
- is_eeprom_updated = true;
- }
-# endif
-# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- if (userspace_config.rgb_matrix_idle_anim) {
- userspace_config.rgb_matrix_idle_anim = false;
- dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
- is_eeprom_updated = true;
- }
-# endif
- if (is_eeprom_updated) {
- eeconfig_update_user(userspace_config.raw);
- }
- }
- break;
-#endif
- case KEYLOCK: {
- static host_driver_t *host_driver = 0;
-
- if (record->event.pressed) {
- if (host_get_driver()) {
- host_driver = host_get_driver();
- clear_keyboard();
- host_set_driver(0);
- host_driver_disabled = true;
- } else {
- host_set_driver(host_driver);
- host_driver_disabled = false;
- }
- }
- break;
- }
- }
- return true;
-}
-
-__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t *record) {}
-void post_process_record_user(uint16_t keycode, keyrecord_t *record) { post_process_record_keymap(keycode, record); }
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
deleted file mode 100644
index 897d7bbcc9..0000000000
--- a/users/drashna/process_records.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "drashna.h"
-
-#if defined(KEYBOARD_handwired_tractyl_manuform_5x6_right)
-# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
-#else
-# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
-#endif
-
-enum userspace_custom_keycodes {
- VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
- KC_QWERTY, // Sets default layer to QWERTY
- FIRST_DEFAULT_LAYER_KEYCODE = KC_QWERTY, // Sets default layer to QWERTY
- KC_COLEMAK_DH, // Sets default layer to COLEMAK
- KC_COLEMAK, // Sets default layer to COLEMAK
- KC_DVORAK, // Sets default layer to DVORAK
- LAST_DEFAULT_LAYER_KEYCODE = KC_DVORAK, // Sets default layer to WORKMAN
- KC_DIABLO_CLEAR, // Clears all Diablo Timers
- KC_MAKE, // Run keyboard's customized make command
- KC_RGB_T, // Toggles RGB Layer Indication mode
- RGB_IDL, // RGB Idling animations
- KC_SECRET_1, // test1
- KC_SECRET_2, // test2
- KC_SECRET_3, // test3
- KC_SECRET_4, // test4
- KC_SECRET_5, // test5
- KC_CCCV, // Hold to copy, tap to paste
- KC_NUKE, // NUCLEAR LAUNCH DETECTED!!!
- UC_FLIP, // (ಠ痊ಠ)┻━┻
- UC_TABL, // ┬─┬ノ( º _ ºノ)
- UC_SHRG, // ¯\_(ツ)_/¯
- UC_DISA, // ಠ_ಠ
- KEYLOCK, // Locks keyboard by unmounting driver
- NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
-};
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-void post_process_record_keymap(uint16_t keycode, keyrecord_t *record);
-
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-#define ADJUST MO(_ADJUST)
-#define TG_MODS OS_TOGG
-#define TG_GAME TG(_GAMEPAD)
-#define TG_DBLO TG(_DIABLO)
-#define OS_LWR OSL(_LOWER)
-#define OS_RSE OSL(_RAISE)
-
-#define KC_SEC1 KC_SECRET_1
-#define KC_SEC2 KC_SECRET_2
-#define KC_SEC3 KC_SECRET_3
-#define KC_SEC4 KC_SECRET_4
-#define KC_SEC5 KC_SECRET_5
-
-#define QWERTY KC_QWERTY
-#define DVORAK KC_DVORAK
-#define COLEMAK KC_COLEMAK
-#define COLEMAKDH KC_COLEMAK_DH
-
-#define DEFLYR1 FIRST_DEFAULT_LAYER_KEYCODE
-#define DEFLYR2 (FIRST_DEFAULT_LAYER_KEYCODE + 1)
-#define DEFLYR3 (FIRST_DEFAULT_LAYER_KEYCODE + 2)
-#define DEFLYR4 (FIRST_DEFAULT_LAYER_KEYCODE + 3)
-#if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 3)
-# define DEFLYR5 (FIRST_DEFAULT_LAYER_KEYCODE + 4)
-# define DEFLYR6 (FIRST_DEFAULT_LAYER_KEYCODE + 5)
-# define DEFLYR7 (FIRST_DEFAULT_LAYER_KEYCODE + 6)
-# define DEFLYR8 (FIRST_DEFAULT_LAYER_KEYCODE + 7)
-# if LAST_DEFAULT_LAYER_KEYCODE > (FIRST_DEFAULT_LAYER_KEYCODE + 7)
-# define DEFLYR9 (FIRST_DEFAULT_LAYER_KEYCODE + 8)
-# define DEFLYR10 (FIRST_DEFAULT_LAYER_KEYCODE + 9)
-# define DEFLYR11 (FIRST_DEFAULT_LAYER_KEYCODE + 10)
-# define DEFLYR12 (FIRST_DEFAULT_LAYER_KEYCODE + 11)
-# endif
-#endif
-
-#define KC_RESET RESET
-#define KC_RST KC_RESET
-
-#ifdef SWAP_HANDS_ENABLE
-# define KC_C1R3 SH_T(KC_TAB)
-#elif defined(DRASHNA_LP)
-# define KC_C1R3 TG(_GAMEPAD)
-#else // SWAP_HANDS_ENABLE
-# define KC_C1R3 KC_TAB
-#endif // SWAP_HANDS_ENABLE
-
-#define BK_LWER LT(_LOWER, KC_BSPC)
-#define SP_LWER LT(_LOWER, KC_SPC)
-#define DL_RAIS LT(_RAISE, KC_DEL)
-#define ET_RAIS LT(_RAISE, KC_ENTER)
-
-/* OSM keycodes, to keep things clean and easy to change */
-#define KC_MLSF OSM(MOD_LSFT)
-#define KC_MRSF OSM(MOD_RSFT)
-
-#define OS_LGUI OSM(MOD_LGUI)
-#define OS_RGUI OSM(MOD_RGUI)
-#define OS_LSFT OSM(MOD_LSFT)
-#define OS_RSFT OSM(MOD_RSFT)
-#define OS_LCTL OSM(MOD_LCTL)
-#define OS_RCTL OSM(MOD_RCTL)
-#define OS_LALT OSM(MOD_LALT)
-#define OS_RALT OSM(MOD_RALT)
-#define OS_MEH OSM(MOD_MEH)
-#define OS_HYPR OSM(MOD_HYPR)
-
-#define ALT_APP ALT_T(KC_APP)
-
-#define MG_NKRO MAGIC_TOGGLE_NKRO
-
-#define UC_IRNY UC(0x2E2E)
-#define UC_CLUE UC(0x203D)
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index d98d1d0a6b..e52b67e835 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -2,14 +2,16 @@
This is my personal userspace file. Most of my code exists here, as it's heavily shared.
-* [RGB Customization](readme_rgb.md)
-* [Diablo Tap Dancing](readme_tap_dance.md)
-* [Keymap Wrappers](readme_wrappers.md)
-* [Custom Function Handlers](readme_handlers.md)
-* [Secret Macros](readme_secrets.md)
-* [Custom Keycodes](readme_keycodes.md)
-
-
-## Pro Micro Hacking
-
-See [this thread](https://www.reddit.com/r/olkb/comments/8sxgzb/replace_pro_micro_bootloader_with_qmk_dfu/) for details on how to flash QMK DFU to Pro Micros.
+* [Callback (keymap+misc)](callbacks.md)
+* [Keycode Handling](keyrecords/readme.md)
+ * [Autocorrection](keyrecords/autocorrection/readme.md)
+ * [Cap Words](keyrecords/capwords.md)
+ * [Diablo Tap Dancing](keyrecords/tap_dance.md)
+ * [Keymap Wrappers](keyrecords/wrappers.md)
+ * [Secret Macros](keyrecords/secrets.md)
+ * [Custom Keycodes](keyrecords/keycodes.md)
+ * [Unicode Input](keyrecords/unicode.md)
+* [OLED Display](oled/readme.md)
+* [Pointing Devices](pointing/readme.md)
+* [RGB Customization](rgb/readme.md)
+* [Split Transport](split/readme.md)
diff --git a/users/drashna/readme_handlers.md b/users/drashna/readme_handlers.md
deleted file mode 100644
index 4abaf51473..0000000000
--- a/users/drashna/readme_handlers.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Custom Userspace Function handlers
-
-Specifically QMK works by using customized handlers for everything. This allows for multiple levels of customization.
-
-`matrix_scan` calls `matrix_scan_quantum`, which calls `matrix_scan_kb`, which calls `matrix_scan_user`.
-`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user`
-The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions.
-
-All (most) `_user` functions are handled here, in the userspace instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
-
-This allows for keyboard specific configuration while maintaining the ability to customize the board.
-
-My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/layouts/community/ergodox/drashna/keymap.c) is a good example of this, as it uses the LEDs as modifier indicators.
-
-But for a list:
-
-```c
-__attribute__ ((weak))
-void matrix_init_keymap(void) {}
-
-void matrix_init_user(void) {
- matrix_init_keymap();
-}
-
-__attribute__((weak))
-void keyboard_post_init_keymap(void){ }
-
-void keyboard_post_init_user(void){
- keyboard_post_init_keymap();
-}
-
-__attribute__ ((weak))
-void matrix_scan_keymap(void) {}
-
-void matrix_scan_user(void) {
- matrix_scan_keymap();
-}
-
-
-__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- return process_record_keymap(keycode, record);
-}
-
-
-__attribute__ ((weak))
-layer_state_t layer_state_set_keymap (layer_state_t state) {
- return state;
-}
-
-layer_state_t layer_state_set_user (layer_state_t state) {
- return layer_state_set_keymap (state);
-}
-
-
-__attribute__ ((weak))
-void led_set_keymap(uint8_t usb_led) {}
-
-void led_set_user(uint8_t usb_led) {
- led_set_keymap(usb_led);
-}
-
-
-__attribute__ ((weak))
-void suspend_power_down_keymap(void) {}
-
-void suspend_power_down_user(void) {
- suspend_power_down_keymap();
-}
-
-
-__attribute__ ((weak))
-void suspend_wakeup_init_keymap(void) {}
-
-void suspend_wakeup_init_user(void) {
- suspend_wakeup_init_keymap();
-}
-
-
-__attribute__ ((weak))
-void shutdown_keymap(void) {}
-
-void shutdown_user (void) {
- shutdown_keymap();
-}
-
-__attribute__ ((weak))
-void eeconfig_init_keymap(void) {}
-
-void eeconfig_init_user(void) {
- eeconfig_init_keymap();
-}
-```
diff --git a/users/drashna/readme_keycodes.md b/users/drashna/readme_keycodes.md
deleted file mode 100644
index af4dd54bc0..0000000000
--- a/users/drashna/readme_keycodes.md
+++ /dev/null
@@ -1,10 +0,0 @@
-
-# Custom Keycodes
-
-Keycodes are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there.
-
-A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.
-
-Included is a custom macro for compiling my keyboards. This includes the bootloader target (`:teensy`, `:avrdude`, or `:dfu`), and keeps RGBLIGHT, AUDIO enabled, if it previously was (regardless of the rules file).
-
-This also includes a modified RESET keycode as well, that sets the underglow to red.
diff --git a/users/drashna/readme_rgb.md b/users/drashna/readme_rgb.md
deleted file mode 100644
index acf01b051e..0000000000
--- a/users/drashna/readme_rgb.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Layer Indication Code
-
-At least for RGB Light, the `layer_state_set` function is used to detect the current highest layer, and change the underglow based on that layer.
-
-This works for both the regular layers, and for the default layers, too.
-
-I use the sethsv variants of the commands, so that different modes can be used, as well.
-
-RGB Matrix uses a custom, per board implementation, at the moment.
-
-# RGB Light Startup Animation
-
-On startup, if enabled, the board will cycle through the entire hue wheel, starting and ending on the default layer color.
-
-```c
-void keyboard_post_init_rgb(void) {
-#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
- if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
- if (rgblight_config.enable) {
- layer_state_set_user(layer_state);
- uint16_t old_hue = rgblight_config.hue;
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- for (uint16_t i = 255; i > 0; i--) {
- rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
- matrix_scan();
- wait_ms(10);
- }
- }
-#endif
- layer_state_set_user(layer_state);
-}
-```
-
-This could probably benefit from some cleanup and better handling.
-
-
-# RGB Light Twinkling
-
-This enables random twinkling of the LEDs when typing.
-
-# RGB Light Mod Indicators
-
-Allows feedback of which mods (oneshot or otherwise) are enabled.
diff --git a/users/drashna/readme_tap_dance.md b/users/drashna/readme_tap_dance.md
deleted file mode 100644
index a61dd1f2b0..0000000000
--- a/users/drashna/readme_tap_dance.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Diablo Tap Dances
-
-My [Tap Dance](https://github.com/qmk/qmk_firmware/blob/master/users/drashna/tap_dances.c) file includes the tap dance declarations, and everything needed for them.
-
-This is used for making Diablo 3 much easier to plan, especially at high rift levels.
-
-This works by using Tap Dances. The taps don't actually "do anything". Instead, it sets up the interval for how often to send specific keypresses. As you can tell, this makes automating things very easy.
-
-For critics that think this is cheating, just search "[diablo 3 num lock auto cast](http://lmgtfy.com/?q=diablo+3+numlock+autocast)". This is just a simpler method, that doesn't require a numpad.
-
-
-## Custom Tap Dance Type
-The real fun here is that the tap dances use a custom defined Tap Dance type:
-
-```c
-#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
- .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
- .user_data = (void *)&((diable_keys_t) { index, keycode }), \
- }
-```
-This lets me set an index and keycode for the tap dance. This isn't the cool part yet, but this allows for the really cool stuff.
-
-The Index is needed because I don't know how to handle it otherwise.
-
-## The Actual Dances
-
-These are the custom defined dances that I'm using. It sets up everything for later, using the above custom dance type.
-
-```c
-//Tap Dance Definitions, sets the index and the keycode.
-qk_tap_dance_action_t tap_dance_actions[] = {
- // tap once to disable, and more to enable timed micros
- [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
- [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
- [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
- [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
-};
-```
-
-## Custom Data Structures
-
-First, to get this all working, there are a couple of things that need to be set up. In a header file (or you could put it into the keymap), you need to create a couple of custom structures:
-
-```c
-typedef struct {
- uint16_t timer;
- uint8_t key_interval;
- uint8_t keycode;
-} diablo_timer_t;
-
-typedef struct {
- uint8_t index;
- uint8_t keycode;
-} diable_keys_t;
-```
-
-The first structure is for tracking each key that is being used. The second is to pass data from the Tap Dance action array to the actual function that we will need.
-
-
-## Custom Arrays
-
-To facilitate things, you will need a couple of arrays in your `c` file.
-
-```c
-//define diablo macro timer variables
-diablo_timer_t diablo_timer[4];
-
-// Set the default intervals. Always start with 0 so that it will disable on first hit.
-// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
-uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 };
-```
-
-The first one (`diablo_timer`) is what keeps track of the timer used for the keys, the interval that it uses, and the actual keycode. This makes managing it a lot easier.
-
-The second array is a list of predefined intervals, in seconds. You can add more here, or remove entries. It doesn't matter how long the array is, as this is computed automatically.
-
-## The Magic - Part 1: Master function
-
-The first part of the magic here is the `diablo_tapdance_master` function. The Tap Dance feature calls this function, directly, and passes some data to the function. Namely, it passes the array of the index and the keycode (`diablo_keys_t` from above). This sets the keycode and the interval for the specific index of `diabolo_timer` based on the number of taps. If you hit it more than the number of items in the array, then it zeroes out the interval, disabling it.
-
-```c
-// Cycle through the times for the macro, starting at 0, for disabled.
-void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
- diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
- // Sets the keycode based on the index
- diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
-
- // if the tapdance is hit more than the number of elemints in the array, reset
- if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t) ) ) {
- diablo_timer[diablo_keys->index].key_interval = 0;
- reset_tap_dance(state);
- } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
- diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
- }
-}
-```
-
-## The Magic - Part 2: The Coup de Grace
-
-The real core here is the `run_diablo_macro_check()` function. You need to call this from `matrix_scan_user`, as this handles the timer check.
-
-Specifically, it runs a check for each index of the timer. It checks to see if it's enabled, and if enough time has passed. If enough time has passed, it resets the timer, and will tap the keycode that you set for that index, but only if the Diablo layer is enabled.
-
-```c
-// Checks each of the 4 timers/keys to see if enough time has elapsed
-void run_diablo_macro_check(void) {
- for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
- // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
- if ( diablo_timer[index].key_interval && timer_elapsed( diablo_timer[index].timer ) > ( diablo_timer[index].key_interval * 1000 ) ) {
- // reset the timer, since enough time has passed
- diablo_timer[index].timer = timer_read();
- // send keycode ONLY if we're on the diablo layer.
- if (IS_LAYER_ON(_DIABLO)) {
- tap_code(diablo_timer[index].keycode);
- }
- }
- }
-}
-```
diff --git a/users/drashna/rgb/readme.md b/users/drashna/rgb/readme.md
new file mode 100644
index 0000000000..4deaa0a463
--- /dev/null
+++ b/users/drashna/rgb/readme.md
@@ -0,0 +1,52 @@
+# RGB
+
+Custom RGB code can be disabled by setting `CUSTOM_RGBLIGHT = no` or `CUSTOM_RGB_MATRIX = no` in your `rules.mk`
+
+## RGB Light
+
+### Layer Indication Code
+
+At least for RGB Light, the `layer_state_set` function is used to detect the current highest layer, and change the underglow based on that layer.
+
+This works for both the regular layers, and for the default layers, too.
+
+I use the sethsv variants of the commands, so that different modes can be used, as well.
+
+RGB Matrix uses a custom, per board implementation, at the moment.
+
+### RGB Light Startup Animation
+
+On startup, if enabled, the board will cycle through the entire hue wheel, starting and ending on the default layer color.
+
+```c
+void keyboard_post_init_rgb(void) {
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_STARTUP_ANIMATION)
+ if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); }
+ if (rgblight_config.enable) {
+ layer_state_set_user(layer_state);
+ uint16_t old_hue = rgblight_config.hue;
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ for (uint16_t i = 255; i > 0; i--) {
+ rgblight_sethsv_noeeprom( ( i + old_hue) % 255, 255, 255);
+ matrix_scan();
+ wait_ms(10);
+ }
+ }
+#endif
+ layer_state_set_user(layer_state);
+}
+```
+
+This could probably benefit from some cleanup and better handling.
+
+## RGB Matrix
+
+### Idle Animation
+
+This feature can be toggled with the `RGB_IDL` keycode.
+
+This sets the mode to the Heatmap Animation when typing, but will switch to the cycle in animations when idle.
+
+### Layer Indication
+
+This sets the modifier keys to indicate the current layer state, with the option to override the behavior.
diff --git a/users/drashna/rgb/rgb_matrix_stuff.c b/users/drashna/rgb/rgb_matrix_stuff.c
new file mode 100644
index 0000000000..e6d631466d
--- /dev/null
+++ b/users/drashna/rgb/rgb_matrix_stuff.c
@@ -0,0 +1,129 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+#include "rgb_matrix.h"
+#include "lib/lib8tion/lib8tion.h"
+extern led_config_t g_led_config;
+
+static uint32_t hypno_timer;
+
+void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) {
+ HSV hsv = {hue, sat, val};
+ if (hsv.v > rgb_matrix_get_val()) {
+ hsv.v = rgb_matrix_get_val();
+ }
+
+ switch (mode) {
+ case 1: // breathing
+ {
+ uint16_t time = scale16by8(g_rgb_timer, speed / 8);
+ hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
+ RGB rgb = hsv_to_rgb(hsv);
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ break;
+ }
+ default: // Solid Color
+ {
+ RGB rgb = hsv_to_rgb(hsv);
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ break;
+ }
+ }
+}
+
+__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
+
+void matrix_scan_rgb_matrix(void) {
+#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
+ }
+#endif
+ rgb_matrix_indicator_keymap();
+}
+
+void keyboard_post_init_rgb_matrix(void) {
+#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ if (userspace_config.rgb_matrix_idle_anim) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
+ }
+#endif
+}
+
+bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
+#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ hypno_timer = sync_timer_read32();
+ if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
+ }
+#endif
+ switch (keycode) {
+ case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
+#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ if (record->event.pressed) {
+ userspace_config.rgb_matrix_idle_anim ^= 1;
+ dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
+ eeconfig_update_user(userspace_config.raw);
+ if (userspace_config.rgb_matrix_idle_anim) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
+ }
+ }
+#endif
+ break;
+ }
+ return true;
+}
+
+__attribute__((weak)) bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) { return true; }
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (!rgb_matrix_indicators_advanced_keymap(led_min, led_max)) { return; }
+
+#if defined(RGBLIGHT_ENABLE)
+ if (!userspace_config.rgb_layer_change)
+#else
+ if (userspace_config.rgb_layer_change)
+#endif
+ {
+ switch (get_highest_layer(layer_state | default_layer_state)) {
+ case _DEFAULT_LAYER_1:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_2:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_3:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_4:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _GAMEPAD:
+ rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DIABLO:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _RAISE:
+ rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _LOWER:
+ rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _ADJUST:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ }
+ }
+}
+
+__attribute__((weak)) bool rgb_matrix_indicators_keymap(void) { return true; }
+void rgb_matrix_indicators_user(void) { rgb_matrix_indicators_keymap(); }
diff --git a/users/drashna/rgb/rgb_matrix_stuff.h b/users/drashna/rgb/rgb_matrix_stuff.h
new file mode 100644
index 0000000000..7c6f6c271e
--- /dev/null
+++ b/users/drashna/rgb/rgb_matrix_stuff.h
@@ -0,0 +1,15 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "quantum.h"
+
+bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record);
+void keyboard_post_init_rgb_matrix(void);
+void matrix_scan_rgb_matrix(void);
+
+void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max);
+
+bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max);
+bool rgb_matrix_indicators_keymap(void);
diff --git a/users/drashna/rgb/rgb_stuff.c b/users/drashna/rgb/rgb_stuff.c
new file mode 100644
index 0000000000..09071f7151
--- /dev/null
+++ b/users/drashna/rgb/rgb_stuff.c
@@ -0,0 +1,117 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#ifdef RGBLIGHT_ENABLE
+
+# include "drashna.h"
+# include "rgb_stuff.h"
+# include "eeprom.h"
+
+bool has_initialized;
+
+void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
+void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
+ rgblight_sethsv_noeeprom(hue, sat, val);
+ // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly
+ rgblight_mode_noeeprom(mode);
+}
+
+bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { return true; }
+
+# if defined(RGBLIGHT_STARTUP_ANIMATION)
+static bool is_enabled;
+static bool is_rgblight_startup;
+static HSV old_hsv;
+static uint8_t old_mode;
+deferred_token rgb_startup_token;
+# endif
+
+uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) {
+ if (is_rgblight_startup && is_keyboard_master()) {
+ static uint8_t counter = 0;
+ counter++;
+ rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255);
+ if (counter >= 255) {
+ is_rgblight_startup = false;
+ if (userspace_config.rgb_layer_change) {
+ layer_state_set_rgb_light(layer_state);
+ } else {
+ rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode);
+ }
+ if (!is_enabled) {
+ rgblight_disable_noeeprom();
+ }
+ }
+ }
+ return is_rgblight_startup ? 10 : 0;
+}
+
+void keyboard_post_init_rgb_light(void) {
+# if defined(RGBLIGHT_STARTUP_ANIMATION)
+ is_enabled = rgblight_is_enabled();
+ if (userspace_config.rgb_layer_change) {
+ layer_state_set_rgb_light(layer_state);
+ }
+ old_hsv = rgblight_get_hsv();
+ old_mode = rgblight_get_mode();
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ is_rgblight_startup = true;
+# endif
+ if (userspace_config.rgb_layer_change) {
+ layer_state_set_rgb_light(layer_state);
+ }
+ rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL);
+
+}
+
+layer_state_t layer_state_set_rgb_light(layer_state_t state) {
+# ifdef RGBLIGHT_ENABLE
+ if (userspace_config.rgb_layer_change) {
+ switch (get_highest_layer(state | default_layer_state)) {
+ case _MOUSE: // mouse
+ if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) {
+# if defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
+# else
+ rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
+# endif
+ }
+ break;
+ case _MEDIA:
+ rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
+ break;
+ case _GAMEPAD:
+ rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
+ break;
+ case _DIABLO:
+ rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
+ break;
+ case _RAISE:
+ rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3);
+ break;
+ case _LOWER:
+ rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
+ break;
+ case _ADJUST:
+ rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
+ break;
+ case _DEFAULT_LAYER_1:
+ rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
+ break;
+ case _DEFAULT_LAYER_2:
+ rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
+ break;
+ case _DEFAULT_LAYER_3:
+ rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
+ break;
+ case _DEFAULT_LAYER_4:
+ rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
+ break;
+ }
+ }
+# endif // RGBLIGHT_ENABLE
+
+ return state;
+}
+
+#endif
diff --git a/users/drashna/rgb/rgb_stuff.h b/users/drashna/rgb/rgb_stuff.h
new file mode 100644
index 0000000000..d720275b60
--- /dev/null
+++ b/users/drashna/rgb/rgb_stuff.h
@@ -0,0 +1,12 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "quantum.h"
+
+bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record);
+void keyboard_post_init_rgb_light(void);
+void matrix_scan_rgb_light(void);
+layer_state_t layer_state_set_rgb_light(layer_state_t state);
+layer_state_t default_layer_state_set_rgb_light(layer_state_t state);
+void rgblight_sethsv_default_helper(uint8_t index);
diff --git a/users/drashna/rgb_matrix_stuff.c b/users/drashna/rgb_matrix_stuff.c
deleted file mode 100644
index 97811092c1..0000000000
--- a/users/drashna/rgb_matrix_stuff.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "drashna.h"
-#include "rgb_matrix.h"
-#include "lib/lib8tion/lib8tion.h"
-extern led_config_t g_led_config;
-
-static uint32_t hypno_timer;
-
-void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) {
- HSV hsv = {hue, sat, val};
- if (hsv.v > rgb_matrix_get_val()) {
- hsv.v = rgb_matrix_get_val();
- }
-
- switch (mode) {
- case 1: // breathing
- {
- uint16_t time = scale16by8(g_rgb_timer, speed / 8);
- hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
- RGB rgb = hsv_to_rgb(hsv);
- for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
- if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
- RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
- }
- }
- break;
- }
- default: // Solid Color
- {
- RGB rgb = hsv_to_rgb(hsv);
- for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
- if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
- RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
- }
- }
- break;
- }
- }
-}
-
-__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
-
-void matrix_scan_rgb_matrix(void) {
-#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) {
- rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
- }
-#endif
- rgb_matrix_indicator_keymap();
-}
-
-void keyboard_post_init_rgb_matrix(void) {
-#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- if (userspace_config.rgb_matrix_idle_anim) {
- rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
- }
-#endif
-}
-
-bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
-#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- hypno_timer = sync_timer_read32();
- if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
- rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
- }
-#endif
- switch (keycode) {
- case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
-#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- if (record->event.pressed) {
- userspace_config.rgb_matrix_idle_anim ^= 1;
- dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
- eeconfig_update_user(userspace_config.raw);
- if (userspace_config.rgb_matrix_idle_anim) {
- rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
- }
- }
-#endif
- break;
- }
- return true;
-}
diff --git a/users/drashna/rgb_matrix_stuff.h b/users/drashna/rgb_matrix_stuff.h
deleted file mode 100644
index b86f2f6514..0000000000
--- a/users/drashna/rgb_matrix_stuff.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "quantum.h"
-
-bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record);
-void keyboard_post_init_rgb_matrix(void);
-void matrix_scan_rgb_matrix(void);
-
-void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
-void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max);
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
deleted file mode 100644
index 15108bde04..0000000000
--- a/users/drashna/rgb_stuff.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef RGBLIGHT_ENABLE
-
-# include "drashna.h"
-# include "rgb_stuff.h"
-# include "eeprom.h"
-
-bool has_initialized;
-
-void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
-void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
- rgblight_sethsv_noeeprom(hue, sat, val);
- // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly
- rgblight_mode_noeeprom(mode);
-}
-
-bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { return true; }
-
-# if defined(RGBLIGHT_STARTUP_ANIMATION)
-static bool is_enabled;
-static bool is_rgblight_startup;
-static HSV old_hsv;
-static uint8_t old_mode;
-static uint16_t rgblight_startup_loop_timer;
-# endif
-
-void keyboard_post_init_rgb_light(void) {
-# if defined(RGBLIGHT_STARTUP_ANIMATION)
- is_enabled = rgblight_is_enabled();
- if (userspace_config.rgb_layer_change) {
- layer_state_set_rgb_light(layer_state);
- }
- old_hsv = rgblight_get_hsv();
- old_mode = rgblight_get_mode();
- rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- is_rgblight_startup = true;
-# endif
- if (userspace_config.rgb_layer_change) {
- layer_state_set_rgb_light(layer_state);
- }
-}
-
-void matrix_scan_rgb_light(void) {
-# if defined(RGBLIGHT_STARTUP_ANIMATION)
- if (is_rgblight_startup && is_keyboard_master()) {
- if (sync_timer_elapsed(rgblight_startup_loop_timer) > 10) {
- static uint8_t counter;
- counter++;
- rgblight_sethsv_noeeprom((counter + old_hsv.h) % 255, 255, 255);
- rgblight_startup_loop_timer = sync_timer_read();
- if (counter == 255) {
- is_rgblight_startup = false;
- if (userspace_config.rgb_layer_change) {
- layer_state_set_rgb_light(layer_state);
- } else {
- rgblight_set_hsv_and_mode(old_hsv.h, old_hsv.s, old_hsv.v, old_mode);
- }
- if (!is_enabled) {
- rgblight_disable_noeeprom();
- }
- }
- }
- }
-# endif
-}
-
-layer_state_t layer_state_set_rgb_light(layer_state_t state) {
-# ifdef RGBLIGHT_ENABLE
- if (userspace_config.rgb_layer_change) {
- switch (get_highest_layer(state | default_layer_state)) {
- case _MOUSE: // mouse
- if (!layer_state_cmp(state, _GAMEPAD) && !layer_state_cmp(state, _DIABLO)) {
-# if defined(RGBLIGHT_EFFECT_TWINKLE)
- rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
-# else
- rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
-# endif
- }
- break;
- case _MEDIA:
- rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
- break;
- case _GAMEPAD:
- rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
- break;
- case _DIABLO:
- rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
- break;
- case _RAISE:
- rgblight_set_hsv_and_mode(HSV_YELLOW, RGBLIGHT_MODE_BREATHING + 3);
- break;
- case _LOWER:
- rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3);
- break;
- case _ADJUST:
- rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_KNIGHT + 2);
- break;
- case _DEFAULT_LAYER_1:
- rgblight_set_hsv_and_mode(DEFAULT_LAYER_1_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
- break;
- case _DEFAULT_LAYER_2:
- rgblight_set_hsv_and_mode(DEFAULT_LAYER_2_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
- break;
- case _DEFAULT_LAYER_3:
- rgblight_set_hsv_and_mode(DEFAULT_LAYER_3_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
- break;
- case _DEFAULT_LAYER_4:
- rgblight_set_hsv_and_mode(DEFAULT_LAYER_4_HSV, RGBLIGHT_MODE_STATIC_LIGHT);
- break;
- }
- }
-# endif // RGBLIGHT_ENABLE
-
- return state;
-}
-
-#endif
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h
deleted file mode 100644
index af1acdde71..0000000000
--- a/users/drashna/rgb_stuff.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "quantum.h"
-
-bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record);
-void keyboard_post_init_rgb_light(void);
-void matrix_scan_rgb_light(void);
-layer_state_t layer_state_set_rgb_light(layer_state_t state);
-layer_state_t default_layer_state_set_rgb_light(layer_state_t state);
-void rgblight_sethsv_default_helper(uint8_t index);
diff --git a/users/drashna/rgblight_breathe_table.h b/users/drashna/rgblight_breathe_table.h
index b6f7a13ac1..d406395978 100644
--- a/users/drashna/rgblight_breathe_table.h
+++ b/users/drashna/rgblight_breathe_table.h
@@ -1,18 +1,5 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#ifndef RGBLIGHT_EFFECT_BREATHE_TABLE
#define RGBLIGHT_EFFECT_BREATHE_TABLE
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index e9911979c7..4bc71b6939 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -1,5 +1,7 @@
SRC += $(USER_PATH)/drashna.c \
- $(USER_PATH)/process_records.c
+ $(USER_PATH)/callbacks.c \
+ $(USER_PATH)/keyrecords/process_records.c \
+ $(USER_PATH)/keyrecords/tapping.c
ifneq ($(PLATFORM),CHIBIOS)
ifneq ($(strip $(LTO_SUPPORTED)), no)
@@ -8,32 +10,55 @@ ifneq ($(PLATFORM),CHIBIOS)
endif
SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
+# DEBUG_MATRIX_SCAN_RATE_ENABLE = api
ifneq ($(strip $(NO_SECRETS)), yes)
- ifneq ("$(wildcard $(USER_PATH)/secrets.c)","")
- SRC += $(USER_PATH)/secrets.c
+ ifneq ("$(wildcard $(USER_PATH)/keyrecords/secrets.c)","")
+ SRC += $(USER_PATH)/keyrecords/secrets.c
endif
ifeq ($(strip $(NO_SECRETS)), lite)
OPT_DEFS += -DNO_SECRETS
endif
endif
+ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
+ OPT_DEFS += -DMAKE_BOOTLOADER
+endif
+
+# At least until build.mk or the like drops, this is here to prevent
+# VUSB boards from enabling NKRO, as they do not support it. Ideally
+# this should be handled per keyboard, but until that happens ...
+ifeq ($(strip $(PROTOCOL)), VUSB)
+ NKRO_ENABLE := no
+endif
+
+CUSTOM_UNICODE_ENABLE ?= yes
+ifeq ($(strip $(CUSTOM_UNICODE_ENABLE)), yes)
+ UNICODE_ENABLE := no
+ UNICODEMAP_ENABLE := no
+ UCIS_ENABLE := no
+ UNICODE_COMMON := yes
+ OPT_DEFS += -DCUSTOM_UNICODE_ENABLE
+ SRC += $(USER_PATH)/keyrecords/unicode.c
+endif
+
CUSTOM_TAP_DANCE ?= yes
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ifeq ($(strip $(CUSTOM_TAP_DANCE)), yes)
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += $(USER_PATH)/tap_dances.c
+ SRC += $(USER_PATH)/keyrecords/tap_dances.c
endif
endif
CUSTOM_RGBLIGHT ?= yes
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
ifeq ($(strip $(CUSTOM_RGBLIGHT)), yes)
- SRC += $(USER_PATH)/rgb_stuff.c
+ SRC += $(USER_PATH)/rgb/rgb_stuff.c
ifeq ($(strip $(RGBLIGHT_NOEEPROM)), yes)
OPT_DEFS += -DRGBLIGHT_NOEEPROM
endif
ifeq ($(strip $(RGBLIGHT_STARTUP_ANIMATION)), yes)
OPT_DEFS += -DRGBLIGHT_STARTUP_ANIMATION
+ DEFERRED_EXEC_ENABLE = yes
endif
endif
endif
@@ -41,7 +66,7 @@ endif
CUSTOM_RGB_MATRIX ?= yes
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(strip $(CUSTOM_RGB_MATRIX)), yes)
- SRC += $(USER_PATH)/rgb_matrix_stuff.c
+ SRC += $(USER_PATH)/rgb/rgb_matrix_stuff.c
endif
endif
@@ -52,38 +77,48 @@ ifdef CONSOLE_ENABLE
endif
endif
-ifeq ($(strip $(MAKE_BOOTLOADER)), yes)
- OPT_DEFS += -DMAKE_BOOTLOADER
-endif
-
-# At least until build.mk or the like drops, this is here to prevent
-# VUSB boards from enabling NKRO, as they do not support it. Ideally
-# this should be handled per keyboard, but until that happens ...
-ifeq ($(strip $(PROTOCOL)), VUSB)
- NKRO_ENABLE = no
-endif
-
CUSTOM_OLED_DRIVER ?= yes
ifeq ($(strip $(OLED_ENABLE)), yes)
+ ifeq ($(strip $(OLED_DRIVER)), custom)
+ OPT_DEFS += -DOLED_ENABLE \
+ -DOLED_DRIVER_SH1107
+ SRC += $(USER_PATH)/oled/sh110x.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes)
- SRC += $(USER_PATH)/oled_stuff.c
OPT_DEFS += -DCUSTOM_OLED_DRIVER_CODE
+ SRC += $(USER_PATH)/oled/oled_stuff.c
endif
+ ifeq ($(strip $(OLED_DISPLAY_TEST)), yes)
+ OPT_DEFS += -DOLED_DISPLAY_TEST
+ endif
+ DEFERRED_EXEC_ENABLE = yes
endif
-ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes)
- POINTING_DEVICE_ENABLE := yes
- OPT_DEFS += -DPIMORONI_TRACKBALL_ENABLE
- SRC += drivers/sensors/pimoroni_trackball.c
- QUANTUM_LIB_SRC += i2c_master.c
+CUSTOM_POINTING_DEVICE ?= yes
+ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
+ ifeq ($(strip $(CUSTOM_POINTING_DEVICE)), yes)
+ SRC += $(USER_PATH)/pointing/pointing.c
+ endif
endif
CUSTOM_SPLIT_TRANSPORT_SYNC ?= yes
ifeq ($(strip $(CUSTOM_SPLIT_TRANSPORT_SYNC)), yes)
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
- QUANTUM_LIB_SRC += $(USER_PATH)/transport_sync.c
+ QUANTUM_LIB_SRC += $(USER_PATH)/split/transport_sync.c
OPT_DEFS += -DCUSTOM_SPLIT_TRANSPORT_SYNC
endif
+
endif
-# DEBUG_MATRIX_SCAN_RATE_ENABLE = api
+AUTOCORRECTION_ENABLE ?= no
+ifeq ($(strip $(AUTOCORRECTION_ENABLE)), yes)
+ SRC += $(USER_PATH)/keyrecords/autocorrection/autocorrection.c
+ OPT_DEFS += -DAUTOCORRECTION_ENABLE
+endif
+
+CAPS_WORD_ENABLE ?= no
+ifeq ($(strip $(CAPS_WORD_ENABLE)), yes)
+ SRC += $(USER_PATH)/keyrecords/caps_word.c
+ OPT_DEFS += -DCAPS_WORD_ENABLE
+endif
diff --git a/users/drashna/split/readme.md b/users/drashna/split/readme.md
new file mode 100644
index 0000000000..5dad340122
--- /dev/null
+++ b/users/drashna/split/readme.md
@@ -0,0 +1,29 @@
+# Custom Split Transport
+
+To disable the customized split transport, add `CUSTOM_SPLIT_TRANSPORT_SYNC = no` to your `rules.mk`.
+
+This syncs a number of additional settings, such as the keymap_config (magic settings), user eeprom configs, and misc firmware settings.
+
+Additionally, this supports a watchdog timer reset for the secondary split side.
+
+## User State Config
+
+The User states that it sync are:
+
+* Audio Enable status
+* Audio Clicky states
+* Unicode mode
+* Pointing Device tap toggle status
+* Swap Hands status
+* Host Driver status
+
+## Userspace Config
+
+The userspace config states that are synced are:
+
+* RGB layer indication
+* "is overwatch" status
+* nuke switch
+* Swapped numbers
+* RGB Matrix idle animation
+* Autocorrect enable status
diff --git a/users/drashna/split/transport_sync.c b/users/drashna/split/transport_sync.c
new file mode 100644
index 0000000000..4c113ec257
--- /dev/null
+++ b/users/drashna/split/transport_sync.c
@@ -0,0 +1,239 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "transport_sync.h"
+#include "transactions.h"
+#include <string.h>
+#ifdef __AVR__
+# include <avr/wdt.h>
+#endif
+
+#ifdef UNICODE_COMMON_ENABLE
+# include "process_unicode_common.h"
+extern unicode_config_t unicode_config;
+#endif
+#ifdef AUDIO_ENABLE
+# include "audio.h"
+extern audio_config_t audio_config;
+extern bool delayed_tasks_run;
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+extern bool tap_toggling;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+extern bool swap_hands;
+#endif
+
+#if defined(SPLIT_WATCHDOG_TIMEOUT)
+static bool watchdog_ping_done = false;
+static uint32_t watchdog_timer = 0;
+#endif
+
+extern userspace_config_t userspace_config;
+extern bool host_driver_disabled;
+
+uint16_t transport_keymap_config = 0;
+uint32_t transport_userspace_config = 0, transport_user_state = 0;
+
+user_runtime_config_t user_state;
+
+void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(transport_user_state)) {
+ memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size);
+ }
+}
+void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(transport_keymap_config)) {
+ memcpy(&transport_keymap_config, initiator2target_buffer, initiator2target_buffer_size);
+ }
+}
+void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(transport_userspace_config)) {
+ memcpy(&transport_userspace_config, initiator2target_buffer, initiator2target_buffer_size);
+ }
+}
+
+#if defined(SPLIT_WATCHDOG_TIMEOUT)
+void watchdog_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) { watchdog_ping_done = true; }
+#endif
+
+#ifdef OLED_ENABLE
+# include "oled/oled_stuff.h"
+void keylogger_string_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == OLED_KEYLOGGER_LENGTH) {
+ memcpy(&keylog_str, initiator2target_buffer, initiator2target_buffer_size);
+ }
+}
+#endif
+
+void keyboard_post_init_transport_sync(void) {
+ // Register keyboard state sync split transaction
+ transaction_register_rpc(RPC_ID_USER_STATE_SYNC, user_state_sync);
+ transaction_register_rpc(RPC_ID_USER_KEYMAP_SYNC, user_keymap_sync);
+ transaction_register_rpc(RPC_ID_USER_CONFIG_SYNC, user_config_sync);
+#ifdef OLED_ENABLE
+ transaction_register_rpc(RPC_ID_USER_KEYLOG_STR, keylogger_string_sync);
+#endif
+
+#if defined(SPLIT_WATCHDOG_TIMEOUT)
+# if defined(PROTOCOL_LUFA)
+ wdt_disable();
+# endif
+ transaction_register_rpc(RPC_ID_USER_WATCHDOG_SYNC, watchdog_handler);
+ watchdog_timer = timer_read32();
+#endif
+}
+
+void user_transport_update(void) {
+ if (is_keyboard_master()) {
+ transport_keymap_config = keymap_config.raw;
+ transport_userspace_config = userspace_config.raw;
+#ifdef AUDIO_ENABLE
+ user_state.audio_enable = is_audio_on();
+ user_state.audio_clicky_enable = is_clicky_on();
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+ user_state.tap_toggling = tap_toggling;
+#endif
+#ifdef UNICODE_COMMON_ENABLE
+ user_state.unicode_mode = unicode_config.input_mode;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+ user_state.swap_hands = swap_hands;
+#endif
+ user_state.host_driver_disabled = host_driver_disabled;
+
+ transport_user_state = user_state.raw;
+ } else {
+ keymap_config.raw = transport_keymap_config;
+ userspace_config.raw = transport_userspace_config;
+ user_state.raw = transport_user_state;
+#ifdef UNICODE_COMMON_ENABLE
+ unicode_config.input_mode = user_state.unicode_mode;
+#endif
+#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
+ tap_toggling = user_state.tap_toggling;
+#endif
+#ifdef SWAP_HANDS_ENABLE
+ swap_hands = user_state.swap_hands;
+#endif
+ host_driver_disabled = user_state.host_driver_disabled;
+ }
+}
+
+void user_transport_sync(void) {
+ if (is_keyboard_master()) {
+ // Keep track of the last state, so that we can tell if we need to propagate to slave
+ static uint16_t last_keymap = 0;
+ static uint32_t last_config = 0, last_sync[4], last_user_state = 0;
+ bool needs_sync = false;
+#ifdef OLED_ENABLE
+ static char keylog_temp[OLED_KEYLOGGER_LENGTH] = {0};
+#endif
+
+ // Check if the state values are different
+ if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) {
+ needs_sync = true;
+ memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state));
+ }
+ // Send to slave every 500ms regardless of state change
+ if (timer_elapsed32(last_sync[0]) > 250) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_USER_STATE_SYNC, sizeof(user_state), &user_state)) {
+ last_sync[0] = timer_read32();
+ }
+ needs_sync = false;
+ }
+
+ // Check if the state values are different
+ if (memcmp(&transport_keymap_config, &last_keymap, sizeof(transport_keymap_config))) {
+ needs_sync = true;
+ memcpy(&last_keymap, &transport_keymap_config, sizeof(transport_keymap_config));
+ }
+
+ // Send to slave every 500ms regardless of state change
+ if (timer_elapsed32(last_sync[1]) > 250) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_USER_KEYMAP_SYNC, sizeof(transport_keymap_config), &transport_keymap_config)) {
+ last_sync[1] = timer_read32();
+ }
+ needs_sync = false;
+ }
+
+ // Check if the state values are different
+ if (memcmp(&user_state, &last_config, sizeof(transport_userspace_config))) {
+ needs_sync = true;
+ memcpy(&last_config, &user_state, sizeof(transport_userspace_config));
+ }
+
+ // Send to slave every 500ms regardless of state change
+ if (timer_elapsed32(last_sync[2]) > 250) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_USER_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config)) {
+ last_sync[2] = timer_read32();
+ }
+ needs_sync = false;
+ }
+
+#ifdef OLED_ENABLE
+ // Check if the state values are different
+ if (memcmp(&keylog_str, &keylog_temp, OLED_KEYLOGGER_LENGTH)) {
+ needs_sync = true;
+ memcpy(&keylog_temp, &keylog_str, OLED_KEYLOGGER_LENGTH);
+ }
+ if (timer_elapsed32(last_sync[3]) > 250) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_USER_KEYLOG_STR, OLED_KEYLOGGER_LENGTH, &keylog_str)) {
+ last_sync[3] = timer_read32();
+ }
+ needs_sync = false;
+ }
+#endif
+ }
+
+#if defined(SPLIT_WATCHDOG_TIMEOUT)
+ if (!watchdog_ping_done) {
+ if (is_keyboard_master()) {
+ if (timer_elapsed32(watchdog_timer) > 100) {
+ uint8_t any_data = 1;
+ if (transaction_rpc_send(RPC_ID_USER_WATCHDOG_SYNC, sizeof(any_data), &any_data)) {
+ watchdog_ping_done = true; // successful ping
+ } else {
+ dprint("Watchdog ping failed!\n");
+ }
+ watchdog_timer = timer_read32();
+ }
+ } else {
+ if (timer_elapsed32(watchdog_timer) > 3500) {
+ software_reset();
+ while (1) {
+ }
+ }
+ }
+ }
+#endif
+}
+
+void housekeeping_task_user(void) {
+ // Update kb_state so we can send to slave
+ user_transport_update();
+
+ // Data sync from master to slave
+ user_transport_sync();
+}
diff --git a/users/drashna/split/transport_sync.h b/users/drashna/split/transport_sync.h
new file mode 100644
index 0000000000..f38fdcf1ef
--- /dev/null
+++ b/users/drashna/split/transport_sync.h
@@ -0,0 +1,26 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "drashna.h"
+#ifdef OLED_ENABLE
+# include "oled/oled_stuff.h"
+extern char keylog_str[OLED_KEYLOGGER_LENGTH];
+#endif
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool audio_enable :1;
+ bool audio_clicky_enable :1;
+ bool tap_toggling :1;
+ uint8_t unicode_mode :3;
+ bool swap_hands :1;
+ bool host_driver_disabled :1;
+ };
+} user_runtime_config_t;
+
+extern user_runtime_config_t user_state;
+
+void keyboard_post_init_transport_sync(void);
diff --git a/users/drashna/tap_dances.c b/users/drashna/tap_dances.c
deleted file mode 100644
index 01873489d8..0000000000
--- a/users/drashna/tap_dances.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "tap_dances.h"
-
-#define NUM_OF_DIABLO_KEYS 4
-// define diablo macro timer variables
-diablo_timer_t diablo_timer[NUM_OF_DIABLO_KEYS];
-
-// Set the default intervals. Always start with 0 so that it will disable on first hit.
-// Otherwise, you will need to hit a bunch of times, or hit the "clear" command
-uint8_t diablo_times[] = {0, 1, 3, 5, 10, 30};
-
-// Cycle through the times for the macro, starting at 0, for disabled.
-void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
- diable_keys_t *diablo_keys = (diable_keys_t *)user_data;
- // Sets the keycode based on the index
- diablo_timer[diablo_keys->index].keycode = diablo_keys->keycode;
-
- // if the tapdance is hit more than the number of elemints in the array, reset
- if (state->count >= (sizeof(diablo_times) / sizeof(uint8_t))) {
- diablo_timer[diablo_keys->index].key_interval = 0;
- reset_tap_dance(state);
- } else { // else set the interval (tapdance count starts at 1, array starts at 0, so offset by one)
- diablo_timer[diablo_keys->index].key_interval = diablo_times[state->count - 1];
- }
-}
-
-// clang-format off
-// One function to rule them all!! Where the Magic Sauce lies
-#define ACTION_TAP_DANCE_DIABLO(index, keycode) { \
- .fn = { NULL, (void *)diablo_tapdance_master, NULL }, \
- .user_data = (void *)&((diable_keys_t) { index, keycode }), \
- }
-// clang-format on
-
-// Tap Dance Definitions, sets the index and the keycode.
-qk_tap_dance_action_t tap_dance_actions[] = {
- // tap once to disable, and more to enable timed micros
- [TD_D3_1] = ACTION_TAP_DANCE_DIABLO(0, KC_1),
- [TD_D3_2] = ACTION_TAP_DANCE_DIABLO(1, KC_2),
- [TD_D3_3] = ACTION_TAP_DANCE_DIABLO(2, KC_3),
- [TD_D3_4] = ACTION_TAP_DANCE_DIABLO(3, KC_4),
-};
-
-// Checks each of the 4 timers/keys to see if enough time has elapsed
-void run_diablo_macro_check(void) {
- for (uint8_t index = 0; index < NUM_OF_DIABLO_KEYS; index++) {
- // if key_interval is 0, it's disabled, so only run if it's set. If it's set, check the timer.
- if (diablo_timer[index].key_interval && timer_elapsed(diablo_timer[index].timer) > (diablo_timer[index].key_interval * 1000)) {
- // reset the timer, since enough time has passed
- diablo_timer[index].timer = timer_read();
- // send keycode ONLY if we're on the diablo layer.
- if (IS_LAYER_ON(_DIABLO)) {
- tap_code(diablo_timer[index].keycode);
- }
- }
- }
-}
diff --git a/users/drashna/tap_dances.h b/users/drashna/tap_dances.h
deleted file mode 100644
index 81e462ce29..0000000000
--- a/users/drashna/tap_dances.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "drashna.h"
-
-// define diablo macro timer variables
-extern uint8_t diablo_times[];
-typedef struct {
- uint16_t timer;
- uint8_t key_interval;
- uint8_t keycode;
-} diablo_timer_t;
-
-typedef struct {
- uint8_t index;
- uint8_t keycode;
-} diable_keys_t;
-
-extern diablo_timer_t diablo_timer[];
-
-void run_diablo_macro_check(void);
-
-#ifdef TAP_DANCE_ENABLE
-enum {
- TD_D3_1 = 0,
- TD_D3_2,
- TD_D3_3,
- TD_D3_4,
-};
-#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/template.c b/users/drashna/template.c
index f98964ae4f..c4a62c6448 100644
--- a/users/drashna/template.c
+++ b/users/drashna/template.c
@@ -1,18 +1,5 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#include "template.h"
diff --git a/users/drashna/template.h b/users/drashna/template.h
index cb1ad75d8a..26ac98edb9 100644
--- a/users/drashna/template.h
+++ b/users/drashna/template.h
@@ -1,18 +1,5 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
diff --git a/users/drashna/transport_sync.c b/users/drashna/transport_sync.c
deleted file mode 100644
index daa14bbef7..0000000000
--- a/users/drashna/transport_sync.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "transport_sync.h"
-#include "transactions.h"
-#include <string.h>
-
-#ifdef UNICODE_ENABLE
-extern unicode_config_t unicode_config;
-#endif
-#ifdef AUDIO_ENABLE
-# include "audio.h"
-extern audio_config_t audio_config;
-extern bool delayed_tasks_run;
-#endif
-#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
-extern bool tap_toggling;
-#endif
-#ifdef SWAP_HANDS_ENABLE
-extern bool swap_hands;
-#endif
-extern userspace_config_t userspace_config;
-extern bool host_driver_disabled;
-
-uint16_t transport_keymap_config = 0;
-uint32_t transport_userspace_config = 0, transport_user_state = 0;
-
-user_runtime_config_t user_state;
-
-void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
- if (initiator2target_buffer_size == sizeof(transport_user_state)) {
- memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size);
- }
-}
-void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
- if (initiator2target_buffer_size == sizeof(transport_keymap_config)) {
- memcpy(&transport_keymap_config, initiator2target_buffer, initiator2target_buffer_size);
- }
-}
-void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
- if (initiator2target_buffer_size == sizeof(transport_userspace_config)) {
- memcpy(&transport_userspace_config, initiator2target_buffer, initiator2target_buffer_size);
- }
-}
-
-void keyboard_post_init_transport_sync(void) {
- // Register keyboard state sync split transaction
- transaction_register_rpc(RPC_ID_USER_STATE_SYNC, user_state_sync);
- transaction_register_rpc(RPC_ID_USER_KEYMAP_SYNC, user_keymap_sync);
- transaction_register_rpc(RPC_ID_USER_CONFIG_SYNC, user_config_sync);
-}
-
-void user_transport_update(void) {
- if (is_keyboard_master()) {
- transport_keymap_config = keymap_config.raw;
- transport_userspace_config = userspace_config.raw;
-#ifdef AUDIO_ENABLE
- user_state.audio_enable = is_audio_on();
- user_state.audio_clicky_enable = is_clicky_on();
-#endif
-#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
- user_state.tap_toggling = tap_toggling;
-#endif
-#ifdef UNICODE_ENABLE
- user_state.unicode_mode = unicode_config.input_mode;
-#endif
-#ifdef SWAP_HANDS_ENABLE
- user_state.swap_hands = swap_hands;
-#endif
- user_state.host_driver_disabled = host_driver_disabled;
-
- transport_user_state = user_state.raw;
- } else {
- keymap_config.raw = transport_keymap_config;
- userspace_config.raw = transport_userspace_config;
- user_state.raw = transport_user_state;
-#ifdef UNICODE_ENABLE
- unicode_config.input_mode = user_state.unicode_mode;
-#endif
-#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
- tap_toggling = user_state.tap_toggling;
-#endif
-#ifdef SWAP_HANDS_ENABLE
- swap_hands = user_state.swap_hands;
-#endif
- host_driver_disabled = user_state.host_driver_disabled;
- }
-}
-
-void user_transport_sync(void) {
- if (is_keyboard_master()) {
- // Keep track of the last state, so that we can tell if we need to propagate to slave
- static uint16_t last_keymap = 0;
- static uint32_t last_config = 0, last_sync[3], last_user_state = 0;
- bool needs_sync = false;
-
- // Check if the state values are different
- if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) {
- needs_sync = true;
- memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state));
- }
- // Send to slave every 500ms regardless of state change
- if (timer_elapsed32(last_sync[0]) > 250) {
- needs_sync = true;
- }
-
- // Perform the sync if requested
- if (needs_sync) {
- if (transaction_rpc_send(RPC_ID_USER_STATE_SYNC, sizeof(user_state), &user_state)) {
- last_sync[0] = timer_read32();
- }
- needs_sync = false;
- }
-
- // Check if the state values are different
- if (memcmp(&transport_keymap_config, &last_keymap, sizeof(transport_keymap_config))) {
- needs_sync = true;
- memcpy(&last_keymap, &transport_keymap_config, sizeof(transport_keymap_config));
- }
-
- // Send to slave every 500ms regardless of state change
- if (timer_elapsed32(last_sync[1]) > 250) {
- needs_sync = true;
- }
-
- // Perform the sync if requested
- if (needs_sync) {
- if (transaction_rpc_send(RPC_ID_USER_KEYMAP_SYNC, sizeof(transport_keymap_config), &transport_keymap_config)) {
- last_sync[1] = timer_read32();
- }
- needs_sync = false;
- }
-
- // Check if the state values are different
- if (memcmp(&user_state, &last_config, sizeof(transport_userspace_config))) {
- needs_sync = true;
- memcpy(&last_config, &user_state, sizeof(transport_userspace_config));
- }
-
- // Send to slave every 500ms regardless of state change
- if (timer_elapsed32(last_sync[2]) > 250) {
- needs_sync = true;
- }
-
- // Perform the sync if requested
- if (needs_sync) {
- if (transaction_rpc_send(RPC_ID_USER_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config)) {
- last_sync[2] = timer_read32();
- }
- }
- }
-}
-
-void housekeeping_task_user(void) {
- // Update kb_state so we can send to slave
- user_transport_update();
-
- // Data sync from master to slave
- user_transport_sync();
-}
diff --git a/users/drashna/transport_sync.h b/users/drashna/transport_sync.h
deleted file mode 100644
index 70b6ea522b..0000000000
--- a/users/drashna/transport_sync.h
+++ /dev/null
@@ -1,36 +0,0 @@
-
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "drashna.h"
-
-typedef union {
- uint32_t raw;
- struct {
- bool audio_enable :1;
- bool audio_clicky_enable :1;
- bool tap_toggling :1;
- bool unicode_mode :1;
- bool swap_hands :1;
- bool host_driver_disabled :1;
- };
-} user_runtime_config_t;
-
-extern user_runtime_config_t user_state;
-
-void keyboard_post_init_transport_sync(void);
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
deleted file mode 100644
index c1ae815579..0000000000
--- a/users/drashna/wrappers.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-#include "drashna.h"
-/*
-Since our quirky block definitions are basically a list of comma separated
-arguments, we need a wrapper in order for these definitions to be
-expanded before being used as arguments to the LAYOUT_xxx macro.
-*/
-
-/*
-Blocks for each of the four major keyboard layouts
-Organized so we can quickly adapt and modify all of them
-at once, rather than for each keyboard, one at a time.
-And this allows for much cleaner blocks in the keymaps.
-For instance Tap/Hold for Control on all of the layouts
-
-NOTE: These are all the same length. If you do a search/replace
- then you need to add/remove underscores to keep the
- lengths consistent.
-*/
-// clang-format off
-#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
-#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
-#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
-#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
-#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
-#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D
-#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
-#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
-#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
-#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V
-
-#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT
-#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
-
-
-#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
-#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I
-#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
-
-#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
-#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
-#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
-
-
-#define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
-#define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U
-#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
-
-#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
-#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
-#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
-
-#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
-#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G
-#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
-
-#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
-#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT
-#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
-#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G
-#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
-#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT
-#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
-#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F
-#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
-
-#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
-#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT
-#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
-
-
-#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN
-#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U
-#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F
-
-#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P
-#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT
-#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH
-
-// Qwerty-like
-#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W
-#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
-#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X
-
-#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J
-#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT
-#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
-
-// Colemak like
-#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
-#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
-#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J
-
-#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
-#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
-#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
-
-// colemak like, zxcv fixed
-#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
-#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
-#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J
-
-#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
-#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
-#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
-
-// teeheehee
-#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L
-#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G
-#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A
-
-#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H
-#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT
-#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
-#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
-#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
-
-#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
-#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I
-#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
-
-
-#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
-#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
-#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
-
-#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
-#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
-#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
-
-
-#define __________________ISRT_L1__________________ KC_W, KC_C, KC_L, KC_M, KC_K
-#define __________________ISRT_L2__________________ KC_I, KC_S, KC_R, KC_T, KC_G
-#define __________________ISRT_L3__________________ KC_Q, KC_V, KC_W, KC_D, KC_J
-
-#define __________________ISRT_R1__________________ KC_Z, KC_F, KC_U, KC_COMM, KC_QUOTE
-#define __________________ISRT_R2__________________ KC_P, KC_N, KC_E, KC_A, KC_O, KC_SCLN
-#define __________________ISRT_R3__________________ KC_B, KC_H, KC_SLSH, KC_DOT, KC_X
-
-
-#define __________________SOUL_L1__________________ KC_Q, KC_W, KC_L, KC_D, KC_P
-#define __________________SOUL_L2__________________ KC_A, KC_S, KC_R, KC_T, KC_G
-#define __________________SOUL_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_J
-
-#define __________________SOUL_R1__________________ KC_K, KC_M, KC_U, KC_Y, KC_SCLN
-#define __________________SOUL_R2__________________ KC_F, KC_N, KC_E, KC_I, KC_O, KC_QUOTE
-#define __________________SOUL_R3__________________ KC_B, KC_H, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define __________________NIRO_L1__________________ KC_Q, KC_W, KC_U, KC_D, KC_P
-#define __________________NIRO_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_G
-#define __________________NIRO_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define __________________NIRO_R1__________________ KC_J, KC_F, KC_Y, KC_L, KC_SCLN
-#define __________________NIRO_R2__________________ KC_H, KC_N, KC_I, KC_R, KC_O, KC_QUOTE
-#define __________________NIRO_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________ASSET_L1__________________ KC_Q, KC_W, KC_J, KC_F, KC_G
-#define _________________ASSET_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_D
-#define _________________ASSET_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _________________ASSET_R1__________________ KC_Y, KC_P, KC_U, KC_L, KC_SCLN
-#define _________________ASSET_R2__________________ KC_H, KC_N, KC_I, KC_O, KC_R, KC_QUOTE
-#define _________________ASSET_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _________________MTGAP_L1__________________ KC_Y, KC_P, KC_O, KC_U, KC_J
-#define _________________MTGAP_L2__________________ KC_I, KC_N, KC_E, KC_A, KC_COMM
-#define _________________MTGAP_L3__________________ KC_Q, KC_Z, KC_SLSH, KC_DOT, KC_SCLN
-
-#define _________________MTGAP_R1__________________ KC_K, KC_D, KC_L, KC_C, KC_W
-#define _________________MTGAP_R2__________________ KC_M, KC_H, KC_T, KC_S, KC_R, KC_QUOTE
-#define _________________MTGAP_R3__________________ KC_B, KC_F, KC_G, KC_V, KC_X
-
-
-#define _________________MINIMAK_L1________________ KC_Q, KC_W, KC_D, KC_R, KC_K
-#define _________________MINIMAK_L2________________ KC_A, KC_S, KC_T, KC_F, KC_G
-#define _________________MINIMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _________________MINIMAK_R1________________ KC_Y, KC_U, KC_I, KC_O, KC_P
-#define _________________MINIMAK_R2________________ KC_H, KC_J, KC_E, KC_L, KC_SCLN, KC_QUOT
-#define _________________MINIMAK_R3________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define ________________MINIMAK_8_L1_______________ KC_Q, KC_W, KC_D, KC_R, KC_K
-#define ________________MINIMAK_8_L2_______________ KC_A, KC_S, KC_T, KC_F, KC_G
-#define ________________MINIMAK_8_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define ________________MINIMAK_8_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_P
-#define ________________MINIMAK_8_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_SCLN, KC_QUOT
-#define ________________MINIMAK_8_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define _______________MINIMAK_12_L1_______________ KC_Q, KC_W, KC_D, KC_F, KC_K
-#define _______________MINIMAK_12_L2_______________ KC_A, KC_S, KC_T, KC_R, KC_G
-#define _______________MINIMAK_12_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
-
-#define _______________MINIMAK_12_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_SCLN
-#define _______________MINIMAK_12_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_P, KC_QUOT
-#define _______________MINIMAK_12_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
-
-
-#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
-#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
-#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
-
-#define ___________________BLANK___________________ _______, _______, _______, _______, _______
-
-
-#define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________
-#define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________
-
-#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
-#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
-#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
-
-
-
-#define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________
-#define _________________RAISE_L2__________________ ___________________BLANK___________________
-#define _________________RAISE_L3__________________ ___________________BLANK___________________
-
-#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
-#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
-#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
-
-
-
-#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
-#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM
-#define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T
-
-#define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5
-#define _________________ADJUST_R2_________________ CG_SWAP, DEFLYR1, DEFLYR2, DEFLYR3, DEFLYR4
-#define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT
-
-// clang-format on
diff --git a/users/ericgebhart/altlocal_keys.c b/users/ericgebhart/altlocal_keys.c
new file mode 100755
index 0000000000..285041b418
--- /dev/null
+++ b/users/ericgebhart/altlocal_keys.c
@@ -0,0 +1,94 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ericgebhart.h"
+#include "altlocal_keys.h"
+
+#include "keymap_bepo.h"
+
+// These are the keys for dvorak on bepo. column one is the keycode and mods for
+// the unshifted key, the second column is the keycode and mods for the shifted key.
+// GR is Good Range. It subtracts SAFE_RANGE from the keycode so we can make a
+// reasnably sized array without difficulties. The macro is for the constant declarations
+// the function is for when we use it.
+const uint16_t key_translations[][2][2] = {
+ [GR(DB_1)] = {{BP_DQUO, MOD_LSFT}, {BP_DCIR, MOD_LSFT}},
+ [GR(DB_2)] = {{BP_LDAQ, MOD_LSFT}, {BP_AT, MOD_NONE}},
+ [GR(DB_3)] = {{BP_RDAQ, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
+ [GR(DB_4)] = {{BP_LPRN, MOD_LSFT}, {BP_DLR, MOD_NONE}},
+ [GR(DB_5)] = {{BP_RPRN, MOD_LSFT}, {BP_PERC, MOD_NONE}},
+ [GR(DB_6)] = {{BP_AT, MOD_LSFT}, {BP_AT, MOD_BIT(KC_RALT)}},
+ [GR(DB_7)] = {{BP_PLUS, MOD_LSFT}, {BP_P, MOD_BIT(KC_RALT)}},
+ [GR(DB_8)] = {{BP_MINS, MOD_LSFT}, {BP_ASTR, MOD_NONE}},
+ [GR(DB_9)] = {{BP_SLSH, MOD_LSFT}, {BP_LPRN, MOD_NONE}},
+ [GR(DB_0)] = {{BP_ASTR, MOD_LSFT}, {BP_RPRN, MOD_NONE}},
+ [GR(DB_GRV)] = {{BP_PERC, MOD_LSFT}, {BP_K, MOD_BIT(KC_RALT)}},
+ [GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT}, {BP_DOT, MOD_LSFT}},
+ [GR(DB_SLASH)] = {{BP_SLSH, MOD_NONE}, {BP_QUOT, MOD_LSFT}},
+ [GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
+ [GR(DB_EQL)] = {{BP_EQL, MOD_NONE}, {BP_PLUS, MOD_NONE}},
+ [GR(DB_COMM)] = {{BP_COMM, MOD_NONE}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
+ [GR(DB_DOT)] = {{BP_DOT, MOD_NONE}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
+ [GR(DB_QUOT)] = {{BP_QUOT, MOD_NONE}, {BP_DQUO, MOD_NONE}},
+ [GR(DB_MINUS)] = {{BP_MINS, MOD_NONE}, {KC_SPC, MOD_BIT(KC_RALT)}},
+ [GR(DB_LPRN)] = {{BP_LPRN, MOD_NONE}, {BP_LPRN, MOD_BIT(KC_RALT)}},
+ [GR(DB_RPRN)] = {{BP_RPRN, MOD_NONE}, {BP_RPRN, MOD_BIT(KC_RALT)}},
+ [GR(DB_LBRC)] = {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
+ [GR(DB_RBRC)] = {{BP_X, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
+ // For the symbol layer
+ [GR(DB_HASH)] = {{BP_DLR, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
+ [GR(DB_LCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
+ [GR(DB_RCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
+ [GR(DB_PIPE)] = {{BP_B, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
+ [GR(DB_TILD)] = {{BP_K, MOD_BIT(KC_RALT)}, {BP_K, MOD_BIT(KC_RALT)}},
+ [GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}},
+ [GR(DB_LESS)] = {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
+ [GR(DB_GRTR)] = {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
+ // Keys for BEAKL on Qwerty
+ [GR(BQ_COMM)] = {{KC_COMMA, MOD_NONE}, {KC_1, MOD_LSFT}},
+ [GR(BQ_DOT)] = {{KC_DOT, MOD_NONE}, {KC_2, MOD_LSFT}},
+ [GR(BQ_QUOT)] = {{KC_QUOT, MOD_NONE}, {KC_GRV, MOD_NONE}},
+};
+
+
+uint8_t gr(uint16_t kc){
+ return (kc - SAFE_RANGE);
+}
+// send the right keycode for the right mod.
+// remove the mods we are taking care of,
+// send our keycodes then restore them.
+// all so we can make dvorak keys from bepo keycodes.
+void send_keycode(uint16_t kc){
+ uint8_t tmp_mods = get_mods();
+ bool is_shifted = ( tmp_mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
+ //uint8_t key[2][2] = key_translations[GR(kc)];
+ // need to turn of the shift if it is on.
+ unregister_mods((MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)));
+ if(is_shifted){
+ register_mods(SHIFTED_MODS(kc));
+ register_code(SHIFTED_KEY(kc));
+ unregister_code(SHIFTED_KEY(kc));
+ unregister_mods(SHIFTED_MODS(kc));
+ } else{
+ register_mods(UNSHIFTED_MODS(kc));
+ register_code(UNSHIFTED_KEY(kc));
+ unregister_code(UNSHIFTED_KEY(kc));
+ unregister_mods(UNSHIFTED_MODS(kc));
+ }
+ clear_mods();
+ register_mods(tmp_mods);
+}
diff --git a/users/ericgebhart/altlocal_keys.h b/users/ericgebhart/altlocal_keys.h
new file mode 100644
index 0000000000..b7fa977b92
--- /dev/null
+++ b/users/ericgebhart/altlocal_keys.h
@@ -0,0 +1,36 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// for the creation of dvorak keys on an Bepo keyboard at the OS layer.
+// so we can create an array of reasonable size
+// for our translation keys. We have to create a
+// good range of numbers
+#define GR(x) (x-SAFE_RANGE)
+
+// void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };
+
+uint8_t gr(uint16_t);
+void send_keycode(uint16_t);
+
+#define MOD_NONE 0x00
+
+// indexs for the keycode translation table.
+#define UNSHIFTED_KEY(key) key_translations[gr(key)][0][0]
+#define UNSHIFTED_MODS(key) key_translations[gr(key)][0][1]
+#define SHIFTED_KEY(key) key_translations[gr(key)][1][0]
+#define SHIFTED_MODS(key) key_translations[gr(key)][1][1]
diff --git a/users/ericgebhart/base_layers.h b/users/ericgebhart/base_layers.h
deleted file mode 100644
index fd88a40aef..0000000000
--- a/users/ericgebhart/base_layers.h
+++ /dev/null
@@ -1,283 +0,0 @@
-#pragma once
-/*
- Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "core_keysets.h"
-
-/******************************************************************/
-/* These are the keys for the middle and bottom edge of any layout*/
-/* That way we only need to set them once and use them everywhere */
-/* The thumb keys, the bottom rows, etc. */
-/******************************************************************/
-/******************************************************************/
-/* Middle Keysets for the XD75 */
-/******************************************************************/
-
-// For the middle keys of an xd75. It's got one more column in the middle than
-// the ergodox, or the viterbi. And the Ergodox is missing a key in column 7
-// counting from either end. Which is the first and 3rd columns of these sets.
-
-// it's all an experient. I'm not sure what make sense here.
-// stealing what I can from the ergodox layout.
-/* The XD75 has 3 keys inbetween the usual left and right hand */
-#define ___ORTHO_15_MIDDLE_T___ OSL(LAYERS), LCTL(KC_A), MDIA_SYMB_KP_LAYERS
-#define ___ORTHO_15_MIDDLE_1___ LCTL(KC_C), LCTL(KC_X), LCTL(KC_V)
-#define ___ORTHO_15_MIDDLE_2___ TO(SYMB), TO(_RGB), TO(KEYPAD)
-#define ___ORTHO_15_MIDDLE_3___ OSL(SYMB), TO(MDIA), OSL(KEYPAD)
-#define ___ORTHO_15_MIDDLE_4___ CTL_BSPC, ALT_DEL, XMONAD_ESC, ALT_ENT, CTL_SPC
-
-// The same, for BEPO
-#define ___ORTHO_15_MIDDLE_T_BP___ OSL(LAYERS), LCTL(BP_A), MDIA_SYMB_KP_LAYERS
-#define ___ORTHO_15_MIDDLE_1_BP___ LCTL(BP_C), LCTL(BP_X), LCTL(BP_V)
-#define ___ORTHO_15_MIDDLE_2_BP___ TO(SYMB_ON_BEPO), TO(_RGB), TO(KEYPAD_ON_BEPO)
-#define ___ORTHO_15_MIDDLE_3_BP___ OSL(SYMB_ON_BEPO), TO(MDIA), OSL(KEYPAD_ON_BEPO)
-
-// The Viterbi only has 2 keys in the middle.
-#define ___ORTHO_14_MIDDLE_T___ OSL(LAYERS), MDIA_SYMB_KP_LAYERS
-#define ___ORTHO_14_MIDDLE_1___ LCTL(KC_C), LCTL(KC_V)
-#define ___ORTHO_14_MIDDLE_2___ TO(SYMB), TO(KEYPAD)
-#define ___ORTHO_14_MIDDLE_3___ OSL(SYMB), OSL(KEYPAD)
-
-// becomes the upper thumbs, the real 4th row if we throw away
-// the number row at the top
-#define ___ORTHO_14_MIDDLE_4___ LSFT(KC_TAB), HOME_END, KC_PGDN, KC_TAB
-// basically the thumb keys like on the ergodox.
-#define ___MIDDLE_THUMBS___ CTL_BSPC, ALT_DEL, XMONAD_ESC, KC_PGDN, ALT_ENT, CTL_SPC
-
-// The same, for BEPO
-#define ___ORTHO_14_MIDDLE_T_BP___ OSL(LAYERS), MDIA_SYMB_KP_LAYERS
-#define ___ORTHO_14_MIDDLE_1_BP___ LCTL(BP_C), LCTL(BP_V)
-#define ___ORTHO_14_MIDDLE_2_BP___ TO(SYMB_ON_BEPO), TO(KEYPAD_ON_BEPO)
-#define ___ORTHO_14_MIDDLE_3_BP___ OSL(SYMB_ON_BEPO), OSL(KEYPAD_ON_BEPO)
-
-#define ___ORTHO_14_MIDDLE_4_BP___ LSFT(KC_TAB), HOME_END, KC_PGUP, KC_TAB
-
-
-/********************************************************************/
-/** The top rows for numbers, symbols and Fkeys. **/
-/********************************************************************/
-#define ___ORTHO_15_N___ ___NUMBER_L___, ___ORTHO_15_MIDDLE_T___, ___NUMBER_R___
-#define ___ORTHO_15_B_N___ ___NUMBER_BEPO_L___, ___ORTHO_15_MIDDLE_T_BP___, ___NUMBER_BEPO_R___
-// the full bepo symbol row.
-#define ___ORTHO_15_B_SYMB___ BP_DLR, ___SYMBOL_BEPO_L___, ___ORTHO_15_MIDDLE_T_BP___, ___SYMBOL_BEPO_R___, BP_EQL
-
-// transparent in the middle because I only put this on transient layers.
-#define ___ORTHO_15_FUNC_1_12___ ___FUNC_1_6___, ___3___, ___FUNC_7_12___
-
-
-/********************************************************************/
-/** The bottom row and thumbs as needed. **/
-/********************************************************************/
-#define ___BOTTOM_LEFT___ LCTL(KC_C), LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT
-#define ___BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, LCTL(KC_V), LCTL(KC_C)
-
-// the bottom rows for keyboards on bepo.
-// bepo on bepo - not enough space to go around....
-#define ___BOTTOM_LEFT_BP___ LCTL(BP_C), BP_ECIR, LCTL(BP_V), KC_LEFT, KC_RIGHT
-#define ___BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, DB_BACKSLASH, BP_CCED, BP_PERC
-
-// for dvorak on bepo
-#define ___BOTTOM_LEFT_FR___ LCTL(BP_C), LCTL(BP_C), LCTL(BP_V), KC_LEFT, KC_RIGHT
-#define ___BOTTOM_RIGHT_FR___ KC_UP, KC_DOWN, DB_BACKSLASH, LCTL(KC_V), LCTL(KC_C)
-
-#define ___ORTHO_15_BOTTOM___ ___BOTTOM_LEFT___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT___
-#define ___ORTHO_15_BOTTOM_FR___ ___BOTTOM_LEFT_FR___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT_FR___
-#define ___ORTHO_15_BOTTOM_BP___ ___BOTTOM_LEFT_BP___, ___ORTHO_15_MIDDLE_4___, ___BOTTOM_RIGHT_BP___
-
-#define ___ORTHO_14_BOTTOM___ ___BOTTOM_LEFT___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT___
-#define ___ORTHO_14_BOTTOM_FR___ ___BOTTOM_LEFT_FR___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT_FR___
-#define ___ORTHO_14_BOTTOM_BP___ ___BOTTOM_LEFT_BP___, ___ORTHO_14_MIDDLE_4___, ___BOTTOM_RIGHT_BP___
-#define ___ORTHO_14_THUMBS_BOTTOM___ ___4___, ___MIDDLE_THUMBS___, ___4___
-
-
-#define ___ERGODOX_THUMB_LEFT___ \
- OSL(SYMB), OSM(KC_LGUI), \
- HOME_END, \
- CTL_BSPC, ALT_DEL, XMONAD_ESC
-
-#define ___ERGODOX_THUMB_RIGHT___ \
- XXX, OSL(KEYPAD), \
- KC_PGUP, \
- KC_PGDN, ALT_ENT, CTL_SPC
-
-#define ___ERGODOX_THUMB_RIGHT_BP___ \
- XXX, OSL(KEYPAD_ON_BEPO), \
- KC_PGUP, \
- KC_PGDN, ALT_ENT, CTL_SPC
-
-#define ___ERGODOX_THUMB_LEFT_BP___ \
- OSL(SYMB_ON_BEPO), OSM(KC_LGUI), \
- HOME_END, \
- CTL_BSPC, ALT_DEL, XMONAD_ESC
-
-/********************************************************************************/
-/* the interior rows for ortholinear keyboards. the first number is the length */
-/* So you can put what you want on the outside ends, make new middles as needed */
-/* It would be nice to make this a little more dynamic. There is little */
-/* differenc between them. */
-/********************************************************************************/
-
-//// ortho15 core rows. used with my xd75.
-/***********************************************************/
-/* ORTHO15 interior rows. used with my xd75 */
-/***********************************************************/
-#define ___13_DVORAK_1___ ___DVORAK_L1___, ___ORTHO_15_MIDDLE_1___, ___DVORAK_R1___
-#define ___13_DVORAK_2___ ___DVORAK_L2___, ___ORTHO_15_MIDDLE_2___, ___DVORAK_R2___
-#define ___13_DVORAK_3___ ___DVORAK_L3___, ___ORTHO_15_MIDDLE_3___, ___DVORAK_R3___
-
-#define ___13_QWERTY_1___ ___QWERTY_L1___, ___ORTHO_15_MIDDLE_1___, ___QWERTY_R1___
-#define ___13_QWERTY_2___ ___QWERTY_L2___, ___ORTHO_15_MIDDLE_2___, ___QWERTY_R2___
-#define ___13_QWERTY_3___ ___QWERTY_L3___, ___ORTHO_15_MIDDLE_3___, ___QWERTY_R3___
-
-#define ___13_COLEMAK_1___ ___COLEMAK_L1___, ___ORTHO_15_MIDDLE_1___, ___COLEMAK_R1___
-#define ___13_COLEMAK_2___ ___COLEMAK_L2___, ___ORTHO_15_MIDDLE_2___, ___COLEMAK_R2___
-#define ___13_COLEMAK_3___ ___COLEMAK_L3___, ___ORTHO_15_MIDDLE_3___, ___COLEMAK_R3___
-
-#define ___13_WORKMAN_1___ ___WORKMAN_L1___, ___ORTHO_15_MIDDLE_1___, ___WORKMAN_R1___
-#define ___13_WORKMAN_2___ ___WORKMAN_L2___, ___ORTHO_15_MIDDLE_2___, ___WORKMAN_R2___
-#define ___13_WORKMAN_3___ ___WORKMAN_L3___, ___ORTHO_15_MIDDLE_3___, ___WORKMAN_R3___
-
-#define ___13_NORMAN_1___ ___NORMAN_L1___, ___ORTHO_15_MIDDLE_1___, ___NORMAN_R1___
-#define ___13_NORMAN_2___ ___NORMAN_L2___, ___ORTHO_15_MIDDLE_2___, ___NORMAN_R2___
-#define ___13_NORMAN_3___ ___NORMAN_L3___, ___ORTHO_15_MIDDLE_3___, ___NORMAN_R3___
-
-#define ___13_DVORAK_B_1___ ___DVORAK_FR_L1___, ___ORTHO_15_MIDDLE_1_BP___, ___DVORAK_FR_R1___
-#define ___13_DVORAK_B_2___ ___DVORAK_FR_L2___, ___ORTHO_15_MIDDLE_2_BP___, ___DVORAK_FR_R2___
-#define ___13_DVORAK_B_3___ ___DVORAK_FR_L3___, ___ORTHO_15_MIDDLE_3_BP___, ___DVORAK_FR_R3___
-
-#define ___13_BEPO_1___ ___BEPO_FR_L1___, ___ORTHO_15_MIDDLE_1_BP___, ___BEPO_FR_R1___
-#define ___13_BEPO_2___ ___BEPO_FR_L2___, ___ORTHO_15_MIDDLE_2_BP___, ___BEPO_FR_R2___
-#define ___13_BEPO_3___ ___BEPO_FR_L3___, ___ORTHO_15_MIDDLE_3_BP___, ___BEPO_FR_R3___
-
-// transparent xmonad/dvorak layer
-#define ___15_XMONAD_1___ ___, ___DVORAK_L1___, ___3___, ___DVORAK_R1___, ___
-#define ___15_XMONAD_2___ ___, ___DVORAK_L2___, ___3___, ___DVORAK_R2___, ___
-#define ___15_XMONAD_3___ ___, ___DVORAK_L3___, ___3___, ___DVORAK_R3___, ___
-
-// transparent xmonad/dvorak layer in bepo
-#define ___15_XMONAD_B_1___ ___, ___DVORAK_FR_L1___, ___3___, ___DVORAK_FR_R1___, ___
-#define ___15_XMONAD_B_2___ ___, ___DVORAK_FR_L2___, ___3___, ___DVORAK_FR_R2___, ___
-#define ___15_XMONAD_B_3___ ___, ___DVORAK_FR_L3___, ___3___, ___DVORAK_FR_R3___, ___
-
-#define ___15_SYMB_1___ ___SYMBOLS6_1___, ___3___, ___SYMPAD_1___
-#define ___15_SYMB_2___ ___SYMBOLS6_2___, ___3___, ___SYMPAD_2___
-#define ___15_SYMB_3___ ___SYMBOLS6_3___, ___3___, ___SYMPAD_3___
-#define ___15_SYMB_4___ ___SYMBOLS6_4___, ___3___, ___SYMPAD_4___
-
-#define ___15_KP_1___ ___2___, ___FUNCPAD_T___, ___5___, ___KEYPAD_1___, ___
-#define ___15_KP_2___ ___2___, ___FUNCPAD_1___, ___5___, ___KEYPAD_2___, ___
-#define ___15_KP_3___ ___2___, ___FUNCPAD_2___, ___5___, ___KEYPAD_3___, KC_PENT
-#define ___15_KP_4___ ___2___, ___FUNCPAD_3___, ___5___, ___KEYPAD_4___, ___
-
-#define ___15_KP_B_1___ ___2___, ___FUNCPAD_T___, ___5___, ___KEYPAD_1_BP___, ___
-#define ___15_KP_B_2___ ___2___, ___FUNCPAD_1___, ___5___, ___KEYPAD_2_BP___, ___
-#define ___15_KP_B_3___ ___2___, ___FUNCPAD_2___, ___5___, ___KEYPAD_3_BP___, KC_PENT
-#define ___15_KP_B_4___ ___2___, ___FUNCPAD_3___, ___5___, ___KEYPAD_4_BP___, ___
-
-#define ___15_SYMB_B_1___ ___SYMBOLS6_1_BP___, ___3___, ___SYMPAD_1_BP___
-#define ___15_SYMB_B_2___ ___SYMBOLS6_2_BP___, ___3___, ___SYMPAD_2_BP___
-#define ___15_SYMB_B_3___ ___SYMBOLS6_3_BP___, ___3___, ___SYMPAD_3_BP___
-#define ___15_SYMB_B_4___ ___SYMBOLS6_4_BP___, ___3___, ___SYMPAD_4_BP___
-
-#define ___15_MDIA_1___ ___MOUSE_BTNS_L___, ___4___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___
-#define ___15_MDIA_2___ ___, ___MOUSE_LDUR___, ___4___, KC_VOLD, ___VI_ARROWS___, ___
-#define ___15_MDIA_3___ ___, ___MWHEEL_LDUR___, ___4___, KC_PGUP, ___MOUSE_BTNS_R___
-#define ___15_MDIA_4___ ___2___, ___MACCL___, ___4___, KC_PGDN, ___5___
-
-#define ___15_LAYERS_1___ ___X3___, ___2_LAYERS_B1___, ___5___, ___3_LAYERS_T_BP___, ___X2___
-#define ___15_LAYERS_2___ ___X3___, ___2_LAYERS_B2___, ___5___, ___3_LAYERS_T___, ___X2___
-#define ___15_LAYERS_3___ ___X2___, ___3_LAYERS_B3___, ___5___, ___3_LAYERS_T_CTL___, ___X2___
-
-#define ___15_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___5___, ___5___
-#define ___15_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___4___, ___RGB_P_B_R_SW_SN___
-#define ___15_RGB_3___ ___5___, ___5___, ___RGB_KXGT___, ___
-
-
-
-/***********************************************************/
-/* ORTHO14 base layer interior rows. used with my viterbi */
-/***********************************************************/
-#define ___12_DVORAK_1___ ___DVORAK_L1___, ___ORTHO_14_MIDDLE_1___, ___DVORAK_R1___
-#define ___12_DVORAK_2___ ___DVORAK_L2___, ___ORTHO_14_MIDDLE_2___, ___DVORAK_R2___
-#define ___12_DVORAK_3___ ___DVORAK_L3___, ___ORTHO_14_MIDDLE_3___, ___DVORAK_R3___
-
-#define ___12_QWERTY_1___ ___QWERTY_L1___, ___ORTHO_14_MIDDLE_1___, ___QWERTY_R1___
-#define ___12_QWERTY_2___ ___QWERTY_L2___, ___ORTHO_14_MIDDLE_2___, ___QWERTY_R2___
-#define ___12_QWERTY_3___ ___QWERTY_L3___, ___ORTHO_14_MIDDLE_3___, ___QWERTY_R3___
-
-#define ___12_COLEMAK_1___ ___COLEMAK_L1___, ___ORTHO_14_MIDDLE_1___, ___COLEMAK_R1___
-#define ___12_COLEMAK_2___ ___COLEMAK_L2___, ___ORTHO_14_MIDDLE_2___, ___COLEMAK_R2___
-#define ___12_COLEMAK_3___ ___COLEMAK_L3___, ___ORTHO_14_MIDDLE_3___, ___COLEMAK_R3___
-
-#define ___12_WORKMAN_1___ ___WORKMAN_L1___, ___ORTHO_14_MIDDLE_1___, ___WORKMAN_R1___
-#define ___12_WORKMAN_2___ ___WORKMAN_L2___, ___ORTHO_14_MIDDLE_2___, ___WORKMAN_R2___
-#define ___12_WORKMAN_3___ ___WORKMAN_L3___, ___ORTHO_14_MIDDLE_3___, ___WORKMAN_R3___
-
-#define ___12_NORMAN_1___ ___NORMAN_L1___, ___ORTHO_14_MIDDLE_1___, ___NORMAN_R1___
-#define ___12_NORMAN_2___ ___NORMAN_L2___, ___ORTHO_14_MIDDLE_2___, ___NORMAN_R2___
-#define ___12_NORMAN_3___ ___NORMAN_L3___, ___ORTHO_14_MIDDLE_3___, ___NORMAN_R3___
-
-#define ___12_DVORAK_B_1___ ___DVORAK_FR_L1___, ___ORTHO_14_MIDDLE_1_BP___, ___DVORAK_FR_R1___
-#define ___12_DVORAK_B_2___ ___DVORAK_FR_L2___, ___ORTHO_14_MIDDLE_2_BP___, ___DVORAK_FR_R2___
-#define ___12_DVORAK_B_3___ ___DVORAK_FR_L3___, ___ORTHO_14_MIDDLE_3_BP___, ___DVORAK_FR_R3___
-
-#define ___12_BEPO_2___ ___BEPO_FR_L1___, ___ORTHO_14_MIDDLE_1_BP___, ___BEPO_FR_R1___
-#define ___12_BEPO_3___ ___BEPO_FR_L2___, ___ORTHO_14_MIDDLE_2_BP___, ___BEPO_FR_R2___
-#define ___12_BEPO_4___ ___BEPO_FR_L3___, ___ORTHO_14_MIDDLE_3_BP___, ___BEPO_FR_R3___
-
-
-// transparent layers.
-#define ___14_XMONAD_1___ ___, ___DVORAK_L1___, ___2___, ___DVORAK_R1___, ___
-#define ___14_XMONAD_2___ ___, ___DVORAK_L2___, ___2___, ___DVORAK_R2___, ___
-#define ___14_XMONAD_3___ ___, ___DVORAK_L3___, ___2___, ___DVORAK_R3___, ___
-
-#define ___14_XMONAD_B_1___ ___, ___DVORAK_FR_L1___, ___2___, ___DVORAK_FR_R1___, ___
-#define ___14_XMONAD_B_2___ ___, ___DVORAK_FR_L2___, ___2___, ___DVORAK_FR_R2___, ___
-#define ___14_XMONAD_B_3___ ___, ___DVORAK_FR_L3___, ___2___, ___DVORAK_FR_R3___, ___
-
-#define ___14_SYMB_1___ ___SYMBOLS6_1___, ___2___, ___SYMPAD_1___
-#define ___14_SYMB_2___ ___SYMBOLS6_2___, ___2___, ___SYMPAD_2___
-#define ___14_SYMB_3___ ___SYMBOLS6_3___, ___2___, ___SYMPAD_3___
-#define ___14_SYMB_4___ ___SYMBOLS6_4___, ___2___, ___SYMPAD_4___
-
-#define ___14_KP_1___ ___2___, ___FUNCPAD_T___, ___4___, ___KEYPAD_1___, ___
-#define ___14_KP_2___ ___2___, ___FUNCPAD_1___, ___4___, ___KEYPAD_2___, ___
-#define ___14_KP_3___ ___2___, ___FUNCPAD_2___, ___4___, ___KEYPAD_3___, KC_PENT
-#define ___14_KP_4___ ___2___, ___FUNCPAD_3___, ___4___, ___KEYPAD_4___, ___
-
-#define ___14_KP_B_1___ ___2___, ___FUNCPAD_T___, ___4___, ___KEYPAD_1_BP___, ___
-#define ___14_KP_B_2___ ___2___, ___FUNCPAD_1___, ___4___, ___KEYPAD_2_BP___, ___
-#define ___14_KP_B_3___ ___2___, ___FUNCPAD_2___, ___4___, ___KEYPAD_3_BP___, KC_PENT
-#define ___14_KP_B_4___ ___2___, ___FUNCPAD_3___, ___4___, ___KEYPAD_4_BP___, ___
-
-#define ___14_SYMB_B_1___ ___SYMBOLS6_1_BP___, ___2___, ___SYMPAD_1_BP___
-#define ___14_SYMB_B_2___ ___SYMBOLS6_2_BP___, ___2___, ___SYMPAD_2_BP___
-#define ___14_SYMB_B_3___ ___SYMBOLS6_3_BP___, ___2___, ___SYMPAD_3_BP___
-#define ___14_SYMB_B_4___ ___SYMBOLS6_4_BP___, ___2___, ___SYMPAD_4_BP___
-
-#define ___14_MDIA_1___ ___MOUSE_BTNS_L___, ___3___, KC_VOLU, ___MUTE_PRV_PLAY_NXT_STOP___
-#define ___14_MDIA_2___ ___, ___MOUSE_LDUR___, ___3___, KC_VOLD, ___VI_ARROWS___, ___
-#define ___14_MDIA_3___ ___, ___MWHEEL_LDUR___, ___3___, KC_PGUP, ___MOUSE_BTNS_R___
-#define ___14_MDIA_4___ ___2___, ___MACCL___, ___3___, KC_PGDN, ___5___
-
-#define ___14_LAYERS_1___ ___X3___, ___2_LAYERS_B1___, ___4___, ___3_LAYERS_T_BP___, ___X2___
-#define ___14_LAYERS_2___ ___X3___, ___2_LAYERS_B2___, ___4___, ___3_LAYERS_T___, ___X2___
-#define ___14_LAYERS_3___ ___X2___, ___3_LAYERS_B3___, ___4___, ___3_LAYERS_T_CTL___, ___X2___
-
-#define ___14_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___4___, ___5___
-#define ___14_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___3___, ___RGB_P_B_R_SW_SN___
-#define ___14_RGB_3___ ___5___, ___4___, ___RGB_KXGT___, ___
diff --git a/users/ericgebhart/caps_word.c b/users/ericgebhart/caps_word.c
new file mode 100644
index 0000000000..ba81c15d66
--- /dev/null
+++ b/users/ericgebhart/caps_word.c
@@ -0,0 +1,81 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#include "caps_word.h"
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
+ static bool caps_word_enabled = false;
+ static bool shifted = false;
+#ifndef NO_ACTION_ONESHOT
+ const uint8_t mods = get_mods() | get_oneshot_mods();
+#else
+ const uint8_t mods = get_mods();
+#endif // NO_ACTION_ONESHOT
+
+ if (!caps_word_enabled) {
+ // Pressing both shift keys at the same time enables caps word.
+ if ((mods & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
+ clear_mods();
+#ifndef NO_ACTION_ONESHOT
+ clear_oneshot_mods();
+#endif // NO_ACTION_ONESHOT
+ shifted = false;
+ caps_word_enabled = true;
+ return false;
+ }
+ return true;
+ }
+
+ if (!record->event.pressed) { return true; }
+
+ if (!(mods & ~MOD_MASK_SHIFT)) {
+ switch (keycode) {
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ // Earlier return if this has not been considered tapped yet.
+ if (record->tap.count == 0) { return true; }
+ // Get the base tapping keycode of a mod- or layer-tap key.
+ keycode &= 0xff;
+ }
+
+ switch (keycode) {
+ // Letter keys should be shifted.
+ case KC_A ... KC_Z:
+ if (!shifted) { register_code(KC_LSFT); }
+ shifted = true;
+ return true;
+
+ // Keycodes that continue caps word but shouldn't get shifted.
+ case KC_1 ... KC_0:
+ case KC_BSPC:
+ case KC_MINS:
+ case KC_UNDS:
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+
+ // Any other keycode disables caps word.
+ }
+ }
+
+ // Disable caps word.
+ caps_word_enabled = false;
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+}
diff --git a/users/ericgebhart/caps_word.h b/users/ericgebhart/caps_word.h
new file mode 100644
index 0000000000..a59b2e4338
--- /dev/null
+++ b/users/ericgebhart/caps_word.h
@@ -0,0 +1,35 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// Caps Word, activated by pressing both shift keys at the same time.
+//
+// This library implements "Caps Word", which is like conventional Caps Lock,
+// but automatically disables itself at the end of the word. This is useful for
+// typing all-caps identifiers like `MOD_MASK_ALT`.
+//
+// Caps Word is activated by pressing the left and right shift keys at the same
+// time. This way you don't need a dedicated key for using Caps Word. I've
+// tested that this works as expected with one-shot mods and Space Cadet Shift.
+// If your shift keys are mod-taps, activate Caps Word by holding both shift
+// mod-tap keys until the tapping term, release them, then begin typing.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record);
diff --git a/users/ericgebhart/combos.def b/users/ericgebhart/combos.def
new file mode 100644
index 0000000000..9b5f2c8a9e
--- /dev/null
+++ b/users/ericgebhart/combos.def
@@ -0,0 +1,10 @@
+// name result chord keys
+COMB(LNAV, TG(_NAV), SPC_TOPR, ENT_NAV)
+COMB(OSLSYM, OSL(_SYMB), ESC_TOPR, BSPC_SYMB)
+COMB(OSLSYMBP, OSL(_SYMB_BP), ESC_TOPR_BP, BSPC_SYMB_BP)
+COMB(LKEYPAD, TG(_KEYPAD), SPC_TOPR, BSPC_SYMB)
+COMB(LKEYPADBP, TG(_KEYPAD_BP), SPC_TOPR_BP, BSPC_SYMB_BP)
+COMB(LLAYERS, OSL(_LAYERS), KC_TAB, ENT_NAV)
+
+//COMB(JKL_SPC, KC_SPC, KC_J, KC_X)
+//SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.
diff --git a/users/ericgebhart/config.h b/users/ericgebhart/config.h
index 934c3debba..116d48f4ab 100755
--- a/users/ericgebhart/config.h
+++ b/users/ericgebhart/config.h
@@ -1,8 +1,29 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
#include "../../config.h"
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define COMBO_MUST_HOLD_MODS
+#define COMBO_HOLD_TERM 150
// Sets good default for the speed of the mouse.
#undef MOUSEKEY_INTERVAL
#undef MOUSEKEY_DELAY
@@ -26,7 +47,7 @@
#undef TAPPING_TERM
#undef IGNORE_MOD_TAP_INTERRUPT
-#define TAPPING_TOGGLE 1
+#define TAPPING_TOGGLE 2
#define TAPPING_TERM 200
#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/users/ericgebhart/core_keys.h b/users/ericgebhart/core_keys.h
index a71d905749..73beaaf7ab 100644..100755
--- a/users/ericgebhart/core_keys.h
+++ b/users/ericgebhart/core_keys.h
@@ -19,42 +19,13 @@
#include "quantum.h"
#include "process_keycode/process_tap_dance.h"
#include "eeconfig.h"
+#include "keymap_bepo.h"
+#include "altlocal_keys.h"
//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */
-void tap(uint16_t keycode);
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
-
-typedef union {
- uint8_t raw;
- struct {
- bool clicky_enable :1;
- bool rgb_layer_change :1;
- bool is_overwatch :1;
- bool nuke_switch :1;
- };
-} userspace_config_t;
-
-
-// for the creation of dvorak keys on an Bepo keyboard at the OS layer.
-// so we can create an array of reasonable size
-// for our translation keys. We have to create a
-// good range of numbers
-#define GR(x) (x-SAFE_RANGE)
-
-uint8_t gr(uint8_t);
-void send_keycode(uint8_t);
-
-#define MOD_NONE 0x00
-
-// indexs for the keycode translation table.
-#define UNSHIFTED_KEY(key) key_translations[gr(key)][0][0]
-#define UNSHIFTED_MODS(key) key_translations[gr(key)][0][1]
-#define SHIFTED_KEY(key) key_translations[gr(key)][1][0]
-#define SHIFTED_MODS(key) key_translations[gr(key)][1][1]
-
-
enum userspace_custom_keycodes {
// keep the keycodes using the send_key function close to SAFE_RANGE
// so the array of keycodes remains a reasonbale size.
@@ -91,37 +62,106 @@ enum userspace_custom_keycodes {
DB_LESS,
DB_GRTR,
// End of dvorak on bepo translation keys.
+ // BEAKL on Qwerty..
+ BQ_DOT,
+ BQ_COMM,
+ BQ_QUOT,
+ // End of beakl on qwerty
+ BB_DOT,
+ BB_COMM,
+ BB_QUOT,
+ // End of beakl on Bepo
EPRM,
VRSN,
- KC_DVORAK_ON_BEPO,
- KC_BEPO,
- KC_NORMAN,
+ // Default keyboard layouts - Same order as enum.
+ KC_DVORAK,
KC_QWERTY,
KC_COLEMAK,
- KC_DVORAK,
- KC_WORKMAN,
+ KC_BEAKL,
+ // KC_WORKMAN,
+ // KC_NORMAN,
+ // KC_MALTRON,
+ // KC_EUCALYN,
+ // KC_CARPLAX,
+ KC_DVORAK_BP,
+ KC_BEAKL_BP,
+ KC_BEPO,
+ KC_LAYERS,
+
+ // Misc.
KC_MAKE,
KC_RESET,
KC_RGB_T,
+ RGB_IDL,
KC_SECRET_1,
KC_SECRET_2,
KC_SECRET_3,
KC_SECRET_4,
KC_SECRET_5,
- KC_CCCV
+ KC_CCCV, // Ctrl-C V in one key.
+ BP_CCCV,
+ KC_CTCN, // Ctrl-T N in one key.
+ BP_CTCN,
+ KC_CWCQ, // Ctrl-W Q in one key.
+ BP_CWCQ,
+ KC_XM_PORD, // Xmonad gui-e, gui-t for the scratchpads or desktops.
+ BP_XM_PORD,
+ KC_OCPRN, // Open, or open and close, cursor in the middle with hold.
+ BP_OCPRN,
+ KC_OCBRC,
+ BP_OCBRC,
+ KC_OCCBR,
+ BP_OCCBR,
+ KC_OCDQUO,
+ BP_OCDQUO,
+ KC_OCQUOT,
+ BP_OCQUOT,
+ KC_OCGRV,
+ BP_OCGRV,
+ KC_OCLTGT,
+ BP_OCLTGT,
+ UC_FLIP,
+ UC_TABL,
+ UC_SHRG,
+ UC_DISA,
+ KC_SPACETEST,
+ NEW_SAFE_RANGE
};
-#define SFTGUI_T(kc) { MT(MOD_LGUI | MOD_LSFT, kc) }
-#define SFT_GUI_ESC MT(MOD_LSFT | MOD_LGUI, KC_PGDN) // shift LGUI or Escape.
-#define ALT_ENT ALT_T(KC_ENT) // Alt or enter
-#define CTL_SPC CTL_T(KC_SPC) // ctrl or space
-#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace
-#define ALT_DEL ALT_T(KC_DEL) // Alt or delete
-#define GUI_ESC GUI_T(KC_ESC) // Gui or escape
-#define ALGR_SYMB ALGR_T(TG(SYMB)) // Alt gre or toggle symbol layer
-
-
+#define CTLGUI_T(kc) MT(MOD_LGUI | MOD_LCTL, kc)
+#define SFTGUI_T(kc) MT(MOD_LGUI | MOD_LSFT, kc)
+#define ALTGUI_T(kc) MT(MOD_LGUI | MOD_LALT, kc)
+
+#define ALT_ENT ALT_T(KC_ENT) // Alt or enter
+#define CTL_SPC CTL_T(KC_SPC) // ctrl or space
+#define CTL_BSPC CTL_T(KC_BSPC) // ctrl or backspace
+#define ALT_DEL ALT_T(KC_DEL) // Alt or delete
+#define GUI_ESC GUI_T(KC_ESC) // Gui or escape
+#define ALGR_SYMB ALGR_T(TG(_SYMB)) // Alt gre or toggle symbol layer
+
+#define ENT_NAV LT(_NAV, KC_ENT)
+#define ENT_TOPR LT(_TOPROWS, KC_ENT)
+#define ENT_TOPR_BP LT(_TOPROWS_BP, KC_ENT)
+#define ESC_TOPR LT(_TOPROWS, KC_ESC)
+#define ESC_TOPR_BP LT(_TOPROWS_BP, KC_ESC)
+#define ESC_SYMB LT(_SYMB, KC_ESC)
+#define ESC_SYMB_BP LT(_SYMB_BP, KC_ESC)
+#define SPC_NAV LT(_NAV, KC_SPC)
+#define SPC_TOPR LT(_TOPROWS, KC_SPC)
+#define SPC_TOPR_BP LT(_TOPROWS_BP, KC_SPC)
+#define SPC_LAYR LT(_LAYERS, KC_SPC)
+#define SPC_LAYR_BP LT(_LAYERS, KC_SPC)
+#define SPC_ADJ LT(_ADJUST, KC_SPC)
+#define SPC_ADJ_BP LT(_ADJUST, KC_SPC)
+#define BSPC_SYMB LT(_SYMB, KC_BSPC)
+#define BSPC_SYMB_BP LT(_SYMB_BP, KC_BSPC)
+#define BSPC_TOPR LT(_TOPROWS, KC_BSPC)
+#define BSPC_TOPR_BP LT(_TOPROWS_BP, KC_BSPC)
+#define SPC_NUM LT(_KEYPAD, KC_SPC)
+#define SPC_NUM_BP LT(_KEYPAD_BP, KC_SPC)
+#define BSPC_NUM LT(_KEYPAD, KC_BSPC)
+#define BSPC_NUM_BP LT(_KEYPAD_BP, KC_BSPC)
// OSM keycodes, to keep things clean and easy to change
#define KC_MLSF OSM(MOD_LSFT)
@@ -138,6 +178,9 @@ enum userspace_custom_keycodes {
#define MG_NKRO MAGIC_TOGGLE_NKRO
+#define UC_IRNY UC(0x2E2E)
+#define UC_CLUE UC(0x203D)
+
//// TAP DANCE
@@ -166,11 +209,16 @@ enum {
TD_DEF_LAYER_SW = 5,
TD_DEF_OS_LAYER_SW = 6,
TD_MOUSE_BTNS = 7,
- TD_DVORAK_BEPO = 8
+ TD_DVORAK_BEPO = 8,
+ TD_UP_HOME = 9,
+ TD_DOWN_END = 10,
+ TD_RIGHT_TAB = 11,
+ TD_LEFT_BACKTAB = 12
};
// Tap dance
+#define KC_BKTAB LSFT(KC_TAB)
#define TAB_BKTAB TD(TD_TAB_BKTAB) // Tab or backtab tapdance.
#define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB) // MDIA, symb, keypad, layouts layer tapdance toggle.
#define DEF_LAYER_SW TD(TD_DEF_LAYER_SW) // dvorak, dvorak_on_bepo, bepo default layer
@@ -179,100 +227,34 @@ enum {
#define XMONAD_ESC TD(TD_XMONAD_ESC) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
#define DVORAK_ET_BEPO TD(TD_DVORAK_BEPO) // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
#define TDMOUSE_BTNS TD(TD_MOUSE_BTNS) // hmmm. 1-5
+#define RIGHT_TAB TD(TD_RIGHT_TAB) // Bad idea these 4. Maybe with good timing...
+#define LEFT_BACKTAB TD(TD_LEFT_BACKTAB)
+#define UP_HOME TD(TD_UP_HOME)
+#define DOWN_END TD(TD_DOWN_END) // No! Down Down Not End....
// HOME ROW LAYER TOGGLE (LT) and Shift.
// both sides of the home row have "shift, ___, media , symb, ___" and "___, symb, media, ___, shift".
// so pinky fingers are shift when held and the index and second fingers are symbol and
// media layers when held.
-// Dvorak
-// shift and layer switch on hold on the home row.
-#define KC_SFT_T_A SFT_T(KC_A)
-#define KC_SFT_T_S SFT_T(KC_S)
-
-#define KC_LT_SYMB_U LT(SYMB, KC_U)
-#define KC_LT_SYMB_H LT(SYMB, KC_H)
-
-#define KC_LT_MDIA_E LT(MDIA, KC_E)
-#define KC_LT_MDIA_T LT(MDIA, KC_T)
-
-// Need to add this to the others.
-#define KC_LT_KP_N LT(KEYPAD, KC_N)
-#define KC_LT_KP_O LT(KEYPAD, KC_O)
-
-// for dvorak on bepo
-#define BP_SFT_T_A SFT_T(BP_A)
-#define BP_SFT_T_S SFT_T(BP_S)
-
-#define BP_LT_SYMB_U LT(SYMB, BP_U)
-#define BP_LT_SYMB_H LT(MDIA, BP_H)
-
-#define BP_LT_MDIA_E LT(MDIA, BP_E)
-#define BP_LT_MDIA_T LT(MDIA, BP_T)
-
-// Need to add this to the others.
-#define BP_LT_KP_N LT(KEYPAD, BP_N)
-#define BP_LT_KP_O LT(KEYPAD, BP_O)
-
-// for bepo on bepo
-#define BP_SFT_T_T SFT_T(BP_T)
-#define BP_SFT_T_W SFT_T(BP_W)
-
-#define BP_LT_SYMB_I LT(SYMB_ON_BEPO, BP_I)
-#define BP_LT_MDIA_E LT(MDIA, BP_E)
-#define BP_LT_KP_U LT(KEYPAD, BP_U)
-
-#define BP_LT_SYMB_S LT(SYMB_ON_BEPO, BP_S)
-#define BP_LT_MDIA_R LT(MDIA, BP_R)
-#define BP_LT_KP_N LT(KEYPAD, BP_N)
-
-#define BP_SFT_T_A SFT_T(BP_A)
-#define BP_SFT_T_S SFT_T(BP_S)
-#define BP_SFT_T_E SFT_T(BP_E)
-#define BP_SFT_T_M SFT_T(BP_M)
-
-#define BP_SFT_T_ECRC SFT_T(BP_ECIR)
-#define BP_SFT_T_CCED SFT_T(BP_CCED)
-#define BP_LT_SYMB_COMM LT(SYMB,BP_COMM)
-
-//QWERTY
-#define KC_SFT_T_SCLN SFT_T(KC_SCLN)
-
-#define KC_LT_MDIA_D LT(MDIA, KC_D)
-#define KC_LT_MDIA_K LT(MDIA, KC_K)
-#define KC_LT_SYMB_F LT(SYMB, KC_F)
-#define KC_LT_SYMB_J LT(SYMB, KC_J)
-
-//COLEMAK
-#define KC_SFT_T_O SFT_T(KC_O)
-#define KC_LT_MDIA_S LT(MDIA, KC_S)
-#define KC_LT_SYMB_T LT(SYMB, KC_T)
-
-#define KC_LT_MDIA_E LT(MDIA, KC_E)
-#define KC_LT_SYMB_N LT(SYMB, KC_N)
-
-//WORKMAN
-#define KC_SFT_T_I SFT_T(KC_I)
-#define KC_LT_MDIA_H LT(MDIA, KC_H)
-
-//NORMAN
-// For keys on the homerow. Hold for shift, keypad,mouse,and smbol layers
-#define KC_SFT_T_U SFT_T(KC_U)
-#define KC_LT_MDIA_I LT(MDIA, KC_I)
-
// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
+// The KC_CCCV key takes care of the last two...
#define MK_CUT LSFT(KC_DEL) // shift + delete
#define MK_COPY LCTL(KC_INS) // ctrl + insert
#define MK_PASTE LSFT(KC_INS) // shift + insert
+#undef ___ //kint defines it as KC_NO
#define ___ KC_TRNS
#define XXX KC_NO
// Blocking keys
+#define _X_ XXX
#define ___X___ XXX
#define ___X2___ XXX, XXX
#define ___X3___ ___X2___, XXX
#define ___X5___ ___X3___, XXX, XXX
+#define ___X6___ ___X5___, XXX
+#define ___X12___ ___X6___, ___X6___
#define ___X15___ ___X5___, ___X5___, ___X5___
// Transparent keys
@@ -281,13 +263,18 @@ enum {
#define ___4___ ___3___, ___
#define ___5___ ___4___, ___
#define ___6___ ___5___, ___
+#define ___12___ ___6___, ___6___
#define ___14___ ___5___, ___4___, ___5___
#define ___15___ ___5___, ___5___, ___5___
+#define ___16___ ___15___, ___
int on_qwerty(void);
int get_xmonad_layer(void);
+
+#ifdef TAP_DANCES_ENABLE
int cur_dance (qk_tap_dance_state_t *state);
//for the x tap dance. Put it here so it can be used in any keymap
void x_finished (qk_tap_dance_state_t *state, void *user_data);
void x_reset (qk_tap_dance_state_t *state, void *user_data);
+#endif
diff --git a/users/ericgebhart/core_keysets.h b/users/ericgebhart/core_keysets.h
index 5baf02ccf6..f51f743921 100644..100755
--- a/users/ericgebhart/core_keysets.h
+++ b/users/ericgebhart/core_keysets.h
@@ -17,277 +17,329 @@
*/
#include "core_keys.h"
-
/********************************************************************/
-/** Parts are parts, pieces of keysets so we have some decent **/
-/** building blocks to make keymaps with. **/
+/** The Core rows of each given layout. **/
/********************************************************************/
+//Dvorak on a qwerty software layer in the OS
+#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
+#define ___DVORAK_L2___ KC_A, KC_O, KC_E, KC_U, KC_I
+#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
+
+#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
+#define ___DVORAK_R2___ KC_D, KC_H, KC_T, KC_N, KC_S
+#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
+
+#define ___DVORAK___ ___DVORAK_L1___, ___DVORAK_R1___, \
+ ___DVORAK_L2___, ___DVORAK_R2___, \
+ ___DVORAK_L3___, ___DVORAK_R3___
+
+/* BEAKL 15 (main layer): */
+/* 40123 76598 */
+/* qhoux gcrfz */
+/* - yiea. dstnb ; */
+/* j/,k' wmlpv */
+
+// Remember the - and ; outside pinky keys.
+// Or use the 6 size.
+// Both are on the symbol layer too. So you
+// wont lose them at least.
+// BQ_COMM, BQ_QUOT, BQ_DOT - Beakl->Qwerty
+// BB_COMM, BB_QUOT, BB_DOT - Beakl->Bepo
+// take care of the different shifted chars.
+/* BEAKL 15 (shift layer): */
+/* QHOUX GCRFZ */
+/* - YIEA@ DSTNB ; */
+/* J?!K` WMLPV */
+#define ___BEAKL15_L1___ KC_Q, KC_H, KC_O, KC_U, KC_X
+#define ___BEAKL15_L2___ KC_Y, KC_I, KC_E, KC_A, BQ_DOT
+#define ___BEAKL15_L3___ KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
+
+#define ___BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z
+#define ___BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B
+#define ___BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V
+
+#define ___BEAKL15___ ___BEAKL15_L1___, ___BEAKL15_R1___, \
+ ___BEAKL15_L2___, ___BEAKL15_R2___, \
+ ___BEAKL15_L3___, ___BEAKL15_R3___
+
+#define ___6BEAKL15_L1___ ___, KC_Q, KC_H, KC_O, KC_U, KC_X
+#define ___6BEAKL15_L2___ KC_MINS, KC_Y, KC_I, KC_E, KC_A, BQ_DOT
+#define ___6BEAKL15_L3___ ___, KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
+
+#define ___6BEAKL15_R1___ KC_G, KC_C, KC_R, KC_F, KC_Z, ___
+#define ___6BEAKL15_R2___ KC_D, KC_S, KC_T, KC_N, KC_B, KC_SCLN
+#define ___6BEAKL15_R3___ KC_W, KC_M, KC_L, KC_P, KC_V, ___
+
+#define ___6BEAKL15___ ___6BEAKL15_L1___, ___6BEAKL15_R1___, \
+ ___6BEAKL15_L2___, ___6BEAKL15_R2___, \
+ ___6BEAKL15_L3___, ___6BEAKL15_R3___
+// Qwerty based layers that I don't really use.
+#define ___QWERTY_L1___ KC_Q, KC_W, KC_E, KC_R, KC_T
+#define ___QWERTY_L2___ KC_A, KC_S, KC_D, KC_F, KC_G
+#define ___QWERTY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
-// Since our quirky block definitions are basically a list of comma separated
-// arguments, we need a wrapper in order for these definitions to be
-// expanded before being used as arguments to the LAYOUT_xxx macro.
-#if (!defined(LAYOUT) && defined(KEYMAP))
-#define LAYOUT KEYMAP
-#endif
+#define ___QWERTY_R1___ KC_Y, KC_U, KC_I, KC_O, KC_P
+#define ___QWERTY_R2___ KC_H, KC_J, KC_K, KC_L, KC_SCLN
+#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
-#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
-#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
-#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
-#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+#define ___QWERTY___ ___QWERTY_L1___, ___QWERTY_R1___, \
+ ___QWERTY_L2___, ___QWERTY_R2___, \
+ ___QWERTY_L3___, ___QWERTY_R3___
-#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
-#define LAYOUT_ortho_5x14_wrapper(...) LAYOUT_ortho_5x14(__VA_ARGS__)
+// Qwerty based layers that I don't really use.
+// COLEMAK
+#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
+#define ___COLEMAK_L2___ KC_A, KC_R, KC_S, KC_T, KC_D
+#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
-/********************************************************************/
-/** The Core rows of each given layout. **/
-/********************************************************************/
-//Dvorak on a qwerty software layer in the OS
-#define ___DVORAK_L1___ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
-#define ___DVORAK_L2___ KC_SFT_T_A, KC_LT_KP_O, KC_LT_MDIA_E, KC_LT_SYMB_U, KC_I
-#define ___DVORAK_L3___ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
+#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define ___COLEMAK_R2___ KC_H, KC_N, KC_E, KC_I, KC_O
+#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
-#define ___DVORAK_R1___ KC_F, KC_G, KC_C, KC_R, KC_L
-#define ___DVORAK_R2___ KC_D, KC_LT_SYMB_H, KC_LT_MDIA_T, KC_LT_KP_N, KC_SFT_T_S
-#define ___DVORAK_R3___ KC_B, KC_M, KC_W, KC_V, KC_Z
+#define ___COLEMAK___ ___COLEMAK_L1___, ___COLEMAK_R1___, \
+ ___COLEMAK_L2___, ___COLEMAK_R2___, \
+ ___COLEMAK_L3___, ___COLEMAK_R3___
-// Qwerty based layers that I don't really use.
-#define ___QWERTY_L1___ KC_Q, KC_W, KC_E, KC_R, KC_T
-#define ___QWERTY_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_D, KC_LT_SYMB_F, KC_G
-#define ___QWERTY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
+// COLEMAK-DH
+#define ___COLEMAK_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
+#define ___COLEMAK_DH_L2___ KC_A, KC_R, KC_S, KC_T, KC_G
+#define ___COLEMAK_DH_L3___ KC_Z, KC_X, KC_C, KC_D, KC_V
-#define ___QWERTY_R1___ KC_Y, KC_U, KC_I, KC_O, KC_P
-#define ___QWERTY_R2___ KC_H, KC_LT_SYMB_J, KC_LT_MDIA_K, KC_L, KC_SFT_T_SCLN
-#define ___QWERTY_R3___ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
+#define ___COLEMAK_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define ___COLEMAK_DH_R2___ KC_M, KC_N, KC_E, KC_I, KC_O
+#define ___COLEMAK_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
-// COLEMAK
-#define ___COLEMAK_L1___ KC_Q, KC_W, KC_F, KC_P, KC_G
-#define ___COLEMAK_L2___ KC_SFT_T_A, KC_R, KC_LT_MDIA_S, KC_LT_SYMB_T, KC_D
-#define ___COLEMAK_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
+#define ___COLEMAK_DH___ ___COLEMAK_DH_L1___, ___COLEMAK_DH_R1___, \
+ ___COLEMAK_DH_L2___, ___COLEMAK_DH_R2___, \
+ ___COLEMAK_DH_L3___, ___COLEMAK_DH_R3___
-#define ___COLEMAK_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#define ___COLEMAK_R2___ KC_H, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_I, KC_SFT_T_O
-#define ___COLEMAK_R3___ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
-// COLEMAK-DH
-#define ___COLEMAK_DH_L1___ KC_Q, KC_W, KC_F, KC_P, KC_B
-#define ___COLEMAK_DH_L2___ KC_SFT_T_A, KC_R, KC_LT_MDIA_S, KC_LT_SYMB_T, KC_G
-#define ___COLEMAK_DH_L3___ KC_Z, KC_X, KC_C, KC_D, KC_V
+// WORKMAN
+#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
+#define ___WORKMAN_L2___ KC_A, KC_S, KC_H, KC_T, KC_G
+#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
-#define ___COLEMAK_DH_R1___ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
-#define ___COLEMAK_DH_R2___ KC_M, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_I, KC_SFT_T_O
-#define ___COLEMAK_DH_R3___ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
+#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
+#define ___WORKMAN_R2___ KC_Y, KC_N, KC_E, KC_O, KC_I
+#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
-// WORKMAN
-#define ___WORKMAN_L1___ KC_Q, KC_D, KC_R, KC_W, KC_B
-#define ___WORKMAN_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_H, KC_LT_SYMB_T, KC_G
-#define ___WORKMAN_L3___ KC_Z, KC_X, KC_M, KC_C, KC_V
+#define ___WORKMAN___ ___WORKMAN_L1___, ___WORKMAN_R1___, \
+ ___WORKMAN_L2___, ___WORKMAN_R2___, \
+ ___WORKMAN_L3___, ___WORKMAN_R3___
-#define ___WORKMAN_R1___ KC_J, KC_F, KC_U, KC_P, KC_SCLN
-#define ___WORKMAN_R2___ KC_Y, KC_LT_SYMB_N, KC_LT_MDIA_E, KC_O, KC_SFT_T_I
-#define ___WORKMAN_R3___ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
// NORMAN
-#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
-#define ___NORMAN_L2___ KC_SFT_T_A, KC_S, KC_LT_MDIA_E, KC_LT_SYMB_T, KC_G
-#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
+#define ___NORMAN_L1___ KC_Q, KC_W, KC_D, KC_F, KC_K
+#define ___NORMAN_L2___ KC_A, KC_S, KC_E, KC_T, KC_G
+#define ___NORMAN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_B
-#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
-#define ___NORMAN_R2___ KC_Y, KC_LT_SYMB_N, KC_LT_MDIA_I, KC_O, KC_SFT_T_U
-#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
+#define ___NORMAN_R1___ KC_J, KC_U, KC_R, KC_L, KC_SCLN
+#define ___NORMAN_R2___ KC_Y, KC_N, KC_I, KC_O, KC_U
+#define ___NORMAN_R3___ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH
-// BEPO MAPS
-// Dvorak on fr-bepo software layer in the OS.
-// for dvorak and all the other qwerty like keyboards on bepo
-#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
-#define ___DVORAK_FR_L2___ BP_SFT_T_A, BP_LT_KP_O, BP_LT_MDIA_E, BP_LT_SYMB_U, BP_I
-#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
+#define ___NORMAN___ ___NORMAN_L1___, ___NORMAN_R1___, \
+ ___NORMAN_L2___, ___NORMAN_R2___, \
+ ___NORMAN_L3___, ___NORMAN_R3___
-#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
-#define ___DVORAK_FR_R2___ BP_D, BP_LT_SYMB_H, BP_LT_MDIA_T, BP_LT_KP_N, BP_SFT_T_S
-#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
+#define ___MALTRON_L1___ KC_Q, KC_P, KC_Y, KC_C, KC_B
+#define ___MALTRON_L2___ KC_A, KC_N, KC_I, KC_S, KC_F
+#define ___MALTRON_L3___ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
-// Bepo on fr-bepo software layer
-// for bepo on bepo
-/* BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */
-#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN
-/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
-#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */
+#define ___MALTRON_R1___ KC_V, KC_M, KC_U, KC_Z, KC_L
+#define ___MALTRON_R2___ KC_D, KC_T, KC_D, KC_O, KC_R
+#define ___MALTRON_R3___ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
-#define ___BEPO_FR_L1___ BP_B, BP_EACU, BP_P, BP_O, BP_EGRV
-#define ___BEPO_FR_L2___ BP_SFT_T_A, BP_LT_KP_U, BP_LT_SYMB_I, BP_LT_MDIA_E, BP_COMM
-#define ___BEPO_FR_L3___ /*BP_ECIR*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
+#define ___MALTRON___ ___MALTRON_L1___, ___MALTRON_R1___, \
+ ___MALTRON_L2___, ___MALTRON_R2___, \
+ ___MALTRON_L3___, ___MALTRON_R3___
-#define ___BEPO_FR_R1___ /* BP_DCIR,*/ BP_V, BP_D, BP_L, BP_J, BP_Z
-#define ___BEPO_FR_R2___ /* BP_C, */ BP_T, BP_LT_SYMB_S, BP_LT_MDIA_R, BP_LT_KP_N, BP_SFT_T_M //BP_CCED
-#define ___BEPO_FR_R3___ BP_QUOT, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W
-/* BP_DLR, BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN, KC_DEL, */
-/* KC_TAB, BP_B, BP_EACU, BP_P, BP_O, BP_EGRV, KC_BSPC, */
-/* KC_LSFT, BP_A, BP_U, BP_I, BP_E, BP_COMM, */
-/* KC_LCTRL, BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K, KC_ENT, */
-/* ESC_FN, BP_ECIR, KC_LGUI, KC_LALT, SPC_RALT, */
-/* TT(SWAP), KC_MNXT, */
-/* KC_MPLY, */
-/* TT(FN), TT(NUMS), KC_MPRV, */
+#define ___EUCALYN_L1___ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q
+#define ___EUCALYN_L2___ KC_A, KC_O, KC_E, KC_I, KC_U
+#define ___EUCALYN_L3___ KC_Z, KC_X, KC_C, KC_V, KC_W
-/* /\* right hand *\/ */
-/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
-/* KC_BSPC, BP_DCIR, BP_V, BP_D, BP_L, BP_J, BP_Z, */
-/* BP_C, BP_T, BP_S, BP_R, BP_N, M_RSFT, */
-/* KC_ENT, BP_QUOT, BP_Q, BP_G, BP_H, BP_F, W_RCTL, */
+#define ___EUCALYN_R1___ KC_M, KC_R, KC_D, KC_Y, KC_P
+#define ___EUCALYN_R2___ KC_G, KC_T, KC_K, KC_S, KC_N
+#define ___EUCALYN_R3___ KC_B, KC_H, KC_J, KC_L, KC_SCLN
+#define ___EUCALYN___ ___EUCALYN_L1___, ___EUCALYN_R1___, \
+ ___EUCALYN_L2___, ___EUCALYN_R2___, \
+ ___EUCALYN_L3___, ___EUCALYN_R3___
-/*******************************************************************/
-/** For the top rows. Numbers for most things, symbols for Bepo. **/
-/*******************************************************************/
-// for everything on qwerty.
-#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
-#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
+#define ___CARPLAX_QFMLWY_L1___ KC_Q, KC_F, KC_M, KC_L, KC_W
+#define ___CARPLAX_QFMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
+#define ___CARPLAX_QFMLWY_L3___ KC_Z, KC_V, KC_G, KC_C, KC_X
-// function key rows, works for everyone.
-#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
-#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+#define ___CARPLAX_QFMLWY_R1___ KC_Y, KC_U, KC_O, KC_B, KC_J
+#define ___CARPLAX_QFMLWY_R2___ KC_I, KC_A, KC_E, KC_H, KC_SCLN
+#define ___CARPLAX_QFMLWY_R3___ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
-#define ___FUNC_1_6___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
-#define ___FUNC_7_12___ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
+#define ___CARPLAX_QFMLWY___ ___CARPLAX_QFMLWY_L1___, ___CARPLAX_QFMLWY_R1___, \
+ ___CARPLAX_QFMLWY_L2___, ___CARPLAX_QFMLWY_R2___, \
+ ___CARPLAX_QFMLWY_L3___, ___CARPLAX_QFMLWY_R3___
-// a top symbol row if someone wants it.
-#define ___SYMB_L___ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
-#define ___SYMB_R___ KC_CIRC, KC_AMPR, KC_AST, KC_LPRN, KC_RPRN
-// For numbers on bepo. Bepo has numbers on shifted keys, the
-// reverse of most keyboard layouts.
-#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
-#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
+#define ___CARPLAX_QGMLWB_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
+#define ___CARPLAX_QGMLWB_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
+#define ___CARPLAX_QGMLWB_L3___ KC_Z, KC_X, KC_C, KC_F, KC_J
+#define ___CARPLAX_QGMLWB_R1___ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
+#define ___CARPLAX_QGMLWB_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
+#define ___CARPLAX_QGMLWB_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
-/*******************************************************************/
-/* keysets for the auxillary layers. */
-/* the KC_P? codes don't work for me. I don't use those shifted */
-/* values anyway. */
-/*******************************************************************/
-// Keypads
-#define ___KEYPAD_1___ KC_7, KC_8, KC_9, KC_PSLS
-#define ___KEYPAD_2___ KC_4, KC_5, KC_6, KC_PAST
-#define ___KEYPAD_3___ KC_1, KC_2, KC_3, KC_PMNS
-#define ___KEYPAD_4___ KC_0, KC_DOT, KC_PEQL, KC_PPLS
+#define ___CARPLAX_QGMLWB___ ___CARPLAX_QGMLWB_L1___, ___CARPLAX_QGMLWB_R1___, \
+ ___CARPLAX_QGMLWB_L2___, ___CARPLAX_QGMLWB_R2___, \
+ ___CARPLAX_QGMLWB_L3___, ___CARPLAX_QGMLWB_R3___
-// Keypad from the default keymap.c of the xd75
-#define ___KEYPAD_1_ALT___ KC_P7, KC_P8, KC_P9, KC_MINS
-#define ___KEYPAD_2_ALT___ KC_P4, KC_P5, KC_P6, KC_PLUS
-#define ___KEYPAD_3_ALT___ KC_P1, KC_P2, KC_P3, KC_PENT
-#define ___KEYPAD_4_ALT___ KC_P0, KC_DOT, KC_PENT, KC_PENT
-// For Bepo
-#define ___KEYPAD_1_BP___ DB_7, DB_8, DB_9, BP_SLSH
-#define ___KEYPAD_2_BP___ DB_4, DB_5, DB_6, BP_ASTR
-#define ___KEYPAD_3_BP___ DB_1, DB_2, DB_3, DB_MINUS
-#define ___KEYPAD_4_BP___ DB_0, DB_DOT, DB_EQL, BP_PLUS
+#define ___CARPLAX_QGMLWY_L1___ KC_Q, KC_G, KC_M, KC_L, KC_W
+#define ___CARPLAX_QGMLWY_L2___ KC_D, KC_S, KC_T, KC_N, KC_R
+#define ___CARPLAX_QGMLWY_L3___ KC_Z, KC_X, KC_C, KC_V, KC_J
+#define ___CARPLAX_QGMLWY_R1___ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
+#define ___CARPLAX_QGMLWY_R2___ KC_I, KC_A, KC_E, KC_O, KC_H
+#define ___CARPLAX_QGMLWY_R3___ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
-// SYMBOLS
-// An arrangement for the left hand with a focus on the ()[]{}s.
-#define ___SYMBOLS_1___ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE
-#define ___SYMBOLS_2___ KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV
-#define ___SYMBOLS_3___ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD
+#define ___CARPLAX_QGMLWY___ ___CARPLAX_QGMLWY_L1___, ___CARPLAX_QGMLWY_R1___, \
+ ___CARPLAX_QGMLWY_L2___, ___CARPLAX_QGMLWY_R2___, \
+ ___CARPLAX_QGMLWY_L3___, ___CARPLAX_QGMLWY_R3___
-// A larger 6 column arrangement for the left hand, A merge of dvorak and the above.
-#define ___SYMBOLS6_1___ KC_GRV, KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_HASH
-#define ___SYMBOLS6_2___ KC_AMPR, KC_AT, KC_ASTR, KC_LPRN, KC_RPRN, KC_PERC
-#define ___SYMBOLS6_3___ KC_DLR, KC_DQT, KC_QUOT, KC_LBRC, KC_RBRC, KC_COLON
-#define ___SYMBOLS6_4___ ___2___, KC_TILD, KC_DOT, KC_EXLM, KC_SCLN
-#define ___SYMBOLS5_4___ ___, KC_TILD, KC_DOT, KC_EXLM, KC_SCLN
+// BEPO Based Layouts.
+// Bepo, Dvorak and Beakl on fr-bepo software layer in the OS.
+// for dvorak and all the other qwerty like keyboards on bepo
+#define ___DVORAK_FR_L1___ DB_QUOT, DB_COMM, DB_DOT, BP_P, BP_Y
+#define ___DVORAK_FR_L2___ BP_A, BP_O, BP_E, BP_U, BP_I
+#define ___DVORAK_FR_L3___ DB_SCOLON, BP_Q, BP_J, BP_K, BP_X
+#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C, BP_R, BP_L
+#define ___DVORAK_FR_R2___ BP_D, BP_H, BP_T, BP_N, BP_S
+#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W, BP_V, BP_Z
-// A symbol pad. Basically the same layout as a number pad with the symbols
-// instead of the numbers with some extras around it, in familiar places for the
-// right hand.
-#define ___SYMPAD_1___ KC_GRV, KC_AMPR, KC_ASTR, KC_LCBR, KC_PLUS, KC_PIPE
-#define ___SYMPAD_2___ KC_TILD, KC_DLR, KC_PERC, KC_CIRC, KC_ASTR, KC_GRV
-#define ___SYMPAD_3___ ___, KC_EXLM, KC_AT, KC_HASH, KC_MINUS, KC_SLASH
-#define ___SYMPAD_4___ ___, KC_RCBR, KC_DOT, KC_EQUAL, KC_UNDS, KC_BSLASH
+#define ___DVORAK_FR___ ___DVORAK_FR_L1___, ___DVORAK_FR_R1___, \
+ ___DVORAK_FR_L2___, ___DVORAK_FR_R2___, \
+ ___DVORAK_FR_L3___, ___DVORAK_FR_R3___
-#define ___5_SYMPAD_4___ KC_RCBR, KC_DOT, KC_EQUAL, KC_UNDS, KC_BSLASH
+/* BEAKL 15 (main layer): */
-// Function pad. Same idea as above, but for function keys.
-#define ___FUNCPAD_T___ KC_F10, KC_F11, KC_F12
-#define ___FUNCPAD_1___ KC_F7, KC_F8, KC_F9
-#define ___FUNCPAD_2___ KC_F4, KC_F5, KC_F6
-#define ___FUNCPAD_3___ KC_F1, KC_F2, KC_F3
+#define ___DVORAK6_FR_L1___ DB_GRV, ___DVORAK_FR_L1___
+#define ___DVORAK6_FR_L2___ TAB_BKTAB, ___DVORAK_FR_L2___
+#define ___DVORAK6_FR_L3___ ___, ___DVORAK_FR_L3___
+#define ___DVORAK6_FR_R1___ ___DVORAK_FR_R1___, BP_MIN
+#define ___DVORAK6_FR_R2___ ___DVORAK_FR_R2___, BP_SLSH
+#define ___DVORAK6_FR_R3___ ___DVORAK_FR_R3___, DB_BACKSLASH
-//--- all over again for BEPO
+#define ___6DVORAK_FR___ ___6DVORAK_FR_L1___, ___6DVORAK_FR_R1___, \
+ ___6DVORAK_FR_L2___, ___6DVORAK_FR_R2___, \
+ ___6DVORAK_FR_L3___, ___6DVORAK_FR_R3___
+
+// dont forget ; and -. the 'a' home row is official placement.
+#define ___BEAKL15_FR_L1___ BP_Q, BP_H, BP_O, BP_U, BP_X
+#define ___BEAKL15_FR_L2___ BP_Y, BP_I, BP_E, BP_A, BB_DOT
+#define ___BEAKL15_FR_L2a___ BP_MIN, BP_Y, BP_I, BP_E, BP_A, BB_DOT
+#define ___BEAKL15_FR_L3___ BP_J, BP_SLSH, BB_COMM, BP_K, BB_QUOT
+
+#define ___BEAKL15_FR_R1___ BP_G, BP_C, BP_R, BP_F, BP_Z
+#define ___BEAKL15_FR_R2___ BP_D, BP_S, BP_T, BP_N, BP_B
+#define ___BEAKL15_FR_R2a___ BP_D, BP_S, BP_T, BP_N, BP_B, DB_SCLN
+#define ___BEAKL15_FR_R3___ BP_W, BP_M, BP_L, BP_P, BP_V
+
+#define ___6BEAKL15_FR___ ___, ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, ___, \
+ ___BEAKL15_FR_L2a___, ___BEAKL15_FR_R2a___, \
+ ___, ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___, ___
+
+#define ___BEAKL15_FR___ ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, \
+ ___BEAKL15_FR_L2___, ___BEAKL15_FR_R2___, \
+ ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___
+
+#define ___BEPO_L1___ BP_B, BP_EACU, BP_P, BP_O, BP_EGRV
+#define ___BEPO_L2___ BP_A, BP_U, BP_I, BP_E, BP_COMM
+#define ___BEPO_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y, BP_X, BP_DOT, BP_K
+
+#define ___BEPO_R1___ /* BP_DCRC,*/ BP_V, BP_D, BP_L, BP_J, BP_Z
+#define ___BEPO_R2___ /* BP_C, */ BP_T, BP_S, BP_R, BP_N, BP_M //BP_CCED
+#define ___BEPO_R3___ BP_QUOT, BP_Q, BP_G, BP_H, BP_F //BP_SFT_T_W
+
+// Bepo for a 3x6 split. CCED switched hands. :-( 'Altgr-c c' does the same.
+// W has to drop down to the bottom. Silly unbalanced layout.
+#define ___BEPO6_L1___ BP_CCED, ___BEPO_L1___
+#define ___BEPO6_L2___ TAB_BKTAB, ___BEPO_L2___
+#define ___BEPO6_L3___ BP_ECIR, ___BEPO_L3___
+
+#define ___BEPO6_R1___ ___BEPO_R1___, BP_PERC
+#define ___BEPO6_R2___ ___BEPO_R2___, BP_C
+#define ___BEPO6_R3___ ___BEPO_R3___, BP_W
+
+#define ___BEPO6___ ___BEPO6_L1___, ___BEPO6_R1___, \
+ ___BEPO6_L2___, ___BEPO6_R2___, \
+ ___BEPO6_L3___, ___BEPO6_R3___
+
+#define ___BEPO___ ___BEPO_L1___, ___BEPO_R1___, \
+ ___BEPO_L2___, ___BEPO_R2___, \
+ ___BEPO_L3___, ___BEPO_R3___
+
+
+/*******************************************************************/
+/** TOP ROWS Func,Symbols, Numbers you find there. **/
+/*******************************************************************/
+// for everything on qwerty.
+#define ___NUMBER_L___ KC_1, KC_2, KC_3, KC_4, KC_5
+#define ___NUMBER_R___ KC_6, KC_7, KC_8, KC_9, KC_0
+
+#define ___NUMBER_BEAKL15_L___ KC_4, KC_0, KC_1, KC_2, KC_3
+#define ___NUMBER_BEAKL15_R___ KC_7, KC_6, KC_5, KC_9, KC_8
+
+// a top symbol row if someone wants it.
+#define ___SYMB_L___ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
+#define ___SYMB_R___ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
+
+/// BEPO ////
+// For numbers on bepo. Bepo has numbers on shifted keys, the
+// reverse of many layouts.
+#define ___NUMBER_BEPO_L___ DB_1, DB_2, DB_3, DB_4, DB_5
+#define ___NUMBER_BEPO_R___ DB_6, DB_7, DB_8, DB_9, DB_0
+
+// In case you want to try BEAKL 15 Numbers
+#define ___NUMBER_BEAKL15_BP_L___ DB_4, DB_0, DB_1, DB_2, DB_3
+#define ___NUMBER_BEAKL15_BP_R___ DB_7, DB_6, DB_5, DB_9, DB_8
-// SYMBOLS FOR BEPO
// The top row. Bepo has symbols not numbers. Numbers are the shifted values.
+// There are actually 13 keys specified for bepo.
#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO, BP_LDAQ, BP_RDAQ, BP_LPRN, BP_RPRN
-/* KC_DEL, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, BP_EQL, */
#define ___SYMBOL_BEPO_R___ BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR /* BP_EQL, BP_PERC */
-// An arrangement for the left hand with a focus on the ()[]{}s.
-#define ___SYMBOLS_1_BP___ KC_EXLM, BP_AT, DB_LCBR, DB_RCBR, DB_PIPE
-#define ___SYMBOLS_2_BP___ DB_HASH, BP_DLR, DB_LPRN, DB_RPRN, DB_GRV
-#define ___SYMBOLS_3_BP___ BP_PERC, DB_CIRC, DB_LBRC, DB_RBRC, DB_TILD
-
-// A larger 6 column arrangement for the left hand, A merge of dvorak and the above.
-#define ___SYMBOLS6_1_BP___ DB_GRV, DB_LESS, DB_GRTR, DB_LCBR, DB_RCBR, DB_HASH
-#define ___SYMBOLS6_2_BP___ KC_AMPR, BP_AT, BP_ASTR, DB_LPRN, DB_RPRN, BP_PERC
-#define ___SYMBOLS6_3_BP___ BP_DLR, BP_DQUO, DB_QUOT, DB_LBRC, DB_RBRC, KC_COLON
-#define ___SYMBOLS6_4_BP___ ___2___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON
-
-#define ___SYMBOLS5_4_BP___ ___, DB_TILD, DB_DOT, KC_EXLM, DB_SCOLON
-
-// A symbol pad. Basically the same layout as a number pad with the symbols
-// instead of the numbers with some extras around it, in familiar places for the
-// right hand.
-#define ___SYMPAD_1_BP___ DB_GRV, BP_AMPR, BP_ASTR, DB_LCBR, BP_PLUS, DB_PIPE
-#define ___SYMPAD_2_BP___ DB_TILD, BP_DLR, BP_PERC, DB_CIRC, BP_ASTR, DB_GRV
-#define ___SYMPAD_3_BP___ ___, BP_EXLM, BP_AT, DB_HASH, BP_MINS, BP_SLSH
-#define ___SYMPAD_4_BP___ ___, DB_RCBR, DB_DOT, BP_EQL, BP_MINS, DB_BACKSLASH
-
-#define ___5_SYMPAD_4_BP___ DB_RCBR, DB_DOT, BP_EQL, BP_MINS, DB_BACKSLASH
-
-// Parts are parts.
-// MOUSE, ARROW and MEDIA KEY SETS
-#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
-#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
-#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5
-#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1
-#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
-#define ___MACCL___ ___MOUSE_ACCL_012___
-
-#define ___PRV_PLAY_NXT_STOP KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
-#define ___VDN_MUTE_VUP___ KC_VOLD, KC_MUTE, KC_VOLU
-
-#define ___MUTE_PRV_PLAY_NXT_STOP___ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
-#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP
-#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
-
-// RGB FUNCTION Keysets
-// RGB row for the _FN layer from the redo of the default keymap.c
-#define ___RGB_HUE_SAT_INT_UP___ RGB_HUI, RGB_SAI, RGB_VAI, RGB_RMOD
-#define ___RGB_HUE_SAT_INT_DN___ RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD
-#define ___RGB_MODE_PRV_NXT___ RGB_RMOD, RGB_MOD
-#define ___RGB_TOGGLE___ RGB_TOG
-#define ___RGB_P_B_R_SW_SN___ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN
-#define ___RGB_KXGT___ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T
-
-// Print screen, screen lock, pause
-#define ___PSCR_SLCK_PAUS___ KC_PSCR, KC_SLCK, KC_PAUS
-
-// LAYER Keyset rows. Changing the Default base layer or the transient layers.
-// Some are full length. The baselayers leave the ends open. hence a 13.
-// for an ORtho 15.
-#define ___2_LAYERS_B1___ DF(BEPO), DF(DVORAK_ON_BEPO)
-#define ___2_LAYERS_B2___ DF(COLEMAK), DF(DVORAK)
-#define ___3_LAYERS_B3___ DF(QWERTY), DF(NORMAN), DF(WORKMAN)
-#define ___3_LAYERS_B4___ ___X3___
-// transient layers.
-#define ___3_LAYERS_T_BP___ TO(MDIA), TO(SYMB_ON_BEPO), TO(KEYPAD_ON_BEPO)
-#define ___3_LAYERS_T___ TO(MDIA), TO(SYMB), TO(KEYPAD)
-#define ___3_LAYERS_T_CTL___ TO(_RGB), ___X2___
+#define ___6SYMBOL_BEPO_L___ BP_DLR, ___SYMBOL_BEPO_L___
+#define ___6SYMBOL_BEPO_R___ ___SYMBOL_BEPO_R___, BP_EQL /* BP_PERC */
+
+// a top qwerty style symbol row if someone wants it.
+#define ___SYMB_L_FR___ DB_EXLM, BP_AT, BP_HASH, BP_DLR, BP_PERC
+#define ___SYMB_R_FR___ DB_CIRC, BP_AMPR, BP_ASTR, BP_LPRN, BP_RPRN
+
+
+// function key rows, works for everyone.
+#define ___FUNC_L___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
+#define ___FUNC_R___ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+
+#define ___FUNC_1_6___ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6
+#define ___FUNC_7_12___ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
+
+#define ___FUNC_BEAKL_L___ KC_F4, KC_F10, KC_F1, KC_F2, KC_F3
+#define ___FUNC_BEAKL_R___ KC_F7, KC_F6, KC_F5, KC_F9, KC_F8
+
+#define ___12_FUNC_BEAKL___ KC_F11, ___FUNC_BEAKL_L___, ___FUNC_BEAKL_R___, KC_F12
+
+// Altogether. Defines all the various top rows that
+// are present with all these layouts.
+// All together as blocks of 10
+#define ___NUMS___ ___NUMBER_L___, ___NUMBER_R___
+#define ___SYMS___ ___SYMB_L___, ___SYMB_R___
+#define ___BKLNUMS___ ___NUMBER_BEAKL15_L___, ___NUMBER_BEAKL15_R___
+#define ___NUMS_BP___ ___NUMBER_BEPO_L___, ___NUMBER_BEPO_R___
+#define ___SYMS_BEPO___ ___SYMBOL_BEPO_L___, ___SYMBOL_BEPO_L___
+#define ___BKLNUMS_BP___ ___NUMBER_BEAKL15_BP_L___, ___NUMBER_BEAKL15_BP_R___
+#define ___FUNCS_1_10___ ___FUNC_L___, ___FUNC_R___
diff --git a/users/ericgebhart/edge_keys.h b/users/ericgebhart/edge_keys.h
new file mode 100644
index 0000000000..f37425322c
--- /dev/null
+++ b/users/ericgebhart/edge_keys.h
@@ -0,0 +1,238 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "core_keysets.h"
+
+/******************************************************************/
+/* This is where I put my Keyboard layouts, Everything on the */
+/* edges, the functions on keys like LT() and SFT_T() */
+/* can be applied here. The physical shape of the keyboard is */
+/* also accounted for here. This makes it very simple to add a */
+/* new keyboard and reuse all of my layouts and layers */
+/* */
+/* The particular pieces we define here (as needed) are: */
+/* * Edge pinky keys, */
+/* * Middle section keys */
+/* * Bottom/5th row */
+/* * Thumbkeys */
+/* * Any functional additions to wrap the keys. ie. LT() */
+/* */
+/* With all of that in hand, we then create a LAYOUT wrapper */
+/* macro that takes a list of keys, to create a keyboard matrix */
+/* that fits the keyboard. Simple. */
+/* */
+/* The thumb keys, the bottom rows, etc. */
+/* */
+/* An attempt has been made to adapt the kinesis and ergodox */
+/* Thumb keys to the rectangular shapes of the xd75 and viterbi. */
+/* which are 15x and 14x matrices respectively. */
+/* The Corne was a perfect fit */
+/******************************************************************/
+
+/******************************************************************/
+/* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */
+/* keys inbetween the usual left and right hand keys */
+/* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */
+/* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */
+/* thumbkeys. It is missing middle keys on (home) row 3. */
+/* * The Corne is a split 3x12 with 6 thumb keys. It has no */
+/* extra middle keys */
+/* */
+/******************************************************************/
+
+
+/******************************************************************/
+/* In all cases these keyboards are defined in a matrix which is */
+/* a set of rows. Maybe like so, or not. */
+/* */
+/* -------------------------|------------------------ */
+/* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */
+/* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */
+/* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */
+/* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */
+/* | Row5L | Row5R | */
+/* | ThumbsL | ThumbsR | */
+/* -------------------------|------------------------ */
+
+/* Generally speaking, the keys on the right and left don't change. */
+/* Neither does the bottom row or the thumbs. Frequently the numbers */
+/* row is identical across layers. Mostly, we want our Base layers to */
+/* be predctable. */
+
+// EDGES
+// outside pinky keys row 0-3.
+// Qwerty and Bepo, - Applies
+// to foreign layouts on bepo. dvorak_bp, beakl_bp.
+#define LEFT0 KC_GRV
+#define LEFT1 KC_GRV
+#define LEFT2 KC_TAB
+#define LEFT3 KC_BSLASH
+//#define LEFT3 KC_COLN
+
+#define LEFT0_BP DB_GRV
+#define LEFT1_BP DB_GRV
+#define LEFT2_BP KC_TAB
+#define LEFT3_BP DB_BACKSLASH
+//#define LEFT3_BP BP_COLN
+
+#define RIGHT0 KC_EQL
+#define RIGHT1 KC_SLASH
+#define RIGHT2 KC_MINS
+#define RIGHT3 KC_SCLN
+
+#define RIGHT0_BP BP_EQL
+#define RIGHT1_BP BP_SLSH
+#define RIGHT2_BP BP_MINS
+#define RIGHT3_BP BP_SCLN
+
+/******************************************************************/
+/* Middle Keysets for various keyboards */
+// MIDDLES
+/// Middle left and right keys.
+/******************************************************************/
+#define ___MIDDLE_LT___ OSL(_LAYERS)
+#define ___MIDDLE_L1___ KC_CCCV
+#define ___MIDDLE_L2___ TO(_SYMB)
+#define ___MIDDLE_L3___ TO(_NAV)
+
+#define ___MIDDLE_RT___ _X_
+#define ___MIDDLE_R1___ KC_CCCV
+#define ___MIDDLE_R2___ TO(_TOPROWS)
+#define ___MIDDLE_R3___ OSL(_KEYPAD)
+
+#define ___MIDDLE_L1_BP___ BP_CCCV
+#define ___MIDDLE_L2_BP___ TO(_SYMB_BP)
+
+#define ___MIDDLE_R1_BP___ BP_CCCV
+#define ___MIDDLE_R2_BP___ TO(_KEYPAD_BP)
+#define ___MIDDLE_R3_BP___ OSL(_KEYPAD_BP)
+
+// 3 keys in the middle of a 15x matrix
+#define ___3_MIDDLE_T___ ___MIDDLE_LT___, LCTL(KC_A), ___MIDDLE_RT___
+#define ___3_MIDDLE_1___ ___MIDDLE_L1___, LCTL(KC_X), ___MIDDLE_R1___
+#define ___3_MIDDLE_2___ ___MIDDLE_L2___, TO(_RGB), ___MIDDLE_R2___
+#define ___3_MIDDLE_3___ ___MIDDLE_L3___, TO(_SYMB), ___MIDDLE_R3___
+
+// The same, for BEPO
+#define ___3_MIDDLE_T_BP___ ___MIDDLE_LT___, LCTL(BP_A), ___MIDDLE_RT___
+#define ___3_MIDDLE_1_BP___ ___MIDDLE_L1_BP___, LCTL(BP_X), ___MIDDLE_R1_BP___
+#define ___3_MIDDLE_2_BP___ ___MIDDLE_L2_BP___, TO(_RGB), ___MIDDLE_R2_BP___
+#define ___3_MIDDLE_3_BP___ ___MIDDLE_L3___, TO(_SYMB_BP), ___MIDDLE_R3_BP___
+
+// 2 keys in the middle of a 14x matrix - For viterbi and ergodox.
+#define ___2_MIDDLE_T___ ___MIDDLE_LT___, ___MIDDLE_RT___
+#define ___2_MIDDLE_1___ ___MIDDLE_L1___, ___MIDDLE_R1___
+#define ___2_MIDDLE_2___ ___MIDDLE_L2___, ___MIDDLE_R2___
+#define ___2_MIDDLE_3___ ___MIDDLE_L3___, ___MIDDLE_R3___
+
+// The same, for BEPO
+#define ___2_MIDDLE_T_BP___ ___MIDDLE_LT___, ___MIDDLE_RT___
+#define ___2_MIDDLE_1_BP___ ___MIDDLE_L1_BP___, ___MIDDLE_R1_BP___
+#define ___2_MIDDLE_2_BP___ ___MIDDLE_L2_BP___, ___MIDDLE_R2_BP___
+#define ___2_MIDDLE_3_BP___ ___MIDDLE_L3___, ___MIDDLE_R3_BP___
+
+/********************************************************************/
+/* THUMBS */
+/* Define the thumb clusters for all the keyboards. */
+/********************************************************************/
+
+// for xd75 or other layouts with a center column.
+// #define ___5_MIDDLE_THUMBS___ CTL_BSPC, ALT_DEL, XMONAD_ESC, ALT_ENT, CTL_SPC
+#define ___5_MIDDLE_THUMBS___ ALT_DEL, BSPC_TOPR, ESC_SYMB, ENT_NAV, SPC_TOPR
+#define ___5_MIDDLE_THUMBS_BP___ ALT_DEL, BSPC_TOPR_BP, ESC_SYMB_BP, ENT_NAV, SPC_TOPR_BP
+
+// for a last, 4th thumb row. for rebound.
+// backtab, home end, ----, pgup, pgdn, tab ?
+#define ___13_BOTTOM___ \
+ KC_BKTAB, HOME_END, KC_TAB, TT(_NAV), BSPC_SYMB, ESC_TOPR, \
+ OSL(_LAYERS), \
+ ENT_NAV, SPC_TOPR, KC_LEFT, KC_PGUP, KC_PGDN, KC_RIGHT
+
+#define ___13_BOTTOM_BP___ \
+ KC_BKTAB, HOME_END, KC_TAB, TT(_NAV), BSPC_SYMB_BP, ESC_TOPR_BP, \
+ OSL(_LAYERS), \
+ ENT_NAV, SPC_TOPR_BP, KC_LEFT, KC_PGUP, KC_PGDN, KC_RIGHT
+
+// becomes the upper thumbs, the real 4th row if we throw away
+// the number row at the top.
+// this is the 4th row on the viterbi above the thumbrow if the number
+// row is not used for numbers.
+#define ___4_MIDDLE_4___ LSFT(KC_TAB), HOME_END, KC_PGDN, KC_TAB
+#define ___4_MIDDLE_4b___ TAB_BKTAB, HOME_END, KC_PGDN, KC_PGUP
+
+/********************************************************************/
+/** The bottom row and thumbs as needed. **/
+/********************************************************************/
+// I do not use those pinky keys. I had useful things there but there
+// are better more useful ways than those pinkys.
+#define ___5_BOTTOM_LEFT___ ___X2___, KC_INS, KC_LEFT, KC_RIGHT
+#define ___5_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, ___X2___
+
+#define ___4_BOTTOM_LEFT___ LCTL(KC_V), KC_INS, KC_LEFT, KC_RIGHT
+#define ___4_BOTTOM_RIGHT___ KC_UP, KC_DOWN, KC_BSLASH, LCTL(KC_C)
+
+// the bottom rows for keyboards on bepo.
+// bepo on bepo - not enough space to go around....
+#define ___5_BOTTOM_LEFT_BP___ _X_, BP_EACU, _X_, KC_LEFT, KC_RIGHT
+#define ___5_BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, DB_BACKSLASH, BP_CCED, BP_PERC
+
+#define ___4_BOTTOM_LEFT_BP___ LCTL(BP_C), BP_EACU, KC_LEFT, KC_RIGHT
+#define ___4_BOTTOM_RIGHT_BP___ KC_UP, KC_DOWN, DB_BACKSLASH, BP_CCED
+
+// for dvorak and beakl on bepo
+#define ___5_BOTTOM_LEFT_FR___ ___X3___, KC_LEFT, KC_RIGHT
+#define ___5_BOTTOM_RIGHT_FR___ KC_UP, KC_DOWN, DB_BACKSLASH, ___X2___
+
+// basically a 5th row in a 5x matrix. but maybe a 4th if there isnt a number row.
+#define ___15_BOTTOM___ ___5_BOTTOM_LEFT___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT___
+#define ___15_BOTTOM_FR___ ___5_BOTTOM_LEFT_FR___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT_FR___
+#define ___15_BOTTOM_BP___ ___5_BOTTOM_LEFT_BP___, ___5_MIDDLE_THUMBS___, ___5_BOTTOM_RIGHT_BP___
+
+#define ___14_BOTTOM___ ___5_BOTTOM_LEFT___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT___
+#define ___14_BOTTOM_FR___ ___5_BOTTOM_LEFT_FR___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT_FR___
+#define ___14_BOTTOM_BP___ ___5_BOTTOM_LEFT_BP___, ___4_MIDDLE_4b___, ___5_BOTTOM_RIGHT_BP___
+#define ___14_THUMBS_BOTTOM___ ___X4___, ___6_MIDDLE_THUMBS___, ___X4___
+
+// bottom row of ergodox thumbs, bottom middle of all layouts.
+// start with the minimilist thumb row of 6, like the Corne, 2x3.
+
+#define ___THUMBS_1___ TT(_KEYPAD), MO(_ADJUST), MO(_LAYERS), OSL(_TOPROWS)
+#define ___THUMBS_1_BP___ TT(_KEYPAD_BP), MO(_ADJUST), MO(_LAYERS), OSL(_TOPROWS_BP)
+#define ___THUMBS_2___ HOME_END, KC_PGUP
+#define ___THUMBS_3___ ___6_ERGO_THUMBS___
+
+#define ___4_THUMBS_1_BP___ TT(_KEYPAD_BP), KC_HOME, KC_PGUP, OSL(_TOPROWS_BP)
+#define ___4_THUMBS_1___ TT(_KEYPAD), KC_HOME, KC_PGUP, OSL(_TOPROWS)
+#define ___6_THUMBS_2___ KC_LSFT, KC_BKTAB, KC_END, KC_PGDN, KC_TAB, KC_RSFT
+
+#define ___6_THUMBS_2b___ BSPC_SYMB, ESC_TOPR, KC_END, KC_PGUP, ENT_NAV, SPC_TOPR
+#define ___6_ERGO_THUMBSb___ TT(_LAYERS), BSPC_SYMB, KC_XM_PORD, KC_PGDN, TT(_NAV), KC_XM_PORD
+#define ___6_THUMBS_2b_BP___ BSPC_SYMB_BP, ESC_TOPR_BP, KC_END, KC_PGDN, ENT_TOPR_BP, SPC_NAV
+
+#define ___6_ERGO_THUMBS___ TT(_NAV), BSPC_SYMB, ESC_TOPR, ENT_NAV, SPC_TOPR, KC_XM_PORD
+#define ___6_ERGO_THUMBS_BP___ TT(_NAV), BSPC_SYMB_BP, ESC_TOPR, ENT_NAV, SPC_TOPR_BP, BP_XM_PORD
+
+#define ___6_MIDDLE_THUMBS___ ___6_ERGO_THUMBS___
+
+#define ___12_DOX_ALL_THUMBS___ ___THUMBS_1___, ___THUMBS_2___, ___THUMBS_3___
+#define ___12_DOX_ALL_THUMBS_BP___ ___THUMBS_1_BP___, ___THUMBS_2___, ___THUMBS_3___
+
+#define ___16_ALL_THUMBSb___ ___4_THUMBS_1___, ___6_THUMBS_2b___, ___6_ERGO_THUMBSb___
+#define ___16_ALL_THUMBS___ ___4_THUMBS_1___, ___6_THUMBS_2___, ___6_ERGO_THUMBS___
+#define ___16_ALL_THUMBSb_BP___ ___4_THUMBS_1_BP___, ___6_THUMBS_2b_BP___, ___6_ERGO_THUMBS___
+#define ___16_ALL_THUMBS_BP___ ___4_THUMBS_1_BP___, ___6_THUMBS_2_BP___, ___6_ERGO_THUMBS_BP___
diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c
index d34563865d..2a34110ae2 100644..100755
--- a/users/ericgebhart/ericgebhart.c
+++ b/users/ericgebhart/ericgebhart.c
@@ -27,12 +27,8 @@
float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND);
float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
-static uint16_t copy_paste_timer;
userspace_config_t userspace_config;
-void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); };
-
-
// Add reconfigurable functions here, for keymap customization
// This allows for a global, userspace functions, and continued
// customization of the keymap. Use _keymap instead of _user
@@ -44,595 +40,9 @@ __attribute__ ((weak))
void matrix_scan_keymap(void) {}
__attribute__ ((weak))
-bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-__attribute__ ((weak))
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
- return true;
-}
-
-__attribute__ ((weak))
uint32_t layer_state_set_keymap (uint32_t state) {
return state;
}
__attribute__ ((weak))
void led_set_keymap(uint8_t usb_led) {}
-
-// check default layerstate to see which layer we are on.
-// if (biton32(layer_state) == _DIABLO) { --- current layer
-// if (biton32(default_layer_state) == _DIABLO) { --- current default layer
-// check for left shift on.
-// if (mods & MOD_BIT(KC_LSFT)) register_code(KC_LSFT);
-
-static void switch_default_layer(uint8_t layer) {
- default_layer_set(1UL<<layer);
- clear_keyboard();
-}
-
-// so the keyboard remembers which layer it's in after power disconnect.
-/*
- uint32_t default_layer_state_set_kb(uint32_t state) {
- eeconfig_update_default_layer(state);
- return state;
- }
-*/
-
-// These are the keys for dvorak on bepo. column one is the keycode and mods for
-// the unshifted key, the second column is the keycode and mods for the shifted key.
-// GR is Good Range. It subtracts SAFE_RANGE from the keycode so we can make a
-// reasnably sized array without difficulties. The macro is for the constant declarations
-// the function is for when we use it.
-const uint8_t key_translations[][2][2] = {
- [GR(DB_1)] = {{BP_DQUO, MOD_LSFT}, {BP_DCIR, MOD_LSFT}},
- [GR(DB_2)] = {{BP_LDAQ, MOD_LSFT}, {BP_AT, MOD_NONE}},
- [GR(DB_3)] = {{BP_RDAQ, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
- [GR(DB_4)] = {{BP_LPRN, MOD_LSFT}, {BP_DLR, MOD_NONE}},
- [GR(DB_5)] = {{BP_RPRN, MOD_LSFT}, {BP_PERC, MOD_NONE}},
- [GR(DB_6)] = {{BP_AT, MOD_LSFT}, {BP_AT, MOD_BIT(KC_RALT)}},
- [GR(DB_7)] = {{BP_PLUS, MOD_LSFT}, {BP_P, MOD_BIT(KC_RALT)}},
- [GR(DB_8)] = {{BP_MINS, MOD_LSFT}, {BP_ASTR, MOD_NONE}},
- [GR(DB_9)] = {{BP_SLSH, MOD_LSFT}, {BP_LPRN, MOD_NONE}},
- [GR(DB_0)] = {{BP_ASTR, MOD_LSFT}, {BP_RPRN, MOD_NONE}},
- [GR(DB_GRV)] = {{BP_PERC, MOD_LSFT}, {BP_K, MOD_BIT(KC_RALT)}},
- [GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT}, {BP_DOT, MOD_LSFT}},
- [GR(DB_SLASH)] = {{BP_SLSH, MOD_NONE}, {BP_QUOT, MOD_LSFT}},
- [GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
- [GR(DB_EQL)] = {{BP_EQL, MOD_NONE}, {BP_PLUS, MOD_NONE}},
- [GR(DB_COMM)] = {{BP_COMM, MOD_NONE}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
- [GR(DB_DOT)] = {{BP_DOT, MOD_NONE}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
- [GR(DB_QUOT)] = {{BP_QUOT, MOD_NONE}, {BP_DQUO, MOD_NONE}},
- [GR(DB_MINUS)] = {{BP_MINS, MOD_NONE}, {KC_SPC, MOD_BIT(KC_RALT)}},
- [GR(DB_LPRN)] = {{BP_LPRN, MOD_NONE}, {BP_LPRN, MOD_BIT(KC_RALT)}},
- [GR(DB_RPRN)] = {{BP_RPRN, MOD_NONE}, {BP_RPRN, MOD_BIT(KC_RALT)}},
- [GR(DB_LBRC)] = {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
- [GR(DB_RBRC)] = {{BP_X, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
- // For the symbol layer
- [GR(DB_HASH)] = {{BP_DLR, MOD_LSFT}, {BP_DLR, MOD_LSFT}},
- [GR(DB_LCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
- [GR(DB_RCBR)] = {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
- [GR(DB_PIPE)] = {{BP_B, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
- [GR(DB_TILD)] = {{BP_K, MOD_BIT(KC_RALT)}, {BP_K, MOD_BIT(KC_RALT)}},
- [GR(DB_CIRC)] = {{BP_AT, MOD_BIT(KC_RALT)}, {BP_AT, MOD_BIT(KC_RALT)}},
- [GR(DB_LESS)] = {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
- [GR(DB_GRTR)] = {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
-};
-
-
-uint8_t gr(uint8_t kc){
- return (kc - SAFE_RANGE);
-}
-// send the right keycode for the right mod.
-// remove the mods we are taking care of,
-// send our keycodes then restore them.
-// all so we can make dvorak keys from bepo keycodes.
-void send_keycode(uint8_t kc){
- uint8_t tmp_mods = get_mods();
- bool is_shifted = ( tmp_mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
- //uint8_t key[2][2] = key_translations[GR(kc)];
- // need to turn of the shift if it is on.
- unregister_mods((MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)));
- if(is_shifted){
- register_mods(SHIFTED_MODS(kc));
- register_code(SHIFTED_KEY(kc));
- unregister_code(SHIFTED_KEY(kc));
- unregister_mods(SHIFTED_MODS(kc));
- } else{
- register_mods(UNSHIFTED_MODS(kc));
- register_code(UNSHIFTED_KEY(kc));
- unregister_code(UNSHIFTED_KEY(kc));
- unregister_mods(UNSHIFTED_MODS(kc));
- }
- clear_mods();
- register_mods(tmp_mods);
-}
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
-// If console is enabled, it will print the matrix position and status of each key pressed
-#ifdef KEYLOGGER_ENABLE
-xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
-#endif //KEYLOGGER_ENABLE
-
-// still dont know how to make #&_ And RALT is not ALTGR, That isn't working in the bepo keyboard
-// either. No {} either probably for the same reasons. ALtGR is the key to some of these.
- switch (keycode) {
- // Handle the key translations for Dvorak on bepo. It's best if these are the first
- // enums after SAFE_RANGE.
- case DB_1:
- case DB_2:
- case DB_3:
- case DB_4:
- case DB_5:
- case DB_6:
- case DB_7:
- case DB_8:
- case DB_9:
- case DB_0:
- case DB_GRV:
- case DB_SCOLON:
- case DB_SLASH:
- case DB_BACKSLASH:
- case DB_EQL:
- case DB_DOT:
- case DB_COMM:
- case DB_QUOT:
- case DB_MINUS:
- case DB_LPRN:
- case DB_RPRN:
- case DB_LBRC:
- case DB_RBRC:
- if(record->event.pressed)
- send_keycode(keycode);
- unregister_code(keycode);
- break;
-
- case KC_QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(QWERTY);
- }
- return false;
- break;
- case KC_COLEMAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(COLEMAK);
- }
- return false;
- break;
- case KC_DVORAK:
- if (record->event.pressed) {
- set_single_persistent_default_layer(DVORAK);
- }
- return false;
- break;
- case KC_WORKMAN:
- if (record->event.pressed) {
- set_single_persistent_default_layer(WORKMAN);
- }
- return false;
- break;
-
- case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
- if (!record->event.pressed) {
- SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP
-#if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU))
- ":dfu"
-#elif defined(BOOTLOADER_HALFKAY)
- ":teensy"
-#elif defined(BOOTLOADER_CATERINA)
- ":avrdude"
-#endif // bootloader options
- SS_TAP(X_ENTER));
- }
- return false;
- break;
-
-
- case KC_RESET: // Custom RESET code
- if (!record->event.pressed) {
- reset_keyboard();
- }
- return false;
- break;
-
-
- case EPRM: // Resets EEPROM
- if (record->event.pressed) {
- eeconfig_init();
- default_layer_set(1UL<<eeconfig_read_default_layer());
- layer_state_set(layer_state);
- }
- return false;
- break;
- case VRSN: // Prints firmware version
- if (record->event.pressed) {
- SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
- }
- return false;
- break;
-
- /* Code has been depreciated
- case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
- if (!record->event.pressed) {
- clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
- send_string(decoy_secret[keycode - KC_SECRET_1]);
- }
- return false;
- break;
- */
-
- // These are a serious of gaming macros.
- // Only enables for the viterbi, basically,
- // to save on firmware space, since it's limited.
-#ifdef MACROS_ENABLED
- case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
- if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_byte(EECONFIG_USER, userspace_config.raw); }
- return false; break;
-#endif // MACROS_ENABLED
-
- case KC_CCCV: // One key copy/paste
- if(record->event.pressed){
- copy_paste_timer = timer_read();
- } else {
- if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
- register_code(KC_LCTL);
- tap(KC_C);
- unregister_code(KC_LCTL);
-#ifdef AUDIO_ENABLE
- PLAY_SONG(tone_copy);
-#endif
- } else { // Tap, paste
- register_code(KC_LCTL);
- tap(KC_V);
- unregister_code(KC_LCTL);
-#ifdef AUDIO_ENABLE
- PLAY_SONG(tone_paste);
-#endif
- }
- }
- return false;
- break;
- case CLICKY_TOGGLE:
-#ifdef AUDIO_CLICKY
- userspace_config.clicky_enable = clicky_enable;
- eeprom_update_byte(EECONFIG_USER, userspace_config.raw);
-#endif
- break;
-#ifdef UNICODE_ENABLE
- case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
- if (record->event.pressed) {
- register_code(KC_RSFT);
- tap(KC_9);
- unregister_code(KC_RSFT);
- process_unicode((0x256F | QK_UNICODE), record); // Arm
- process_unicode((0x00B0 | QK_UNICODE), record); // Eye
- process_unicode((0x25A1 | QK_UNICODE), record); // Mouth
- process_unicode((0x00B0 | QK_UNICODE), record); // Eye
- register_code(KC_RSFT);
- tap(KC_0);
- unregister_code(KC_RSFT);
- process_unicode((0x256F | QK_UNICODE), record); // Arm
- tap(KC_SPC);
- process_unicode((0x0361 | QK_UNICODE), record); // Flippy
- tap(KC_SPC);
- process_unicode((0x253B | QK_UNICODE), record); // Table
- process_unicode((0x2501 | QK_UNICODE), record); // Table
- process_unicode((0x253B | QK_UNICODE), record); // Table
- }
- return false;
- break;
-#endif // UNICODE_ENABLE
-
-}
-
-return true;
- // return process_record_keymap(keycode, record) && process_record_secrets(keycode, record);
-}
-
-void tap_dance_mouse_btns (qk_tap_dance_state_t *state, void *user_data) {
- switch(state->count){
- case 1:
- register_code(KC_BTN1);
- break;
- case 2:
- register_code(KC_BTN2);
- break;
- case 3:
- register_code(KC_BTN3);
- break;
- case 4:
- register_code(KC_BTN4);
- break;
- case 5:
- register_code(KC_BTN5);
- break;
- default:
- break;
- }
- reset_tap_dance(state);
-}
-
-// counting on all the qwerty layers to be less than dvorak_on_bepo
-int on_qwerty(){
- uint8_t deflayer = (biton32(default_layer_state));
- return (deflayer < DVORAK_ON_BEPO);
-}
-
-void tap_dance_df_bepo_layers_switch (qk_tap_dance_state_t *state, void *user_data) {
- switch(state->count){
- case 1:
- switch_default_layer(DVORAK_ON_BEPO);
- break;
- case 2:
- switch_default_layer(BEPO);
- break;
- case 3:
- layer_invert(LAYERS);
- break;
- default:
- break;
- }
- reset_tap_dance(state);
-}
-
-void tap_dance_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
- switch(state->count){
- case 1:
- if(on_qwerty())
- layer_invert(SYMB);
- else
- layer_invert(SYMB_ON_BEPO);
- break;
- case 2:
- layer_invert(MDIA);
- break;
- case 3:
- layer_invert(LAYERS);
- break;
- case 4:
- if(on_qwerty())
- layer_invert(KEYPAD);
- else
- layer_invert(KEYPAD_ON_BEPO);
- break;
- default:
- break;
- }
- reset_tap_dance(state);
-}
-
-void tap_dance_default_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
- switch(state->count){
- case 1:
- switch_default_layer(DVORAK);
- break;
- case 2:
- switch_default_layer(DVORAK_ON_BEPO);
- break;
- case 3:
- switch_default_layer(BEPO);
- break;
- default:
- break;
- }
- reset_tap_dance(state);
-}
-
-// switch the default layer to another qwerty based layer.
-void switch_default_layer_on_qwerty(int count) {
- switch(count){
- case 1:
- switch_default_layer(DVORAK);
- break;
- case 2:
- switch_default_layer(QWERTY);
- break;
- case 3:
- switch_default_layer(COLEMAK);
- break;
- case 4:
- switch_default_layer(WORKMAN);
- break;
- case 5:
- switch_default_layer(NORMAN);
- break;
- default:
- switch_default_layer(DVORAK);
- break;
- }
-}
-
-// switch the default layer to another bepo based layer.
-void switch_default_layer_on_bepo(int count) {
- switch(count){
- case 1:
- switch_default_layer(DVORAK_ON_BEPO);
- break;
- case 2:
- switch_default_layer(BEPO);
- break;
- default:
- switch_default_layer(DVORAK_ON_BEPO);
- break;
- }
-}
-
-
-// tap to change the default layer. Distinguishes between layers that are based on
-// a qwerty software keyboard and a bepo software keyboard.
-// if shifted, choose layers based on the other software keyboard, otherwise choose only
-// layers that work on the current software keyboard.
-void tap_dance_default_os_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
- //uint8_t shifted = (get_mods() & MOD_BIT(KC_LSFT|KC_RSFT));
- bool shifted = ( keyboard_report->mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
- int qwerty = on_qwerty();
-
-
- // shifted, choose between layers on the other software keyboard
- if(shifted){
- if (qwerty)
- switch_default_layer_on_bepo(state->count);
- else
- switch_default_layer_on_qwerty(state->count);
-
- // not shifted, choose between layers on the same software keyboard
- } else {
- if (qwerty)
- switch_default_layer_on_qwerty(state->count);
- else
- switch_default_layer_on_bepo(state->count);
- }
-
- reset_tap_dance(state);
-}
-
-
-/* Return an integer that corresponds to what kind of tap dance should be executed.
- *
- * How to figure out tap dance state: interrupted and pressed.
- *
- * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
- * under the tapping term. This is typically indicitive that you are trying to "tap" the key.
- *
- * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
- * has ended, but the key is still being pressed down. This generally means the key is being "held".
- *
- * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
- * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
- * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
- *
- * Good places to put an advanced tap dance:
- * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
- *
- * Criteria for "good placement" of a tap dance key:
- * Not a key that is hit frequently in a sentence
- * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
- * in a web form. So 'tab' would be a poor choice for a tap dance.
- * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
- * letter 'p', the word 'pepper' would be quite frustating to type.
- *
- * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
- *
- */
-int cur_dance (qk_tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted || !state->pressed) return SINGLE_TAP;
- //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
- else return SINGLE_HOLD;
- }
- else if (state->count == 2) {
- /*
- * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
- * action when hitting 'pp'. Suggested use case for this return value is when you want to send two
- * keystrokes of the key, and not the 'double tap' action/macro.
- */
- if (state->interrupted) return DOUBLE_SINGLE_TAP;
- else if (state->pressed) return DOUBLE_HOLD;
- else return DOUBLE_TAP;
- }
- //Assumes no one is trying to type the same letter three times (at least not quickly).
- //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
- //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
- if (state->count == 3) {
- if (state->interrupted || !state->pressed) return TRIPLE_TAP;
- else return TRIPLE_HOLD;
- }
- else return 8; //magic number. At some point this method will expand to work for more presses
-}
-//instanalize an instance of 'tap' for the 'x' tap dance.
-static tdtap xtap_state = {
- .is_press_action = true,
- .state = 0
-};
-/*
- This so I can have a single key that acts like LGUI in DVORAK no
- matter which keymap is my current default.
- It also allows for the
- shift gui and ctl gui, on the same key, So the same key is Escape,
- and the mostcommon modifiers in my xmonad control keymap, while also
- insuring that dvorak is active for the xmonad command key
- Single tap = ESC
- tap and hold = dvorak with L_GUI
- double tap = One shot dvorak layer with LSFT LGUI mods
- double hold = dvorak with LCTL LGUI
- double single tap = esc.
-*/
-int get_xmonad_layer(){
- int qwerty = on_qwerty();
-
- if (qwerty)
- return(XMONAD);
- else
- return(XMONAD_FR);
-}
-
-
-void x_finished (qk_tap_dance_state_t *state, void *user_data) {
- int xmonad_layer = get_xmonad_layer();
- xtap_state.state = cur_dance(state);
- switch (xtap_state.state) {
- case SINGLE_TAP:
- register_code(KC_ESC);
- break;
- case SINGLE_HOLD:
- layer_on(xmonad_layer);
- set_oneshot_mods (MOD_LGUI);
- //set_oneshot_layer (DVORAK, ONESHOT_START);
- break;
- case DOUBLE_TAP:
- set_oneshot_mods ((MOD_LCTL | MOD_LGUI));
- layer_on (xmonad_layer);
- set_oneshot_layer (xmonad_layer, ONESHOT_START);
- break;
- case DOUBLE_HOLD:
- set_oneshot_mods (MOD_LSFT | MOD_LGUI);
- if (xmonad_layer != -1)
- layer_on(xmonad_layer);
- break;
- case DOUBLE_SINGLE_TAP:
- register_code(KC_ESC);
- unregister_code(KC_ESC);
- register_code(KC_ESC);
- //Last case is for fast typing. Assuming your key is `f`:
- //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
- //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
- }
-}
-
-void x_reset (qk_tap_dance_state_t *state, void *user_data) {
- int xmonad_layer = get_xmonad_layer();
- switch (xtap_state.state) {
- case SINGLE_TAP:
- unregister_code(KC_ESC);
- break;
- case SINGLE_HOLD:
- layer_off(xmonad_layer);
- break;
- case DOUBLE_TAP:
- set_oneshot_layer (xmonad_layer, ONESHOT_PRESSED);
- break;
- case DOUBLE_HOLD:
- layer_off(xmonad_layer);
- break;
- case DOUBLE_SINGLE_TAP:
- unregister_code(KC_ESC);
- }
- xtap_state.state = 0;
-}
-
-//Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
- //Tap once for Esc, twice for Caps Lock
- [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
- [TD_TAB_BKTAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, LSFT(KC_TAB)),
- [TD_MDIA_SYMB] = ACTION_TAP_DANCE_FN(tap_dance_layer_switch),
- [TD_DVORAK_BEPO] = ACTION_TAP_DANCE_FN(tap_dance_df_bepo_layers_switch),
- [TD_DEF_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_layer_switch),
- [TD_DEF_OS_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_os_layer_switch),
- [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
- [TD_XMONAD_ESC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset),
- [TD_MOUSE_BTNS] = ACTION_TAP_DANCE_FN(tap_dance_mouse_btns)
-};
diff --git a/users/ericgebhart/ericgebhart.h b/users/ericgebhart/ericgebhart.h
index ad66a636ea..92f8f22d29 100644..100755
--- a/users/ericgebhart/ericgebhart.h
+++ b/users/ericgebhart/ericgebhart.h
@@ -1,32 +1,72 @@
#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
#ifndef ericgebhart
#define ericgebhart
#include QMK_KEYBOARD_H
-#include "base_layers.h"
+#include "core_keysets.h"
+#include "layouts.h"
+#include "layers.h"
+#if defined(OLED_ENABLE)
+# include "oled_stuff.h"
+#endif
//#define ONESHOT_TAP_TOGGLE 2 /* Tapping this number of times holds the key until tapped once again. */
+/* Define layer names */
+enum userspace_layers {
+ _DVORAK = 0,
+ _QWERTY,
+ _COLEMAK,
+ _BEAKL,
+ //_WORKMAN,
+ //_NORMAN,
+ //_MALTRON,
+ //_EUCALYN,
+ //_CARPLAX,
+ _DVORAK_BP, // beginning of Bepo
+ _BEAKL_BP,
+ _BEPO,
+ _LAYERS,
+ _NAV, // transient layers
+ _SYMB,
+ _SYMB_BP,
+ _KEYPAD,
+ _KEYPAD_BP,
+ _TOPROWS,
+ _TOPROWS_BP,
+ _RGB,
+ _ADJUST,
+};
-#define DVORAK 0 // dvorak layout (default)
-#define QWERTY 1
-#define COLEMAK 2
-#define WORKMAN 3
-#define NORMAN 4
-// bepo layers
-#define DVORAK_ON_BEPO 6 // dvorak layout (default)
-#define BEPO 7 // Bepo
-// non-default layers
-#define SYMB 8 // symbols and numbers
-#define SYMB_ON_BEPO 9 // symbols and numbers
-#define MDIA 10 // mouse knd media eys
-#define LAYERS 11 // layers and right mousekeys.
-#define XMONAD 12 // xmonad ie. dvorak.
-#define XMONAD_FR 13 // xmonad ie. dvorak.
-#define KEYPAD 14 // number and Fkey pads
-#define KEYPAD_ON_BEPO 15 // number and Fkey pads.
-#define _RGB 16 // RGB stuff.
-
+// clang-format off
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_layer_change :1;
+ bool is_overwatch :1;
+ bool nuke_switch :1;
+ bool swapped_numbers :1;
+ bool rgb_matrix_idle_anim :1;
+ };
+} userspace_config_t;
+// clang-format on
+extern userspace_config_t userspace_config;
#endif
diff --git a/users/ericgebhart/layers.h b/users/ericgebhart/layers.h
new file mode 100755
index 0000000000..5faaf01736
--- /dev/null
+++ b/users/ericgebhart/layers.h
@@ -0,0 +1,677 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "core_keys.h"
+/*********************************************************************/
+/* Non-Base Layer Definitions. */
+/* */
+/* Keypads, sympads, funcpads, symbols, RGB, Layers, Controls, etc. */
+/* Qwerty and Bepo versions exist as needed. */
+/* */
+/* This file defines every auxillary layer I use on every keyboard */
+/* Ergodox, keebio/viterbi, xd75, rebound, crkbd, morpho, dactyl,.. */
+/*********************************************************************/
+/********************************************************************************/
+/* The following Transient/Non-Base Layers are provided within. */
+/* Each layer is named with the size of Keymatrix it has entries for. */
+/* 3x12 or 4x12 are usual for these. Splitting is managed in the macros as */
+/* needed. BP indicates the Bepo equivalent to the Qwerty layer when needed. */
+/********************************************************************************/
+/* */
+/* Explore below to see what they all are. */
+/* Naming gives the sizes of things, a prefix number is the length. */
+/* BP is the bepo version of things. */
+/* BKL is the beakl 15 version of a layout or chunk. */
+/* C on the end of a name means its a compact version of something. */
+/* Compact meaning for use on a 3 row layout. */
+/* */
+/* TOPROWS - numbers, symbols, functions, all on one layer. */
+/* ___TOPROWS_3x12___ */
+/* ___TOPROWS_BP_3x12___ */
+/* // just numbers on the home row */
+/* ___NUM_HOME_BEAKL_3x12___ */
+/* ___NUM_HOME_BEAKL_BP_3x12___ */
+/* ___NUM_HOME_3x12___ */
+/* ___NUM_HOME_BP_3x12___ */
+/* */
+/* KEYPADS/FUNCPADS. */
+/* ___KEY_BKL_FUNC_4x12___ -- The BEAKL15 Keypad with a Funcpad on the right */
+/* ___KEY_BKL_FUNC_BP_4x12___ */
+/* ___FUNC_KEYPAD_4x12___ -- A Funcpad and a keypad */
+/* ___FUNC_KEYPAD_BP_4x12___ -- For Bepo */
+/* */
+/* // Compact Funcpad and keypad, 3x12 */
+/* ___KP_C_3x12___ */
+/* ___KP_C_BP_3x12___ */
+/* ___KP_C_BKL_FUNC_3x12___ -- BEAKL key/func pads. */
+/* ___KP_C_BKL_FUNC_BP_3x12___ */
+/* */
+/* SYMBOLS -Beakl or Beakl extended */
+/* ___SYMB_BEAKL_3x12___ */
+/* ___SYMB_BEAKL_BP_3x12___ */
+/* */
+/* Beakl extended symbol layer with additional corner symbols. */
+/* For use with non-beakl base layers. */
+/* ___SYMB_BEAKLA_3x12___ */
+/* ___SYMB_BEAKLA_BP_3x12___ */
+/* For use with vi bindings optimized */
+/* ___SYMB_BEAKLB_3x12___ */
+/* ___SYMB_BEAKLB_BP_3x12___ */
+/* */
+/* NAVIGATION */
+/* ___NAV_3x12___ */
+/* ___NAV_4x12___ */
+/* */
+/* CONTROLS */
+/* ___RGB_3x12___ */
+/* ___ADJUST_3x12___ */
+/* ___LAYERS_3x12___ */
+/********************************************************************************/
+/*********************************************************************/
+/* XXXXXX Layer chunk -- These are the final layers. */
+/* */
+/* Each section defines the necessary pieces to create a layer. */
+/* It builds them up into consistently shaped lists for the layout */
+/* wrapper. */
+/* */
+/* Each Section ends with a _Layer Chunk_. This is so the */
+/* layer can be easily given to the Layout Wrapper macros which */
+/* takes a list of keys in lengths of 2x3x5, 2x3x6, 2x4x5, or 2x4x6. */
+/* */
+/* All of my keyboard definitions use these same chunks with similar */
+/* macros. The differences between keyboards are all managed in the */
+/* macro. Here we just have nice rectangular sets of keys to */
+/* complete a layout. */
+/*********************************************************************/
+
+
+/*******************************************************************/
+/* A Top Rows layer. Pick your parts. Bepo and Qwerty */
+/* */
+/* This is, to me, a stop gap layer. If I need symbols, numbers or */
+/* function keys these rows are nicely predictable to most people. */
+/* I currently use the beakl number row with regular symbols. */
+/* I never use function keys for anything. */
+/*******************************************************************/
+#define ___12_SYMB___ ___, ___SYMS___, ___
+#define ___12_SYMB_BP___ ___12_SYMS_BEPO___,
+
+#define ___12_NUM___ ___, ___NUMS___, ___
+#define ___12_NUM_BP___ ___, ___NUMS_BP___, ___
+#define ___12_NUM_BEAKL___ ___, ___BKLNUMS___, ___
+#define ___12_NUM_BEAKL_BP___ ___, ___BKLNUMS_BP___, ___
+
+#define ___12_FUNC___ ___FUNC_1_6___, ___FUNC_7_12___
+#define ___12_SYMS_BEPO___ ___6SYMBOL_BEPO_L___, ___6SYMBOL_BEPO_R___
+#define ___12_SYMS_FR___ ___SYMB_L_FR___, ___SYMB_R_FR___
+
+// Kinesis function key row. I don't use them. but might as well define them.
+#define ___KINTFUNC_L___ KC_ESC, ___FUNC_1_6___, KC_F7, KC_F8
+// #define ___KINTFUNC_RIGHT___ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, RESET
+#define ___KINTFUNC_R___ KC_F9, KC_F10, KC_F11, KC_F12, XXX, XXX, XXX, XXX, RESET
+
+// A TOPROWS Layer.
+// set it how you like it, if you like it.
+#define ___TOPROW_1___ ___12_SYMB___
+#define ___TOPROW_2___ ___12_NUM_BEAKL___
+#define ___TOPROW_3___ ___12_FUNC___
+
+#define ___TOPROW_1_BP___ ___12_SYMS_BEPO___
+#define ___TOPROW_2_BP___ ___12_NUM_BEAKL_BP___
+#define ___TOPROW_3_BP___ ___12_FUNC___
+
+/********************************************************************************/
+/* TOPROWS Layer chunk */
+/********************************************************************************/
+// altogether in a chunk.
+#define ___TOPROWS_3x12___ ___TOPROW_1___, ___TOPROW_2___, ___TOPROW_3___
+#define ___TOPROWS_BP_3x12___ ___TOPROW_1_BP___, ___TOPROW_2_BP___, ___TOPROW_3_BP___
+
+// Some layers with just a home row of numbers.
+// The beakl ones, r the usual ones.
+#define ___NUM_HOME_BEAKL_3x12___ ___12___, ___12_NUM_BEAKL___, ___12___
+#define ___NUM_HOME_BEAKL_BP_3x12___ ___12___, ___12_NUM_BEAKL_BP___, ___12___
+#define ___NUM_HOME_3x12___ ___12___, ___12_NUM___, ___12___
+#define ___NUM_HOME_BP_3x12___ ___12___, ___12_NUM_BP___, ___12___
+
+
+/********************************************************************************/
+/* KEYPADS. Mostly all in Bepo and Qwerty versions */
+/* 4 row Pads: */
+/* * The BEAKL 15 Number pad, for the left hand. */
+/* * Regular Number pad, for the right hand. */
+/* * 12 Function pad. */
+/* 3 row pads: */
+/* keypad */
+/* function pad */
+/* */
+/* LAYERS: */
+/* 4 Row: */
+/* * BEAKL with a compact FuncPad on the right. */
+/* * Funcpad on the left, keypad on the right. */
+/* 3 Row: */
+/* * Funcpad on the left, keypad on the right. */
+/* * BEAKL with a compact FuncPad on the right. */
+/* */
+/********************************************************************************/
+
+// BEAKL 15 (numpad layer):
+/* +=* ^%~ */
+/* ↹523: */
+/* - 7.104 */
+/* /698, */
+
+// Keypads
+#define ___6KEYPAD_BEAKL_L1___ ___, _X_, KC_PLUS, KC_PEQL, KC_ASTR, _X_
+#define ___6KEYPAD_BEAKL_L2___ ___, TAB_BKTAB, KC_5, KC_2, KC_3, KC_COLON
+#define ___6KEYPAD_BEAKL_L3___ KC_MINS, KC_7, KC_DOT, KC_1, KC_0, KC_4
+#define ___6KEYPAD_BEAKL_L4___ ___, KC_SLASH, KC_6, KC_9, KC_8, KC_COMM
+
+#define ___5KEYPAD_BEAKL_R1___ ___, KC_CIRC, KC_PERC, KC_TILD, ___
+
+#define ___6KEYPAD_BEAKL_L1_BP___ ___, _X_, BP_PLUS, BP_EQL, BP_ASTR, _X_
+#define ___6KEYPAD_BEAKL_L2_BP___ ___, TAB_BKTAB, BP_5, BP_2, BP_3, BP_COLN
+#define ___6KEYPAD_BEAKL_L3_BP___ BP_MINS, BP_7, BP_DOT, BP_1, BP_0, BP_4
+#define ___6KEYPAD_BEAKL_L4_BP___ ___, BP_SLSH, BP_6, BP_9, BP_8, BP_COMM
+
+#define ___5KEYPAD_BEAKL_R1_BP___ ___, BP_CIRC, BP_PERC, BP_TILD, ___
+
+#define ___5KEYPAD_1___ _X_, KC_7, KC_8, KC_9, KC_PSLS
+#define ___5KEYPAD_2___ _X_, KC_4, KC_5, KC_6, KC_PAST
+#define ___5KEYPAD_3___ _X_, KC_1, KC_2, KC_3, KC_PMNS
+#define ___5KEYPAD_4___ _X_, KC_0, KC_DOT, KC_PEQL, KC_PPLS
+// For Bepo
+#define ___5KEYPAD_1_BP___ _X_, DB_7, DB_8, DB_9, BP_SLSH
+#define ___5KEYPAD_2_BP___ _X_, DB_4, DB_5, DB_6, BP_ASTR
+#define ___5KEYPAD_3_BP___ _X_, DB_1, DB_2, DB_3, DB_MINUS
+#define ___5KEYPAD_4_BP___ _X_, DB_0, DB_DOT, DB_EQL, BP_PLUS
+
+// Keypad from the default keymap.c of the xd75
+#define ___4KEYPAD_1_ALT___ _X_, KC_P7, KC_P8, KC_P9, KC_MINS
+#define ___4KEYPAD_2_ALT___ _X_, KC_P4, KC_P5, KC_P6, KC_PLUS
+#define ___4KEYPAD_3_ALT___ _X_, KC_P1, KC_P2, KC_P3, KC_PENT
+#define ___4KEYPAD_4_ALT___ _X_, KC_P0, KC_DOT, KC_PENT, KC_PENT
+
+// Function pad. Same idea as above, but for function keys.
+// For the left side.
+#define ___5FUNCPAD_T___ _X_, KC_F10, KC_F11, KC_F12, _X_
+#define ___5FUNCPAD_1___ _X_, KC_F7, KC_F8, KC_F9, _X_
+#define ___5FUNCPAD_2___ _X_, KC_F4, KC_F5, KC_F6, _X_
+#define ___5FUNCPAD_3___ _X_, KC_F1, KC_F2, KC_F3, _X_
+
+
+// Put them together for complete left and right layers.
+// Beakl keypad with a funcpad
+#define ___12_KEYPAD_BKL_FUNCPAD_1___ ___6KEYPAD_BEAKL_L1___, _X_, ___5KEYPAD_BEAKL_R1___
+#define ___12_KEYPAD_BKL_FUNCPAD_2___ ___6KEYPAD_BEAKL_L2___, _X_, ___5_FUNCPADC_1___
+#define ___12_KEYPAD_BKL_FUNCPAD_3___ ___6KEYPAD_BEAKL_L3___, _X_, ___5_FUNCPADC_2___
+#define ___12_KEYPAD_BKL_FUNCPAD_4___ ___6KEYPAD_BEAKL_L4___, _X_, ___5_FUNCPADC_3___
+
+#define ___12_KEYPAD_BKL_FUNCPAD_1_BP___ ___6KEYPAD_BEAKL_L1_BP___, _X_, ___5KEYPAD_BEAKL_R1_BP___
+#define ___12_KEYPAD_BKL_FUNCPAD_2_BP___ ___6KEYPAD_BEAKL_L2_BP___, _X_, ___5_FUNCPADC_1___
+#define ___12_KEYPAD_BKL_FUNCPAD_3_BP___ ___6KEYPAD_BEAKL_L3_BP___, _X_, ___5_FUNCPADC_2___
+#define ___12_KEYPAD_BKL_FUNCPAD_4_BP___ ___6KEYPAD_BEAKL_L4_BP___, _X_, ___5_FUNCPADC_3___
+
+// Funcpad and keypad layer for Qwerty based layers.
+#define ___12_FUNCPAD_KEYPAD_1___ ___, ___5FUNCPAD_T___, ___5KEYPAD_1___, ___
+#define ___12_FUNCPAD_KEYPAD_2___ ___, ___5FUNCPAD_1___, ___5KEYPAD_2___, ___
+#define ___12_FUNCPAD_KEYPAD_3___ ___, ___5FUNCPAD_2___, ___5KEYPAD_3___, KC_PENT
+#define ___12_FUNCPAD_KEYPAD_4___ ___, ___5FUNCPAD_3___, ___5KEYPAD_4___, ___
+
+// Funcpad and keypad layer for BEPO
+#define ___12_FUNCPAD_KEYPAD_BP_1___ ___, ___5FUNCPAD_T_BP___, ___5KEYPAD_1_BP___, ___
+#define ___12_FUNCPAD_KEYPAD_BP_2___ ___, ___5FUNCPAD_1_BP___, ___5KEYPAD_2_BP___, ___
+#define ___12_FUNCPAD_KEYPAD_BP_3___ ___, ___5FUNCPAD_2_BP___, ___5KEYPAD_3_BP___, KC_PENT
+#define ___12_FUNCPAD_KEYPAD_BP_4___ ___, ___5FUNCPAD_3_BP___, ___5KEYPAD_4_BP___, ___
+
+/********************************************************************************/
+/* COMPACT - KEYPAD and FUNCPAD. 3 Rows. */
+/********************************************************************************/
+// Compact versions of each. 3 rows.
+//Compact keypad, 3 rows.
+#define ___6KEYPADC_1___ ___, KC_7, KC_8, KC_9, KC_PSLS, ___
+#define ___6KEYPADC_2___ KC_DOT, KC_4, KC_5, KC_6, KC_PAST, KC_PEQL
+#define ___6KEYPADC_3___ KC_0, KC_1, KC_2, KC_3, KC_PMNS, KC_PPLS
+// For Bepo
+#define ___6KEYPADC_1_BP___ ___, DB_7, DB_8, DB_9, BP_SLSH
+#define ___6KEYPADC_2_BP___ DB_DOT, DB_4, DB_5, DB_6, BP_ASTR, DB_EQL
+#define ___6KEYPADC_3_BP___ DB_0, DB_1, DB_2, DB_3, DB_MINUS, DB_PLUS
+
+// compact 1-12 funcpad for 3 row keyboards.
+#define ___5_FUNCPADC_1___ KC_F9, KC_F10, KC_F11, KC_F12, ___
+#define ___5_FUNCPADC_2___ KC_F5, KC_F6, KC_F7, KC_F8, ___
+#define ___5_FUNCPADC_3___ KC_F1, KC_F2, KC_F3, KC_F4, ___
+
+// Compact funcpads/keypad Layer
+#define ___12_KP_1C___ ___, ___5_FUNCPADC_1___, ___5KEYPAD_1___, ___
+#define ___12_KP_2C___ ___, ___5_FUNCPADC_2___, ___5KEYPAD_2___, ___
+#define ___12_KP_3C___ ___, ___5_FUNCPADC_3___, ___5KEYPAD_3___, ___
+// Reversed
+#define ___12_KP_FP_1C___ ___, ___5KEYPAD_1___, ___5_FUNCPADC_1___, ___
+#define ___12_KP_FP_2C___ ___, ___5KEYPAD_2___, ___5_FUNCPADC_2___, ___
+#define ___12_KP_FP_3C___ ___, ___5KEYPAD_3___, ___5_FUNCPADC_3___, ___
+
+//Bepo funcpad and keypad Layer
+#define ___12_KP_1_BP___ ___, ___5_FUNCPADC_1___, ___5KEYPAD_1_BP___, ___
+#define ___12_KP_2_BP___ ___, ___5_FUNCPADC_2___, ___5KEYPAD_2_BP___, ___
+#define ___12_KP_3_BP___ ___, ___5_FUNCPADC_3___, ___5KEYPAD_3_BP___, ___
+
+/********************************************************************************/
+/* FUNCPAD and Keypad Layer chunks */
+/********************************************************************************/
+// Full size, 4x12
+#define ___KEYPAD_BKL_FUNC_4x12___ \
+ ___12_KEYPAD_BKL_FUNCPAD_1___, \
+ ___12_KEYPAD_BKL_FUNCPAD_2___, \
+ ___12_KEYPAD_BKL_FUNCPAD_3___, \
+ ___12_KEYPAD_BKL_FUNCPAD_4___
+#define ___KEYPAD_BKL_FUNC_BP_4x12___ \
+ ___12_KEYPAD_BKL_FUNCPAD_1_BP___, \
+ ___12_KEYPAD_BKL_FUNCPAD_2_BP___, \
+ ___12_KEYPAD_BKL_FUNCPAD_3_BP___, \
+ ___12_KEYPAD_BKL_FUNCPAD_4_BP___
+#define ___FUNC_KEYPAD_4x12___ \
+ ___12_FUNCPAD_KEYPAD_1___, \
+ ___12_FUNCPAD_KEYPAD_2___, \
+ ___12_FUNCPAD_KEYPAD_3___, \
+ ___12_FUNCPAD_KEYPAD_4___
+#define ___FUNC_KEYPAD_BP_4x12___ \
+ ___12_FUNCPAD_KEYPAD_BP_1___, \
+ ___12_FUNCPAD_KEYPAD_BP_2___, \
+ ___12_FUNCPAD_KEYPAD_BP_3___, \
+ ___12_FUNCPAD_KEYPAD_BP_4___
+
+// Compact, 3x12
+#define ___KP_C_BKL_FUNC_3x12___ \
+ ___12_KEYPAD_BKL_FUNCPAD_2___, \
+ ___12_KEYPAD_BKL_FUNCPAD_3___, \
+ ___12_KEYPAD_BKL_FUNCPAD_4___
+#define ___KP_C_BKL_FUNC_BP_3x12___ \
+ ___12_KEYPAD_BKL_FUNCPAD_2_BP___, \
+ ___12_KEYPAD_BKL_FUNCPAD_3_BP___, \
+ ___12_KEYPAD_BKL_FUNCPAD_4_BP___
+
+#define ___KP_C_3x12___ ___12_KP_1C___, ___12_KP_2C___, ___12_KP_3C___
+#define ___KP_FP_C_3x12___ ___12_KP_FP_1C___, ___12_KP_FP_2C___, ___12_KP_FP_3C___
+#define ___KP_C_BP_3x12___ ___12_KP_1_BP___, ___12_KP_2_BP___, ___12_KP_3_BP___
+
+
+
+/********************************************************************************/
+/* SYMBOLS. The BEAKL15 Symbol layer with or without additions. */
+/* */
+/* Symbol layers: */
+/* */
+/* BEAKL symbol layer */
+/* <$> [_] */
+/* - \(")# %{=}| ; */
+/* :*+ &^~ */
+/* */
+/* BEAKL Extended symbol layer */
+/* `<$>' ?[_] */
+/* - \(")# %{=}| ; */
+/* @:*+; !&^~/ */
+/* */
+/* This layer has replaced my former Symbol pad and Symbols */
+/* layer. The Sympad was nice, But this incorporates the matching */
+/* (){}[] that I had and at the same time provides an easily */
+/* Learnable layer that makes sense. It was also easy to */
+/* Supplement with new keys that other layouts might need. */
+/* */
+/* The first Layer defined is the "Official" version. */
+/* The second Layer defined only adds to the original by */
+/* Placing 8 keys in the pinky and index corners */
+/* at the edges of the, 3x3, BEAKL home Region. */
+/* */
+/* Namely these: !?@`'/-; */
+/* */
+/* Beakl has these keys in it's base layer which isn't the case */
+/* for other layouts like dvorak, colemak, etc. */
+/* */
+/******************************************************************/
+
+/******************************************************************/
+/* Official BEAKL15 Symbol layer. */
+/* BEAKL 15 (punctuation layer): */
+/* */
+/* <$> [_] */
+/* - \(")# %{=}| ; */
+/* :*+ &^~ */
+/******************************************************************/
+/********************************************************************************/
+/* The expanded Beakl Symbol Layer */
+/* */
+/* Expanded with: !?@`'/-; */
+/* */
+/* This insures access to all common symbols, regardless of availabilily on */
+/* other layers. All the extra characters are added to the pinky and index */
+/* corners which are empty in the BEAKL symbol layer. */
+/* */
+/* Both ; and ' could find their dvorak positions. */
+/* Analysis showed that only caused pinky overuse. Rotating the symbols around */
+/* Put better keys on the index finger which showed a huge improvement */
+/* in efficiency. The same is true of the exclamation point. */
+/* */
+/* A: */
+/* `<$>' ?[_] */
+/* - \(")# %{=}| ; */
+/* @:*+; !&^~/ */
+/* */
+/* B: */
+/* With vi bindings /:? and a leader key for vi/emacs.*/
+/* ; is popular, I use , it's easy in dvorak.: */
+/* */
+/* `<$>' ?[_]- */
+/* - \(")# !{:}/ ; */
+/* @=*+; %&^~| */
+/********************************************************************************/
+// Left
+#define ___SB_L1___ KC_OCLTGT, KC_DLR, KC_GT
+#define ___SB_L2___ KC_BACKSLASH, KC_OCPRN, KC_OCDQUO, KC_RPRN, KC_HASH
+#define ___SB_L3___ KC_COLON, KC_ASTR, KC_PLUS
+#define ___SB_L3b___ KC_EQL, KC_ASTR, KC_PLUS
+
+// Bepo
+#define ___SB_L1_BP___ BP_OCLTGT, BP_DLR, DB_GRTR
+#define ___SB_L2_BP___ DB_BACKSLASH, DB_LPRN, BP_OCDQUO, DB_RPRN, DB_HASH
+#define ___SB_L3_BP___ KC_COLON, BP_ASTR, BP_PLUS
+#define ___SB_L3b_BP___ BP_EQL, BP_ASTR, BP_PLUS
+
+// Right
+#define ___SB_R1___ KC_OCBRC, KC_UNDS, KC_RBRC
+#define ___SB_R2___ KC_PERC, KC_OCCBR, KC_EQL, KC_RCBR, KC_PIPE
+#define ___SB_R3___ KC_AMPR, KC_CIRC, KC_TILD
+
+#define ___SB_R2a___ KC_PERC, KC_OCCBR, KC_EXLM, KC_RCBR, KC_PIPE
+#define ___SB_R2b___ KC_EXLM, KC_OCCBR, KC_COLN, KC_RCBR, KC_SLASH
+
+// Bepo
+#define ___SB_R1_BP___ BP_OCBRC, BP_UNDS, DB_RBRC
+#define ___SB_R2_BP___ BP_PERC, BP_OCCBR, BP_EQL, DB_RCBR, DB_PIPE
+#define ___SB_R3_BP___ BP_AMPR, DB_CIRC, DB_TILD
+
+#define ___SB_R2a_BP___ BP_PERC, BP_OCCBR, BP_EXLM, DB_RCBR, DB_PIPE
+#define ___SB_R2b_BP___ BP_EXLM, BP_OCCBR, KC_COLON, DB_RCBR, DB_SLASH
+
+// ---------------------------
+// ---------------------------
+
+// Square it to 6, Add in the - and ;.
+#define ___6SYMBOLS_BEAKL_L1___ ___, ___, ___SB_L1___, ___
+#define ___6SYMBOLS_BEAKL_L2___ KC_MINS, ___SB_L2___
+#define ___6SYMBOLS_BEAKL_L3___ ___, ___, ___SB_L3___, ___
+
+#define ___6SYMBOLS_BEAKL_R1___ ___, ___SB_R1___, ___, ___
+#define ___6SYMBOLS_BEAKL_R2___ ___SB_R2___, KC_SCLN
+#define ___6SYMBOLS_BEAKL_R3___ ___, ___SB_R3___, ___, ___
+// ---------------------------
+#define ___6SYMBOLS_BEAKL_L1a___ ___, KC_OCGRV, ___SB_L1___, KC_OCQUOT
+#define ___6SYMBOLS_BEAKL_L2a___ ___6SYMBOLS_BEAKL_L2___
+#define ___6SYMBOLS_BEAKL_L3a___ ___, KC_AT, ___SB_L3___, KC_SCLN
+
+#define ___6SYMBOLS_BEAKL_R1a___ LSFT(KC_SLASH), ___SB_R1___, KC_MINS, ___
+#define ___6SYMBOLS_BEAKL_R2a___ ___SB_R2a___, KC_SCLN
+#define ___6SYMBOLS_BEAKL_R3a___ KC_EXLM, ___SB_R3___, KC_SLASH, ___
+// ---------------------------
+#define ___6SYMBOLS_BEAKL_L1b___ ___, KC_OCGRV, ___SB_L1___, KC_OCQUOT
+#define ___6SYMBOLS_BEAKL_L2b___ ___6SYMBOLS_BEAKL_L2___
+#define ___6SYMBOLS_BEAKL_L3b___ ___, KC_AT, ___SB_L3b___, KC_SCLN
+
+#define ___6SYMBOLS_BEAKL_R1b___ ___6SYMBOLS_BEAKL_R1a___
+#define ___6SYMBOLS_BEAKL_R2b___ ___SB_R2b___, KC_SCLN
+#define ___6SYMBOLS_BEAKL_R3b___ KC_PERC, ___SB_R3___, KC_PIPE, ___
+
+// ---------------------------
+// ---------------------------
+// Bepo
+#define ___6SYMBOLS_BEAKL_L1_BP___ ___, ___, ___SB_L1_BP___, ___
+#define ___6SYMBOLS_BEAKL_L2_BP___ BP_MINS, ___SB_L2_BP___
+#define ___6SYMBOLS_BEAKL_L3_BP___ ___, ___, ___SB_L3_BP___, ___
+
+#define ___6SYMBOLS_BEAKL_R1_BP___ ___, ___SB_R1_BP___, ___, ___
+#define ___6SYMBOLS_BEAKL_R2_BP___ ___SB_R2_BP___, BP_SCLN
+#define ___6SYMBOLS_BEAKL_R3_BP___ ___, ___SB_R3_BP___, ___, ___
+// ---------------------------
+#define ___6SYMBOLS_BEAKL_L1a_BP___ ___, BP_GRV, ___SB_L1_BP___, BP_AT
+#define ___6SYMBOLS_BEAKL_L2a_BP___ ___6SYMBOLS_BEAKL_L2_BP___
+#define ___6SYMBOLS_BEAKL_L3a_BP___ ___, BP_AT, ___SB_L3_BP___, BP_SCLN
+
+#define ___6SYMBOLS_BEAKL_R1a_BP___ BP_QUES, ___SB_R1_BP___, BP_MINS, ___
+#define ___6SYMBOLS_BEAKL_R2a_BP___ ___SB_R2a_BP___, BP_SCLN
+#define ___6SYMBOLS_BEAKL_R3a_BP___ BP_EXLM, ___SB_R3_BP___, BP_SLSH, ___
+// ---------------------------
+#define ___6SYMBOLS_BEAKL_L1b_BP___ ___, BP_GRV, ___SB_L1___, BP_OCQUOT
+#define ___6SYMBOLS_BEAKL_L2b_BP___ ___6SYMBOLS_BEAKL_L2_BP___
+#define ___6SYMBOLS_BEAKL_L3b_BP___ ___, BP_AT, ___SB_L3b_BP___, BP_SCLN
+
+#define ___6SYMBOLS_BEAKL_R1b_BP___ ___, ___SB_R1_BP___, BP_MINS, ___
+#define ___6SYMBOLS_BEAKL_R2b_BP___ ___SB_R2b_BP___, BP_SCLN
+#define ___6SYMBOLS_BEAKL_R3b_BP___ BP_PERC, ___SB_R3_BP___, BP_PIPE, ___
+// ---------------------------
+
+// Some 12 column rows.
+#define ___12_SYM_BKL_1_BP___ ___6SYMBOLS_BEAKL_L1_BP___, ___6SYMBOLS_BEAKL_R1_BP___
+#define ___12_SYM_BKL_2_BP___ ___6SYMBOLS_BEAKL_L2_BP___, ___6SYMBOLS_BEAKL_R2_BP___
+#define ___12_SYM_BKL_3_BP___ ___6SYMBOLS_BEAKL_L3_BP___, ___6SYMBOLS_BEAKL_R3_BP___
+
+#define ___12_SYM_BKL_1___ ___6SYMBOLS_BEAKL_L1___, ___6SYMBOLS_BEAKL_R1___
+#define ___12_SYM_BKL_2___ ___6SYMBOLS_BEAKL_L2___, ___6SYMBOLS_BEAKL_R2___
+#define ___12_SYM_BKL_3___ ___6SYMBOLS_BEAKL_L3___, ___6SYMBOLS_BEAKL_R3___
+
+// Some 12 column rows.
+#define ___12_SYM_BKL_A1_BP___ ___6SYMBOLS_BEAKL_L1a_BP___, ___6SYMBOLS_BEAKL_R1a_BP___
+#define ___12_SYM_BKL_A2_BP___ ___6SYMBOLS_BEAKL_L2a_BP___, ___6SYMBOLS_BEAKL_R2a_BP___
+#define ___12_SYM_BKL_A3_BP___ ___6SYMBOLS_BEAKL_L3a_BP___, ___6SYMBOLS_BEAKL_R3a_BP___
+
+#define ___12_SYM_BKL_A1___ ___6SYMBOLS_BEAKL_L1a___, ___6SYMBOLS_BEAKL_R1a___
+#define ___12_SYM_BKL_A2___ ___6SYMBOLS_BEAKL_L2a___, ___6SYMBOLS_BEAKL_R2a___
+#define ___12_SYM_BKL_A3___ ___6SYMBOLS_BEAKL_L3a___, ___6SYMBOLS_BEAKL_R3a___
+
+#define ___12_SYM_BKL_B1_BP___ ___6SYMBOLS_BEAKL_L1b_BP___, ___6SYMBOLS_BEAKL_R1b_BP___
+#define ___12_SYM_BKL_B2_BP___ ___6SYMBOLS_BEAKL_L2b_BP___, ___6SYMBOLS_BEAKL_R2b_BP___
+#define ___12_SYM_BKL_B3_BP___ ___6SYMBOLS_BEAKL_L3b_BP___, ___6SYMBOLS_BEAKL_R3b_BP___
+
+#define ___12_SYM_BKL_B1___ ___6SYMBOLS_BEAKL_L1b___, ___6SYMBOLS_BEAKL_R1b___
+#define ___12_SYM_BKL_B2___ ___6SYMBOLS_BEAKL_L2b___, ___6SYMBOLS_BEAKL_R2b___
+#define ___12_SYM_BKL_B3___ ___6SYMBOLS_BEAKL_L3b___, ___6SYMBOLS_BEAKL_R3b___
+
+/********************************************************************************/
+/* The BEAKL and BEAKL-A SYMBOL LAYER Chunks */
+/********************************************************************************/
+// The Official beakl symbol layer as a chunk, Bepo and Qwerty
+#define ___SYMB_BEAKL_BP_3x12___ ___12_SYM_BKL_1_BP___, \
+ ___12_SYM_BKL_2_BP___, \
+ ___12_SYM_BKL_3_BP___
+
+#define ___SYMB_BEAKL_3x12___ ___12_SYM_BKL_1___, \
+ ___12_SYM_BKL_2___, \
+ ___12_SYM_BKL_3___
+
+// Alternate Beakle symbol layer with additional corner symbols.
+#define ___SYMB_BEAKLA_BP_3x12___ ___12_SYM_BKL_A1_BP___, \
+ ___12_SYM_BKL_A2_BP___, \
+ ___12_SYM_BKL_A3_BP___
+
+#define ___SYMB_BEAKLA_3x12___ ___12_SYM_BKL_A1___, \
+ ___12_SYM_BKL_A2___, \
+ ___12_SYM_BKL_A3___
+
+#define ___SYMB_BEAKLB_BP_3x12___ ___12_SYM_BKL_B1_BP___, \
+ ___12_SYM_BKL_B2_BP___, \
+ ___12_SYM_BKL_B3_BP___
+
+#define ___SYMB_BEAKLB_3x12___ ___12_SYM_BKL_B1___, \
+ ___12_SYM_BKL_B2___, \
+ ___12_SYM_BKL_B3___
+
+/********************************************************************************/
+/* NAVIGATION - MOUSE, Scroll, Buttons, Arrows, Tab, Home, page up/down, End */
+/* Navigation layers: */
+/* 3 row Layer */
+/* 4 Row Layer with repeated and swapped VI arrows, and Scroll wheel. */
+/********************************************************************************/
+/* */
+/* Navigation layer with optional 4th Row.... */
+/* */
+/* M = Mouse */
+/* B = Button */
+/* W = Wheel */
+/* AC = Acceleration */
+/* CCCV = Tap -> Ctrl-C, hold for double tap duration -> Ctrl-V */
+/* CTCN = Tap -> Ctrl-T, hold for double tap duration -> Ctrl-N */
+/* CWCQ = Tap -> Ctrl-W, hold for double tap duration -> Ctrl-Q */
+/* TAB = Tap -> Tab, Double-tap -> Back Tab */
+/* HOME = Tap -> Home, Double-tap -> End */
+/* */
+/* MB5 MB4 MB3 MB2 MB1 MAC0 | CTCN MB1 MB2 MB3 MB4 MB5 */
+/* TAB MLeft MDown MUp MRight MAC1 | CCCV Left Down UP Right TAB */
+/* WLeft WDown WUp WRight MAC2 | CWCQ HOME PGDN PGUP END */
+/* */
+/* Left Down Up Right CCCV | CCCV MLeft MDown MUp MRight */
+/* */
+/********************************************************************************/
+
+#define ___MOUSE_LDUR___ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
+#define ___MWHEEL_LDUR___ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
+// really BTN 1, 2, 3, 8, 9 - according to xev.
+#define ___MOUSE_BTNS_R___ KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN5
+// really BTN 9, 8, 3, 2, 1 - according to xev
+#define ___MOUSE_BTNS_L___ KC_BTN5, KC_BTN4, KC_BTN2, KC_BTN3, KC_BTN1
+#define ___MOUSE_ACCL_012___ KC_ACL0, KC_ACL1, KC_ACL2
+#define ___MACCL___ ___MOUSE_ACCL_012___
+
+
+#define ___VI_ARROWS___ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
+#define ___HOME_PGDN_PGUP_END___ KC_HOME, KC_PGDN, KC_PGUP, KC_END
+
+#define ___6NAV_L_1___ ___MOUSE_BTNS_L___, KC_ACL0
+#define ___6NAV_L_2___ TAB_BKTAB, ___MOUSE_LDUR___, KC_ACL1
+#define ___6NAV_L_3___ ___, ___MWHEEL_LDUR___, KC_ACL2
+#define ___6NAV_L_4___ ___, ___VI_ARROWS___, KC_CCCV
+
+#define ___6NAV_R_1___ KC_CTCN, ___MOUSE_BTNS_R___
+#define ___6NAV_R_2___ KC_CCCV, ___VI_ARROWS___, TAB_BKTAB
+#define ___6NAV_R_3___ KC_CWCQ, ___HOME_PGDN_PGUP_END___, ___
+#define ___6NAV_R_4___ KC_CCCV, ___MOUSE_LDUR___, ___
+
+ // compact. Initially for corne. So 3x12 per layer.
+#define ___12_NAV_1___ ___6NAV_L_1___, ___6NAV_R_1___
+#define ___12_NAV_2___ ___6NAV_L_2___, ___6NAV_R_2___
+#define ___12_NAV_3___ ___6NAV_L_3___, ___6NAV_R_3___
+
+#define ___12_NAV_4___ ___6NAV_L_4___, ___6NAV_R_4___
+
+/********************************************************************************/
+/* The Navigation LAYER Chunks */
+/********************************************************************************/
+// A Navigation Layer
+#define ___NAV_3x12___ ___12_NAV_1___, ___12_NAV_2___, ___12_NAV_3___
+#define ___NAV_4x12___ ___NAV_3x12___, ___12_NAV_4___
+
+
+/********************************************************************************/
+/* MEDIA - Mute, Vol, play, pause, stop, next, prev, etc. */
+/********************************************************************************/
+#define ___PRV_PLAY_NXT_STOP___ KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
+#define ___VDN_MUTE_VUP___ KC_VOLD, KC_MUTE, KC_VOLU
+
+#define ___MUTE_PRV_PLAY_NXT_STOP___ KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP
+#define ___MUTE_PLAY_STOP___ KC_MUTE, KC_MPLY, KC_MSTP
+
+
+/********************************************************************************/
+/* RGB - Control those lights. */
+
+/* ___, HUE SAT_INT MOD (UP), | */
+/* ___, HUE SAT INT MOD (DOWN), RGB_TOG | P_B_R_SW_SN___, ___ */
+/* ___6___, | ___, ___RGB_KXGT___, ___ */
+/********************************************************************************/
+// RGB FUNCTION Keysets
+// RGB row for the _FN layer from the redo of the default keymap.c
+#define ___RGB_HUE_SAT_INT_UP___ RGB_HUI, RGB_SAI, RGB_VAI, RGB_RMOD
+#define ___RGB_HUE_SAT_INT_DN___ RGB_HUD, RGB_SAD, RGB_VAD, RGB_MOD
+#define ___RGB_MODE_PRV_NXT___ RGB_RMOD, RGB_MOD
+#define ___RGB_TOGGLE___ RGB_TOG
+#define ___RGB_P_B_R_SW_SN___ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN
+#define ___RGB_KXGT___ RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T
+
+/// An RGB Layer
+#define ___12_RGB_1___ ___, ___RGB_HUE_SAT_INT_UP___, ___, ___6___
+#define ___12_RGB_2___ ___, ___RGB_HUE_SAT_INT_DN___, RGB_TOG, ___RGB_P_B_R_SW_SN___, ___
+#define ___12_RGB_3___ ___6___, ___, ___RGB_KXGT___, ___
+
+/********************************************************************************/
+/* The RGB LAYER Chunk */
+/********************************************************************************/
+#define ___RGB_3x12___ ___12_RGB_1___, ___12_RGB_2___, ___12_RGB_3___
+
+
+/********************************************************************************/
+/* ADJUST - Miscellaneous Melange. */
+/********************************************************************************/
+// For an Adjust layer. Like RBB with audio, flash, etc.
+#define ___6_ADJUST_L1___ KC_MAKE, ___RGB_HUE_SAT_INT_UP___, RGB_TOG
+#define ___6_ADJUST_L2___ VRSN, MU_TOG, CK_TOGG, AU_ON, AU_OFF, CG_NORM
+#define ___6_ADJUST_L3___ MG_NKRO, ___RGB_HUE_SAT_INT_DN___, KC_RGB_T
+
+#define ___6_ADJUST_R1___ ___5___, KC_RESET
+#define ___6_ADJUST_R2___ ___, ___PRV_PLAY_NXT_STOP___, EEP_RST
+#define ___6_ADJUST_R3___ MG_NKRO, ___VDN_MUTE_VUP___, ___, RGB_IDL
+
+/********************************************************************************/
+/* The Adjust LAYER Chunks */
+/********************************************************************************/
+#define ___ADJUST_3x12___ ___6_ADJUST_L1___, ___6_ADJUST_R1___, \
+ ___6_ADJUST_L2___, ___6_ADJUST_R2___, \
+ ___6_ADJUST_L3___, ___6_ADJUST_R3___
+
+
+/********************************************************************************/
+/* LAYERS - Define a base layer, switch to any layer. Get around. Experiment. */
+/* */
+/* Base Layers on the left hand, */
+/* transient layers on the right. Centered on the home region. */
+/* A good place to attach an experimental layer. */
+/* */
+/********************************************************************************/
+// Base Layers
+#define ___5_LAYERS_B1___ ___, KC_BEPO, KC_DVORAK_BP, KC_BEAKL_BP, ___
+#define ___5_LAYERS_B2___ KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_BEAKL, ___
+
+#define ___5_LAYERS_B3___ ___, KC_QWERTY, KC_NORMAN, KC_WORKMAN, ___
+#define ___5_LAYERS_B4___ ___, DF(_MALTRON), DF(_EUCALYN), DF(_CARPLAX), ___
+
+#define ___5_LAYERS_B1b___ DF(_NORMAN), DF(_MALTRON), DF(_CARPLAX), DF(_COLEMAK), ___
+#define ___5_LAYERS_B2b___ DF(_EUCALYN), DF(_WORKMAN), DF(_QWERTY), DF(_DVORAK), ___
+#define ___5_LAYERS_B3b___ ___, DF(_BEAKL), DF(_BEPO), DF(_DVORAK_BP), ___
+
+// transient layers.
+#define ___5_LAYERS_T___ ___, MO(_NAV), MO(_SYMB), MO(_KEYPAD), MO(_TOPROWS)
+#define ___5_LAYERS_T_BP___ ___, MO(_NAV), MO(_SYMB_BP), MO(_KEYPAD_BP), MO(_TOPROWS_BP)
+#define ___5_LAYERS_T_CTL___ ___, MO(_RGB), ___, ___, MO(_ADJUST)
+
+
+/// A Layers Layer
+#define ___12_LAYERS_1___ ___, ___5_LAYERS_B1___, ___5_LAYERS_T_BP___, ___
+#define ___12_LAYERS_2___ ___, ___5_LAYERS_B2___, ___5_LAYERS_T___, ___
+#define ___12_LAYERS_3___ KC_SPACETEST, ___5___, ___5_LAYERS_T_CTL___, ___
+
+/********************************************************************************/
+/* The LAYERS LAYER Chunk */
+/********************************************************************************/
+#define ___LAYERS_3x12___ ___12_LAYERS_1___, ___12_LAYERS_2___, ___12_LAYERS_3___
diff --git a/users/ericgebhart/layouts.h b/users/ericgebhart/layouts.h
new file mode 100644
index 0000000000..5ca9b00e6e
--- /dev/null
+++ b/users/ericgebhart/layouts.h
@@ -0,0 +1,720 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "core_keysets.h"
+#include "mod_layer.h"
+#include "edge_keys.h"
+
+/******************************************************************/
+/* This is where I put my Keyboard layouts. */
+/* The mod layer can be modified in mod_layer.h */
+/* can be applied here. The physical shape of the keyboard is */
+/* also accounted for here. This makes it very simple to add a */
+/* new keyboard and reuse all of my layouts and layers */
+/* */
+/* With all of that in hand, we then create a LAYOUT wrapper */
+/* macro that takes a list of keys, to create a keyboard matrix */
+/* that fits the keyboard. Simple. */
+/* */
+/* The thumb keys, the bottom rows, etc. */
+/* */
+/* An attempt has been made to adapt the kinesis and ergodox */
+/* Thumb keys to the rectangular shapes of the xd75, viterbi, */
+/* and rebound. */
+/******************************************************************/
+
+/******************************************************************/
+/* * The XD75 is a 5x15 Ortholinear matrix which means it has 3 */
+/* keys inbetween the usual left and right hand keys */
+/* * The Viterbi is a split 5x14 Ortholinear with 2 middle keys. */
+/* * The Ergodox is a split 5x14 Ortholinear with 2 middle keys, */
+/* thumbkeys. It is missing middle keys on (home) row 3. */
+/* * The Corne is a split 3x12 with 6 thumb keys. It has no */
+/* extra middle keys */
+/* */
+/******************************************************************/
+
+
+/******************************************************************/
+/* In all cases these keyboards are defined in a matrix which is */
+/* a set of rows. Maybe like so, or not. */
+/* */
+/* -------------------------|------------------------ */
+/* | Left0 | Numbers L | mid|dle0 | numbers R | Right0 | */
+/* | Left1 | keys0-5 | mid|dle1 | Keys6-10 | Right1 | */
+/* | Left2 | keys11-15 | mid|dle2 | Keys16-20 | Right2 | */
+/* | Left3 | keys20-25 | mid|dle3 | Keys25-30 | Right3 | */
+/* | Row5L | Row5R | */
+/* | ThumbsL | ThumbsR | */
+/* -------------------------|------------------------ */
+
+/* Generally speaking, the keys on the right and left don't change. */
+/* Neither does the bottom row or the thumbs. Frequently the numbers */
+/* row is identical across layers. Mostly, we want our Base layers to */
+/* be predctable. */
+
+
+// Since our quirky block definitions are basically a list of comma separated
+// arguments, we need a wrapper in order for these definitions to be
+// expanded before being used as arguments to the LAYOUT_xxx macro.
+#if (!defined(LAYOUT) && defined(KEYMAP))
+#define LAYOUT KEYMAP
+#endif
+
+// every keyboard has it's Layout. We start there and make a var args
+// out of it.
+
+#define LVARG_ergodox(...) LAYOUT_ergodox(__VA_ARGS__)
+#define LVARG_edox(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
+#define LAYOUT_VARG(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_PVARG(...) LAYOUT_pretty(__VA_ARGS__)
+
+#define LVARG_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
+#define LVARG_5x12(...) LAYOUT_ortho_5x12(__VA_ARGS__)
+#define LVARG_5x14(...) LAYOUT_ortho_5x14(__VA_ARGS__)
+#define LVARG_5x15(...) LAYOUT_ortho_5x15(__VA_ARGS__)
+
+/*
+ | Left | Numbers L | middle | numbers R | Right |
+ | Left | keys0-5 | middle | Keys6-10 | Right |
+ | Left | keys11-15 | middle | Keys16-20 | Right |
+ | Left | keys20-25 | middle | Keys25-30 | Right |
+ |Row5L Row5R |
+ |ThumbsL ThumbsR |
+*/
+
+/* Assuming that left, midddle, right, row5, and thumbs stay the same, */
+/* numbers, no numbers, numbers never change, whatever. */
+/* we can have a layout macro that takes a nice rectangle of keys. */
+
+/* Actually, because of Bepo, each keyboard currently requires four of */
+/* these macros. One for Qwerty, One for foreign layouts on bepo like */
+/* dvorak and beakl on bepo instead of on Qwerty. Then another for the Bepo */
+/* layout because unlike the rest of the layouts Bepo doesn't fit in */
+/* 3x10. It wants 3x12. So there are potentially 4 macros per keyboard here. */
+/* XXXX_base, XXXX_base_bepo, XXXX_base_bepo6, The 4th macro */
+/* is XXXXX_transient and generally works for all other */
+/* non base layers. */
+/* The base and transient versions are all that is necessary, if bepo is */
+/* not needed. */
+
+
+/* All layouts are relatively simple to make. */
+/* The ROW macros add a universal mod layer so that mods can be defined once */
+/* and used everywhere. No matter the keymap or layer. this allows actual maps */
+/* like dvorak, qwerty, colemak, beakl, etc., to be defined simply. */
+
+
+/* Additional, more complicated layouts can be found here.*/
+/* examples can be found in crkbd/keymaps/ericgebhart */
+/* examples can be found in kinesis/keymaps/ericgebhart */
+/* examples can be found in ergodox/keymaps/ericgebhart */
+/* examples can be found in montsinger/rebound/rev4/keymaps/ericgebhart */
+
+
+
+/********************************************************************/
+/* xiudi/xd75 - Ortholinear 5x15 */
+/********************************************************************/
+/// These first two base layout templates take sets of 5 keys, left and right.
+// Using 4 sets allows for changing the number row if you have one.
+// if you never change the number row, then use 3 sets of left and right.
+// and define the number row here.
+#define LAYOUT_5x15_base( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A) \
+ LVARG_5x15( \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ___3_MIDDLE_T___, \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ___3_MIDDLE_1___, \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ___3_MIDDLE_2___, \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ___3_MIDDLE_3___, \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___15_BOTTOM___ \
+ )
+
+#define LAYOUT_5x15_base_bepo( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A) \
+ LVARG_5x15( \
+ ROW0_LEFT_BP(K01, K02, K03, K04, K05), \
+ ___3_MIDDLE_T___, \
+ ROW0_RIGHT_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT_BP(K11, K12, K13, K14, K15), \
+ ___3_MIDDLE_1_BP___, \
+ ROW1_RIGHT_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT_BP(K21, K22, K23, K24, K25), \
+ ___3_MIDDLE_2_BP___, \
+ ROW2_RIGHT_BP(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT_BP(K31, K32, K33, K34, K35), \
+ ___3_MIDDLE_3_BP___, \
+ ROW3_RIGHT_BP(K36, K37, K38, K39, K3A), \
+ ___15_BOTTOM_BP___ \
+ )
+
+// Just for bepo because it's a 3x6 matrix on each side.
+// So 3 pairs of 6 keys, left and right.
+#define Layout_5x15_base_bepo6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_5x15( \
+ ___15_B_SYMB___, \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ___3_MIDDLE_1_BP___, \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ___3_MIDDLE_2___, \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ___3_MIDDLE_3___, \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___15_BOTTOM_BP___ \
+ )
+
+ // 4 rows of 12. 3 columns transparent in the middle.
+#define LAYOUT_5x15_transient( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ K37, K38, K39, K3A, K3B, K3C \
+ ) \
+ LVARG_5x15( \
+ K01, K02, K03, K04, K05, K06, \
+ ___3___, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ ___3___, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ ___3___, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ ___3___, \
+ K37, K38, K39, K3A, K3B, K3C, \
+ ___15___) \
+
+#define BASE_5x15(...) LAYOUT_5x15_base(__VA_ARGS__)
+#define BASE_5x15_bepo(...) LAYOUT_5x15_base_bepo(__VA_ARGS__)
+#define BASE_5x15_bepo6(...) LAYOUT_5x15_base_bepo6(__VA_ARGS__)
+#define TRANSIENT_5x15(...) LAYOUT_5x15_transient(__VA_ARGS__)
+
+/********************************************************************/
+
+
+/********************************************************************/
+/* viterbi - Ortholinear 5x14 */
+/********************************************************************/
+#define LAYOUT_5x14_base( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A) \
+ LVARG_5x14( \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ___2_MIDDLE_T___, \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ___2_MIDDLE_1___, \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ___2_MIDDLE_2___, \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ___2_MIDDLE_3___, \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___14_BOTTOM___ \
+ )
+
+#define LAYOUT_5x14_base_bepo( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A) \
+ LVARG_5x14( \
+ ROW0_LEFT_BP(K01, K02, K03, K04, K05), \
+ ___2_MIDDLE_T___, \
+ ROW0_RIGHT_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT_BP(K11, K12, K13, K14, K15), \
+ ___2_MIDDLE_1_BP___, \
+ ROW1_RIGHT_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT_BP(K21, K22, K23, K24, K25), \
+ ___2_MIDDLE_2_BP___, \
+ ROW2_RIGHT_BP(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT_BP(K31, K32, K33, K34, K35), \
+ ___2_MIDDLE_3_BP___, \
+ ROW3_RIGHT_BP(K36, K37, K38, K39, K3A), \
+ ___14_BOTTOM_BP___ \
+ )
+
+ // Just for bepo because it's a 3x6 matrix on each side.
+// So 3 pairs of 6 keys, left and right.
+#define LAYOUT_5x14_base_bepo6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_5x14( \
+ ___14_B_SYMB___, \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ___2_MIDDLE_1_BP___, \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ___2_MIDDLE_2___, \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ___2_MIDDLE_3___, \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___14_BOTTOM_BP___ \
+ )
+
+// 4 rows of 12. 2 columns transparent in the middle.
+#define LAYOUT_5x14_transient( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ K37, K38, K39, K3A, K3B, K3C \
+ ) \
+ LVARG_5x14( \
+ K01, K02, K03, K04, K05, K06, \
+ ___2___, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ ___2___, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ ___2___, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ ___2___, \
+ K37, K38, K39, K3A, K3B, K3C, \
+ ___14___ \
+ ) \
+
+#define BASE_5x14(...) LAYOUT_5x14_base(__VA_ARGS__)
+#define BASE_5x14_bepo(...) LAYOUT_5x14_base_bepo(__VA_ARGS__)
+#define BASE_5x14_bepo6(...) LAYOUT_5x14_base_bepo6(__VA_ARGS__)
+#define TRANSIENT_5x14(...) LAYOUT_5x14_transient(__VA_ARGS__)
+
+/********************************************************************/
+/* Ortholinear 4x12 */
+/********************************************************************/
+#define LAYOUT_4x12_base( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LVARG_4x12( \
+ ROW1_LEFT(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ___12_BOTTOM___ \
+ )
+
+#define LAYOUT_4x12_base_bepo( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LVARG_4x12( \
+ ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
+ \
+ ___12_BOTTOM_BP___ \
+ )
+
+ // Just for bepo because it's a 3x6 matrix on each side.
+ // So 3 pairs of 6 keys, left and right.
+#define Layout_4x12_base_bepo6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_4x12( \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___12_BOTTOM_BP___ \
+ )
+
+// takes 3 makes 4 rows of 12.
+#define LAYOUT_4x12_transient( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LVARG_4x12( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ ___12___) \
+
+#define BASE_4x12(...) LAYOUT_4x12_base(__VA_ARGS__)
+#define BASE_4x12_bepo(...) LAYOUT_4x12_base_bepo(__VA_ARGS__)
+#define BASE_4x12_bepo6(...) LAYOUT_4x12_base_bepo6(__VA_ARGS__)
+#define TRANSIENT_4x12(...) LAYOUT_4x12_transient(__VA_ARGS__)
+
+/********************************************************************/
+/* CRKBD Corne */
+/* The Corne has 3x6 matrix on both sides with 6 thumbs total */
+/* This Macro takes 2x3x5 and gives it pinkies, and thumbs. */
+/* Arg chunks are in the middle with the passthrough modifiers as */
+/* needed. Sama Sama apres cette fois. */
+/********************************************************************/
+#define Base_3x6_3( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A) \
+ LAYOUT_VARG( \
+ ROW1_LEFT(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT(K26, K27, K28, K29, K2A), \
+ ___6_ERGO_THUMBS___ \
+ )
+
+// So we can have different transient layers for symbols and numbers on bepo.
+// for layouts like dvorak on bepo.
+#define Base_bepo_3x6_3( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_VARG( \
+ ROW1_LEFT_BP(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT_BP(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT_BP(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT_BP(K26, K27, K28, K29, K2A), \
+ ___6_ERGO_THUMBS_BP___ \
+ )
+
+// No room for pinkies.
+// Just for bepo because it's a 3x6 matrix on each side.
+// So 3 pairs of 6 keys, And we lose our left and right.
+// Except it keeps the layer toggles along with the keycode
+// on the bottom.
+#define Base_bepo6_3x6_3( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LAYOUT_VARG( \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___6_ERGO_THUMBS_BP___ \
+ )
+
+// All we really need is to add the see through thumbs to the end.
+#define Transient6_3x6_3( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LAYOUT_VARG( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ ___6___)
+
+//---------------------------------------------------------
+// 3x5
+#define Base_3x5_3( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A) \
+ LAYOUT_VARG( \
+ ROW1_LEFT5(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT5(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT5(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT5(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT5(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT5(K26, K27, K28, K29, K2A), \
+ ___6_ERGO_THUMBS___ \
+ )
+
+// So we can have different transient layers for symbols and numbers on bepo.
+// for layouts like dvorak on bepo.
+#define Base_bepo_3x5_3( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_VARG( \
+ ROW1_LEFT5_BP(K01, K02, K03, K04, K05), \
+ ROW1_RIGHT5_BP(K06, K07, K08, K09, K0A), \
+ \
+ ROW2_LEFT5_BP(K11, K12, K13, K14, K15), \
+ ROW2_RIGHT5_BP(K16, K17, K18, K19, K1A), \
+ \
+ ROW3_LEFT5_BP(K21, K22, K23, K24, K25), \
+ ROW3_RIGHT5_BP(K26, K27, K28, K29, K2A), \
+ ___6_ERGO_THUMBS_BP___ \
+ )
+
+// All we really need is to add the see through thumbs to the end.
+#define Transient5_3x5_3( \
+ K01, K02, K03, K04, K05, \
+ K07, K08, K09, K0A, K0B, \
+ K11, K12, K13, K14, K15, \
+ K17, K18, K19, K1A, K1B, \
+ K21, K22, K23, K24, K25, \
+ K27, K28, K29, K2A, K2B \
+ ) \
+ LAYOUT_VARG( \
+ K01, K02, K03, K04, K05, \
+ K07, K08, K09, K0A, K0B, \
+ K11, K12, K13, K14, K15, \
+ K17, K18, K19, K1A, K1B, \
+ K21, K22, K23, K24, K25, \
+ K27, K28, K29, K2A, K2B, \
+ ___6___)
+
+/********************************************************************/
+/* Kinesis*/
+/********************************************************************/
+// Basically an ergodox ez without the 3 pairs of middle keys.
+// Left, right, bottom, and thumbs all stay the same.
+#define Base_4x6_4_6( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A \
+ ) \
+ LAYOUT_PVARG( \
+ ___KINTFUNC_L___, ___KINTFUNC_R___, \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___4_BOTTOM_LEFT___, ___4_BOTTOM_RIGHT___, \
+ ___12_DOX_ALL_THUMBS___ \
+ )
+
+#define Base_bepo_4x6_4_6( \
+ K01, K02, K03, K04, K05, \
+ K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, \
+ K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, \
+ K26, K27, K28, K29, K2A, \
+ K31, K32, K33, K34, K35, \
+ K36, K37, K38, K39, K3A \
+ ) \
+ LAYOUT_PVARG( \
+ ___KINTFUNC_L___, ___KINTFUNC_R___, \
+ ROW0_LEFT(K01, K02, K03, K04, K05), \
+ ROW0_RIGHT(K06, K07, K08, K09, K0A), \
+ \
+ ROW1_LEFT(K11, K12, K13, K14, K15), \
+ ROW1_RIGHT(K16, K17, K18, K19, K1A), \
+ \
+ ROW2_LEFT(K21, K22, K23, K24, K25), \
+ ROW2_RIGHT(K26, K27, K28, K29, K2A), \
+ \
+ ROW3_LEFT(K31, K32, K33, K34, K35), \
+ ROW3_RIGHT(K36, K37, K38, K39, K3A), \
+ ___4_BOTTOM_LEFT___, ___4_BOTTOM_RIGHT___, \
+ ___12_DOX_ALL_THUMBS_BP___ \
+ )
+
+
+// So 3 pairs of 6 keys, left and right.
+#define Base_bepo6_4x6_4_6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C \
+ ) \
+ LAYOUT_PVARG( \
+ ___KINTFUNC_L___, ___KINTFUNC_R___, \
+ ___6SYMBOL_BEPO_L___, \
+ ___6SYMBOL_BEPO_R___, \
+ ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06), \
+ ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C), \
+ \
+ ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16), \
+ ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C), \
+ \
+ ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26), \
+ ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C), \
+ ___4_BOTTOM_LEFT_BP___, ___4_BOTTOM_RIGHT_BP___, \
+ ___12_DOX_ALL_THUMBS_BP___ \
+ )
+
+#define Transient6_4x6_4_6( \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ K37, K38, K39, K3A, K3B, K3C \
+ ) \
+ LAYOUT_PVARG( \
+ ___KINTFUNC_L___, ___KINTFUNC_R___, \
+ K01, K02, K03, K04, K05, K06, \
+ K07, K08, K09, K0A, K0B, K0C, \
+ K11, K12, K13, K14, K15, K16, \
+ K17, K18, K19, K1A, K1B, K1C, \
+ K21, K22, K23, K24, K25, K26, \
+ K27, K28, K29, K2A, K2B, K2C, \
+ K31, K32, K33, K34, K35, K36, \
+ K37, K38, K39, K3A, K3B, K3C, \
+ ___4___, ___4___, \
+ ___12___ \
+ )
diff --git a/users/ericgebhart/mod_layer.h b/users/ericgebhart/mod_layer.h
new file mode 100644
index 0000000000..a3c64b0bf7
--- /dev/null
+++ b/users/ericgebhart/mod_layer.h
@@ -0,0 +1,178 @@
+#pragma once
+
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+// define our rows for the mod layer
+// takes 5 keycodes, adds mods, and left and right
+// so we get keycodes in groups of 6.
+// There are 3 sets of 4 rows.
+// 1 for normal 6 columns, qwerty, dvorak etc.
+// 1 for bepo/normal 6 columns, qwerty, dvorak etc. on bepo.
+// 1 for bepo 6 columns provided instead of a 5, for bepo which needs 3x12.
+// A 5 column keyboard would need another set of MACROS.
+
+// These macros are used in the layout wrapper macros to introduce a mod
+// layer. HomeRow mods and other things like that go here.
+
+
+#include "core_keys.h"
+
+//number row.
+#define ROW0_LEFT(K01, K02, K03, K04, K05) \
+ LEFT0, K01, K02, K03, K04, K05
+
+#define ROW0_RIGHT(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05, RIGHT0
+
+#define ROW1_LEFT(K01, K02, K03, K04, K05) \
+ LEFT1, K01, K02, K03, LT(_NAV, K04), K05
+
+#define ROW1_RIGHT(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05, RIGHT1
+
+// home row, shift, alt, ctl, gui - gui, ctl, alt, shift.
+// using MT so we can specify left and right.
+// caps_word needs left and right shift.
+#define ROW2_LEFT(K01, K02, K03, K04, K05) \
+ LEFT2, MT(MOD_LSFT, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LGUI, K04), K05
+
+#define ROW2_RIGHT(K01, K02, K03, K04, K05) \
+ K01, MT(MOD_RGUI, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), MT(MOD_RSFT, K05), RIGHT2 \
+
+#define ROW3_LEFT(K01, K02, K03, K04, K05) \
+ LEFT3, K01, LT(_TOPROWS, K02), K03, LT(_SYMB, K04), K05
+
+#define ROW3_RIGHT(K01, K02, K03, K04, K05) \
+ K01, LT(_SYMB, K02), LT(_NAV, K03), LT(_TOPROWS, K04), K05, RIGHT3
+
+
+//-----------------------------------------------y
+// For a 5 column keyboard - no edges added.
+//number row.
+#define ROW0_LEFT5(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05
+
+#define ROW0_RIGHT5(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05
+
+#define ROW1_LEFT5(K01, K02, K03, K04, K05) \
+ LT(_LAYERS, K01), K02, LT(_KEYPAD, K03), K04, K05
+
+#define ROW1_RIGHT5(K01, K02, K03, K04, K05) \
+ K01, K02, LT(_KEYPAD, K03), K04, LT(_LAYERS, K05)
+
+// home row, shift, alt, ctl, gui - gui, ctl, alt, shift.
+// using MT so we can specify left and right.
+// caps_word needs left and right shift.
+#define ROW2_LEFT5(K01, K02, K03, K04, K05) \
+ MT(MOD_LSFT, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LGUI, K04), K05
+
+#define ROW2_RIGHT5(K01, K02, K03, K04, K05) \
+ K01, MT(MOD_RGUI, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), MT(MOD_RSFT, K05)
+
+#define ROW3_LEFT5(K01, K02, K03, K04, K05) \
+ K01, LT(_TOPROWS, K02), LT(_NAV, K03), LT(_SYMB, K04), K05
+
+#define ROW3_RIGHT5(K01, K02, K03, K04, K05) \
+ K01, LT(_SYMB, K02), LT(_NAV, K03), LT(_TOPROWS, K04), K05
+
+
+//--------------------------------------------
+//bepo
+#define ROW0_LEFT_BP(K01, K02, K03, K04, K05) \
+ LEFT0_BP, K01, K02, K03, K04, K05
+
+#define ROW0_RIGHT_BP(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05, RIGHT0_BP
+
+#define ROW1_LEFT_BP(K01, K02, K03, K04, K05) \
+ LEFT1_BP, K01, K02, K03, LT(_KEYPAD, K04), K05
+
+#define ROW1_RIGHT_BP(K01, K02, K03, K04, K05) \
+ K01, K02, LT(_KEYPAD, K03), K04, K05, RIGHT1_BP
+
+#define ROW2_LEFT_BP(K01, K02, K03, K04, K05) \
+ LEFT2_BP, MT(MOD_RSFT, K01), MT(MOD_LALT,K02), MT(MOD_RCTL, K03), \
+ MT(MOD_LGUI, K04), K05
+
+#define ROW2_RIGHT_BP(K01, K02, K03, K04, K05) \
+ K01, MT(MOD_RGUI, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), \
+ MT(MOD_RSFT, K05), RIGHT2_BP \
+
+#define ROW3_LEFT_BP(K01, K02, K03, K04, K05) \
+ LEFT3_BP, K01, LT(_SYMB_BP, K02), LT(_NAV, K03), LT(_TOPROWS_BP, K04), K05
+
+#define ROW3_RIGHT_BP(K01, K02, K03, K04, K05) \
+ K01, LT(_SYMB_BP, K02), LT(_NAV, K03), LT(_TOPROWS_BP, K04), K05, RIGHT3_BP
+
+
+//-------------------------------------------------
+//bepo - 6 args, no left or right added.
+#define ROW0_LEFT_BP6(K01, K02, K03, K04, K05, K06) \
+ K01, K02, K03, K04, K05, K06
+
+#define ROW0_RIGHT_BP6(K01, K02, K03, K04, K05, K06 ) \
+ K01, K02, K03, K04, K05, K06
+
+#define ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06) \
+ K01, K02, K03, K04, K05, K06
+
+#define ROW1_RIGHT_BP6(K01, K02, K03, K04, K05, K06 ) \
+ K01, K02, K03, K04, K05, K06
+
+#define ROW2_LEFT_BP6(K01, K02, K03, K04, K05, K06) \
+ K01, SFT_T(K02), ALT_T(K03), CTL_T(K04), GUI_T(K05), K06
+
+#define ROW2_RIGHT_BP6(K01, K02, K03, K04, K05, K06) \
+ K01, GUI_T(K02), RCTL_T(K03), RALT_T(K04), RSFT_T(K05), K06
+
+#define ROW3_LEFT_BP6(K01, K02, K03, K04, K05, K06) \
+ K01, K02, K03, K04, K05, K06
+
+#define ROW3_RIGHT_BP6(K01, K02, K03, K04, K05, K06 ) \
+ K01, K02, K03, K04, K05, K06
+
+
+//-------------------------------------------------
+// For a 5 column keyboard - no edges added.
+//number row.
+#define ROW0_LEFT5_BP(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05
+
+#define ROW0_RIGHT5_BP(K01, K02, K03, K04, K05) \
+ K01, K02, K03, K04, K05
+
+#define ROW1_LEFT5_BP(K01, K02, K03, K04, K05) \
+ LT(_LAYERS, K01), K02, K03, LT(_KEYPAD_BP, K04), K05
+
+#define ROW1_RIGHT5_BP(K01, K02, K03, K04, K05) \
+ K01, LT(_KEYPAD_BP, K02), K03, K04, K05
+
+// home row, shift, alt, ctl, gui - gui, ctl, alt, shift.
+// using MT so we can specify left and right.
+// caps_word needs left and right shift.
+#define ROW2_LEFT5_BP(K01, K02, K03, K04, K05) \
+ MT(MOD_LSFT, K01), MT(MOD_LALT, K02), MT(MOD_LCTL, K03), MT(MOD_LGUI, K04), K05
+
+#define ROW2_RIGHT5_BP(K01, K02, K03, K04, K05) \
+ K01, MT(MOD_RGUI, K02), MT(MOD_RCTL, K03), MT(MOD_RALT, K04), MT(MOD_RSFT, K05)
+
+#define ROW3_LEFT5_BP(K01, K02, K03, K04, K05) \
+ K01, LT(_TOPROWS_BP, K02), LT(_NAV, K03), LT(_SYMB_BP, K04), K05
+
+#define ROW3_RIGHT5_BP(K01, K02, K03, K04, K05) \
+ K01, LT(_SYMB_BP, K02), LT(_NAV, K03), LT(_TOPROWS_BP, K04), K05
diff --git a/users/ericgebhart/oled_stuff.c b/users/ericgebhart/oled_stuff.c
new file mode 100755
index 0000000000..99a752ec2f
--- /dev/null
+++ b/users/ericgebhart/oled_stuff.c
@@ -0,0 +1,303 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "ericgebhart.h"
+#include <string.h>
+#include <stdio.h>
+
+void oled_render_default_layer_state(void) {
+ oled_write_P(PSTR("Layout: "), false);
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Qwerty"), false);
+ break;
+ case _COLEMAK:
+ oled_write_ln_P(PSTR("Colemak"), false);
+ break;
+ case _DVORAK_BP:
+ case _DVORAK:
+ oled_write_ln_P(PSTR("Dvorak"), false);
+ break;
+
+
+ /* case _WORKMAN: */
+ // oled_write_ln_P(PSTR("Workman\n"), false);
+ /* break; */
+ /* case _NORMAN: */
+ // oled_write_ln_P(PSTR("Norman\n"), false);
+ /* break; */
+ /* case _MALTRON: */
+ // oled_write_ln_P(PSTR("Maltron\n"), false);
+ /* break; */
+
+ /* case _EUCALYN: */
+ // oled_write_ln_P(PSTR("Eucalyn\n"), false);
+ /* break; */
+ /* case _CARPLAX: */
+ // oled_write_ln_P(PSTR("Carplax\n"), false);
+ /* break; */
+
+ case _BEAKL:
+ case _BEAKL_BP:
+ oled_write_ln_P(PSTR("Beakl"), false);
+ break;
+ case _BEPO:
+ oled_write_ln_P(PSTR("Bepo"), false);
+ break;
+ }
+}
+
+void oled_render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _NAV:
+ oled_write_P(PSTR("Navigation"), false);
+ break;
+ case _LAYERS:
+ oled_write_P(PSTR("Layers"), false);
+ break;
+ case _RGB:
+ oled_write_P(PSTR("RGB"), false);
+ break;
+ case _TOPROWS:
+ case _TOPROWS_BP:
+ oled_write_P(PSTR("TopRows"), false);
+ break;
+ case _SYMB:
+ case _SYMB_BP:
+ oled_write_P(PSTR("Symbols"), false);
+ break;
+ case _KEYPAD:
+ case _KEYPAD_BP:
+ oled_write_P(PSTR("Keypad"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adjust"), false);
+ break;
+ }
+ oled_write_ln_P(PSTR(" "), false);
+}
+
+// this is part of my answer to a challenge.
+// My friend Ross thinks that the only use of an oled
+// is to say which layer.
+// I think there is more. this is just a beginning.
+void oled_render_layer_map(void) {
+ uint8_t lyr = get_highest_layer(layer_state);
+ if (lyr <= _BEPO) {
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR(" qwert yuiop"), false);
+ oled_write_ln_P(PSTR(" asdfg hjkl;"), false);
+ oled_write_ln_P(PSTR(" zxcvb nm,./"), false);
+ break;
+ case _COLEMAK:
+ oled_write_ln_P(PSTR(" qwfpb jluy;"), false);
+ oled_write_ln_P(PSTR(" arstg mneio"), false);
+ oled_write_ln_P(PSTR(" zxcdv kh,./"), false);
+ break;
+ case _DVORAK_BP:
+ case _DVORAK:
+ oled_write_ln_P(PSTR(" \",.py fgcrl"), false);
+ oled_write_ln_P(PSTR(" aoeui dhtns"), false);
+ oled_write_ln_P(PSTR(" ;qjkx bmwvz "), false);
+ break;
+
+ case _BEAKL:
+ case _BEAKL_BP:
+ oled_write_ln_P(PSTR(" qhoux gcrfz"), false);
+ oled_write_ln_P(PSTR(" yiea. dstnb"), false);
+ oled_write_ln_P(PSTR(" j/,k' wmlpv"), false);
+ break;
+
+ case _BEPO:
+ oled_write_P(PSTR(" cbe'po`e vdljz %"), false);
+ oled_write_P(PSTR(" auie, tsrnmc"), false);
+ oled_write_P(PSTR(" e^a'yx.k 'qghfw"), false);
+ break;
+ }
+
+ } else {
+
+ switch (lyr) {
+ case _TOPROWS:
+ case _TOPROWS_BP:
+ oled_write_ln_P(PSTR(" !@#$% ^&*()"), false);
+ oled_write_ln_P(PSTR(" 40123 76598"), false);
+ oled_write_ln_P(PSTR(" F1- -- -F12"), false);
+ break;
+
+ case _SYMB:
+ case _SYMB_BP:
+ oled_write_ln_P(PSTR(" `<$>' ?[_]-"), false);
+ oled_write_ln_P(PSTR(" -\\(\")# !{:}/;"), false);
+ oled_write_ln_P(PSTR(" @=*+; %&^~|"), false);
+ break;
+
+ case _NAV:
+ oled_write_ln_P(PSTR("54321 0 ctn 12345"), false);
+ oled_write_ln_P(PSTR(" ldur 1 ccv ldur"), false);
+ oled_write_ln_P(PSTR(" ldur 2 cwq hdue"), false);
+ break;
+
+ case _KEYPAD:
+ oled_write_ln_P(PSTR(" 523: F9-F12"), false);
+ oled_write_ln_P(PSTR(" -7.104 F5-F8"), false);
+ oled_write_ln_P(PSTR(" /698, F1-F4"), false);
+ break;
+
+ case _LAYERS:
+ oled_write_ln_P(PSTR(" Bp Dv Bk|Nv S K TR"), false);
+ oled_write_ln_P(PSTR("Q Cl Dv Bk|Nv S K TR"), false);
+ oled_write_P(PSTR(" "), false);
+ //oled_write_ln_P(PSTR("Ctrls?-> RGB ___ ___ Adjust"), false);
+ break;
+ }
+ }
+}
+
+void oled_render_keylock_status(uint8_t led_usb_state) {
+ oled_write_P(PSTR(" Lock:"), false);
+ oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR("N"), led_usb_state & (1 << USB_LED_NUM_LOCK));
+ oled_write_P(PSTR("C"), led_usb_state & (1 << USB_LED_CAPS_LOCK));
+ oled_write_ln_P(PSTR("S"), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
+}
+
+void oled_render_mod_status(uint8_t modifiers) {
+ oled_write_P(PSTR("Mods:"), false);
+ oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
+ oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
+ oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
+ oled_write_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
+}
+
+void oled_render_mod_lock_status(){
+ oled_render_mod_status(get_mods() | get_oneshot_mods());
+ oled_render_keylock_status(host_keyboard_leds());
+}
+
+
+char mkeylog_str[22] = {};
+
+const char mcode_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+
+void oled_render_keylog(void) {
+ oled_write_ln(mkeylog_str, false);
+ // sometimes there's an extra row. this is because sometimes it drops
+ // to the last line. and this clears it.
+ oled_write_ln_P(PSTR(" "), false);
+}
+
+
+void add_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+ keycode = keycode & 0xFF;
+ }
+ if (keycode < 60) {
+ name = mcode_to_name[keycode];
+ }
+
+ // update keylog
+ memset(mkeylog_str, ' ', sizeof(mkeylog_str) - 1);
+ snprintf(mkeylog_str, sizeof(mkeylog_str), "%dx%d, k%2d : %c",
+ record->event.key.row, record->event.key.col,
+ keycode, name);
+}
+
+__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return rotation; }
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+
+ // for the big screen.
+#ifdef OLED_DISPLAY_128X64
+ return OLED_ROTATION_180;
+#endif
+
+ return oled_init_keymap(rotation);
+}
+
+/* oled_rotation_t oled_init_user(oled_rotation_t rotation) { */
+/* memset(mkeylog_str, ' ', sizeof(mkeylog_str) - 1); */
+/* if (is_keyboard_master()) { */
+/* return OLED_ROTATION_270; */
+/* } else { */
+/* return OLED_ROTATION_180; */
+/* } */
+/* } */
+
+bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ //oled_timer = timer_read32();
+ add_keylog(keycode, record);
+ //add_keylog(keycode);
+ }
+ return true;
+}
+
+void render_bootmagic_status(bool status) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ if (status) {
+ oled_write_ln_P(logo[0][0], false);
+ oled_write_ln_P(logo[0][1], false);
+ } else {
+ oled_write_ln_P(logo[1][0], false);
+ oled_write_ln_P(logo[1][1], false);
+ }
+}
+
+
+__attribute__((weak)) void oled_render_logo(void) {
+ // clang-format off
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
+ // clang-format on
+ oled_write_P(qmk_logo, false);
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ oled_render_mod_lock_status();
+ oled_render_default_layer_state();
+ oled_render_layer_state();
+#ifdef OLED_DISPLAY_128X64
+ oled_render_layer_map();
+#endif
+ oled_render_keylog();
+ } else {
+ oled_render_logo();
+ oled_render_default_layer_state();
+ }
+ return(true);
+
+}
+/* oled_render_keylock_status(host_keyboard_leds()); */
+/* oled_render_mod_status(get_mods() | get_oneshot_mods()); */
diff --git a/users/ericgebhart/oled_stuff.h b/users/ericgebhart/oled_stuff.h
new file mode 100755
index 0000000000..df1f50985f
--- /dev/null
+++ b/users/ericgebhart/oled_stuff.h
@@ -0,0 +1,24 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "quantum.h"
+#include "oled_driver.h"
+
+void oled_render_mod_lock_status(void);
+void oled_driver_render_logo(void);
+bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
diff --git a/users/ericgebhart/process_records.c b/users/ericgebhart/process_records.c
new file mode 100755
index 0000000000..c1036c7f07
--- /dev/null
+++ b/users/ericgebhart/process_records.c
@@ -0,0 +1,255 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "ericgebhart.h"
+#include "caps_word.h"
+#include "g/keymap_combo.h"
+
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+
+__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
+
+
+uint16_t tap_taplong_timer;
+
+inline void tap_taplong(uint16_t kc1, uint16_t kc2, keyrecord_t *record) {
+ if (record->event.pressed) {
+ tap_taplong_timer = timer_read();
+ } else {
+ if (timer_elapsed(tap_taplong_timer) > TAPPING_TERM) {
+ tap_code16(kc2);
+ } else {
+ tap_code16(kc1);
+ }
+ }
+}
+
+/* for (){}[]""''<>``. tap for open. Hold for open and close, ending inbetween. */
+/* Assumes a one character length. */
+inline void open_openclose(uint16_t kc1, uint16_t kc2, keyrecord_t *record) {
+ if (record->event.pressed) {
+ tap_taplong_timer = timer_read();
+ }else{
+ if (timer_elapsed(tap_taplong_timer) > TAPPING_TERM) {
+ tap_code16(kc1);
+ tap_code16(kc2);
+ tap_code16(KC_LEFT);
+ } else {
+ tap_code16(kc1);
+ }
+ }
+}
+
+// Defines actions for my global custom keycodes. Defined in ericgebhart.h file
+// Then runs the _keymap's record handier if not processed here
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // If console is enabled, it will print the matrix position and status of each key pressed
+
+#ifdef OLED_ENABLE
+ process_record_user_oled(keycode, record);
+#endif // OLED
+
+ if (!process_caps_word(keycode, record)) { return false; }
+
+ if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)) {
+ switch (keycode) {
+
+ // Handle the key translations for Dvorak on bepo. It's best if these are the first
+ // enums after SAFE_RANGE.
+ case DB_1 ... BB_QUOT:
+ if(record->event.pressed)
+ send_keycode(keycode);
+ unregister_code(keycode);
+ break;
+
+ // Set the default layer. eeprom if shifted.
+ case KC_DVORAK ... KC_BEPO:
+ if (record->event.pressed) {
+ uint8_t mods = mod_config(get_mods() | get_oneshot_mods());
+ if (!mods) {
+ default_layer_set(1UL << (keycode - KC_DVORAK));
+ } else if (mods & MOD_MASK_SHIFT) {
+ set_single_persistent_default_layer(1UL << (keycode - KC_DVORAK));
+ }
+ }
+ break;
+
+
+ case KC_RESET: // Custom RESET code
+ if (!record->event.pressed) {
+ reset_keyboard();
+ }
+ return false;
+ break;
+
+ case KC_SPACETEST: // test something.
+ // default_layer_set(1UL << _BEAKL);
+ // tap_code16(LSFT(KC_SPACE));
+ break;
+
+
+ // tap or long tap for different key.
+ case KC_CCCV: // One key copy/paste
+ tap_taplong(LCTL(KC_C), LCTL(KC_V), record);
+ break;
+
+ case BP_CCCV: // One key copy/paste
+ tap_taplong(LCTL(BP_C), LCTL(BP_V), record);
+ break;
+
+ case KC_CTCN: // New TaB/Window
+ tap_taplong(LCTL(KC_T), LCTL(KC_N), record);
+ break;
+
+ case BP_CTCN: // New TaB/Window
+ tap_taplong(LCTL(BP_T), LCTL(BP_N), record);
+ break;
+
+ case KC_CWCQ: // Close Tab-window/Quit
+ tap_taplong(LCTL(KC_W), LCTL(KC_Q), record);
+ break;
+
+ case BP_CWCQ: // Close Tab-window/Quit
+ tap_taplong(LCTL(BP_W), LCTL(BP_Q), record);
+ break;
+
+ case KC_XM_PORD: // Xmonad scratch pads or desktop
+ tap_taplong(LGUI(KC_E), LGUI(KC_T), record);
+ break;
+
+ case BP_XM_PORD: // Xmonad scratch pads or desktop
+ tap_taplong(LGUI(BP_E), LGUI(BP_T), record);
+ break;
+
+
+ // Open on tap and Open with close and back arrow on hold.
+ case KC_OCPRN:
+ open_openclose(KC_LPRN, KC_RPRN, record);
+ break;
+
+ case BP_OCPRN:
+ open_openclose(DB_LPRN, DB_RPRN, record);
+ break;
+
+ case KC_OCBRC:
+ open_openclose(KC_LBRC, KC_RBRC, record);
+ break;
+
+ case BP_OCBRC:
+ open_openclose(KC_RBRC, KC_LBRC, record);
+ break;
+
+ case KC_OCCBR:
+ open_openclose(KC_LCBR, KC_RCBR, record);
+ break;
+
+ case BP_OCCBR:
+ open_openclose(BP_LCBR, BP_RCBR, record);
+ break;
+
+ case KC_OCDQUO:
+ open_openclose(KC_DQUO, KC_DQUO, record);
+ break;
+
+ case BP_OCDQUO:
+ open_openclose(BP_DQUO, BP_DQUO, record);
+ break;
+
+ case KC_OCQUOT:
+ open_openclose(KC_QUOT, KC_QUOT, record);
+ break;
+
+ case BP_OCQUOT:
+ open_openclose(BP_QUOT, BP_QUOT, record);
+ break;
+
+ case KC_OCGRV:
+ open_openclose(KC_GRAVE, KC_GRAVE, record);
+ break;
+
+ case BP_OCGRV:
+ open_openclose(BP_GRV, BP_GRV, record);
+ break;
+
+ case KC_OCLTGT:
+ open_openclose(KC_LT, KC_GT, record);
+ break;
+
+ case BP_OCLTGT:
+ open_openclose(BP_LDAQ, BP_RDAQ, record);
+ break;
+
+
+ //Turn shift backspace into delete.
+ /* case KC_BSPC: */
+ /* { */
+ /* // Initialize a boolean variable that keeps track */
+ /* // of the delete key status: registered or not? */
+ /* static bool delkey_registered; */
+ /* if (record->event.pressed) { */
+ /* uint8_t mod_state = get_mods(); */
+ /* // Detect the activation of either shift keys */
+ /* if (mod_state & MOD_MASK_SHIFT) { */
+ /* // First temporarily canceling both shifts so that */
+ /* // shift isn't applied to the KC_DEL keycode */
+ /* del_mods(MOD_MASK_SHIFT); */
+ /* register_code(KC_DEL); */
+ /* // Update the boolean variable to reflect the status of KC_DEL */
+ /* delkey_registered = true; */
+ /* // Reapplying modifier state so that the held shift key(s) */
+ /* // still work even after having tapped the Backspace/Delete key. */
+ /* set_mods(mod_state); */
+ /* return false; */
+ /* } */
+ /* } else { // on release of KC_BSPC */
+ /* // In case KC_DEL is still being sent even after the release of KC_BSPC */
+ /* if (delkey_registered) { */
+ /* unregister_code(KC_DEL); */
+ /* delkey_registered = false; */
+ /* return false; */
+ /* } */
+ /* } */
+ /* // Let QMK process the KC_BSPC keycode as usual outside of shift */
+ /* return true; */
+ /* } */
+
+
+#ifdef UNICODE_ENABLE
+ case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
+ if (record->event.pressed) {
+ send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
+ }
+ break;
+ case UC_TABL: // ┬─┬ノ( º _ ºノ)
+ if (record->event.pressed) {
+ send_unicode_string("┬─┬ノ( º _ ºノ)");
+ }
+ break;
+ case UC_SHRG: // ¯\_(ツ)_/¯
+ if (record->event.pressed) {
+ send_unicode_string("¯\\_(ツ)_/¯");
+ }
+ break;
+ case UC_DISA: // ಠ_ಠ
+ if (record->event.pressed) {
+ send_unicode_string("ಠ_ಠ");
+ }
+ break;
+#endif
+ }
+ }
+ return true;
+}
diff --git a/users/ericgebhart/readme.md b/users/ericgebhart/readme.md
index cd57735c2c..4a081bd344 100644..100755
--- a/users/ericgebhart/readme.md
+++ b/users/ericgebhart/readme.md
@@ -1,124 +1,212 @@
Overview
========
-This is my personal userspace. Most of my code exists here. I only have one keymap, and that
-is for an ergodox_ez. There are a lot of layers, 7 of them are default layers. I primarily use
-dvorak and Bepo. I've been using emacs in vi mode for over 23 years. I also us Xmonad as my
-window manager, additionally I've been using a Kinesis advantage keyboard in dvorak for over 20
-years. All of those things tend to color the layouts I have.
-
-The Bepo layer needs some love. It is true to the layout at Bepo.fr, but I find it a little
-cumbersome, and I miss some of my favorite keys.
-
-There are 2 dvorak layers, one for a qwerty OS keyboard, and one for a Bepo OS keyboard.
-There is a symbol/keypad layer for bepo and qwerty. And of course there is a mouse/media layer.
-There are 2 Xmonad layers one for qwerty and one for Bepo. Layer selection happens automatically
-based on your current default layer. I use 2 tap dance keys for layer selection.
-
-There are also Qwerty, Colemak, Workman and Norman layers for qwerty.
-
-
-Keyboard Layout Templates
--------------------------
-
-I borrowed the idea for the keyboard defines and some of the definitions from @drashna.
-I think it is an awesome idea, It makes consistency between layout definitions so much easier.
-@drashna had this to say about it.
-
-
-This borrows from @jola5's "Not quite neo" code. This allows me to maintain blocks of keymaps in the userspace, so that I can modify the userspace, and this is reflected in all of the keyboards that use it, at once.
-
-This makes adding tap/hold mods, or other special keycodes or functions to all keyboards super easy, as it's done to all of them at once.
-
-The caveat here is that the keymap needs a processor/wrapper, as it doesn't like the substitutions. However, this is as simple as just pushing it through a define. For instance:
-
-`#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)`
-
-Once that's been done and you've switched the keymaps to use the "wrapper", it will read the substitution blocks just fine.
-
-Credit goes to @jola5 for first implementing this awesome idea.
-
-
-Custom Keycodes
----------------
-
-Keycodes are defined in the ericgebhart.h file and need to be included in the keymap.c files, so that they can be used there. The keymap.c file has very little in it, the most important thing to see there are the keys that are at the ends of each row, ie. the 1st and last key on each row is defined there.
-Everything else is in ericgebhart.h.
-
-Layer Indication
-----------------
-
-The ergodox_ez only has 3 leds, layer indication is pretty lame.
-Currently the first led lights up if the default layer is not qwerty. The symbol and media layers get
-the other 2 leds, and all the leds light up if you are on the "layers" layer.
-I hope I can figure out how to make it better, but I just don't see a way with 3 leds and 11 layers.
-
-
-BEPO vs Qwerty Layers
+Warning: dvorak touch typist, that uses qwerty and bepo locales on my
+computer. 40+ years of vi, 30 years of vi in Emacs.
+
+Recent years I have gone minimal, I don't use most of the keys on my ergodox,
+or original edition dactyl. These maps work great on large and small keyboards,
+my preference seems to be 40% split ergo keyboards like the corne.
+
+I think that what is special here is the layouts. I don't worry too
+much about leds, or RGB, although I do like oled. But really its mod_layer.h,
+all the simple layer chunks and definitions, and the ability to apply that
+to any keyboard with minimal effort. The other thing is the example it
+provides for defining keymaps based on different OS locales. I use both
+dvorak on Qwerty, and bepo/dvorak on bepo. That means I must change my
+locale on my OS to match my keyboard which can do qwerty or bepo locales.
+
+It is possible, as I do, to send a keycode invoking xmonad, to execute my
+qwerty - bepo switch on my computer.
+
+Besides using dvorak, another thing that colors my keyboard code is that I
+have used the kinesis
+advantage for for more than 2 decades. I have used the ergodox ez for several years
+as well, so the evolution of my keymaps starts there with space, enter, backspace
+and delete keys on the thumbs.
+
+Layouts
+-----------
+This evolved from the old layout...wrapper code. Calling everything a wrapper seems
+silly. So I took a step back.
+
+Also, with all these layers it was a real pain to apply mods consistently and
+easily. So I changed the way I use keymap macro wrappers and added in my own
+mod layer. The only thing it has is the mods to apply. No more editing keymaps
+to apply mods. I do it once, and it works everywhere I want.
+
+All layouts, almost, boil down to a 3x5 x 2 matrix. Bepo is 3x6. Mostly, I want
+my controls to stay the same. As we have been conditioned, these are the keys on
+the edges, or middle. Not that they can't change but I don't usually change them
+much, except the side edges, - the extra pinky columns.
+the F keys, the columns to the left and right and the row on the bottom.
+Thumb keys if you have them. Even the number row is practically the same.
+
+With that in mind, reducing my layouts to 3x10 or 12 matrices would be great.
+At the same time extracting my mods so they are easy to apply to any matrix.
+So that's what is here.
+
+At the bottom is the LAYOUT, needed by the keeb you have. Then I have my Layouts
+to feed it with my ROWS macros which are my MOD layer. At the end of it all,
+I give a 3x10 or 12 to a layout and I have a complete keyboard definition.
+Creating a new keyboard map is super simple.
+
+ * mod_layer.h is the place for home row mods or any other mods.
+ * layouts.h is where I define a new matrix using the ROW macros when I need one.
+ * core_keys.h - where I define my custom keys. Ya know, the big enum.
+ * altlocal_keys.c - Alternate key/shift keys for emulation on other locales.
+ * core_keysets.h - Base layers; qwerty, dvorak, beakl, colemak, norman, carplax...
+ * edge_keys.h - defines the edges and bottom/thumb keys of a keyboard.
+ * layers.h - defines actual layers for navigation, symbols, keypad, layers, top rows, etc.
+
+Process_records.c
+--------------------
+This is where the keycodes are processed...
+
+Custom keys
+-------------------
+I have a lot of custom keys because of bepo. It is somewhat confusing this interaction
+between a keyboard and the software that receives it.
+
+A lot of my pain is invoked by my desire to have dvorak on bepo. Which works just fine,
+although an english/cyrillic situation may not work so well. Currently I have
+dvorak and beakl on bepo in addition to bepo it's self.
+
+Alternate keycodes for emulating a layout on another locale/language.
+-----------------------------
+Because of wanting dvorak and beakl on bepo there was the necessity to create keys
+from keycodes which were not combined. For this I have a special function that
+takes a keycode and gives a proper shifted character for it. It is only a 2 keycode
+definition, but it does the basic non-shifted and shifted characters as you define them.
+
+Combos/Chords
+----------------------------
+This is recently new to me. I'm using them on my thumb keys which are all LT's.
+the combos allow for layer locking for the Nav layer, and a oneshot for symbols
+among other things.
+
+I followed the simple example at the end of the doc than uses the
+combos.def file to define the combos.
+
+Tap-mods
+-------------------------------------
+I had been using MT on my thumbs for GUI,CTRL,ALT on hold along with
+Escape, Enter, space and backspace, my thumb keys. I then added shift to my home row pinky key.
+I had layer shifts to symbols, numbers, navigation all on the home row of both hands.
+It worked nicely but choppy I think, switching hands for the holder of the layer is
+a little like having no caps lock. It was a lot of work adding them to all my maps.
+This is what prompted my mod_layer. So much easier. No maps to modify.
+
+Then I moved to all home row mods with layers on my thumb keys.
+
+This does allow for more rolls, and I have found chord/rolls simply from having my
+xmonad controls be GUI-some-home-row-key-or-close. When Gui is your index finger,
+everything gets easier.
+
+Somewhere along the way I got a corne, and everything had to be small. and I realized
+that everything really was small. My layers are blending back, with LTs near the
+home row, and all the thumbs. On my dactyl I currently have 8 thumb keys per thumb,
+I don't know what to do with them all. Remembering a time I thought that would be
+awesome.
+
+### tap_taplong and open_openclose
+In process_records.c I have a nice couple of functions,
+tap_taplong(), and open_openclose() for my non MT/LT functionality.
+
+ * I have home row mods for Shift, Ctrl, Alt, and Gui on both hands.
+ * I have a number of LT mods to raise layers nearby. Nav, toprows, symbol, keypad
+ are on both hands on the first and third rows around home row.
+ * Xmonad tap_taplong to pull up desktops or terminals with tap or hold.
+ * C-c/C-v, C-t/C-n, C-w/C-q are all on my Navigation layer as custom keys with tap_taplong.
+ * My thumbs are Enter/space and Esc/backspace which are also Navigation and toprows and symbol layers. They used to be GUI,CTRL,ALT,SFT. but all that's on the home row now.
+ * All of the paired characters on my symbol layer have a hold which closes them, and moves the cursor back between.
+
+### caps word
+Holding both pinkies on home row for double tapping term, is effectively
+right-shift and left-shift, invokes caps-word. The next word will be capitalized.
+It continues until it shouldn't.
+
+BEPO vs Qwerty Locale/language/Layers
---------------------
+Essentially they are different keycode sets. So anything that needs them, causes a layer.
+So there are two symbol layers, two toprows layers, two keypad layers.
+One for Qwerty and one for bepo. The Navigation layer is not affected.
-There are 7 base layers. Dvorak, qwerty, Colemak, Workman, and Norman work on a Qwerty software layer on the OS. Dvorak_on_bepo and Bepo both work on a Bepo software layer on the os.
-Dvorak on qwerty is the default. There is a function in ericgebhart.c which will allow the keyboard
-to persist it's default layer through power down. It is currently commented out.
-
-I don't actually use Qwerty, but it seemed like I should have it,
-@drashna had it along with Colemak, Workman and Norman so I added them
-to my existing dvorak and bepo definitions.
-
-There are two tap dance functions that allow switching the default layers
-and the overlay layers.
+I only have bepo, dvorak and beakl on bepo. There are a bunch for Qwerty.
+I have a ton of basic layers. I'm most interested in beakl at the moment, but I've used Dvorak for more than 20 years. There is also qwerty, colemak, norman, carplax, etc.
-The default layers switch according to the current OS keyboard of the current Default layer.
-Shifting the key, causes the selection to use the other OS keyboard selections. ie,
-if you are on qwerty, you get dvorak, qwerty, colemak, workman and norman. If you shift it you get
-dvorak on bepo and bepo. If you are not on qwerty the unshifted taps get dvorak and bepo on bepo.
+The navigation/mouse layer is not affected by bepo/qwerty, but symbols and numbers are.
+There are bepo versions of everything that needs it.
-The other tap dance for layers is for the symbol, mouse and layers layers. The layers layer is just a
-safety layer, knowing I can get to if I screw something up...
+Navigation Layer
+-----------------------
+I do not use a mouse. I use Xmonad as my window manager, and I have
+practically no use for one. They are necessary however. So I have
+a Navigation layer which is all mouse, arrows, home, end, tab, page
+up, down, 5 mouse buttons and so on.
+This layer is not affected by bepo/qwerty, but symbols and numbers are.
+There are bepo versions of everything that needs it.
+
+Arrow combos work just fine, in emacs I use SFT(arrows) to move between windows.
+To do this; shift is my left pinky home, Nav is right thumb Enter, and one of the four
+home keys of my left hand are the arrows. Home row mods allow this to work well.
+
+I don't use the arrows on the dactyl and kinesis, even though they are there.
+
+Symbol Layer
+-------------------
+The symbol layer is based on the Beakl15 symbol layer.
+The beakl symbol layer is intuitive and fairly easy to remember. There are 3 versions.
+The original, an extended called A, and an extended and enhanced for vi, called B.
+The primary purpose of the extension was to provide keys which might not be available
+elsewhere on the default layer. B, takes this further and moves :/? to better places.
+
+TopRows Layer
+--------------------
+I think, truly this is the layer that makes tiny keyboards accessible in the beginning.
+This is basically the number row, the shifted number row and the function key row.
+I have them so it is numbers on the home row, shifted keys above and functions below.
+There are multiple choices, I currently use the beakl number row, with everything
+else as you would expect.
+
+Keypad Layer
+--------------
+There are several variations of keypads and function key pads in various sizes.
+Currently I am using a Beakl Keypad on the left hand and 3x4 funcpad on the right.
+
+OLED
+--------------------
+It shows the basic stuff I could find in most places. The
+default layer, the current layer, the mods, the locks, the last key pressed, and
+a map of the current layer as simply as possible. I'm sure there is more that could
+be done. @Drashna has some fancy stuff. If the display is big enough, there is even
+a display of the current layer's keymap.
XMonad
---------------------
+I use xmonad. Gui is my hot key for that. With home row mods I have home
+row chords which give me access to my desktops, my scratchpads/terminals,
+custom key KC_XM_PORD, among others. It sometimes feels that I am playing
+an instrument when I invoke xmonad to do something.
+
+I had an xmonad layer at one time, it was basically dvorak, I would invoke it
+with a GUI mod, so that even on bepo, or colemak, my xmonad commands remain the same.
-Additionally there is an advanced tap dance called XMONAD_ESC. One tap is Escape, tap and hold is
-LGUI with the proper XMONAD layer, it is essentially dvorak, for the
-given OS layer. 2 taps is Shift lgui with xmonad, and 2 taps and hold
-is Control LGUI with Xmonad. This allows for the finger patterns for
-Xmonad to remain the same regarless of the keyboard in use. The hold
-versions allow for secondary menu selection in Xmonad, the 2 tap function
-must be for a key that is in the top level keymap of Xmonad. This is how
-many people use xmonad so it's not a real problem. There are plenty of
-keys combinations to choose from with these choices. The function can
-be expanded to 3 taps and 3 tap and hold, and on and on....
+I'm going to need to revisit that, as things are, all the commands move when I change
+to a different default layer from dvorak.
-I have a few other special keys, for momentary symbols or shift on the home row of each hand.
+Combo's can alleviate some of this pain. More to play with.
-Also, after using a kinesis for many years I'm very accustomed to the
-space, enter, backspace and delete keys on the thumbs. I've added control
-and alt as a secondary function. These are also the Control and Alt keys
-if held down.
Tap Dance
--------------------
-
-Additionally there are other tap dance functions, tab-backtab, home-end as well as I few I'm not actually using.
-
-Building and flashing
------------------------
-
-```make ergodox_z:ericgebhart``` will compile the code.
-
-I use the teensy-loader cli so that's all I know. There is a script here called flash_ergodox
-
-Use it like this,
-
-```flash-ergodox <path to your hex file>```
-
-then use a paperclip to push the reset button on your keyboard.
+I have a lot of tap dance, It's turned off. It's big. tap-hold works pretty well most of the time, instead.
+My favorites were tab-backtab, home-end.
Switching the OS keyboard
-------------------------
-
This varies from system to system. I use Arch Linux, so I use ```setxkbmap```.
I've included a helper script which makes it easy to switch between EN and FR Bepo,
-called switch-kbd.
+called switch-kbd. In xmonad I invoke this with a keystroke. so, same deal. just map
+the keystroke to a key.
diff --git a/users/ericgebhart/rules.mk b/users/ericgebhart/rules.mk
index 698f6131ed..8afaeb7808 100755
--- a/users/ericgebhart/rules.mk
+++ b/users/ericgebhart/rules.mk
@@ -1,14 +1,34 @@
SRC += ericgebhart.c
+SRC += tap_dances.c
+SRC += process_records.c
+SRC += caps_word.c
+SRC += altlocal_keys.c
+
+VPATH += keyboards/gboards
+
+OLED_ENABLE = yes
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += $(USER_PATH)/oled_stuff.c
+endif
+
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # USB Nkey Rollover - for issues, see github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # Enable N-Key Rollover
SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard
-KEY_LOCK_ENABLE = yes # Enable the KC_LOCK key
-TAP_DANCE_ENABLE = yes # Enable the tap dance feature.
+KEY_LOCK_ENABLE = no # Enable the KC_LOCK key
+TAP_DANCE_ENABLE = no # Enable the tap dance feature.
CONSOLE_ENABLE = no # Console for debug
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
UNICODE_ENABLE = no
SLEEP_LED_ENABLE = no
+
+LTO_ENABLE = yes
+
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+COMBO_ENABLE = yes
diff --git a/users/ericgebhart/tap_dances.c b/users/ericgebhart/tap_dances.c
new file mode 100755
index 0000000000..9f344986aa
--- /dev/null
+++ b/users/ericgebhart/tap_dances.c
@@ -0,0 +1,269 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#ifdef TAP_DANCES_ENABLE
+
+#include "tap_dances.h"
+
+#include "action.h"
+#include "action_layer.h"
+#include "process_keycode/process_tap_dance.h"
+
+void tap_dance_mouse_btns (qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count){
+ case 1:
+ register_code(KC_BTN1);
+ break;
+ case 2:
+ register_code(KC_BTN2);
+ break;
+ case 3:
+ register_code(KC_BTN3);
+ break;
+ case 4:
+ register_code(KC_BTN4);
+ break;
+ case 5:
+ register_code(KC_BTN5);
+ break;
+ default:
+ break;
+ }
+ reset_tap_dance(state);
+}
+
+// counting on all the qwerty layers to be less than dvorak_on_bepo
+int on_qwerty(){
+ uint8_t deflayer = (biton32(default_layer_state));
+ return (deflayer < _DVORAK_BP);
+}
+
+static void switch_default_layer(uint8_t layer) {
+ default_layer_set(1UL<<layer);
+ clear_keyboard();
+}
+
+// so the keyboard remembers which layer it's in after power disconnect.
+/*
+ uint32_t default_layer_state_set_kb(uint32_t state) {
+ eeconfig_update_default_layer(state);
+ return state;
+ }
+*/
+
+void tap_dance_df_bepo_layers_switch (qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count){
+ case 1:
+ switch_default_layer(_DVORAK_BP);
+ break;
+ case 2:
+ switch_default_layer(_BEPO);
+ break;
+ case 3:
+ layer_invert(_LAYERS);
+ break;
+ default:
+ break;
+ }
+ reset_tap_dance(state);
+}
+
+void tap_dance_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count){
+ case 1:
+ if(on_qwerty())
+ layer_invert(_SYMB);
+ else
+ layer_invert(_SYMB_BP);
+ break;
+ case 2:
+ layer_invert(_NAV);
+ break;
+ case 3:
+ layer_invert(_LAYERS);
+ break;
+ case 4:
+ if(on_qwerty())
+ layer_invert(_KEYPAD);
+ else
+ layer_invert(_KEYPAD_BP);
+ break;
+ default:
+ break;
+ }
+ reset_tap_dance(state);
+}
+
+void tap_dance_default_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count){
+ case 1:
+ switch_default_layer(_DVORAK);
+ break;
+ case 2:
+ switch_default_layer(_DVORAK_BP);
+ break;
+ case 3:
+ switch_default_layer(_BEPO);
+ break;
+ default:
+ break;
+ }
+ reset_tap_dance(state);
+}
+
+// switch the default layer to another qwerty based layer.
+void switch_default_layer_on_qwerty(int count) {
+ switch(count){
+ case 1:
+ switch_default_layer(_DVORAK);
+ break;
+ case 2:
+ switch_default_layer(_QWERTY);
+ break;
+ case 3:
+ switch_default_layer(_COLEMAK);
+ break;
+
+ /* case 4: */
+ /* switch_default_layer(_WORKMAN); */
+ /* break; */
+ /* case 5: */
+ /* switch_default_layer(_NORMAN); */
+ /* break; */
+
+ default:
+ switch_default_layer(_DVORAK);
+ break;
+ }
+}
+
+// switch the default layer to another bepo based layer.
+void switch_default_layer_on_bepo(int count) {
+ switch(count){
+ case 1:
+ switch_default_layer(_DVORAK_BP);
+ break;
+ case 2:
+ switch_default_layer(_BEPO);
+ break;
+ default:
+ switch_default_layer(_DVORAK_BP);
+ break;
+ }
+}
+
+
+// tap to change the default layer. Distinguishes between layers that are based on
+// a qwerty software keyboard and a bepo software keyboard.
+// if shifted, choose layers based on the other software keyboard, otherwise choose only
+// layers that work on the current software keyboard.
+void tap_dance_default_os_layer_switch (qk_tap_dance_state_t *state, void *user_data) {
+ //uint8_t shifted = (get_mods() & MOD_BIT(KC_LSFT|KC_RSFT));
+ bool shifted = ( keyboard_report->mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
+ int qwerty = on_qwerty();
+
+
+ // shifted, choose between layers on the other software keyboard
+ if(shifted){
+ if (qwerty)
+ switch_default_layer_on_bepo(state->count);
+ else
+ switch_default_layer_on_qwerty(state->count);
+
+ // not shifted, choose between layers on the same software keyboard
+ } else {
+ if (qwerty)
+ switch_default_layer_on_qwerty(state->count);
+ else
+ switch_default_layer_on_bepo(state->count);
+ }
+
+ reset_tap_dance(state);
+}
+
+
+/* Return an integer that corresponds to what kind of tap dance should be executed.
+ *
+ * How to figure out tap dance state: interrupted and pressed.
+ *
+ * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
+ * under the tapping term. This is typically indicitive that you are trying to "tap" the key.
+ *
+ * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
+ * has ended, but the key is still being pressed down. This generally means the key is being "held".
+ *
+ * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
+ * feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
+ * For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
+ *
+ * Good places to put an advanced tap dance:
+ * z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
+ *
+ * Criteria for "good placement" of a tap dance key:
+ * Not a key that is hit frequently in a sentence
+ * Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
+ * in a web form. So 'tab' would be a poor choice for a tap dance.
+ * Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
+ * letter 'p', the word 'pepper' would be quite frustating to type.
+ *
+ * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
+ *
+ */
+int cur_dance (qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) return SINGLE_TAP;
+ //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
+ else return SINGLE_HOLD;
+ }
+ else if (state->count == 2) {
+ /*
+ * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
+ * action when hitting 'pp'. Suggested use case for this return value is when you want to send two
+ * keystrokes of the key, and not the 'double tap' action/macro.
+ */
+ if (state->interrupted) return DOUBLE_SINGLE_TAP;
+ else if (state->pressed) return DOUBLE_HOLD;
+ else return DOUBLE_TAP;
+ }
+ //Assumes no one is trying to type the same letter three times (at least not quickly).
+ //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
+ //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
+ if (state->count == 3) {
+ if (state->interrupted || !state->pressed) return TRIPLE_TAP;
+ else return TRIPLE_HOLD;
+ }
+ else return 8; //magic number. At some point this method will expand to work for more presses
+}
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ //Tap once for Esc, twice for Caps Lock
+ [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
+ [TD_TAB_BKTAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, LSFT(KC_TAB)),
+ [TD_RIGHT_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_TAB),
+ [TD_LEFT_BACKTAB] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, LSFT(KC_TAB)),
+ [TD_UP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_HOME),
+ [TD_DOWN_END] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_END),
+ [TD_MDIA_SYMB] = ACTION_TAP_DANCE_FN(tap_dance_layer_switch),
+ [TD_DVORAK_BEPO] = ACTION_TAP_DANCE_FN(tap_dance_df_bepo_layers_switch),
+ [TD_DEF_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_layer_switch),
+ [TD_DEF_OS_LAYER_SW] = ACTION_TAP_DANCE_FN(tap_dance_default_os_layer_switch),
+ [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
+ [TD_MOUSE_BTNS] = ACTION_TAP_DANCE_FN(tap_dance_mouse_btns)
+
+};
+
+#endif
diff --git a/users/ericgebhart/tap_dances.h b/users/ericgebhart/tap_dances.h
new file mode 100755
index 0000000000..11978467a7
--- /dev/null
+++ b/users/ericgebhart/tap_dances.h
@@ -0,0 +1,19 @@
+#pragma once
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "ericgebhart.h"
diff --git a/users/jonavin/config.h b/users/jonavin/config.h
index 7b6e335e3c..d694bc5371 100644
--- a/users/jonavin/config.h
+++ b/users/jonavin/config.h
@@ -26,6 +26,9 @@
#define TAPPING_TERM_PER_KEY
#ifdef RGB_MATRIX_ENABLE
+ #ifdef RGB_MATRIX_STARTUP_MODE
+ #undef RGB_MATRIX_STARTUP_MODE
+ #endif
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
#endif
diff --git a/users/jonavin/readme.md b/users/jonavin/readme.md
index 8ec0e0ea16..204032ae1a 100644
--- a/users/jonavin/readme.md
+++ b/users/jonavin/readme.md
@@ -119,6 +119,6 @@ LIST OF COMPATIBLE KEYMAPS
- mechwild/mercutio
- mechwild/murphpad
- mechwild/OBE
-- nopunin10did/kastenwagen (*)
+- kbdfans/kdb67
+- nopunin10did/kastenwagen48
- (*) coming soon
diff --git a/users/mnil/mnil.c b/users/mnil/mnil.c
index 11d5ee28df..d5bd0ef0bb 100644
--- a/users/mnil/mnil.c
+++ b/users/mnil/mnil.c
@@ -86,7 +86,7 @@ void ae_finished(qk_tap_dance_state_t *state, void *user_data) {
register_code(KC_A);
break;
case SINGLE_HOLD:
- tap_code(SE_AE);
+ tap_code(SE_ADIA);
break;
case DOUBLE_SINGLE_TAP:
tap_code(KC_A);
@@ -113,15 +113,15 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) {
aa_tap_state.state = cur_dance(state);
switch (aa_tap_state.state) {
case SINGLE_TAP:
- register_code(SE_OSLH);
+ register_code(SE_ODIA);
break;
case SINGLE_HOLD:
- register_code(SE_AA);
- unregister_code(SE_AA);
+ register_code(SE_ARNG);
+ unregister_code(SE_ARNG);
break;
case DOUBLE_SINGLE_TAP:
- tap_code(SE_OSLH);
- register_code(SE_OSLH);
+ tap_code(SE_ODIA);
+ register_code(SE_ODIA);
break;
}
}
@@ -129,10 +129,10 @@ void aa_finished(qk_tap_dance_state_t *state, void *user_data) {
void aa_reset(qk_tap_dance_state_t *state, void *user_data) {
switch (aa_tap_state.state) {
case SINGLE_TAP:
- unregister_code(SE_OSLH);
+ unregister_code(SE_ODIA);
break;
case DOUBLE_SINGLE_TAP:
- unregister_code(SE_OSLH);
+ unregister_code(SE_ODIA);
break;
}
aa_tap_state.state = 0;
diff --git a/users/noroadsleft/noroadsleft.c b/users/noroadsleft/noroadsleft.c
index 82b0b0568f..28bfa9e6c6 100644
--- a/users/noroadsleft/noroadsleft.c
+++ b/users/noroadsleft/noroadsleft.c
@@ -17,11 +17,6 @@
#include "noroadsleft.h"
#include "version.h"
-/*******************
-** MODIFIER MASKS **
-*******************/
-bool macroMode = 0;
-
__attribute__((weak))
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; };
@@ -73,60 +68,35 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case M_SALL:
if (record->event.pressed) {
- if ( macroMode == 1 ) {
- SEND_STRING(SS_LGUI("a"));
- } else {
- SEND_STRING(SS_LCTL("a"));
- }
+ tap_code16(C(KC_A));
}
return false;
case M_UNDO:
if (record->event.pressed) {
- if ( macroMode == 1 ) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- SEND_STRING(SS_LSFT(SS_LGUI("z")));
- } else {
- SEND_STRING(SS_LGUI("z"));
- }
- } else {
- SEND_STRING(SS_LCTL("z"));
- }
+ register_code(KC_LCTL);
+ register_code(KC_Z);
+ } else {
+ unregister_code(KC_Z);
+ unregister_code(KC_LCTL);
}
return false;
case M_CUT:
if (record->event.pressed) {
- if ( macroMode == 1 ) {
- SEND_STRING(SS_LGUI("x"));
- } else {
- SEND_STRING(SS_LCTL("x"));
- }
+ tap_code16(C(KC_X));
}
return false;
case M_COPY:
if (record->event.pressed) {
- if ( macroMode == 1 ) {
- SEND_STRING(SS_LGUI("c"));
- } else {
- SEND_STRING(SS_LCTL("c"));
- }
+ tap_code16(C(KC_C));
}
return false;
case M_PASTE:
if (record->event.pressed) {
- if ( macroMode == 1 ) {
- if ( get_mods() & MOD_MASK_SHIFT ) {
- SEND_STRING(SS_LSFT(SS_LALT(SS_LGUI("v"))));
- } else {
- SEND_STRING(SS_LGUI("v"));
- }
- } else {
- SEND_STRING(SS_LCTL("v"));
- }
- }
- return false;
- case M_MDSWP:
- if (record->event.pressed) {
- macroMode ^= 1;
+ register_code(KC_LCTL);
+ register_code(KC_V);
+ } else {
+ unregister_code(KC_V);
+ unregister_code(KC_LCTL);
}
return false;
case KC_1 ... KC_0:
@@ -159,33 +129,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
return false;
- case KC_PSCR:
- if (record->event.pressed) {
- if ( macroMode == 1 ) {
- tap_code16(G(S(KC_3)));
- } else {
- tap_code(KC_PSCR);
- }
- }
- return false;
- case KC_HOME:
- if (record->event.pressed) {
- if ( macroMode == 1 ) {
- tap_code16(G(KC_LEFT));
- } else {
- tap_code(KC_HOME);
- }
- }
- return false;
- case KC_END:
- if (record->event.pressed) {
- if ( macroMode == 1 ) {
- tap_code16(G(KC_RGHT));
- } else {
- tap_code(KC_END);
- }
- }
- return false;
} // switch()
return true;
};
diff --git a/users/noroadsleft/noroadsleft.h b/users/noroadsleft/noroadsleft.h
index 52bcec0abd..12bb5b465a 100644
--- a/users/noroadsleft/noroadsleft.h
+++ b/users/noroadsleft/noroadsleft.h
@@ -19,7 +19,6 @@
#include QMK_KEYBOARD_H
#define MOD_MASK_RALT (MOD_BIT(KC_RALT))
-extern bool macroMode;
enum userspace_keycodes {
VRSN = SAFE_RANGE,
@@ -31,7 +30,6 @@ enum userspace_keycodes {
M_CUT,
M_COPY,
M_PASTE,
- M_MDSWP,
KEYMAP_SAFE_RANGE
};
diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md
index 1173d15ec1..e8279c0333 100644
--- a/users/noroadsleft/readme.md
+++ b/users/noroadsleft/readme.md
@@ -13,7 +13,7 @@ This directory holds the code that's the same for every keyboard I use in QMK, w
Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like:
- kc60:noroadsleft @ 0.6.326-6-gae6d7b-dirty
+ kc60:noroadsleft # @ 0.6.326-6-gae6d7b-dirty
### Git Macros
@@ -21,40 +21,37 @@ Some frequently used Git commands.
| Keycode | Output | Output with <kbd>Shift</kbd> |
| :---------------------------------- | :--------------------- | :--------------------------- |
-| [`G_PUSH`](./noroadsleft.c#L49-L53) | `git push origin ` | `git push origin ` |
-| [`G_FTCH`](./noroadsleft.c#L54-L63) | `git fetch upstream ` | `git pull upstream ` |
-| [`G_BRCH`](./noroadsleft.c#L64-L73) | `master` | `$(git branch-name)` |
+| [`G_PUSH`](./noroadsleft.c#L44-L48) | `git push origin ` | `git push origin ` |
+| [`G_FTCH`](./noroadsleft.c#L49-L58) | `git fetch upstream ` | `git pull upstream ` |
+| [`G_BRCH`](./noroadsleft.c#L59-L68) | `master` | `$(git branch-name)` |
`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally returns the name of the current branch.
-### "Macro Mode" Macros and Customized Keycodes
+### Customized Keycodes
-Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L127-L131) by the `M_MDSWP` custom keycode.[<sup>1</sup>](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively).
+I used to have a boolean variable that changed the functionality of these keycodes, but I no longer work in the environment that I wrote the functionality for, so I took it out. The keycodes still exist because all my `keymap.c` files reference the custom keycodes I defined.
-| Keycode | `macroMode == 0` | `macroMode == 1` | `macroMode == 1` with <kbd>Shift</kbd> |
-| :------------------------------------- | :--------------- | :--------------- | :------------------------------------- |
-| [`M_SALL`](./noroadsleft.c#L74-L82) | `Ctrl+A` | `Cmd+A` | `Cmd+A` |
-| [`M_UNDO`](./noroadsleft.c#L83-L95) | `Ctrl+Z` | `Cmd+Z` | `Cmd+Shift+Z` |
-| [`M_CUT`](./noroadsleft.c#L96-L104) | `Ctrl+X` | `Cmd+X` | `Cmd+X` |
-| [`M_COPY`](./noroadsleft.c#L105-L113) | `Ctrl+C` | `Cmd+C` | `Cmd+C` |
-| [`M_PASTE`](./noroadsleft.c#L114-L126) | `Ctrl+V` | `Cmd+V` | `Cmd+Shift+Opt+V` |
-| [`KC_PSCR`](./noroadsleft.c#L162-L170) | `KC_PSCR` | `Cmd+Shift+3` | `Cmd+Shift+3` |
-| [`KC_HOME`](./noroadsleft.c#L171-L179) | `KC_HOME` | `Cmd+Left` | `Cmd+Left` |
-| [`KC_END`](./noroadsleft.c#L180-L188) | `KC_END` | `Cmd+Right` | `Cmd+Right` |
+| Keycode | Action |
+| :------------------------------------ | :-------- |
+| [`M_SALL`](./noroadsleft.c#L69-L73) | `Ctrl+A` |
+| [`M_UNDO`](./noroadsleft.c#L74-L82) | `Ctrl+Z` |
+| [`M_CUT`](./noroadsleft.c#L83-L87) | `Ctrl+X` |
+| [`M_COPY`](./noroadsleft.c#L88-L92) | `Ctrl+C` |
+| [`M_PASTE`](./noroadsleft.c#L93-L101) | `Ctrl+V` |
-### [Emulated Non-US Backslash](./noroadsleft.c#L32-L42)
+### [Emulated Non-US Backslash](./noroadsleft.c#L27-L37)
Sometimes I type in languages from countries that use ISO layout, but my keyboards are all ANSI layout, so I have one key fewer than necessary.
This macro simulates the Non-US Backslash key if I hold Right Alt and tap the key to the right of Left Shift.
-Requires defining `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` in `config.h` at the keymap level.[<sup>2</sup>](#footnotes)
+Requires defining `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` in `config.h` at the keymap level.[<sup>1</sup>](#footnotes)
-### [Emulated Numeric Keypad](./noroadsleft.c#L132-L146)
+### [Emulated Numeric Keypad](./noroadsleft.c#L102-L116)
If I hold the Right Alt key, the number row (`KC_1` through `KC_0`) will output numpad keycodes instead of number row keycodes, enabling quicker access to characters like ™ and °.
-### [Emulated Extended Function Keys](./noroadsleft.c#L147-L161)
+### [Emulated Extended Function Keys](./noroadsleft.c#L117-L131)
Similar to the emulated numpad, if I hold the Right Alt key with the Fn key, the function row (`KC_F1` through `KC_F12`) will output keycodes `KC_F13` throught `KC_F24`.
@@ -79,11 +76,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
## Footnotes
-- 1: [^](#macro-mode-macros-and-customized-keycodes) The `M_MDSWP` keycode is used in my keymaps in the following locations:
- - [KC60](../../keyboards/kc60/keymaps/noroadsleft/keymap.c#L111)
- - [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c#L93)
- - [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c#L66)
-- 2: [^](#emulated-non-us-backslash) `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` are in the following locations:
+- 1: [^](#emulated-non-us-backslash) `ANSI_NUBS_ROW` and `ANSI_NUBS_COL` are in the following locations:
- [KC60](../../keyboards/kc60/keymaps/noroadsleft/config.h#L35-L36)
- [KBDfans KBD75 rev1](../../keyboards/kbdfans/kbd75/keymaps/noroadsleft/config.h#L26-L27)
- [CoseyFannitutti Discipline](../../keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h#L19-L20)
diff --git a/users/riblee/riblee.c b/users/riblee/riblee.c
index 307c697204..02ba246f60 100644
--- a/users/riblee/riblee.c
+++ b/users/riblee/riblee.c
@@ -18,15 +18,13 @@
#include "raw_hid.h"
#include <string.h>
-const uint8_t shift = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT);
-
// Tap Dance functions
void dance_key_a (qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
SEND_STRING("a");
reset_tap_dance(state);
} else if (state->count == 2) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("á");
} else {
send_unicode_string("Á");
@@ -41,7 +39,7 @@ void dance_key_e (qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING("e");
reset_tap_dance(state);
} else if (state->count == 2) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("é");
} else {
send_unicode_string("É");
@@ -56,7 +54,7 @@ void dance_key_i (qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING("i");
reset_tap_dance(state);
} else if (state->count == 2) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("í");
} else {
send_unicode_string("Í");
@@ -71,7 +69,7 @@ void dance_key_o (qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING("o");
reset_tap_dance(state);
} else if (state->count == 2) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ó");
} else {
send_unicode_string("Ó");
@@ -79,7 +77,7 @@ void dance_key_o (qk_tap_dance_state_t *state, void *user_data) {
reset_tap_dance(state);
} else if (state->count == 3) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ö");
} else {
send_unicode_string("Ö");
@@ -87,7 +85,7 @@ void dance_key_o (qk_tap_dance_state_t *state, void *user_data) {
reset_tap_dance(state);
} else if (state->count == 4) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ő");
} else {
send_unicode_string("Ő");
@@ -102,7 +100,7 @@ void dance_key_u (qk_tap_dance_state_t *state, void *user_data) {
SEND_STRING("u");
reset_tap_dance(state);
} else if (state->count == 2) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ú");
} else {
send_unicode_string("Ú");
@@ -110,7 +108,7 @@ void dance_key_u (qk_tap_dance_state_t *state, void *user_data) {
reset_tap_dance(state);
} else if (state->count == 3) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ü");
} else {
send_unicode_string("Ü");
@@ -118,7 +116,7 @@ void dance_key_u (qk_tap_dance_state_t *state, void *user_data) {
reset_tap_dance(state);
} else if (state->count == 4) {
- if (!(keyboard_report->mods & shift)) {
+ if (!(keyboard_report->mods & MOD_MASK_SHIFT)) {
send_unicode_string("ű");
} else {
send_unicode_string("Ű");
@@ -164,23 +162,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
- case BACKLIT:
- if (record->event.pressed) {
- register_code(keycode_config(KC_LGUI));
-#ifdef BACKLIGHT_ENABLE
- backlight_step();
-#endif
- } else {
- unregister_code(keycode_config(KC_LGUI));
- }
- return false;
- break;
- case CG_NORM:
- set_unicode_input_mode(UC_MAC);
- break;
- case CG_SWAP:
- set_unicode_input_mode(UC_LNX);
- break;
}
return true;
};
@@ -287,3 +268,11 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
#endif
#endif
+
+void keyboard_pre_init_user(void) {
+ // Set C13 pin as output
+ setPinOutput(C13);
+
+ // Turn off the LED
+ writePinHigh(C13);
+} \ No newline at end of file
diff --git a/users/riblee/riblee.h b/users/riblee/riblee.h
index f7340d50b2..786e4c31ab 100644
--- a/users/riblee/riblee.h
+++ b/users/riblee/riblee.h
@@ -35,7 +35,6 @@ enum custom_keycodes {
COLEMAK,
DVORAK,
WORKMAN,
- BACKLIT
};
#define LOWER MO(_LOWER)
diff --git a/users/scheiklp/koy_keys_on_quertz_de_latin1.h b/users/scheiklp/koy_keys_on_quertz_de_latin1.h
index 4f39b7631c..e098e75dfc 100644
--- a/users/scheiklp/koy_keys_on_quertz_de_latin1.h
+++ b/users/scheiklp/koy_keys_on_quertz_de_latin1.h
@@ -61,3 +61,4 @@ Additionally, there are some common chars that we dit not yet define:
#define N_COPY LCTL(KC_C) // CTRL+C
#define N_CUT LCTL(KC_X) // CTRL+X
#define N_UNDO LCTL(N_Z) // CTRL+Z
+#define N_ACUT KC_EQL // ´
diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h
index 60592c3c6b..b883a21dd2 100644
--- a/users/stanrc85/config.h
+++ b/users/stanrc85/config.h
@@ -12,9 +12,15 @@
#ifdef KEYBOARD_sneakbox_aliceclone
#define INDICATOR_PIN_0 D7
#define INDICATOR_PIN_1 D6
- #define INDICATOR_PIN_2 D4
+ #define INDICATOR_PIN_2 D4
#endif
#ifdef KEYBOARD_boardsource_the_mark
#define RGB_MATRIX_KEYPRESSES
-#endif \ No newline at end of file
+#endif
+
+#ifdef KEYBOARD_jacky_studio_bear_65
+ #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #define ENABLE_RGB_MATRIX_MULTISPLASH
+ #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#endif
diff --git a/users/uqs/config.h b/users/uqs/config.h
new file mode 100644
index 0000000000..b8a140fe87
--- /dev/null
+++ b/users/uqs/config.h
@@ -0,0 +1,40 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifdef RGBLIGHT_ENABLE
+# define RGBLIGHT_SLEEP
+//# define RGBLIGHT_ANIMATIONS // disabled to save space
+# define RGBLIGHT_LAYERS
+# define RGBLIGHT_MAX_LAYERS 8 // default is 16
+# define RGBLIGHT_DISABLE_KEYCODES // RGB_foo keys no longer work, saves 600 bytes
+# define RGBLIGHT_DEFAULT_HUE 15
+#endif
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6 // default is 4 for VIA builds
+
+#define TAPPING_TOGGLE 2 // number of taps for a toggle-on-tap
+#define TAPPING_TERM 170 // ms to trigger tap
+// https://precondition.github.io/home-row-mods
+#define TAPPING_FORCE_HOLD // make tap-then-hold _not_ do key auto repeat
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD // I don't think this works for me, hence I rolled my own implementation.
+
+#define LEADER_TIMEOUT 400
+#define LEADER_PER_KEY_TIMING
+
+#define UNICODE_SELECTED_MODES UC_LNX
+
+// make KC_ACL0 et al work when held.
+#define MK_COMBINED
+#define MOUSEKEY_WHEEL_INTERVAL 40 // default is 50, lower means more scroll events, 40 works ok.
+
+// From https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/
+#define USB_POLLING_INTERVAL_MS 1
+
+#ifdef KEYBOARD_preonic_rev3
+// Some games seem to not register Esc otherwise when tapped, maybe try with this delay?
+# define TAP_CODE_DELAY 30
+#else
+# define TAP_CODE_DELAY 10
+#endif
diff --git a/users/uqs/rules.mk b/users/uqs/rules.mk
new file mode 100644
index 0000000000..6050362952
--- /dev/null
+++ b/users/uqs/rules.mk
@@ -0,0 +1,24 @@
+# don't include for keyboards/ploopyco/mouse/keymaps/uqs
+ifeq ($(filter $(strip $(KEYBOARD)),ploopyco/mouse),)
+ SRC += uqs.c
+
+ RGBLIGHT_ENABLE ?= yes # Enable keyboard RGB underglow
+ LTO_ENABLE ?= yes # disables the legacy TMK Macros and Functions features
+
+ UCIS_ENABLE = yes
+ LEADER_ENABLE = yes
+ COMBO_ENABLE = yes
+ MOUSEKEY_ENABLE = yes
+
+ # Disable all the unused stuff.
+ SPACE_CADET_ENABLE = no
+ COMMAND_ENABLE = no
+ MAGIC_ENABLE = no
+endif
+
+# From https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/
+# adds about 900 bytes! Don't use it on puny AVR though.
+# ifeq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) # doesn't work MCU not set yet
+ifneq (,$(filter $(KEYBOARD),ploopyco/mouse preonic/rev3))
+ DEBOUNCE_TYPE = asym_eager_defer_pk
+endif
diff --git a/users/uqs/uqs.c b/users/uqs/uqs.c
new file mode 100644
index 0000000000..72284143c6
--- /dev/null
+++ b/users/uqs/uqs.c
@@ -0,0 +1,584 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4:
+
+#include "uqs.h"
+
+// LOG:
+// late Jan 2020, got Ohkeycaps Dactyl Manuform 5x6
+// https://play.typeracer.com shows about 75-80wpm (en) or ~400cpm (de) on my classic keeb.
+// Never did proper touch typing, basically didn't use ring finger much, mostly index/middle and pinky (only to hold down modifiers, really).
+// Feb 2020, switching to Colemak DH after 30 years of Qwerty, uh oh...
+// mid Feb, 20wpm/87% on monkeytype.com (no punct, numbers)
+// early March, 28wpm/90% on MT (plus punct./numbers from here on); 25wpm on typeracer
+// early April, 35wpm/92% on MT; 41wpm on typeracer
+// early May, 45wpm/96% on MT; 46wpm on typeracer; my qwerty is deteriorating, I need to look at the keys more and more o_O
+// early June, 49wpm/95% on MT (sigh ...); 50wpm on typeracer;
+// early July, 50wpm/96% on MT (...); 52wpm/96% on typeracer;
+// early August, 55wpm/96% on MT; 55wpm/98% on typeracer;
+// early September, 57wpm/97% on MT; 58wpm/97% on typeracer;
+// early October, 59wpm/96% on MT; 61wpm/97% on typeracer;
+// November, 56wpm/97% on MT; 62wpm/98% on typeracer;
+// December, 62wpm/96% on MT; 66wpm/98% on typeracer;
+// January, 61wpm/97% on MT; 65wpm/98% on typeracer;
+// February, 64wpm/97% on MT; 67wpm/98% on typeracer; my qwerty on the laptop is still fine, but I miss my shortcuts badly.
+//
+// So that's one year on Colemak. Was it worth the switch? Probably not, though
+// I also had to first learn proper technique, but that was actually swift, as
+// the keyboard nicely forces that on you. I really like home row mods though,
+// they are so comfy. Need to rethink my combos some more, still.
+
+
+#ifdef RGBLIGHT_LAYERS
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(L_QWER, layer_state_cmp(state, L_QWER));
+ rgblight_set_layer_state(L_WASD, layer_state_cmp(state, L_WASD));
+ rgblight_set_layer_state(L_COLM, layer_state_cmp(state, L_COLM));
+ return state;
+}
+#endif
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#if 0
+ // defining layer L_FUNC when both keys are pressed
+ state = update_tri_layer_state(state, L_EXTD, L_NUM, L_FUNC);
+#endif
+#ifdef RGBLIGHT_LAYERS
+ rgblight_set_layer_state(L_EXTD, layer_state_cmp(state, L_EXTD));
+ rgblight_set_layer_state(L_NUM, layer_state_cmp(state, L_NUM));
+ rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, L_FUNC));
+ rgblight_set_layer_state(L_MOUSE, layer_state_cmp(state, L_MOUSE));
+#else
+#endif
+ return state;
+}
+
+#ifdef RGBLIGHT_LAYERS
+// NOTE: at most 2 elements, last one needs to be RGBLIGHT_END_SEGMENTS
+typedef rgblight_segment_t rgblight_layer_t[3];
+
+const rgblight_layer_t PROGMEM my_rgb_segments[] = {
+ [L_QWER] = {{0, RGBLED_NUM, HSV_WHITE}, RGBLIGHT_END_SEGMENTS},
+ [L_WASD] = {{0, RGBLED_NUM/2, HSV_RED}, {RGBLED_NUM/2, RGBLED_NUM/2, HSV_OFF}, RGBLIGHT_END_SEGMENTS},
+ [L_COLM] = {{0, RGBLED_NUM, HSV_GREEN}, RGBLIGHT_END_SEGMENTS},
+ [L_EXTD] = {{0, RGBLED_NUM, HSV_BLUE}, RGBLIGHT_END_SEGMENTS},
+ [L_NUM] = {{0, RGBLED_NUM, HSV_ORANGE}, RGBLIGHT_END_SEGMENTS},
+ [L_FUNC] = {{0, RGBLED_NUM, HSV_YELLOW}, RGBLIGHT_END_SEGMENTS},
+ [L_MOUSE]= {{0, RGBLED_NUM, HSV_PURPLE}, RGBLIGHT_END_SEGMENTS},
+};
+
+// This array needs pointers, :/
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = {
+ my_rgb_segments[L_QWER],
+ my_rgb_segments[L_WASD],
+ my_rgb_segments[L_COLM],
+ my_rgb_segments[L_EXTD],
+ my_rgb_segments[L_NUM],
+ my_rgb_segments[L_FUNC],
+ my_rgb_segments[L_MOUSE],
+};
+
+_Static_assert(sizeof(my_rgb_layers) / sizeof(my_rgb_layers[0]) ==
+ sizeof(my_rgb_segments) / sizeof(my_rgb_segments[0]),
+ "Number of rgb_segment definitions does not match up!");
+#endif
+
+#ifdef COMBO_ENABLE
+enum combo_events {
+ C_AUML,
+ C_OUML,
+ C_UUML,
+ C_SZ,
+ C_CBR,
+ C_PRN,
+ C_BRC,
+};
+
+// Maybe use this?
+// #define COMBO_ONLY_FROM_LAYER L_COLM
+
+// The official way has way too much duplication and intermediate names for my taste...
+const uint16_t PROGMEM my_action_combos[][3] = {
+ [C_AUML] = {KC_G_A, KC_W, COMBO_END},
+ [C_OUML] = {KC_G_O, KC_Y, COMBO_END},
+ [C_UUML] = {KC_C_N, KC_U, COMBO_END},
+ [C_SZ] = {KC_S_S, KC_Z, COMBO_END},
+ [C_CBR] = {KC_COLN, KC_LCBR, COMBO_END},
+ [C_PRN] = {KC_LCBR, KC_LPRN, COMBO_END},
+ [C_BRC] = {KC_LPRN, KC_LBRC, COMBO_END},
+};
+const uint16_t PROGMEM my_combos[][4] = {
+ {KC_LPRN, KC_F, KC_P, COMBO_END},
+ {KC_RPRN, KC_C, KC_D, COMBO_END},
+ {KC_LCBR, KC_W, KC_F, COMBO_END},
+ {KC_RCBR, KC_X, KC_C, COMBO_END},
+ {KC_TAB, KC_G_A, KC_A_R, COMBO_END},
+ {KC_BSLS, KC_B, KC_J, COMBO_END}, // remove this?
+ {KC_BSLS, KC_F, KC_U, COMBO_END},
+ {LSFT(KC_BSLS), KC_P, KC_L, COMBO_END},
+ {KC_MINUS, KC_C_T, KC_C_N, COMBO_END},
+ {LSFT(KC_MINUS), KC_D, KC_H, COMBO_END},
+ {KC_GRV, KC_Q, KC_W, COMBO_END}, // remove this?
+ {KC_GRV, KC_C, KC_COMM, COMBO_END},
+ {LSFT(KC_GRV), KC_G, KC_M, COMBO_END},
+ {KC_BTN3, KC_BTN1, KC_BTN2, COMBO_END},
+ {KC_BTN1, KC_BTN2, KC_BTN3, COMBO_END},
+};
+
+const uint16_t COMBO_LEN = sizeof(my_action_combos) / sizeof(my_action_combos[0]) + sizeof(my_combos) / sizeof(my_combos[0]);
+
+#define MY_ACTION_COMBO(ck) \
+ [ck] = { .keys = &(my_action_combos[ck][0]) }
+#define MY_COMBO(ck) \
+ { .keys = &(my_combos[ck][1]), .keycode = my_combos[ck][0] }
+
+// NOTE: while my_combos can live in PROGMEM, the key_combos data also
+// contains state that is tweaked at runtime, so we need to indirect. Ugh.
+#define COMBO_STATICALLY
+#ifdef COMBO_STATICALLY
+// TODO: fill this at runtime with a loop?
+combo_t key_combos[] = {
+ MY_ACTION_COMBO(0),
+ MY_ACTION_COMBO(1),
+ MY_ACTION_COMBO(2),
+ MY_ACTION_COMBO(3),
+ MY_ACTION_COMBO(4),
+ MY_ACTION_COMBO(5),
+ MY_ACTION_COMBO(6),
+ MY_COMBO(0),
+ MY_COMBO(1),
+ MY_COMBO(2),
+ MY_COMBO(3),
+ MY_COMBO(4),
+ MY_COMBO(5),
+ MY_COMBO(6),
+ MY_COMBO(7),
+ MY_COMBO(8),
+ MY_COMBO(9),
+ MY_COMBO(10),
+ MY_COMBO(11),
+ MY_COMBO(12),
+ MY_COMBO(13),
+ MY_COMBO(14),
+};
+
+_Static_assert(sizeof(key_combos) / sizeof(key_combos[0]) ==
+ (sizeof(my_action_combos) / sizeof(my_action_combos[0]) + sizeof(my_combos) / sizeof(my_combos[0])),
+ "Number of combo definitions does not match up!");
+#else
+combo_t key_combos[sizeof(my_action_combos) / sizeof(my_action_combos[0]) + sizeof(my_combos) / sizeof(my_combos[0])];
+#endif
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ switch (combo_index) {
+ case C_AUML:
+ if (pressed) {
+ tap_code16(KC_RALT);
+ tap_code16(LSFT(KC_QUOT));
+ tap_code16(KC_A);
+ }
+ break;
+ case C_OUML:
+ if (pressed) {
+ tap_code16(KC_RALT);
+ tap_code16(LSFT(KC_QUOT));
+ tap_code16(KC_O);
+ }
+ break;
+ case C_UUML:
+ if (pressed) {
+ tap_code16(KC_RALT);
+ tap_code16(LSFT(KC_QUOT));
+ tap_code16(KC_U);
+ }
+ break;
+ case C_SZ:
+ if (pressed) {
+ tap_code16(KC_RALT);
+ tap_code16(KC_S);
+ tap_code16(KC_S);
+ }
+ break;
+ case C_CBR:
+ if (pressed) {
+ tap_code16(KC_LCBR);
+ tap_code16(KC_RCBR);
+ tap_code16(KC_LEFT);
+ }
+ break;
+ case C_PRN:
+ if (pressed) {
+ tap_code16(KC_LPRN);
+ tap_code16(KC_RPRN);
+ tap_code16(KC_LEFT);
+ }
+ break;
+ case C_BRC:
+ if (pressed) {
+ tap_code16(KC_LBRC);
+ tap_code16(KC_RBRC);
+ tap_code16(KC_LEFT);
+ }
+ break;
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifndef KEYBOARD_preonic_rev3
+ default_layer_set(1ul << L_COLM);
+#endif
+#ifdef RGBLIGHT_LAYERS
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+ rgblight_set_layer_state(0, true);
+#endif
+#if defined(COMBO_ENABLE) && !defined(COMBO_STATICALLY)
+ uint8_t i = 0;
+ for (; i < sizeof(my_action_combos) / sizeof(my_action_combos[0]); i++) {
+ key_combos[i].keys = &(my_action_combos[i][0]);
+ }
+ for (uint8_t j = 0; j < sizeof(my_combos) / sizeof(my_combos[0]); j++, i++) {
+ key_combos[i].keycode = my_combos[j][0];
+ key_combos[i].keys = &(my_combos[j][1]);
+ }
+#endif
+}
+
+uint16_t key_timer;
+bool delkey_registered;
+bool num_layer_was_used;
+bool extd_layer_was_used;
+// These keep state about the long-press-means-umlaut keys.
+bool auml_pressed;
+bool ouml_pressed;
+bool uuml_pressed;
+
+void maybe_send_umlaut(uint16_t keycode, bool *is_pressed) {
+ // Some other key did _not_ already re-arm this key, so now we need to do
+ // that ourselves.
+ if (*is_pressed) {
+ *is_pressed = false;
+ // If released within the timer, then just KC_A, KC_O, KC_U
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ tap_code16(keycode);
+ } else {
+ tap_code16(KC_RALT);
+ tap_code16(LSFT(KC_QUOT));
+ tap_code16(keycode);
+ }
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // TODO: why not use key_timer here? is it dynamic or not?
+ static uint16_t extd_layer_timer;
+ if (layer_state_is(L_EXTD) && record->event.pressed) {
+ extd_layer_was_used = true;
+ }
+ if (layer_state_is(L_NUM) && record->event.pressed) {
+ num_layer_was_used = true;
+ }
+
+ // An umlaut key was pressed previously (but will only emit the key on
+ // release), but we've pressed a different key now, so fire the regular key,
+ // re-arm it and continue with whatever actual key was pressed just now.
+ if (record->event.pressed) {
+ if (auml_pressed) {
+ tap_code16(KC_A);
+ auml_pressed = false;
+ }
+ if (ouml_pressed) {
+ tap_code16(KC_O);
+ ouml_pressed = false;
+ }
+ if (uuml_pressed) {
+ tap_code16(KC_U);
+ uuml_pressed = false;
+ }
+ }
+
+ switch (keycode) {
+ // From https://github.com/qmk/qmk_firmware/issues/6053
+ case LT_EXTD_ESC:
+ if (record->event.pressed) {
+ extd_layer_was_used = false;
+ extd_layer_timer = timer_read();
+ layer_on(L_EXTD);
+ } else {
+ layer_off(L_EXTD);
+ unregister_mods(MOD_BIT(KC_LALT)); // undo what ALT_TAB might've set
+ // NOTE: need to track whether we made use of the extd layer and
+ // that all happened within the tapping term. Otherwise we'd emit
+ // that layer key code _plus_ an extra Esc.
+ if (timer_elapsed(extd_layer_timer) < TAPPING_TERM && !extd_layer_was_used) {
+ tap_code(KC_ESC);
+ }
+ }
+ return true;
+ case LT_NUM_BSPC:
+ if (record->event.pressed){
+ num_layer_was_used = false;
+ extd_layer_timer = timer_read();
+ layer_on(L_NUM);
+ } else {
+ layer_off(L_NUM);
+ // NOTE: Custom LT method so that any press of a key on that layer will prevent the backspace.
+ if (timer_elapsed(extd_layer_timer) < TAPPING_TERM && !num_layer_was_used) {
+ tap_code(KC_BSPC);
+ }
+ }
+ return true;
+ case LT_MOUSE_ALT_SHIFT_INS:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ layer_on(L_MOUSE);
+ } else {
+ layer_off(L_MOUSE);
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ tap_code16(LALT(LSFT(KC_INS)));
+ }
+ }
+ return true;
+ case LT_FUNC_SHIFT_INS:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ layer_on(L_FUNC);
+ } else {
+ layer_off(L_FUNC);
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ tap_code16(LSFT(KC_INS));
+ }
+ }
+ return true;
+#if 1
+ /* Looks like PERMISSIVE_HOLD on LT and OSM doesn't work properly. This
+ * is probaby https://github.com/qmk/qmk_firmware/issues/8971
+ */
+ case OSM_GUI:
+ /* OSM(MOD_LGUI) is delaying the event, but I need immediate triggering
+ * of the modifier to move windows around with the mouse. If only
+ * tapped, however, have it be a win OSM */
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ register_mods(MOD_BIT(KC_LGUI));
+ } else {
+ unregister_mods(MOD_BIT(KC_LGUI));
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ add_oneshot_mods(MOD_BIT(KC_LGUI));
+ } else {
+ del_oneshot_mods(MOD_BIT(KC_LGUI));
+ }
+ }
+ return true;
+ // Why do I have to roll my own? It seems the original ones work on
+ // keyrelease, at which time I might have let go of the layer tap
+ // already, so I cannot roll them fast...
+ case OSM_SFT:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ register_mods(MOD_BIT(KC_LSFT));
+ } else {
+ unregister_mods(MOD_BIT(KC_LSFT));
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ add_oneshot_mods(MOD_BIT(KC_LSFT));
+ } /*else {
+ del_oneshot_mods(MOD_BIT(KC_LSFT));
+ }*/
+ }
+ return true;
+ case OSM_CTL:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ register_mods(MOD_BIT(KC_LCTL));
+ } else {
+ unregister_mods(MOD_BIT(KC_LCTL));
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ add_oneshot_mods(MOD_BIT(KC_LCTL));
+ } /*else {
+ del_oneshot_mods(MOD_BIT(KC_LCTL));
+ }*/
+ }
+ return true;
+ case OSM_ALT:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ register_mods(MOD_BIT(KC_LALT));
+ } else {
+ unregister_mods(MOD_BIT(KC_LALT));
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ add_oneshot_mods(MOD_BIT(KC_LALT));
+ } /*else {
+ del_oneshot_mods(MOD_BIT(KC_LALT));
+ }*/
+ }
+ return true;
+#else
+#define OSM_ALT OSM(MOD_LALT)
+#define OSM_CTL OSM(MOD_LCTL)
+#define OSM_GUI OSM(MOD_LGUI)
+#define OSM_SFT OSM(MOD_LSFT)
+#endif
+ // Obsoleted by using combos for umlauts now.
+ case KC_A_AE:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ auml_pressed = true;
+ } else {
+ maybe_send_umlaut(KC_A, &auml_pressed);
+ }
+ break;
+ case KC_O_OE:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ ouml_pressed = true;
+ } else {
+ maybe_send_umlaut(KC_O, &ouml_pressed);
+ }
+ break;
+ case KC_U_UE:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ uuml_pressed = true;
+ } else {
+ maybe_send_umlaut(KC_U, &uuml_pressed);
+ }
+ break;
+ case MINS_UNDSCR:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ } else {
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ // Can't send KC_KP_MINUS, it doesn't compose to, say →
+ tap_code16(KC_MINUS);
+ } else {
+ tap_code16(KC_UNDERSCORE);
+ }
+ }
+ break;
+ case ALT_TAB:
+ if (record->event.pressed) {
+ register_mods(MOD_BIT(KC_LALT));
+ tap_code16(KC_TAB);
+ }
+ break;
+ case INS_HARD:
+ // Do Alt-Shift-Ins first to have xdotool copy from SELECTION to CLIPBOARD, then Shift-Ins to paste.
+ if (record->event.pressed) {
+ tap_code16(LSFT(LALT(KC_INS)));
+ } else {
+ tap_code16(LSFT(KC_INS));
+ }
+ break;
+ case SHIFT_INS:
+ if (record->event.pressed) {
+ // when keycode is pressed
+ key_timer = timer_read();
+ // Shift when held ...
+ register_mods(MOD_BIT(KC_RSFT));
+ } else {
+ // If released within the timer, then Shift+Ins
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ tap_code16(KC_INS);
+ }
+ unregister_mods(MOD_BIT(KC_RSFT));
+ }
+ break;
+ case ALT_SHIFT_INS:
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ // Shift when held ...
+ register_mods(MOD_BIT(KC_LSFT));
+ } else {
+ // If released within the timer, then Shift+Alt+Ins
+ if (timer_elapsed(key_timer) < TAPPING_TERM) {
+ register_mods(MOD_BIT(KC_LALT));
+ tap_code16(KC_INS);
+ }
+ // Note: this makes xev(1) see KeyPress for Meta_L but KeyRelease for Alt_L
+ unregister_mods(MOD_BIT(KC_LSFT) | MOD_BIT(KC_LALT));
+ }
+ break;
+/*
+ * Obsoleted by making tmux understand Ctrl-(Shift)-Tab natively.
+ case TM_NEXT:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("a") "n");
+ break;
+ case TM_PREV:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("a") "p");
+ break;
+*/
+ // TODO: use key overrides to turn, e.g. Win+Ctrl-Tab into VIM_NEXT.
+ // Not sure why Ctrl-Pgup works in vim, but not in vim-inside-tmux.
+ case VIM_NEXT:
+ if (record->event.pressed) SEND_STRING(SS_TAP(X_ESC) SS_TAP(X_G) SS_TAP(X_T));
+ break;
+ case VIM_PREV:
+ if (record->event.pressed) SEND_STRING(SS_TAP(X_ESC) SS_TAP(X_G) SS_LSFT("t"));
+ break;
+ case WIN_LEFT:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("w") SS_TAP(X_H));
+ break;
+ case WIN_DN:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("w") SS_TAP(X_J));
+ break;
+ case WIN_UP:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("w") SS_TAP(X_K));
+ break;
+ case WIN_RGHT:
+ if (record->event.pressed) SEND_STRING(SS_LCTRL("w") SS_TAP(X_L));
+ break;
+ }
+
+ return true;
+}
+
+#ifdef LEADER_ENABLE
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+#ifdef UCIS_ENABLE
+ SEQ_ONE_KEY(KC_U) {
+ qk_ucis_start();
+ }
+#endif
+ SEQ_ONE_KEY(KC_H) {
+ send_unicode_string("ᕕ( ᐛ )ᕗ"); // happy
+ }
+ SEQ_ONE_KEY(KC_D) {
+ send_unicode_string("ಠ_ಠ"); // disapproval
+ }
+ SEQ_ONE_KEY(KC_L) {
+ send_unicode_string("( ͡° ͜ʖ ͡°)"); // lenny
+ }
+ SEQ_ONE_KEY(KC_S) {
+ send_unicode_string("¯\\_(ツ)_/¯"); // shrug
+ }
+ // tableflip (LEADER - TF)
+ SEQ_TWO_KEYS(KC_T, KC_F) {
+ //set_unicode_input_mode(UC_LNX);
+ //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+ send_unicode_string("(╯°□°)╯︵ ┻━┻");
+ }
+ // untableflip
+ SEQ_THREE_KEYS(KC_U, KC_T, KC_F) {
+ //set_unicode_input_mode(UC_LNX);
+ //send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
+ send_unicode_string("┬─┬ノ( º _ ºノ)");
+ }
+ }
+}
+#endif
+
+#ifdef UCIS_ENABLE
+// 3 codepoints at most, otherwise increase UCIS_MAX_CODE_POINTS
+const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE(
+ UCIS_SYM("poop", 0x1F4A9), // 💩
+ UCIS_SYM("rofl", 0x1F923), // 🤣
+ UCIS_SYM("look", 0x0CA0, 0x005F, 0x0CA0) // ಠ_ಠ
+);
+#endif
diff --git a/users/uqs/uqs.h b/users/uqs/uqs.h
new file mode 100644
index 0000000000..f8b30caf79
--- /dev/null
+++ b/users/uqs/uqs.h
@@ -0,0 +1,77 @@
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// vi:et sw=4:
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ L_QWER = 0,
+ L_WASD, // wasd gaming
+ L_COLM, // Colemak DHm
+ L_EXTD,
+ L_NUM,
+ L_FUNC,
+ L_MOUSE,
+ L_LAST, // unused
+};
+
+#ifdef VIA_ENABLE
+_Static_assert(DYNAMIC_KEYMAP_LAYER_COUNT >= L_LAST, "VIA enabled, but not enough DYNAMIC_KEYMAP_LAYER_COUNT for all layers");
+#endif
+
+#define KC_CTAB LCTL(KC_TAB)
+#define KC_SCTAB LCTL(LSFT(KC_TAB))
+
+// Custom single-key codes, see uqs.c for the combos.
+enum custom_keycodes {
+ SHIFT_INS = SAFE_RANGE,
+ ALT_SHIFT_INS,
+ INS_HARD,
+ KC_A_AE,
+ KC_O_OE,
+ KC_U_UE,
+ MINS_UNDSCR, // obsoleted by combos, remove this!
+ TM_NEXT,
+ TM_PREV,
+ VIM_NEXT,
+ VIM_PREV,
+ WIN_LEFT,
+ WIN_RGHT,
+ WIN_UP,
+ WIN_DN,
+ LT_EXTD_ESC,
+ LT_NUM_BSPC,
+ LT_MOUSE_ALT_SHIFT_INS,
+ LT_FUNC_SHIFT_INS,
+ OSM_GUI,
+ OSM_SFT,
+ OSM_CTL,
+ OSM_ALT,
+ ALT_TAB,
+};
+
+#ifndef LEADER_ENABLE
+#define KC_LEAD KC_NO
+#endif
+
+// Shorter names
+#define MS_WHDN KC_MS_WH_DOWN
+#define MS_WHUP KC_MS_WH_UP
+#define MS_WHLEFT KC_MS_WH_LEFT
+#define MS_WHRGHT KC_MS_WH_RIGHT
+
+// GASC/◆⎇⇧⎈ home row mod, read all about it here:
+// https://precondition.github.io/home-row-mods
+// Left-hand home row mods
+#define KC_G_A LGUI_T(KC_A)
+#define KC_A_R LALT_T(KC_R)
+#define KC_S_S LSFT_T(KC_S)
+#define KC_C_T LCTL_T(KC_T)
+
+// Right-hand home row mods
+#define KC_C_N RCTL_T(KC_N)
+#define KC_S_E RSFT_T(KC_E)
+#define KC_A_I LALT_T(KC_I) // RALT is special, it's AltGr and my compose key under Win (layout UScmpse) and *nix (setxkbmap -option compose:ralt)
+#define KC_G_O RGUI_T(KC_O)
+
diff --git a/users/zigotica/rows.h b/users/zigotica/rows.h
index e73d72bbe2..18f08ccb0b 100644
--- a/users/zigotica/rows.h
+++ b/users/zigotica/rows.h
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* ,---------------------------------------. ,---------------------------------------.
* | | | | | | | | | | | |
- * | ` ~ | W | D | P | F | | K | Y | U | Q | ' " |
+ * | ` ~ | W | D | P | F | | Q | L | U | Y | ' " |
* | | | | | | | | | | | |
* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
* | | | | | | | | | | | |
@@ -31,11 +31,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* | alt | ctrl | shft | meta | | | | meta | shft | ctrl | alt |
* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
* | | | | | | | | | | | |
- * | B | X | C | V | [ { | | , < | L | Z | J | . > |
+ * | B | X | C | V | [ { | | , < | K | Z | J | . > |
* | | | | | TD ]} | | TD ; | | | | TD : |
* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
* | | | | | |
- * | ESC | SPC | | E | INTRO |
+ * | TAB | SPC | | E | INTRO |
* | num | nav | | sym | fn |
* `---------------' `---------------'
*
@@ -43,11 +43,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define _STENAI_L1 KC_GRV, KC_W, KC_D, KC_P, KC_F
#define _STENAI_L2 LALT_T(KC_H), LCTL_T(KC_R), LSFT_T(KC_S), LGUI_T(KC_T), KC_G
#define _STENAI_L3 KC_B, KC_X, KC_C, KC_V, ZK_BRC
-#define _STENAI_LT LT(_NUM, KC_ESC), LT(_NAV, KC_SPC)
+#define _STENAI_LT LT(_NUM, KC_TAB), LT(_NAV, KC_SPC)
-#define _STENAI_R1 KC_K, KC_Y, KC_U, KC_Q, KC_QUOT
+#define _STENAI_R1 KC_Q, KC_L, KC_U, KC_Y, KC_QUOT
#define _STENAI_R2 KC_M, RGUI_T(KC_N), RSFT_T(KC_A), RCTL_T(KC_I), RALT_T(KC_O)
-#define _STENAI_R3 ZK_SEMI, KC_L, KC_Z, KC_J, ZK_COLON
+#define _STENAI_R3 ZK_SEMI, KC_K, KC_Z, KC_J, ZK_COLON
#define _STENAI_RT LT(_SYM, KC_E), LT(_FN, KC_ENT)
@@ -147,14 +147,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* | | | | | | | | | | | |
* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
* | | | |:::::::| |
-* | | TAB | |:::::::| |
+* | | ESC | |:::::::| |
* | | | |:::::::| |
* `---------------' `---------------'
*/
#define ____SYM_L1 KC_PERC, KC_AMPR, KC_QUES, KC_PIPE, KC_EXLM
#define ____SYM_L2 KC_HASH, KC_AT, KC_COLN, KC_SCLN, KC_DLR
#define ____SYM_L3 ZK_PRN, KC_TILD, KC_SLSH, KC_BSLS, KC_CIRC
-#define ____SYM_LT _______, KC_TAB
+#define ____SYM_LT _______, KC_ESC
#define ____SYM_R1 _BLANK_ROW
#define ____SYM_R2 _BLANK_ROW
@@ -178,14 +178,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* | | | | | | | | | | | |
* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
* | | | | |:::::::|
-* | | TAB | | |:::::::|
+* | | ESC | | |:::::::|
* | | | | |:::::::|
* `---------------' `---------------'
*/
#define ____FN_L1 _BLANK_ROW
#define ____FN_L2 _BLANK_ROW
#define ____FN_L3 _BLANK_ROW
-#define ____FN_LT _______, KC_TAB
+#define ____FN_LT _______, KC_ESC
#define ____FN_R1 _______, KC_F7, KC_F8, KC_F9, KC_F10
#define ____FN_R2 _______, KC_F1, KC_F2, KC_F3, KC_F11
diff --git a/users/zigotica/zigotica.h b/users/zigotica/zigotica.h
index e9ff5ff16c..e85a04edbe 100644
--- a/users/zigotica/zigotica.h
+++ b/users/zigotica/zigotica.h
@@ -26,7 +26,7 @@ enum userspace_layers {
};
#else
enum userspace_layers {
- _TERMINAL = 0,
+ _BASE = 0,
_FIGMA,
_BROWSER,
_VIM,
diff --git a/util/qmk_install.sh b/util/qmk_install.sh
index 5f22ba0ad5..3f49bd255a 100755
--- a/util/qmk_install.sh
+++ b/util/qmk_install.sh
@@ -53,8 +53,6 @@ case $(uname -a) in
echo "* *"
echo "* Please install the QMK Toolbox instead: *"
echo "* https://github.com/qmk/qmk_toolbox/releases *"
- echo "* Then, map your WSL filesystem as a network drive: *"
- echo "* \\\\\\\\wsl$\\<distro> *"
echo "********************************************************************************"
echo
fi